From e1d0582bdfd8a3e6b7ae014833905136882bbcb3 Mon Sep 17 00:00:00 2001 From: CJY Date: Tue, 23 Dec 2025 16:54:05 +0900 Subject: [PATCH] =?UTF-8?q?Modbus=20=EC=9A=B4=EC=A0=84=EC=83=81=ED=83=9C?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- INT89DB_26.suo | Bin 239616 -> 238080 bytes INT89DB_26/Forms/FormMain.cs | 43 +++++++++++++++++++---- INT89DB_26/InModbus/ModbusDefine.cs | 2 ++ INT89DB_26/InModbus/Modbus_30000_Data.cs | 16 ++++++++- 4 files changed, 54 insertions(+), 7 deletions(-) diff --git a/INT89DB_26.suo b/INT89DB_26.suo index 466467af3aba663f63da4c753490e5cec9c03aa4..59896937ebbf344283ff575a294d99b6afc7e483 100644 GIT binary patch delta 5149 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 SQU^HIp9;V8=I!7I)PDiJ{`Ecp delta 4531 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 diff --git a/INT89DB_26/Forms/FormMain.cs b/INT89DB_26/Forms/FormMain.cs index 302e085..d4f8d8c 100644 --- a/INT89DB_26/Forms/FormMain.cs +++ b/INT89DB_26/Forms/FormMain.cs @@ -620,6 +620,8 @@ namespace INT89DB_26.Forms } } + this.Update30000Operation(); + this.ChildFormMainDisplay.UpdateEquipmentStatusDisplay(this.EquipmentStatus); this.ChildFormSystemSetting.UpdateEquipmentStatusDisplay(this.EquipmentStatus); this.ChildFormEquipmentTest.UpdateEquipmentStatusDisplay(this.EquipmentStatus); @@ -634,6 +636,8 @@ namespace INT89DB_26.Forms data.IsStart = false; } + this.Update30000Operation(); + this.ChildFormMainDisplay.UpdateEquipmentStatusDisplay(this.EquipmentStatus); this.ChildFormSystemSetting.UpdateEquipmentStatusDisplay(this.EquipmentStatus); this.ChildFormEquipmentTest.UpdateEquipmentStatusDisplay(this.EquipmentStatus); @@ -1866,6 +1870,12 @@ namespace INT89DB_26.Forms byte[] length2Value = new byte[2]; byte[] length4Value = new byte[4]; + int equipmentStatus; + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + equipmentStatus = 1; + else + equipmentStatus = 0; + startAddressInt = Modbus.ToBigEndianAndInt(startAddressByte); numberOfRegisterInt = Modbus.ToBigEndianAndInt(numberOfRegisterByte); @@ -1994,12 +2004,6 @@ namespace INT89DB_26.Forms double deadZoneLow = this.Current30000ModbusData.DeadZoneLowLimit; double deadZoneHigh = this.Current30000ModbusData.DeadZoneHighLimit; - int equipmentStatus; - if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) - equipmentStatus = 1; - else - equipmentStatus = 0; - for (int j = startAddressInt; j < startAddressInt + numberOfRegisterInt; j++) { switch (j) @@ -2010,6 +2014,16 @@ namespace INT89DB_26.Forms for (int i = 0; i < 2; i++) madeData[madeDataIndex + i] = length2Value[1 - i]; break; + case (int)ModbusDefine._30000_Modbus.Operation_High: + length4Value = GetBytes(this.Current30000ModbusData.OperationStatus); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus.Operation_Low: + length4Value = GetBytes(this.Current30000ModbusData.OperationStatus); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; case (int)ModbusDefine._30000_Modbus.UnderRange_High_Float: length4Value = GetBytes((Single)underValue); for (int i = 0; i < 2; i++) @@ -3103,6 +3117,16 @@ namespace INT89DB_26.Forms for (int i = 0; i < 2; i++) madeData[madeDataIndex + i] = length2Value[1 - i]; break; + case (int)ModbusDefine._30000_Modbus.Operation_High: + length4Value = GetBytes(this.Current30000ModbusData.OperationStatus); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus.Operation_Low: + length4Value = GetBytes(this.Current30000ModbusData.OperationStatus); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; case (int)ModbusDefine._30000_Modbus.UnderRange_High_Float: length4Value = GetBytes((Single)underValue); for (int i = 0; i < 2; i++) @@ -4438,6 +4462,13 @@ namespace INT89DB_26.Forms return judgmentStatus; } + public void Update30000Operation() + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.Current30000ModbusData.OperationStatus = 1; + else + this.Current30000ModbusData.OperationStatus = 0; + } public void Update30000DecimalPoint() { this.Current30000ModbusData.DecimalPoint = short.Parse(this.SystemConfig.DecimalPlaces.ToString()); diff --git a/INT89DB_26/InModbus/ModbusDefine.cs b/INT89DB_26/InModbus/ModbusDefine.cs index 12778cf..479b313 100644 --- a/INT89DB_26/InModbus/ModbusDefine.cs +++ b/INT89DB_26/InModbus/ModbusDefine.cs @@ -10,6 +10,8 @@ namespace INT89DB_26.Int_Modbus public enum _30000_Modbus { DecimalPoint = 0, + Operation_High = 40, + Operation_Low = 41, UnderRange_High_Float = 1010, UnderRange_Low_Float = 1011, PassRange_High_Float = 1012, diff --git a/INT89DB_26/InModbus/Modbus_30000_Data.cs b/INT89DB_26/InModbus/Modbus_30000_Data.cs index 2734ea9..ea0760e 100644 --- a/INT89DB_26/InModbus/Modbus_30000_Data.cs +++ b/INT89DB_26/InModbus/Modbus_30000_Data.cs @@ -10,6 +10,7 @@ namespace INT89DB_26.Int_Modbus { #region Field private short m_DecimalPoint; + private int m_OperationStatus; private double m_UnderValue; private double m_PassValue; private double m_OverValue; @@ -37,6 +38,11 @@ namespace INT89DB_26.Int_Modbus get { return this.m_DecimalPoint; } set { this.m_DecimalPoint = value; } } + public int OperationStatus + { + get { return this.m_OperationStatus; } + set { this.m_OperationStatus = value; } + } public double UnderValue { get { return this.m_UnderValue; } @@ -58,7 +64,14 @@ namespace INT89DB_26.Int_Modbus set { this.m_TareValue = value; } } - + public string HexStringOperationStatus + { + get + { + string hexString = this.OperationStatus.ToString("X8"); + return hexString; + } + } public string HexStringUnderValue { get @@ -150,6 +163,7 @@ namespace INT89DB_26.Int_Modbus public void Initialization() { this.DecimalPoint = 1; + this.OperationStatus = 0; this.UnderValue = 100.0; this.PassValue = 200.0; this.OverValue = 300.0;