You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.2 KiB

using Common.Const;
using Entity.Ammeter;
using Entity.DbModel.Station;
using HybirdFrameworkCore.Autofac.Attribute;
using HybirdFrameworkCore.Const;
using HybirdFrameworkDriver.ModbusTcpMaster;
using log4net;
using Repository.Ammeter;
using Repository.Station;
using Service.Ammeter.Msg;
using Service.FireControl.Msg;
namespace Service.FireControl.Client;
[Scope]
public class AmmeterClient : ModbusTcpMaster
{
private static readonly ILog Log = LogManager.GetLogger(typeof(AmmeterClient));
public EmeterEnergyRepository EmeterEnergyRepository { get; set; }
public EmeterEnergyChangeRepository EmeterEnergyChangeRepository { get; set; }
public AmmeterClient()
{
ReadAction = BatchRead;
Ip = "";//172.0.50.100
Port = 502;
Duration = 1000;
AutoReConnect = true;
ByteSeq = EndingConst.ByteSeq.BA;
WordSeq= EndingConst.WordSeq.CD;
}
private bool BatchRead(ModbusTcpMaster master)
{
bool connectResult = false;
Log.Info("Ammeter start read");
#region 电表
//var bytes03 = master.Read("s=2;x=3;1", 3).Content;//0x03
var readPowerValue = master.Read("x=3;39424", 2).Content;
if (readPowerValue != null)
{
connectResult = true;
ModbusDecoder.Decode<ACMeters>(readPowerValue, AmmeterMgr.ACMeters, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC);
#region 插入电能数据
DateTime time = DateTime.Now.AddDays(-7);
EmeterEnergyRepository.Delete(i => i.UploadTime < time);
EmeterEnergyChangeRepository.Delete(i => i.UploadTime < time);
string id = DateTime.Now.ToString("yyyyMMddHHmmss");
string code = "";//电表编号
id = id + "_" + code;
EmeterEnergyChange emeterEnergyChange = new()
{
Id = id,
UploadFlag = 0,
Value = AmmeterMgr.ACMeters.ActiveTotalEnergy.Value,
Code = code,
UploadTime = DateTime.Now
};
EmeterEnergyChangeRepository.Insert(emeterEnergyChange);
#endregion
}
#endregion
return connectResult;
}
}