From 45e8818eee6422a7b48afb4078e56d2707a7b3d7 Mon Sep 17 00:00:00 2001 From: rszn <645583145@qq.com> Date: Tue, 23 Jul 2024 10:29:48 +0800 Subject: [PATCH] =?UTF-8?q?plc=E9=87=8D=E8=BF=9E=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common/lib/HybirdFrameworkCore.dll | Bin 58880 -> 59392 bytes Common/lib/HybirdFrameworkDriver.dll | Bin 37888 -> 38400 bytes .../FireControl/Client/FireControlClient.cs | 51 +++++++++++------- Service/Plc/Client/PlcClient.cs | 23 +++++--- 4 files changed, 47 insertions(+), 27 deletions(-) diff --git a/Common/lib/HybirdFrameworkCore.dll b/Common/lib/HybirdFrameworkCore.dll index e9227eaeb4e33747ea2b3b2ba7352c770b9dd684..112d2d03e0de6b8674651c7ca6ce24560f99d23e 100644 GIT binary patch delta 26697 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

I+V4s=cly&qGO()(p$pJCLN}age^*B_`&fo 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 diff --git a/Common/lib/HybirdFrameworkDriver.dll b/Common/lib/HybirdFrameworkDriver.dll index 89ee193cb84838d5a088ffaf54e157ae97ac716d..5f9fa0f25456602dfaaa5c15b8b677b447dcc527 100644 GIT binary patch delta 15023 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 Bxmo}K delta 14583 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 z2sW6iA(readPowerValue, FireControlMgr.PowerValue, EndingConst.ByteSeq.BA, EndingConst.WordSeq.DC); - FireControlMgr.PowerValue.FPowerValue.Value=BitConverter.ToSingle(readPowerValue, 0); + FireControlMgr.PowerValue.FPowerValue.Value=BitConverter.ToSingle(readPowerValue, 0); } #endregion @@ -51,12 +53,13 @@ public class FireControlClient: ModbusTcpMaster var readTem = master.Read("s=3;x=3;0", 2).Content; if (readTem!=null) { + connectResult = true; ModbusDecoder.Decode(readTem, FireControlMgr.TemperatureHumidity, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); } #endregion - - var bytes02 = master.ReadCoil("s=2;x=1;0", 17).Content;//0x01 + + var bytes02 = master.ReadCoil("s=2;x=1;0", 17).Content;//0x01 var bytes03 = master.Read("s=2;x=3;1", 3).Content;//0x03 读1 3 var bytes04 = master.Read("s=2;x=3;257", 383).Content;//0x03 读256 383 var bytes05 = master.Read("s=2;x=4;1", 115).Content;//0x04 可以 @@ -67,18 +70,20 @@ public class FireControlClient: ModbusTcpMaster var bytesAdd2 = master.Read("s=2;x=4;3048", 1048).Content;//0x04 可以 if (bytesAdd1 != null && bytesAdd2 != null) { + connectResult = true; bytes06.AddRange(bytesAdd1); bytes06.AddRange(bytesAdd2); } - - + + var bytes07 = master.Read("s=2;x=4;4096", 32).Content;//0x04 可以 - var bytes08 = master.Read("s=2;x=5;0", 134).Content;//0x05 写 + var bytes08 = master.Read("s=2;x=5;0", 134).Content;//0x05 写 var bytes09 = master.Read("s=2;x=6;256", 64).Content;//0x06 写 - + if (bytes02 != null) { Log.Info("fire read bytes02 success"); + connectResult = true; FireControlMgr.Subzone2.GiveAnAlarm.Value = bytes02[0]; FireControlMgr.Subzone2.NumberOfFailures.Value = bytes02[1]; FireControlMgr.Subzone2.SoundSuppression.Value = bytes02[2]; @@ -97,14 +102,16 @@ public class FireControlClient: ModbusTcpMaster FireControlMgr.Subzone2.AudibleVisualAlarmStatus.Value = bytes02[15]; FireControlMgr.Subzone2.DeflatedDoNotEnter.Value = bytes02[16]; } - + if (bytes03 != null) { + connectResult = true; ModbusDecoder.Decode(bytes03, FireControlMgr.Subzone3, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); } - + if (bytes04 != null) { + connectResult = true; ModbusDecoder.Decode(bytes04, FireControlMgr.Subzone4, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); List faultList = new List() { @@ -141,34 +148,38 @@ public class FireControlClient: ModbusTcpMaster }; SaveAlarmInfo(faultList); } - + if (bytes05 != null) { + connectResult = true; ModbusDecoder.Decode(bytes05, FireControlMgr.Subzone5, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); } - + if (bytes06 != null) { + connectResult = true; ModbusDecoder.Decode(bytes06.ToArray(), FireControlMgr.Subzone6, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); } - + if (bytes07 != null) { + connectResult = true; ModbusDecoder.Decode(bytes07, FireControlMgr.Subzone7, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); } - + /*if (bytes08 != null) { ModbusDecoder.Decode(bytes08, FireControlMgr.Subzone8, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); } - + if (bytes09 != null) { ModbusDecoder.Decode(bytes09, FireControlMgr.Subzone9, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); }*/ - + + return connectResult; } - + private void SaveAlarmInfo(List lstAlarm) { if (lstAlarm.Count > 0) @@ -193,7 +204,7 @@ public class FireControlClient: ModbusTcpMaster { EquipAlarmDefine? alarmDefine = EquipAlarmDefineRepository.QueryByClause(i=>i.EquipTypeCode==(int)EquipmentType.Fire&&i.ErrorCode==errorCode); - + if (alarmDefine != null) { EquipAlarmRecord record = new EquipAlarmRecord() @@ -207,7 +218,7 @@ public class FireControlClient: ModbusTcpMaster StartTime = DateTime.Now }; EquipAlarmRecordRepository.Insert(record); - } + } } } } @@ -267,4 +278,4 @@ public class FireControlClient: ModbusTcpMaster #endregion } } -} \ No newline at end of file +} diff --git a/Service/Plc/Client/PlcClient.cs b/Service/Plc/Client/PlcClient.cs index daf28dc..baae052 100644 --- a/Service/Plc/Client/PlcClient.cs +++ b/Service/Plc/Client/PlcClient.cs @@ -53,16 +53,18 @@ public class PlcClient : ModbusTcpMaster WordSeq = EndingConst.WordSeq.CD; } - private void BatchRead(ModbusTcpMaster master) + private bool BatchRead(ModbusTcpMaster master) { + bool connectResult = false; try { - Log.Info("Plc read satrt"); + Log.Info("Plc read start"); if (master != null) { var bytes01 = master.BatchReadHolderRegister(1, 115); if (bytes01 != null) { + connectResult = true; PlcMgr.DataValidityTime = DateTime.Now; ModbusDecoder.Decode(bytes01, PlcMgr.HostToPlcData, EndingConst.ByteSeq.AB, @@ -72,6 +74,7 @@ public class PlcClient : ModbusTcpMaster var bytes02 = master.BatchReadHolderRegister(201, 222); if (bytes02 != null) { + connectResult = true; PlcMgr.DataValidityTime = DateTime.Now; ModbusDecoder.Decode(bytes02, PlcMgr.PlcToHostData, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); @@ -89,6 +92,7 @@ public class PlcClient : ModbusTcpMaster var bytes03 = master.BatchReadHolderRegister(701, 32); if (bytes03 != null) { + connectResult = true; PlcMgr.LastPlcFaultData = PlcMgr.PlcFaultData; PlcMgr.DataValidityTime = DateTime.Now; ModbusDecoder.Decode(bytes03, PlcMgr.PlcFaultData, EndingConst.ByteSeq.AB, @@ -114,16 +118,17 @@ public class PlcClient : ModbusTcpMaster }; SaveAlarmInfo(alarm); } - + Log.Info("Plc read finish"); } else if(PlcMgr.PlcClient!=null) { Log.Info("Plc use plcClient read"); - + var bytes01 = PlcMgr.PlcClient.BatchReadHolderRegister(1, 115); if (bytes01 != null) { + connectResult = true; PlcMgr.DataValidityTime = DateTime.Now; ModbusDecoder.Decode(bytes01, PlcMgr.HostToPlcData, EndingConst.ByteSeq.AB, @@ -133,6 +138,7 @@ public class PlcClient : ModbusTcpMaster var bytes02 = PlcMgr.PlcClient.BatchReadHolderRegister(201, 222); if (bytes02 != null) { + connectResult = true; PlcMgr.DataValidityTime = DateTime.Now; ModbusDecoder.Decode(bytes02, PlcMgr.PlcToHostData, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); @@ -150,6 +156,7 @@ public class PlcClient : ModbusTcpMaster var bytes03 = PlcMgr.PlcClient.BatchReadHolderRegister(701, 32); if (bytes03 != null) { + connectResult = true; PlcMgr.LastPlcFaultData = PlcMgr.PlcFaultData; PlcMgr.DataValidityTime = DateTime.Now; ModbusDecoder.Decode(bytes03, PlcMgr.PlcFaultData, EndingConst.ByteSeq.AB, @@ -175,16 +182,18 @@ public class PlcClient : ModbusTcpMaster }; SaveAlarmInfo(alarm); } - + Log.Info("Plc read finish"); } - + } catch (Exception e) { Log.Info($"Plc read error:{e}"); throw; } + + return connectResult; } private void SaveAlarmInfo(List lstAlarm) @@ -359,4 +368,4 @@ public class PlcClient : ModbusTcpMaster BinInfoRepository.Update(it => it.Exists == 1, it => it.No == binNo); } -} \ No newline at end of file +}