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(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; } }