Commit 09f7e49d authored by leon.huang's avatar leon.huang

Modify feedback detection and all pool mappings

parent b925a8ff
...@@ -66,19 +66,19 @@ namespace ModbusDemo.Common ...@@ -66,19 +66,19 @@ namespace ModbusDemo.Common
} }
sAgainAlarmJson += JsonConvert.SerializeObject(hMqtttAlarmMap); sAgainAlarmJson += JsonConvert.SerializeObject(hMqtttAlarmMap);
} }
public static async Task vPublishAlarmPackageJson(IMqttClient mqttClient) //public static async Task vPublishAlarmPackageJson(IMqttClient mqttClient)
{ //{
if (mqttClient.IsConnected == true) // if (mqttClient.IsConnected == true)
{ // {
var message = new MqttApplicationMessageBuilder() // var message = new MqttApplicationMessageBuilder()
.WithTopic(Form1.sAlarmTopic) // .WithTopic(Form1.sAlarmTopic)
.WithPayload(sAlarmJson) // .WithPayload(sAlarmJson)
.WithAtMostOnceQoS() // .WithAtMostOnceQoS()
.WithRetainFlag(false) // .WithRetainFlag(false)
.Build(); // .Build();
await mqttClient.PublishAsync(message); // await mqttClient.PublishAsync(message);
} // }
} //}
public static void vSet_Modual_Alarm(byte byModbusID,ushort usAlarmCodde,bool bSetAlarm,byte byCommFailTimes,params string[] strChannalList) public static void vSet_Modual_Alarm(byte byModbusID,ushort usAlarmCodde,bool bSetAlarm,byte byCommFailTimes,params string[] strChannalList)
{ {
for (int i = 0; i < ModualPoll.byX14pNumber;i++) for (int i = 0; i < ModualPoll.byX14pNumber;i++)
......
...@@ -50,7 +50,7 @@ namespace ModbusDemo.MessageFormat ...@@ -50,7 +50,7 @@ namespace ModbusDemo.MessageFormat
if (exception.Source.Equals("System")) if (exception.Source.Equals("System"))
{ {
Console.WriteLine(DateTime.Now.ToString() + " " + exception.Message); Console.WriteLine(DateTime.Now.ToString() + " " + exception.Message);
Form1.totxt.Log(DateTime.Now.ToString() + " " + exception.Message + "Modbus_ReadHoldingRegistersTask"); Form1.totxt.Log(DateTime.Now.ToString() + " " + exception.Message + " "+slaveAddress.ToString()+ " "+startAddress.ToString() + " "+ numberOfPoints.ToString() +" "+"Modbus_ReadHoldingRegistersTask");
OutputValue = new ushort[numberOfPoints]; OutputValue = new ushort[numberOfPoints];
ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT; ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT;
usCommunFailTimes++; usCommunFailTimes++;
...@@ -135,7 +135,7 @@ namespace ModbusDemo.MessageFormat ...@@ -135,7 +135,7 @@ namespace ModbusDemo.MessageFormat
if (exception.Source.Equals("System")) if (exception.Source.Equals("System"))
{ {
Console.WriteLine(DateTime.Now.ToString() + " " + exception.Message); Console.WriteLine(DateTime.Now.ToString() + " " + exception.Message);
Form1.totxt.Log(DateTime.Now.ToString() + " " + exception.Message + "Modbus_ReadCoilsTask"); Form1.totxt.Log(DateTime.Now.ToString() + " " + exception.Message + " "+slaveAddress.ToString()+ " "+startAddress.ToString() + " "+ numberOfPoints.ToString() +" "+"Modbus_ReadCoilsTask");
OutputValue = new bool[numberOfPoints]; OutputValue = new bool[numberOfPoints];
ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT; ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT;
usCommunFailTimes++; usCommunFailTimes++;
...@@ -220,7 +220,7 @@ namespace ModbusDemo.MessageFormat ...@@ -220,7 +220,7 @@ namespace ModbusDemo.MessageFormat
if (exception.Source.Equals("System")) if (exception.Source.Equals("System"))
{ {
Console.WriteLine(DateTime.Now.ToString() + " " + exception.Message); Console.WriteLine(DateTime.Now.ToString() + " " + exception.Message);
Form1.totxt.Log(DateTime.Now.ToString() + " " + exception.Message + "Modbus_WriteSingleCoil"); Form1.totxt.Log(DateTime.Now.ToString() + " " + exception.Message + " "+slaveAddress.ToString()+ " "+startAddress.ToString() + " "+" "+"Modbus_WriteSingleCoil");
ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT; ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT;
usCommunFailTimes++; usCommunFailTimes++;
Console.WriteLine(slaveAddress.ToString()); Console.WriteLine(slaveAddress.ToString());
...@@ -303,7 +303,7 @@ namespace ModbusDemo.MessageFormat ...@@ -303,7 +303,7 @@ namespace ModbusDemo.MessageFormat
if (exception.Source.Equals("System")) if (exception.Source.Equals("System"))
{ {
Console.WriteLine(DateTime.Now.ToString() + " " + exception.Message); Console.WriteLine(DateTime.Now.ToString() + " " + exception.Message);
Form1.totxt.Log(DateTime.Now.ToString() + " " + exception.Message + "Modbus_WriteMultipleCoils"); Form1.totxt.Log(DateTime.Now.ToString() + " " + exception.Message + " "+slaveAddress.ToString()+ " "+startAddress.ToString() + " "+ "Modbus_WriteMultipleCoils");
ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT; ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT;
usCommunFailTimes++; usCommunFailTimes++;
Console.WriteLine(slaveAddress.ToString()); Console.WriteLine(slaveAddress.ToString());
......
...@@ -103,7 +103,7 @@ namespace ModbusDemo.MessageFormat ...@@ -103,7 +103,7 @@ namespace ModbusDemo.MessageFormat
} }
private const double OPENCURRENT = 7; private const double OPENCURRENT = 7;
private const double CLOSECURRENT = 5; private const double CLOSECURRENT = 6;
public class pcLiquidLevelConfig public class pcLiquidLevelConfig
{ {
public byte byModbusID; public byte byModbusID;
...@@ -302,20 +302,52 @@ namespace ModbusDemo.MessageFormat ...@@ -302,20 +302,52 @@ namespace ModbusDemo.MessageFormat
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent < OPENCURRENT && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent != 0) if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent < OPENCURRENT && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent != 0)
{ {
bool[] bControlData; bool[] bControlData;
if (ModualPoll.bGet_channel_Value<bool>(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, out bControlData, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7") == true)
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].iRefAlarmCnt < AllPond.EastTransitPoolList[sbEastTransitPoolIndex].MaxAlarmfeedback)
{
AllPond.EastTransitPoolList[sbEastTransitPoolIndex].iRefAlarmCnt++;
}
else
{ {
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bClose_Machine(bControlData) == true) if (ModualPoll.bGet_channel_Value<bool>(
AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID,
out bControlData, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7") == true)
{ {
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber); if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex]
.bClose_Machine(bControlData) == true)
{
ModualAlarm.vSet_Modual_Alarm(
AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID,
(ushort) ModualAlarm.eAlarmCode.ChannelControlError, true, 1,
AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
}
} }
} }
} }
else
{
AllPond.EastTransitPoolList[sbEastTransitPoolIndex].iRefAlarmCnt = 0;
}
} }
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == false) if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == false)
{ {
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent > CLOSECURRENT && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent != 0) if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent > CLOSECURRENT && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent != 0)
{ {
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber); if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].iRefAlarmCnt < AllPond.EastTransitPoolList[sbEastTransitPoolIndex].MaxAlarmfeedback)
{
AllPond.EastTransitPoolList[sbEastTransitPoolIndex].iRefAlarmCnt++;
}
else
{
ModualAlarm.vSet_Modual_Alarm(
AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID,
(ushort) ModualAlarm.eAlarmCode.ChannelControlError, true, 1,
AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
}
}
else
{
AllPond.EastTransitPoolList[sbEastTransitPoolIndex].iRefAlarmCnt = 0;
} }
} }
Thread.Sleep(200); Thread.Sleep(200);
...@@ -338,22 +370,48 @@ namespace ModbusDemo.MessageFormat ...@@ -338,22 +370,48 @@ namespace ModbusDemo.MessageFormat
if (AllPond.WestTransitPoolList[sbWestTransitPoolIndex].dChannelCurrent < OPENCURRENT && AllPond.WestTransitPoolList[sbWestTransitPoolIndex].dChannelCurrent != 0) if (AllPond.WestTransitPoolList[sbWestTransitPoolIndex].dChannelCurrent < OPENCURRENT && AllPond.WestTransitPoolList[sbWestTransitPoolIndex].dChannelCurrent != 0)
{ {
bool[] bControlData; bool[] bControlData;
if (ModualPoll.bGet_channel_Value<bool>(AllPond.WestTransitPoolList[sbWestTransitPoolIndex].byModbusID, out bControlData, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7") == true)
if (AllPond.WestTransitPoolList[sbWestTransitPoolIndex].iRefAlarmCnt < AllPond.WestTransitPoolList[sbWestTransitPoolIndex].MaxAlarmfeedback)
{
AllPond.WestTransitPoolList[sbWestTransitPoolIndex].iRefAlarmCnt++;
}
else
{ {
if (AllPond.WestTransitPoolList[sbWestTransitPoolIndex].bClose_Machine(bControlData) == true) if (ModualPoll.bGet_channel_Value<bool>(AllPond.WestTransitPoolList[sbWestTransitPoolIndex].byModbusID,out bControlData, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7") == true)
{ {
ModualAlarm.vSet_Modual_Alarm(AllPond.WestTransitPoolList[sbWestTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.WestTransitPoolList[sbWestTransitPoolIndex].strChannelNumber); if (AllPond.WestTransitPoolList[sbWestTransitPoolIndex].bClose_Machine(bControlData) == true)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.WestTransitPoolList[sbWestTransitPoolIndex].byModbusID,(ushort) ModualAlarm.eAlarmCode.ChannelControlError, true, 1,AllPond.WestTransitPoolList[sbWestTransitPoolIndex].strChannelNumber);
}
} }
} }
} }
else
{
AllPond.WestTransitPoolList[sbWestTransitPoolIndex].iRefAlarmCnt = 0;
}
} }
if (AllPond.WestTransitPoolList[sbWestTransitPoolIndex].bHadRefControl == true && AllPond.WestTransitPoolList[sbWestTransitPoolIndex].bHadOpenPumb == false) if (AllPond.WestTransitPoolList[sbWestTransitPoolIndex].bHadRefControl == true && AllPond.WestTransitPoolList[sbWestTransitPoolIndex].bHadOpenPumb == false)
{ {
if (AllPond.WestTransitPoolList[sbWestTransitPoolIndex].dChannelCurrent > CLOSECURRENT && AllPond.WestTransitPoolList[sbWestTransitPoolIndex].dChannelCurrent != 0)
if (AllPond.WestTransitPoolList[sbWestTransitPoolIndex].dChannelCurrent > CLOSECURRENT &&
AllPond.WestTransitPoolList[sbWestTransitPoolIndex].dChannelCurrent != 0)
{ {
ModualAlarm.vSet_Modual_Alarm(AllPond.WestTransitPoolList[sbWestTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.WestTransitPoolList[sbWestTransitPoolIndex].strChannelNumber); if (AllPond.WestTransitPoolList[sbWestTransitPoolIndex].iRefAlarmCnt < AllPond.WestTransitPoolList[sbWestTransitPoolIndex].MaxAlarmfeedback)
{
AllPond.WestTransitPoolList[sbWestTransitPoolIndex].iRefAlarmCnt++;
}
else
{
ModualAlarm.vSet_Modual_Alarm(AllPond.WestTransitPoolList[sbWestTransitPoolIndex].byModbusID,(ushort) ModualAlarm.eAlarmCode.ChannelControlError, true, 1,AllPond.WestTransitPoolList[sbWestTransitPoolIndex].strChannelNumber);
}
}
else
{
AllPond.WestTransitPoolList[sbWestTransitPoolIndex].iRefAlarmCnt = 0;
} }
} }
Thread.Sleep(200); Thread.Sleep(200);
} }
if (AllPond.cWestTransitPool.cLevel.dCurrentlevel >= AllPond.cWestTransitPool.vSetMaxLevel || AllPond.cWestTransitPool.cLevel.dCurrentlevel <= AllPond.cWestTransitPool.vSetMinLevel) if (AllPond.cWestTransitPool.cLevel.dCurrentlevel >= AllPond.cWestTransitPool.vSetMaxLevel || AllPond.cWestTransitPool.cLevel.dCurrentlevel <= AllPond.cWestTransitPool.vSetMinLevel)
...@@ -371,26 +429,51 @@ namespace ModbusDemo.MessageFormat ...@@ -371,26 +429,51 @@ namespace ModbusDemo.MessageFormat
for (sbyte sbDesiltingPoolIndex = 0; sbDesiltingPoolIndex < AllPond.DesiltingPoolList.Count(); sbDesiltingPoolIndex++) for (sbyte sbDesiltingPoolIndex = 0; sbDesiltingPoolIndex < AllPond.DesiltingPoolList.Count(); sbDesiltingPoolIndex++)
{ {
if (AllPond.DesiltingPoolList[sbDesiltingPoolIndex].bHadRefControl == true && AllPond.DesiltingPoolList[sbDesiltingPoolIndex].bHadOpenPumb == true) if (AllPond.DesiltingPoolList[sbDesiltingPoolIndex].bHadRefControl == true && AllPond.DesiltingPoolList[sbDesiltingPoolIndex].bHadOpenPumb == true)
{ {//泵是开的
if (AllPond.DesiltingPoolList[sbDesiltingPoolIndex].dChannelCurrent < OPENCURRENT && AllPond.DesiltingPoolList[sbDesiltingPoolIndex].dChannelCurrent != 0) if (AllPond.DesiltingPoolList[sbDesiltingPoolIndex].dChannelCurrent < OPENCURRENT && AllPond.DesiltingPoolList[sbDesiltingPoolIndex].dChannelCurrent != 0)
{ {//电流小,当前电流也不等于0
bool[] bControlData; bool[] bControlData;
if (ModualPoll.bGet_channel_Value<bool>(AllPond.DesiltingPoolList[sbDesiltingPoolIndex].byModbusID, out bControlData, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7") == true)
if (AllPond.DesiltingPoolList[sbDesiltingPoolIndex].iRefAlarmCnt < AllPond.DesiltingPoolList[sbDesiltingPoolIndex].MaxAlarmfeedback)
{ {
if (AllPond.DesiltingPoolList[sbDesiltingPoolIndex].bClose_Machine(bControlData) == true) AllPond.DesiltingPoolList[sbDesiltingPoolIndex].iRefAlarmCnt++;
{ }
ModualAlarm.vSet_Modual_Alarm(AllPond.DesiltingPoolList[sbDesiltingPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.DesiltingPoolList[sbDesiltingPoolIndex].strChannelNumber); else
{
if (ModualPoll.bGet_channel_Value<bool>(AllPond.DesiltingPoolList[sbDesiltingPoolIndex].byModbusID, out bControlData, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7") == true)
{//获取当前的开关情况
if (AllPond.DesiltingPoolList[sbDesiltingPoolIndex].bClose_Machine(bControlData) == true)
{//关闭池的操作,然后报警
ModualAlarm.vSet_Modual_Alarm(AllPond.DesiltingPoolList[sbDesiltingPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.DesiltingPoolList[sbDesiltingPoolIndex].strChannelNumber);
}
} }
} }
} }
} else
if (AllPond.DesiltingPoolList[sbDesiltingPoolIndex].bHadRefControl == true && AllPond.DesiltingPoolList[sbDesiltingPoolIndex].bHadOpenPumb == false)
{
if (AllPond.DesiltingPoolList[sbDesiltingPoolIndex].dChannelCurrent > CLOSECURRENT && AllPond.DesiltingPoolList[sbDesiltingPoolIndex].dChannelCurrent != 0)
{ {
ModualAlarm.vSet_Modual_Alarm(AllPond.DesiltingPoolList[sbDesiltingPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.DesiltingPoolList[sbDesiltingPoolIndex].strChannelNumber); AllPond.DesiltingPoolList[sbDesiltingPoolIndex].iRefAlarmCnt = 0;
} }
} }
if (AllPond.DesiltingPoolList[sbDesiltingPoolIndex].bHadRefControl == true && AllPond.DesiltingPoolList[sbDesiltingPoolIndex].bHadOpenPumb == false)
{//泵是关的
if (AllPond.DesiltingPoolList[sbDesiltingPoolIndex].dChannelCurrent > CLOSECURRENT &&
AllPond.DesiltingPoolList[sbDesiltingPoolIndex].dChannelCurrent != 0)
{
if (AllPond.DesiltingPoolList[sbDesiltingPoolIndex].iRefAlarmCnt < AllPond.DesiltingPoolList[sbDesiltingPoolIndex].MaxAlarmfeedback)
{
AllPond.DesiltingPoolList[sbDesiltingPoolIndex].iRefAlarmCnt++;
}
else
{
ModualAlarm.vSet_Modual_Alarm(AllPond.DesiltingPoolList[sbDesiltingPoolIndex].byModbusID,(ushort) ModualAlarm.eAlarmCode.ChannelControlError, true, 1,AllPond.DesiltingPoolList[sbDesiltingPoolIndex].strChannelNumber);
}
}
else
{
AllPond.DesiltingPoolList[sbDesiltingPoolIndex].iRefAlarmCnt = 0;
}
}
Thread.Sleep(200); Thread.Sleep(200);
} }
if ( AllPond.cDesiltingPool.cLevel.dCurrentlevel >= AllPond.cDesiltingPool.vSetMaxLevel || AllPond.cDesiltingPool.cLevel.dCurrentlevel <= AllPond.cDesiltingPool.vSetMinLevel) if ( AllPond.cDesiltingPool.cLevel.dCurrentlevel >= AllPond.cDesiltingPool.vSetMaxLevel || AllPond.cDesiltingPool.cLevel.dCurrentlevel <= AllPond.cDesiltingPool.vSetMinLevel)
...@@ -405,27 +488,52 @@ namespace ModbusDemo.MessageFormat ...@@ -405,27 +488,52 @@ namespace ModbusDemo.MessageFormat
#endregion #endregion
#region 出料池反馈和液位检测 #region 出料池反馈和液位检测
#if !DEBUG_TEST #if !DEBUG_TEST
for (sbyte sbEastTransitPoolIndex = 0; sbEastTransitPoolIndex < AllPond.DischargePoolList.Count(); sbEastTransitPoolIndex++) for (sbyte sbDischargePoolIndex = 0; sbDischargePoolIndex < AllPond.DischargePoolList.Count(); sbDischargePoolIndex++)
{ {
if (AllPond.DischargePoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.DischargePoolList[sbEastTransitPoolIndex].bHadOpenPumb == true) if (AllPond.DischargePoolList[sbDischargePoolIndex].bHadRefControl == true && AllPond.DischargePoolList[sbDischargePoolIndex].bHadOpenPumb == true)
{ {
if (AllPond.DischargePoolList[sbEastTransitPoolIndex].dChannelCurrent < OPENCURRENT && AllPond.DischargePoolList[sbEastTransitPoolIndex].dChannelCurrent != 0) if (AllPond.DischargePoolList[sbDischargePoolIndex].dChannelCurrent < OPENCURRENT && AllPond.DischargePoolList[sbDischargePoolIndex].dChannelCurrent != 0)
{ {
bool[] bControlData; bool[] bControlData;
if (ModualPoll.bGet_channel_Value<bool>(AllPond.DischargePoolList[sbEastTransitPoolIndex].byModbusID, out bControlData, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7") == true)
if (AllPond.DischargePoolList[sbDischargePoolIndex].iRefAlarmCnt < AllPond.DischargePoolList[sbDischargePoolIndex].MaxAlarmfeedback)
{ {
if (AllPond.DischargePoolList[sbEastTransitPoolIndex].bClose_Machine(bControlData) == true) AllPond.DischargePoolList[sbDischargePoolIndex].iRefAlarmCnt++;
}
else
{
if (ModualPoll.bGet_channel_Value<bool>(
AllPond.DischargePoolList[sbDischargePoolIndex].byModbusID, out bControlData,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7") == true)
{ {
ModualAlarm.vSet_Modual_Alarm(AllPond.DischargePoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.DischargePoolList[sbEastTransitPoolIndex].strChannelNumber); if (AllPond.DischargePoolList[sbDischargePoolIndex].bClose_Machine(bControlData) == true)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.DischargePoolList[sbDischargePoolIndex].byModbusID,(ushort) ModualAlarm.eAlarmCode.ChannelControlError, true, 1,AllPond.DischargePoolList[sbDischargePoolIndex].strChannelNumber);
}
} }
} }
} }
else
{
AllPond.DischargePoolList[sbDischargePoolIndex].iRefAlarmCnt = 0;
}
} }
if (AllPond.DischargePoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.DischargePoolList[sbEastTransitPoolIndex].bHadOpenPumb == false) if (AllPond.DischargePoolList[sbDischargePoolIndex].bHadRefControl == true && AllPond.DischargePoolList[sbDischargePoolIndex].bHadOpenPumb == false)
{ {
if (AllPond.DischargePoolList[sbEastTransitPoolIndex].dChannelCurrent > CLOSECURRENT && AllPond.DischargePoolList[sbEastTransitPoolIndex].dChannelCurrent != 0) if (AllPond.DischargePoolList[sbDischargePoolIndex].dChannelCurrent > CLOSECURRENT && AllPond.DischargePoolList[sbDischargePoolIndex].dChannelCurrent != 0)
{ {
ModualAlarm.vSet_Modual_Alarm(AllPond.DischargePoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.DischargePoolList[sbEastTransitPoolIndex].strChannelNumber); if (AllPond.DischargePoolList[sbDischargePoolIndex].iRefAlarmCnt < AllPond.DischargePoolList[sbDischargePoolIndex].MaxAlarmfeedback)
{
AllPond.DischargePoolList[sbDischargePoolIndex].iRefAlarmCnt++;
}
else
{
ModualAlarm.vSet_Modual_Alarm(AllPond.DischargePoolList[sbDischargePoolIndex].byModbusID,(ushort) ModualAlarm.eAlarmCode.ChannelControlError, true, 1,AllPond.DischargePoolList[sbDischargePoolIndex].strChannelNumber);
}
}
else
{
AllPond.DischargePoolList[sbDischargePoolIndex].iRefAlarmCnt = 0;
} }
} }
Thread.Sleep(200); Thread.Sleep(200);
...@@ -439,7 +547,7 @@ namespace ModbusDemo.MessageFormat ...@@ -439,7 +547,7 @@ namespace ModbusDemo.MessageFormat
ModualAlarm.vSet_Modual_Alarm(AllPond.cDischargePool.cLevel.byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelLevelError, false, 1, AllPond.cDischargePool.cLevel.strChannelNumber); ModualAlarm.vSet_Modual_Alarm(AllPond.cDischargePool.cLevel.byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelLevelError, false, 1, AllPond.cDischargePool.cLevel.strChannelNumber);
} }
Thread.Sleep(1000); Thread.Sleep(1000);
#endif #endif
#endregion #endregion
#region 匀浆池反馈和液位检测 #region 匀浆池反馈和液位检测
for (sbyte sbSlurryPoolIndex = 0; sbSlurryPoolIndex < AllPond.SlurryPoolList.Count(); sbSlurryPoolIndex++) for (sbyte sbSlurryPoolIndex = 0; sbSlurryPoolIndex < AllPond.SlurryPoolList.Count(); sbSlurryPoolIndex++)
...@@ -449,20 +557,43 @@ namespace ModbusDemo.MessageFormat ...@@ -449,20 +557,43 @@ namespace ModbusDemo.MessageFormat
if (AllPond.SlurryPoolList[sbSlurryPoolIndex].dChannelCurrent < OPENCURRENT && AllPond.SlurryPoolList[sbSlurryPoolIndex].dChannelCurrent != 0) if (AllPond.SlurryPoolList[sbSlurryPoolIndex].dChannelCurrent < OPENCURRENT && AllPond.SlurryPoolList[sbSlurryPoolIndex].dChannelCurrent != 0)
{ {
bool[] bControlData; bool[] bControlData;
if (ModualPoll.bGet_channel_Value<bool>(AllPond.SlurryPoolList[sbSlurryPoolIndex].byModbusID, out bControlData, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7") == true)
if (AllPond.SlurryPoolList[sbSlurryPoolIndex].iRefAlarmCnt < AllPond.SlurryPoolList[sbSlurryPoolIndex].MaxAlarmfeedback)
{ {
if (AllPond.SlurryPoolList[sbSlurryPoolIndex].bClose_Machine(bControlData) == true) AllPond.SlurryPoolList[sbSlurryPoolIndex].iRefAlarmCnt++;
}
else
{
if (ModualPoll.bGet_channel_Value<bool>(AllPond.SlurryPoolList[sbSlurryPoolIndex].byModbusID, out bControlData, "d0","d1", "d2", "d3", "d4", "d5", "d6", "d7") == true)
{ {
ModualAlarm.vSet_Modual_Alarm(AllPond.SlurryPoolList[sbSlurryPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.SlurryPoolList[sbSlurryPoolIndex].strChannelNumber); if (AllPond.SlurryPoolList[sbSlurryPoolIndex].bClose_Machine(bControlData) == true)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.SlurryPoolList[sbSlurryPoolIndex].byModbusID,(ushort) ModualAlarm.eAlarmCode.ChannelControlError, true, 1,AllPond.SlurryPoolList[sbSlurryPoolIndex].strChannelNumber);
}
} }
} }
} }
else
{
AllPond.SlurryPoolList[sbSlurryPoolIndex].iRefAlarmCnt = 0;
}
} }
if (AllPond.SlurryPoolList[sbSlurryPoolIndex].bHadRefControl == true && AllPond.SlurryPoolList[sbSlurryPoolIndex].bHadOpenPumb == false) if (AllPond.SlurryPoolList[sbSlurryPoolIndex].bHadRefControl == true && AllPond.SlurryPoolList[sbSlurryPoolIndex].bHadOpenPumb == false)
{ {
if (AllPond.SlurryPoolList[sbSlurryPoolIndex].dChannelCurrent > CLOSECURRENT && AllPond.SlurryPoolList[sbSlurryPoolIndex].dChannelCurrent != 0) if (AllPond.SlurryPoolList[sbSlurryPoolIndex].dChannelCurrent > CLOSECURRENT && AllPond.SlurryPoolList[sbSlurryPoolIndex].dChannelCurrent != 0)
{ {
ModualAlarm.vSet_Modual_Alarm(AllPond.SlurryPoolList[sbSlurryPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.SlurryPoolList[sbSlurryPoolIndex].strChannelNumber); if (AllPond.SlurryPoolList[sbSlurryPoolIndex].iRefAlarmCnt < AllPond.SlurryPoolList[sbSlurryPoolIndex].MaxAlarmfeedback)
{
AllPond.SlurryPoolList[sbSlurryPoolIndex].iRefAlarmCnt++;
}
else
{
ModualAlarm.vSet_Modual_Alarm(AllPond.SlurryPoolList[sbSlurryPoolIndex].byModbusID,(ushort) ModualAlarm.eAlarmCode.ChannelControlError, true, 1,AllPond.SlurryPoolList[sbSlurryPoolIndex].strChannelNumber);
}
}
else
{
AllPond.SlurryPoolList[sbSlurryPoolIndex].iRefAlarmCnt = 0;
} }
} }
Thread.Sleep(200); Thread.Sleep(200);
...@@ -486,20 +617,43 @@ namespace ModbusDemo.MessageFormat ...@@ -486,20 +617,43 @@ namespace ModbusDemo.MessageFormat
if (AllPond.OctagonalPoolList[sbOctagonalPoolIndex].dChannelCurrent < OPENCURRENT && AllPond.OctagonalPoolList[sbOctagonalPoolIndex].dChannelCurrent != 0) if (AllPond.OctagonalPoolList[sbOctagonalPoolIndex].dChannelCurrent < OPENCURRENT && AllPond.OctagonalPoolList[sbOctagonalPoolIndex].dChannelCurrent != 0)
{ {
bool[] bControlData; bool[] bControlData;
if (ModualPoll.bGet_channel_Value<bool>(AllPond.OctagonalPoolList[sbOctagonalPoolIndex].byModbusID, out bControlData, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7") == true)
if (AllPond.OctagonalPoolList[sbOctagonalPoolIndex].iRefAlarmCnt < AllPond.OctagonalPoolList[sbOctagonalPoolIndex].MaxAlarmfeedback)
{
AllPond.OctagonalPoolList[sbOctagonalPoolIndex].iRefAlarmCnt++;
}
else
{ {
if (AllPond.OctagonalPoolList[sbOctagonalPoolIndex].bClose_Machine(bControlData) == true) if (ModualPoll.bGet_channel_Value<bool>(AllPond.OctagonalPoolList[sbOctagonalPoolIndex].byModbusID, out bControlData,"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7") == true)
{ {
ModualAlarm.vSet_Modual_Alarm(AllPond.OctagonalPoolList[sbOctagonalPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.OctagonalPoolList[sbOctagonalPoolIndex].strChannelNumber); if (AllPond.OctagonalPoolList[sbOctagonalPoolIndex].bClose_Machine(bControlData) == true)
{
ModualAlarm.vSet_Modual_Alarm( AllPond.OctagonalPoolList[sbOctagonalPoolIndex].byModbusID,(ushort) ModualAlarm.eAlarmCode.ChannelControlError, true, 1,AllPond.OctagonalPoolList[sbOctagonalPoolIndex].strChannelNumber);
}
} }
} }
} }
else
{
AllPond.OctagonalPoolList[sbOctagonalPoolIndex].iRefAlarmCnt = 0;
}
} }
if (AllPond.OctagonalPoolList[sbOctagonalPoolIndex].bHadRefControl == true && AllPond.OctagonalPoolList[sbOctagonalPoolIndex].bHadOpenPumb == false) if (AllPond.OctagonalPoolList[sbOctagonalPoolIndex].bHadRefControl == true && AllPond.OctagonalPoolList[sbOctagonalPoolIndex].bHadOpenPumb == false)
{ {
if (AllPond.OctagonalPoolList[sbOctagonalPoolIndex].dChannelCurrent > CLOSECURRENT && AllPond.OctagonalPoolList[sbOctagonalPoolIndex].dChannelCurrent != 0) if (AllPond.OctagonalPoolList[sbOctagonalPoolIndex].dChannelCurrent > CLOSECURRENT && AllPond.OctagonalPoolList[sbOctagonalPoolIndex].dChannelCurrent != 0)
{ {
ModualAlarm.vSet_Modual_Alarm(AllPond.OctagonalPoolList[sbOctagonalPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.OctagonalPoolList[sbOctagonalPoolIndex].strChannelNumber); if (AllPond.OctagonalPoolList[sbOctagonalPoolIndex].iRefAlarmCnt < AllPond.OctagonalPoolList[sbOctagonalPoolIndex].MaxAlarmfeedback)
{
AllPond.OctagonalPoolList[sbOctagonalPoolIndex].iRefAlarmCnt++;
}
else
{
ModualAlarm.vSet_Modual_Alarm(AllPond.OctagonalPoolList[sbOctagonalPoolIndex].byModbusID,(ushort) ModualAlarm.eAlarmCode.ChannelControlError, true, 1,AllPond.OctagonalPoolList[sbOctagonalPoolIndex].strChannelNumber);
}
}
else
{
AllPond.OctagonalPoolList[sbOctagonalPoolIndex].iRefAlarmCnt = 0;
} }
} }
...@@ -532,37 +686,37 @@ namespace ModbusDemo.MessageFormat ...@@ -532,37 +686,37 @@ namespace ModbusDemo.MessageFormat
{ {
if (bOpenMachine == true && stResChannel != null) if (bOpenMachine == true && stResChannel != null)
{ {
double[] dConvertData; //double[] dConvertData;
bHadOpenMachine = true; bHadOpenMachine = true;
Thread.Sleep(2000); //Thread.Sleep(2000);
if (ModualPoll.bGet_channel_Value<double>(byResModualID, out dConvertData, stResChannel) == true) //if (ModualPoll.bGet_channel_Value<double>(byResModualID, out dConvertData, stResChannel) == true)
{ //{
if (dConvertData[0] > OPENCURRENT && bControlStatus == true) // if (dConvertData[0] > OPENCURRENT && bControlStatus == true)
{ // {
bControlStatus = true; // bControlStatus = true;
} // }
else // else
{ // {
bControlStatus = false; // bControlStatus = false;
} // }
} //}
} }
else if (bOpenMachine == false && stResChannel != null) else if (bOpenMachine == false && stResChannel != null)
{ {
double[] dConvertData; //double[] dConvertData;
bHadOpenMachine = false; bHadOpenMachine = false;
Thread.Sleep(2000); //Thread.Sleep(2000);
if (ModualPoll.bGet_channel_Value<double>(byResModualID, out dConvertData, stResChannel) == true) //if (ModualPoll.bGet_channel_Value<double>(byResModualID, out dConvertData, stResChannel) == true)
{ //{
if (dConvertData[0] < CLOSECURRENT && bControlStatus == true) // if (dConvertData[0] < CLOSECURRENT && bControlStatus == true)
{ // {
bControlStatus = true; // bControlStatus = true;
} // }
else // else
{ // {
bControlStatus = false; // bControlStatus = false;
} // }
} //}
} }
else else
{ {
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<Optimize>false</Optimize> <Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath> <OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;DEBUG_TEST</DefineConstants> <DefineConstants>TRACE;DEBUG;DEBUG_TEST1</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
......
...@@ -21,9 +21,11 @@ namespace ModbusDemo.Modular ...@@ -21,9 +21,11 @@ namespace ModbusDemo.Modular
public static byte[] byX14pIdlist = { 27 }; public static byte[] byX14pIdlist = { 27 };
private static modual.eX14pSensorChannelType[,] sX14pChannelType = new modual.eX14pSensorChannelType[byX14pNumber, byX14pReadTypeNumber] { { modual.eX14pSensorChannelType.Normal, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null } }; private static modual.eX14pSensorChannelType[,] sX14pChannelType = new modual.eX14pSensorChannelType[byX14pNumber, byX14pReadTypeNumber] { { modual.eX14pSensorChannelType.Normal, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null } };
#else #else
public const byte byX14pNumber = 2; public const byte byX14pNumber = 3;
public static byte[] byX14pIdlist = { 1,17}; public static byte[] byX14pIdlist = { 1,17,29};
private static modual.eX14pSensorChannelType[,] sX14pChannelType = new modual.eX14pSensorChannelType[byX14pNumber, byX14pReadTypeNumber] { { modual.eX14pSensorChannelType.Normal, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null }, { modual.eX14pSensorChannelType.Normal, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null }}; private static modual.eX14pSensorChannelType[,] sX14pChannelType = new modual.eX14pSensorChannelType[byX14pNumber, byX14pReadTypeNumber] { { modual.eX14pSensorChannelType.Normal, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null },
{ modual.eX14pSensorChannelType.Normal, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null },
{ modual.eX14pSensorChannelType.Normal, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null }};
#endif #endif
private const byte byX14pReadDataStartAddress = 0; private const byte byX14pReadDataStartAddress = 0;
public const byte byX14pReadDataNumber = 4; public const byte byX14pReadDataNumber = 4;
...@@ -39,14 +41,18 @@ namespace ModbusDemo.Modular ...@@ -39,14 +41,18 @@ namespace ModbusDemo.Modular
public static byte[] byX18xIdlist = { 13}; public static byte[] byX18xIdlist = { 13};
private static modual.eX18xSensorChannelType[,] sX18xChannelType = new modual.eX18xSensorChannelType[byX18xNumber, byX18xReadDataNumber] { { modual.eX18xSensorChannelType.Mike_6, modual.eX18xSensorChannelType.Mike_6, modual.eX18xSensorChannelType.Mike_6, modual.eX18xSensorChannelType.Mike_6, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.Mike_6, modual.eX18xSensorChannelType.Mike_6, modual.eX18xSensorChannelType.Mike_6 } }; private static modual.eX18xSensorChannelType[,] sX18xChannelType = new modual.eX18xSensorChannelType[byX18xNumber, byX18xReadDataNumber] { { modual.eX18xSensorChannelType.Mike_6, modual.eX18xSensorChannelType.Mike_6, modual.eX18xSensorChannelType.Mike_6, modual.eX18xSensorChannelType.Mike_6, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.Mike_6, modual.eX18xSensorChannelType.Mike_6, modual.eX18xSensorChannelType.Mike_6 } };
#else #else
public const byte byX18xNumber = 6; public const byte byX18xNumber = 10;
public static byte[] byX18xIdlist = {3,53,6,12,21,25}; public static byte[] byX18xIdlist = {3,86,97,92,12,95,96,21,25,45};
private static modual.eX18xSensorChannelType[,] sX18xChannelType = new modual.eX18xSensorChannelType[byX18xNumber, byX18xReadDataNumber]{{modual.eX18xSensorChannelType.Weiertai,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Mike_7,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //东中转池 ID 3 private static modual.eX18xSensorChannelType[,] sX18xChannelType = new modual.eX18xSensorChannelType[byX18xNumber, byX18xReadDataNumber]{{modual.eX18xSensorChannelType.Weiertai,modual.eX18xSensorChannelType.Mike_7,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //东中转池 ID 3
{modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //东中转池 ID 53 {modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //东中转池 ID 86
{modual.eX18xSensorChannelType.Mike_7,modual.eX18xSensorChannelType.Weiertai,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //西西中转池 ID 6 {modual.eX18xSensorChannelType.Weiertai,modual.eX18xSensorChannelType.Mike_7,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //西西中转池 ID 97
{modual.eX18xSensorChannelType.Mike_6,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //八角池 ID 21 {modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //西西中转池 ID 92
{modual.eX18xSensorChannelType.Mike_5,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //沉砂池 ID 12 {modual.eX18xSensorChannelType.Mike_5,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //沉砂池 ID 12
{modual.eX18xSensorChannelType.Mike_6,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}}; //匀浆池 ID 25 {modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //沉砂池 ID 95
{modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //沉砂池 ID 96
{modual.eX18xSensorChannelType.Mike_6,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //八角池 ID 21
{modual.eX18xSensorChannelType.Mike_6,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}, //匀浆池 ID 25
{modual.eX18xSensorChannelType.Mike_5,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.NormalCurrent,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null,modual.eX18xSensorChannelType.Null}}; //出料池 ID 45
#endif #endif
private const byte byX18xReadDataStartAddress = 0; private const byte byX18xReadDataStartAddress = 0;
public const byte byX18xReadDataNumber = 8; public const byte byX18xReadDataNumber = 8;
...@@ -75,14 +81,14 @@ namespace ModbusDemo.Modular ...@@ -75,14 +81,14 @@ namespace ModbusDemo.Modular
public const byte byX66cNumber = 5; public const byte byX66cNumber = 5;
public static byte[] byX66cIdlist = { 16, 31, 35, 39, 90 }; public static byte[] byX66cIdlist = { 16, 31, 35, 39, 90 };
#else #else
public const byte byX66cNumber = 32; public const byte byX66cNumber = 16;
public static byte[] byX66cIdlist = {4,5,7,8,9,10,14,15,19,22,23,24,26,30,32,36,37,38,40,41,42,43,44,46,47,48,49,50,51,52,54,57}; public static byte[] byX66cIdlist = {4,5,20,41,8,49,37,51,24,38,10,14,46,52,57,50};
#endif #endif
private const byte byX66cRelayRegStartAddress = 16; private const byte byX66cRelayRegStartAddress = 16;
public const byte byX66cRelayRegNumber = 6; public const byte byX66cRelayRegNumber = 6;
public static modual.pcx66C cx66c = new modual.pcx66C(byX66cIdlist); public static modual.pcx66C cx66c = new modual.pcx66C(byX66cIdlist);
public static List<byte>listDeleteNodesID = new List<byte>(); public static List<byte>listDeleteNodesID = new List<byte>();
public const byte COMMFAILALARM = 3; public const byte COMMFAILALARM = 5;
public static void vAllNodePoll() public static void vAllNodePoll()
{ {
for (byte i = 0; i < byX14pNumber; i++) for (byte i = 0; i < byX14pNumber; i++)
...@@ -125,7 +131,14 @@ namespace ModbusDemo.Modular ...@@ -125,7 +131,14 @@ namespace ModbusDemo.Modular
} }
else else
{ {
cx14P.sX14pDataStruct[i].dNowConvertData[j] = 0; if (cx14P.sX14PAlarmStruct[i].usCommFailTimes[j] >= COMMFAILALARM)
{
cx14P.sX14pDataStruct[i].dNowConvertData[j] = 0;
}
else
{
cx14P.sX14pDataStruct[i].dNowConvertData[j] = cx14P.sX14pDataStruct[i].dNowConvertData[j];
}
} }
if (cx14P.sX14PAlarmStruct[i].bDataNotFirstIncreaseOrDecrease == true && sX14pChannelType[i, j] != modual.eX14pSensorChannelType.Null) if (cx14P.sX14PAlarmStruct[i].bDataNotFirstIncreaseOrDecrease == true && sX14pChannelType[i, j] != modual.eX14pSensorChannelType.Null)
{ {
...@@ -182,7 +195,7 @@ namespace ModbusDemo.Modular ...@@ -182,7 +195,7 @@ namespace ModbusDemo.Modular
switch (cx18x.beChannelType[i, j]) switch (cx18x.beChannelType[i, j])
{ {
case modual.eX18xSensorChannelType.Weiertai: case modual.eX18xSensorChannelType.Weiertai:
cx18x.sX18xDataStruct[i].dNowConvertData[j] = ((double.Parse(sTempString[i][j]) - 4) / 16 * 8); cx18x.sX18xDataStruct[i].dNowConvertData[j] = ((double.Parse(sTempString[i][j]) - 4) / 16 * 8 -1);
break; break;
case modual.eX18xSensorChannelType.Mike_5: case modual.eX18xSensorChannelType.Mike_5:
cx18x.sX18xDataStruct[i].dNowConvertData[j] = ((double.Parse(sTempString[i][j]) - 4) / 16 * 5); cx18x.sX18xDataStruct[i].dNowConvertData[j] = ((double.Parse(sTempString[i][j]) - 4) / 16 * 5);
...@@ -205,7 +218,14 @@ namespace ModbusDemo.Modular ...@@ -205,7 +218,14 @@ namespace ModbusDemo.Modular
} }
else else
{ {
cx18x.sX18xDataStruct[i].dNowConvertData[j] = 0; if (cx18x.sX18xAlarmstruct[i].usCommFailTimes[j] >= COMMFAILALARM)
{
cx18x.sX18xDataStruct[i].dNowConvertData[j] = 0;
}
else
{
cx18x.sX18xDataStruct[i].dNowConvertData[j] = cx18x.sX18xDataStruct[i].dNowConvertData[j];
}
} }
if (cx18x.sX18xAlarmstruct[i].bDataNotFirstIncreaseOrDecrease == true && sX18xChannelType[i, j] != modual.eX18xSensorChannelType.Null) if (cx18x.sX18xAlarmstruct[i].bDataNotFirstIncreaseOrDecrease == true && sX18xChannelType[i, j] != modual.eX18xSensorChannelType.Null)
{ {
...@@ -439,7 +459,7 @@ namespace ModbusDemo.Modular ...@@ -439,7 +459,7 @@ namespace ModbusDemo.Modular
if (bOccurErrorChange == true) if (bOccurErrorChange == true)
{ {
ModualAlarm.sAlarmJson += "]"; ModualAlarm.sAlarmJson += "]";
await ModualAlarm.vPublishAlarmPackageJson(mqttClient); await Form1.Publish(Form1.sAlarmTopic,ModualAlarm.sAlarmJson);//ModualAlarm.vPublishAlarmPackageJson(mqttClient);
} }
} }
public static void vSend_Actual_Data(byte byModbusID) public static void vSend_Actual_Data(byte byModbusID)
...@@ -504,8 +524,8 @@ namespace ModbusDemo.Modular ...@@ -504,8 +524,8 @@ namespace ModbusDemo.Modular
if (strRes != "[") if (strRes != "[")
{ {
strRes += "]"; strRes += "]";
} Form1.vControlResponseBack(Form1.mqttTopic,strRes);
Form1.vControlResponseBack(Form1.mqttTopic,strRes); }
} }
public static bool bGet_channel_Value<T> (byte byModbusID, out T[] ChannnelData, params string[] strChannelList) public static bool bGet_channel_Value<T> (byte byModbusID, out T[] ChannnelData, params string[] strChannelList)
{ {
...@@ -707,13 +727,14 @@ namespace ModbusDemo.Modular ...@@ -707,13 +727,14 @@ namespace ModbusDemo.Modular
} }
public static bool bSet_All_Channel_Value(byte byModbusID, bool[] bControlData) public static bool bSet_All_Channel_Value(byte byModbusID, bool[] bControlData)
{ {
bool bControlStatus = true; bool bControlStatus = false;
for (int i = 0; i < ModualPoll.byX66cNumber; i++) for (int i = 0; i < ModualPoll.byX66cNumber; i++)
{ {
if (byModbusID == ModualPoll.cx66c.byModbusID[i]) if (byModbusID == ModualPoll.cx66c.byModbusID[i])
{ {
if ((ModbusComm.Modbus_WriteMultipleCoils(byModbusID, byX66cRelayRegStartAddress, bControlData)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR) if ((ModbusComm.Modbus_WriteMultipleCoils(byModbusID, byX66cRelayRegStartAddress, bControlData)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{ {
bControlStatus = true;
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
} }
else else
...@@ -721,6 +742,7 @@ namespace ModbusDemo.Modular ...@@ -721,6 +742,7 @@ namespace ModbusDemo.Modular
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bControlStatus = false; bControlStatus = false;
} }
break;
} }
} }
...@@ -730,6 +752,7 @@ namespace ModbusDemo.Modular ...@@ -730,6 +752,7 @@ namespace ModbusDemo.Modular
{ {
if ((ModbusComm.Modbus_WriteMultipleCoils(byModbusID, byX78cOutputRegStartAddress, bControlData)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR) if ((ModbusComm.Modbus_WriteMultipleCoils(byModbusID, byX78cOutputRegStartAddress, bControlData)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{ {
bControlStatus = true;
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
} }
else else
...@@ -737,6 +760,7 @@ namespace ModbusDemo.Modular ...@@ -737,6 +760,7 @@ namespace ModbusDemo.Modular
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bControlStatus = false; bControlStatus = false;
} }
break;
} }
} }
return bControlStatus; return bControlStatus;
......
...@@ -889,7 +889,7 @@ namespace ModbusDemo.application ...@@ -889,7 +889,7 @@ namespace ModbusDemo.application
{ {
#region 东中转池 #region 东中转池
private static ModualPool.pcTemperature cEastTransitPoolTemper = new ModualPool.pcTemperature("EastTransitPoolTemper", 1, "d0"); private static ModualPool.pcTemperature cEastTransitPoolTemper = new ModualPool.pcTemperature("EastTransitPoolTemper", 1, "d0");
private static ModualPool.pcLiquidlevel cEastTransitPoolLevel = new ModualPool.pcLiquidlevel("EastTransitPoolLevel", 3, "d0","d2"); private static ModualPool.pcLiquidlevel cEastTransitPoolLevel = new ModualPool.pcLiquidlevel("EastTransitPoolLevel", 3,"d0");
private static ModualPool.pcOperation cEastTransitPoolSouthWaterBase = new ModualPool.pcOperation private static ModualPool.pcOperation cEastTransitPoolSouthWaterBase = new ModualPool.pcOperation
{ {
byModbusID = 4, byModbusID = 4,
...@@ -918,77 +918,77 @@ namespace ModbusDemo.application ...@@ -918,77 +918,77 @@ namespace ModbusDemo.application
private static ModualPool.pcOperation cEastTransitPoolPumb1Base = new ModualPool.pcOperation private static ModualPool.pcOperation cEastTransitPoolPumb1Base = new ModualPool.pcOperation
{ {
byModbusID = 39, byModbusID = 20,
strOperationNumber = "d0", strOperationNumber = "d0",
strChannelNumber = new string[] { "d0", "d1" }, strChannelNumber = new string[] { "d0", "d1" },
bOpenOperation = new bool[] { true, true }, bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, false }, bCloseOperation = new bool[] { false, false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0, byResModbusID = 86,
strResChannelNumber = null strResChannelNumber = "d4"
}; };
private static ModualPool.pcMachine cEastTransitPoolPumb1 = new ModualPool.pcMachine("EastTransitPoolPumb_1", cEastTransitPoolPumb1Base); private static ModualPool.pcMachine cEastTransitPoolPumb1 = new ModualPool.pcMachine("EastTransitPoolPumb_1", cEastTransitPoolPumb1Base);
private static ModualPool.pcOperation cEastTransitPoolPumb2Base = new ModualPool.pcOperation private static ModualPool.pcOperation cEastTransitPoolPumb2Base = new ModualPool.pcOperation
{ {
byModbusID = 39, byModbusID = 20,
strOperationNumber = "d2", strOperationNumber = "d2",
strChannelNumber = new string[] { "d2", "d3" }, strChannelNumber = new string[] { "d2", "d3" },
bOpenOperation = new bool[] { true, true }, bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, true }, bCloseOperation = new bool[] { false, true },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0, byResModbusID = 86,
strResChannelNumber = null strResChannelNumber = "d0"
}; };
private static ModualPool.pcMachine cEastTransitPoolPumb2 = new ModualPool.pcMachine("EastTransitPoolPumb_2", cEastTransitPoolPumb2Base); private static ModualPool.pcMachine cEastTransitPoolPumb2 = new ModualPool.pcMachine("EastTransitPoolPumb_2", cEastTransitPoolPumb2Base);
private static ModualPool.pcOperation cEastTransitPoolStirrer1Base = new ModualPool.pcOperation private static ModualPool.pcOperation cEastTransitPoolStirrer1Base = new ModualPool.pcOperation
{ {
byModbusID = 90, byModbusID = 5,
strOperationNumber = "d0", strOperationNumber = "d0",
strChannelNumber = new string[] { "d0" }, strChannelNumber = new string[] { "d0" ,"d1"},
bOpenOperation = new bool[] { true }, bOpenOperation = new bool[] { true,true },
bCloseOperation = new bool[] { false }, bCloseOperation = new bool[] { false,false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0xFF, byResModbusID = 3,
strResChannelNumber = null strResChannelNumber = "d4"
}; };
private static ModualPool.pcMachine cEastTransitPoolStirrer1 = new ModualPool.pcMachine("EastTransitPoolStirrer_1", cEastTransitPoolStirrer1Base); private static ModualPool.pcMachine cEastTransitPoolStirrer1 = new ModualPool.pcMachine("EastTransitPoolStirrer_1", cEastTransitPoolStirrer1Base);
private static ModualPool.pcOperation cEastTransitPoolStirrer2Base = new ModualPool.pcOperation private static ModualPool.pcOperation cEastTransitPoolStirrer2Base = new ModualPool.pcOperation
{ {
byModbusID = 90, byModbusID = 5,
strOperationNumber = "d1", strOperationNumber = "d2",
strChannelNumber = new string[] { "d1" }, strChannelNumber = new string[] { "d2","d3" },
bOpenOperation = new bool[] { true }, bOpenOperation = new bool[] { true,true },
bCloseOperation = new bool[] { false }, bCloseOperation = new bool[] { false,false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0xFF, byResModbusID = 3,
strResChannelNumber = null strResChannelNumber = "d3"
}; };
private static ModualPool.pcMachine cEastTransitPoolStirrer2 = new ModualPool.pcMachine("EastTransitPoolStirrer_2", cEastTransitPoolStirrer2Base); private static ModualPool.pcMachine cEastTransitPoolStirrer2 = new ModualPool.pcMachine("EastTransitPoolStirrer_2", cEastTransitPoolStirrer2Base);
private static ModualPool.pcOperation cEastTransitPoolStirrer3Base = new ModualPool.pcOperation private static ModualPool.pcOperation cEastTransitPoolStirrer3Base = new ModualPool.pcOperation
{ {
byModbusID = 90, byModbusID = 20,
strOperationNumber = "d2", strOperationNumber = "d0",
strChannelNumber = new string[] { "d2" }, strChannelNumber = new string[] { "d0","d1" },
bOpenOperation = new bool[] { true }, bOpenOperation = new bool[] { true,true },
bCloseOperation = new bool[] { false }, bCloseOperation = new bool[] { false,false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0xFF, byResModbusID = 86,
strResChannelNumber = null strResChannelNumber = "d4"
}; };
private static ModualPool.pcMachine cEastTransitPoolStirrer3 = new ModualPool.pcMachine("EastTransitPoolStirrer_3", cEastTransitPoolStirrer3Base); private static ModualPool.pcMachine cEastTransitPoolStirrer3 = new ModualPool.pcMachine("EastTransitPoolStirrer_3", cEastTransitPoolStirrer3Base);
private static ModualPool.pcOperation cEastTransitPoolStirrer4Base = new ModualPool.pcOperation private static ModualPool.pcOperation cEastTransitPoolStirrer4Base = new ModualPool.pcOperation
{ {
byModbusID = 90, byModbusID = 41,
strOperationNumber = "d3", strOperationNumber = "d0",
strChannelNumber = new string[] { "d3" }, strChannelNumber = new string[] { "d0","d1","d2","d3" },
bOpenOperation = new bool[] { true }, bOpenOperation = new bool[] { false,true,false,true },
bCloseOperation = new bool[] { false }, bCloseOperation = new bool[] { false,true,true,false },
bHadRefControl = false, bHadRefControl = false,
byResModbusID = 0xFF, byResModbusID = 0xFF,
strResChannelNumber = null strResChannelNumber = null
...@@ -1005,18 +1005,18 @@ namespace ModbusDemo.application ...@@ -1005,18 +1005,18 @@ namespace ModbusDemo.application
public static ModualPool.pcLiquidlevel cLevel { get => cEastTransitPoolLevel; set => cEastTransitPoolLevel = value; } public static ModualPool.pcLiquidlevel cLevel { get => cEastTransitPoolLevel; set => cEastTransitPoolLevel = value; }
public static ModualPool.pcMachine cSouthWater { get => cEastTransitPoolSouthWater; set => cEastTransitPoolSouthWater = value; } public static ModualPool.pcMachine cSouthWater { get => cEastTransitPoolSouthWater; set => cEastTransitPoolSouthWater = value; }
public static ModualPool.pcMachine cNorthWater { get => cEastTransitPoolNorthWater; set => cEastTransitPoolNorthWater = value; } public static ModualPool.pcMachine cNorthWater { get => cEastTransitPoolNorthWater; set => cEastTransitPoolNorthWater = value; }
public static ModualPool.pcMachine cPumb1 { get => cEastTransitPoolPumb1; set => cEastTransitPoolPumb1 = value; } public static ModualPool.pcMachine c6Pumb1 { get => cEastTransitPoolPumb1; set => cEastTransitPoolPumb1 = value; }
public static ModualPool.pcMachine cPumb2 { get => cEastTransitPoolPumb2; set => cEastTransitPoolPumb2 = value; } public static ModualPool.pcMachine c4Pumb2 { get => cEastTransitPoolPumb2; set => cEastTransitPoolPumb2 = value; }
public static ModualPool.pcMachine cStirrer1 { get => cEastTransitPoolStirrer1; set => cEastTransitPoolStirrer1 = value; } public static ModualPool.pcMachine c2Stirrer1 { get => cEastTransitPoolStirrer1; set => cEastTransitPoolStirrer1 = value; }
public static ModualPool.pcMachine cStirrer2 { get => cEastTransitPoolStirrer2; set => cEastTransitPoolStirrer2 = value; } public static ModualPool.pcMachine c1Stirrer2 { get => cEastTransitPoolStirrer2; set => cEastTransitPoolStirrer2 = value; }
public static ModualPool.pcMachine cStirrer3 { get => cEastTransitPoolStirrer3; set => cEastTransitPoolStirrer3 = value; } public static ModualPool.pcMachine c5Stirrer3 { get => cEastTransitPoolStirrer3; set => cEastTransitPoolStirrer3 = value; }
public static ModualPool.pcMachine cStirrer4 { get => cEastTransitPoolStirrer4; set => cEastTransitPoolStirrer4 = value; } public static ModualPool.pcMachine c7Stirrer4 { get => cEastTransitPoolStirrer4; set => cEastTransitPoolStirrer4 = value; }
} }
#endregion #endregion
#region 西中转池 #region 西中转池
private static ModualPool.pcTemperature cWestTransitPoolTemper = new ModualPool.pcTemperature("WestTransitPoolTemper", 29, "d0"); private static ModualPool.pcTemperature cWestTransitPoolTemper = new ModualPool.pcTemperature("WestTransitPoolTemper", 29, "d0");
private static ModualPool.pcLiquidlevel cWestTransitPoolLevel = new ModualPool.pcLiquidlevel("WestTransitPoolLevel", 6, "d0","d1"); private static ModualPool.pcLiquidlevel cWestTransitPoolLevel = new ModualPool.pcLiquidlevel("WestTransitPoolLevel", 97, "d0","d1");
private static ModualPool.pcOperation cWestTransitPoolSouthWaterBase = new ModualPool.pcOperation private static ModualPool.pcOperation cWestTransitPoolSouthWaterBase = new ModualPool.pcOperation
{ {
byModbusID = 49, byModbusID = 49,
...@@ -1045,84 +1045,71 @@ namespace ModbusDemo.application ...@@ -1045,84 +1045,71 @@ namespace ModbusDemo.application
private static ModualPool.pcOperation cWestTransitPoolPumb1Base = new ModualPool.pcOperation private static ModualPool.pcOperation cWestTransitPoolPumb1Base = new ModualPool.pcOperation
{ {
byModbusID = 31, byModbusID = 37,
strOperationNumber = "d2", strOperationNumber = "d2",
strChannelNumber = new string[] { "d2", "d3" }, strChannelNumber = new string[] { "d2", "d3" },
bOpenOperation = new bool[] { true, true }, bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, false }, bCloseOperation = new bool[] { false, false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0, byResModbusID = 92,
strResChannelNumber = null strResChannelNumber = "d2"
}; };
private static ModualPool.pcMachine cWestTransitPoolPumb1 = new ModualPool.pcMachine("WestTransitPoolPumb_1", cWestTransitPoolPumb1Base); private static ModualPool.pcMachine cWestTransitPoolPumb1 = new ModualPool.pcMachine("WestTransitPoolPumb_1", cWestTransitPoolPumb1Base);
private static ModualPool.pcOperation cWestTransitPoolPumb2Base = new ModualPool.pcOperation
{
byModbusID = 39,
strOperationNumber = "d2",
strChannelNumber = new string[] { "d2", "d3" },
bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, true },
bHadRefControl = false,
byResModbusID = 0,
strResChannelNumber = null
};
private static ModualPool.pcMachine cWestTransitPoolPumb2 = new ModualPool.pcMachine("WestTransitPoolPumb_2", cWestTransitPoolPumb2Base);
private static ModualPool.pcOperation cWestTransitPoolStirrer1Base = new ModualPool.pcOperation private static ModualPool.pcOperation cWestTransitPoolStirrer1Base = new ModualPool.pcOperation
{ {
byModbusID = 31, byModbusID = 8,
strOperationNumber = "d4", strOperationNumber = "d0",
strChannelNumber = new string[] { "d4","d5" }, strChannelNumber = new string[] { "d0","d1" },
bOpenOperation = new bool[] { true,true }, bOpenOperation = new bool[] { true,true },
bCloseOperation = new bool[] { false,false }, bCloseOperation = new bool[] { false,false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0xFF, byResModbusID = 97,
strResChannelNumber = null strResChannelNumber = "d3"
}; };
private static ModualPool.pcMachine cWestTransitPoolStirrer1 = new ModualPool.pcMachine("WestTransitPoolStirrer_1", cWestTransitPoolStirrer1Base); private static ModualPool.pcMachine cWestTransitPoolStirrer1 = new ModualPool.pcMachine("WestTransitPoolStirrer_1", cWestTransitPoolStirrer1Base);
private static ModualPool.pcOperation cWestTransitPoolStirrer2Base = new ModualPool.pcOperation private static ModualPool.pcOperation cWestTransitPoolStirrer2Base = new ModualPool.pcOperation
{ {
byModbusID = 90, byModbusID = 8,
strOperationNumber = "d1", strOperationNumber = "d2",
strChannelNumber = new string[] { "d1" }, strChannelNumber = new string[] { "d2","d3" },
bOpenOperation = new bool[] { true }, bOpenOperation = new bool[] { true,true },
bCloseOperation = new bool[] { false }, bCloseOperation = new bool[] { false,false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0xFF, byResModbusID = 97,
strResChannelNumber = "d0" strResChannelNumber = "d2"
}; };
private static ModualPool.pcMachine cWestTransitPoolStirrer2 = new ModualPool.pcMachine("WestTransitPoolStirrer_2", cWestTransitPoolStirrer2Base); private static ModualPool.pcMachine cWestTransitPoolStirrer2 = new ModualPool.pcMachine("WestTransitPoolStirrer_2", cWestTransitPoolStirrer2Base);
private static ModualPool.pcOperation cWestTransitPoolStirrer3Base = new ModualPool.pcOperation private static ModualPool.pcOperation cWestTransitPoolStirrer3Base = new ModualPool.pcOperation
{ {
byModbusID = 90, byModbusID = 37,
strOperationNumber = "d2", strOperationNumber = "d0",
strChannelNumber = new string[] { "d2" }, strChannelNumber = new string[] { "d0","d1" },
bOpenOperation = new bool[] { true }, bOpenOperation = new bool[] { true,true },
bCloseOperation = new bool[] { false }, bCloseOperation = new bool[] { false,false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0xFF, byResModbusID = 92,
strResChannelNumber = null strResChannelNumber = "d1"
}; };
private static ModualPool.pcMachine cWestTransitPoolStirrer3 = new ModualPool.pcMachine("WestTransitPoolStirrer_3", cWestTransitPoolStirrer3Base); private static ModualPool.pcMachine cWestTransitPoolStirrer3 = new ModualPool.pcMachine("WestTransitPoolStirrer_3", cWestTransitPoolStirrer3Base);
private static ModualPool.pcOperation cWestTransitPoolStirrer4Base = new ModualPool.pcOperation private static ModualPool.pcOperation cWestTransitPoolStirrer4Base = new ModualPool.pcOperation
{ {
byModbusID = 90, byModbusID = 37,
strOperationNumber = "d3", strOperationNumber = "d4",
strChannelNumber = new string[] { "d3" }, strChannelNumber = new string[] { "d4","d5" },
bOpenOperation = new bool[] { true }, bOpenOperation = new bool[] { true,true },
bCloseOperation = new bool[] { false }, bCloseOperation = new bool[] { false,false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0xFF, byResModbusID = 92,
strResChannelNumber = null strResChannelNumber = "d0"
}; };
private static ModualPool.pcMachine cWestTransitPoolStirrer4 = new ModualPool.pcMachine("WestTransitPoolStirrer_4", cWestTransitPoolStirrer4Base); private static ModualPool.pcMachine cWestTransitPoolStirrer4 = new ModualPool.pcMachine("WestTransitPoolStirrer_4", cWestTransitPoolStirrer4Base);
public static List<ModualPool.pcMachine> WestTransitPoolList = new List<ModualPool.pcMachine>(new ModualPool.pcMachine[] { cWestTransitPoolSouthWater, cWestTransitPoolNorthWater, cWestTransitPoolPumb1, cWestTransitPoolPumb2, cWestTransitPoolStirrer1, cWestTransitPoolStirrer2, cWestTransitPoolStirrer3, cWestTransitPoolStirrer4 }); public static List<ModualPool.pcMachine> WestTransitPoolList = new List<ModualPool.pcMachine>(new ModualPool.pcMachine[] { cWestTransitPoolSouthWater, cWestTransitPoolNorthWater, cWestTransitPoolPumb1, cWestTransitPoolStirrer1, cWestTransitPoolStirrer2, cWestTransitPoolStirrer3, cWestTransitPoolStirrer4 });
public static class cWestTransitPool public static class cWestTransitPool
{ {
...@@ -1132,125 +1119,98 @@ namespace ModbusDemo.application ...@@ -1132,125 +1119,98 @@ namespace ModbusDemo.application
public static ModualPool.pcLiquidlevel cLevel { get => cWestTransitPoolLevel; set => cWestTransitPoolLevel = value; } public static ModualPool.pcLiquidlevel cLevel { get => cWestTransitPoolLevel; set => cWestTransitPoolLevel = value; }
public static ModualPool.pcMachine cSouthWater { get => cWestTransitPoolSouthWater; set => cWestTransitPoolSouthWater = value; } public static ModualPool.pcMachine cSouthWater { get => cWestTransitPoolSouthWater; set => cWestTransitPoolSouthWater = value; }
public static ModualPool.pcMachine cNorthWater { get => cWestTransitPoolNorthWater; set => cWestTransitPoolNorthWater = value; } public static ModualPool.pcMachine cNorthWater { get => cWestTransitPoolNorthWater; set => cWestTransitPoolNorthWater = value; }
public static ModualPool.pcMachine cPumb1 { get => cWestTransitPoolPumb1; set => cWestTransitPoolPumb1 = value; } public static ModualPool.pcMachine c6Pumb1 { get => cWestTransitPoolPumb1; set => cWestTransitPoolPumb1 = value; }
public static ModualPool.pcMachine cPumb2 { get => cWestTransitPoolPumb2; set => cWestTransitPoolPumb2 = value; } public static ModualPool.pcMachine c2Stirrer1 { get => cWestTransitPoolStirrer1; set => cWestTransitPoolStirrer1 = value; }
public static ModualPool.pcMachine cStirrer1 { get => cWestTransitPoolStirrer1; set => cWestTransitPoolStirrer1 = value; } public static ModualPool.pcMachine c1Stirrer2 { get => cWestTransitPoolStirrer2; set => cWestTransitPoolStirrer2 = value; }
public static ModualPool.pcMachine cStirrer2 { get => cWestTransitPoolStirrer2; set => cWestTransitPoolStirrer2 = value; } public static ModualPool.pcMachine c5Stirrer3 { get => cWestTransitPoolStirrer3; set => cWestTransitPoolStirrer3 = value; }
public static ModualPool.pcMachine cStirrer3 { get => cWestTransitPoolStirrer3; set => cWestTransitPoolStirrer3 = value; } public static ModualPool.pcMachine c4Stirrer4 { get => cWestTransitPoolStirrer4; set => cWestTransitPoolStirrer4 = value; }
public static ModualPool.pcMachine cStirrer4 { get => cWestTransitPoolStirrer4; set => cWestTransitPoolStirrer4 = value; }
} }
#endregion #endregion
#region 沉砂池 #region 沉砂池
private static ModualPool.pcTemperature cDesiltingPoolTemper = new ModualPool.pcTemperature("DesiltingPoolTemper", 27, "d0"); private static ModualPool.pcTemperature cDesiltingPoolTemper = new ModualPool.pcTemperature("DesiltingPoolTemper", 27, "d0");
private static ModualPool.pcLiquidlevel cDesiltingPoolLevel = new ModualPool.pcLiquidlevel("DesiltingPoolLevel", 13, "d0"); private static ModualPool.pcLiquidlevel cDesiltingPoolLevel = new ModualPool.pcLiquidlevel("DesiltingPoolLevel", 12, "d0");
private static ModualPool.pcOperation cDesiltingPoolPumb1Base = new ModualPool.pcOperation private static ModualPool.pcOperation cDesiltingPoolPumb1Base = new ModualPool.pcOperation
{ {
byModbusID = 31, byModbusID = 38,
strOperationNumber = "d2", strOperationNumber = "d0",
strChannelNumber = new string[] { "d2", "d3" }, strChannelNumber = new string[] { "d0", "d1","d2" },
bOpenOperation = new bool[] { true, true }, bOpenOperation = new bool[] { true, true,false },
bCloseOperation = new bool[] { false, false }, bCloseOperation = new bool[] { false, true,true },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0, byResModbusID = 96,
strResChannelNumber = null strResChannelNumber = "d1"
}; };
private static ModualPool.pcMachine cDesiltingPoolPumb1 = new ModualPool.pcMachine("DesiltingPoolPumb1", cDesiltingPoolPumb1Base); private static ModualPool.pcMachine cDesiltingPoolPumb1 = new ModualPool.pcMachine("DesiltingPoolPumb1", cDesiltingPoolPumb1Base);
private static ModualPool.pcOperation cDesiltingPoolPumb2Base = new ModualPool.pcOperation private static ModualPool.pcOperation cDesiltingPoolPumb2Base = new ModualPool.pcOperation
{ {
byModbusID = 39, byModbusID = 38,
strOperationNumber = "d2", strOperationNumber = "d4",
strChannelNumber = new string[] { "d2", "d3" }, strChannelNumber = new string[] { "d4", "d5" },
bOpenOperation = new bool[] { true, true }, bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, true }, bCloseOperation = new bool[] { false, false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0, byResModbusID = 96,
strResChannelNumber = null strResChannelNumber = "d0"
}; };
private static ModualPool.pcMachine cDesiltingPoolPumb2 = new ModualPool.pcMachine("DesiltingPoolPumb2", cDesiltingPoolPumb2Base); private static ModualPool.pcMachine cDesiltingPoolPumb2 = new ModualPool.pcMachine("DesiltingPoolPumb2", cDesiltingPoolPumb2Base);
private static ModualPool.pcOperation cDesiltingPoolPumb3Base = new ModualPool.pcOperation private static ModualPool.pcOperation cDesiltingPoolPumb3Base = new ModualPool.pcOperation
{ {
byModbusID = 31, byModbusID = 51,
strOperationNumber = "d2", strOperationNumber = "d0",
strChannelNumber = new string[] { "d2", "d3" }, strChannelNumber = new string[] { "d0", "d1" },
bOpenOperation = new bool[] { true, true }, bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, false }, bCloseOperation = new bool[] { false, false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0, byResModbusID = 95,
strResChannelNumber = null strResChannelNumber = "d0"
}; };
private static ModualPool.pcMachine cDesiltingPoolPumb3 = new ModualPool.pcMachine("DesiltingPoolPumb3", cDesiltingPoolPumb3Base); private static ModualPool.pcMachine cDesiltingPoolPumb3 = new ModualPool.pcMachine("DesiltingPoolPumb3", cDesiltingPoolPumb3Base);
private static ModualPool.pcOperation cDesiltingPoolPumb4Base = new ModualPool.pcOperation
{
byModbusID = 39,
strOperationNumber = "d2",
strChannelNumber = new string[] { "d2", "d3" },
bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, true },
bHadRefControl = false,
byResModbusID = 0,
strResChannelNumber = null
};
private static ModualPool.pcMachine cDesiltingPoolPumb4 = new ModualPool.pcMachine("DesiltingPoolPumb4", cDesiltingPoolPumb4Base);
private static ModualPool.pcOperation cDesiltingPoolStirrer1Base = new ModualPool.pcOperation private static ModualPool.pcOperation cDesiltingPoolStirrer1Base = new ModualPool.pcOperation
{ {
byModbusID = 31, byModbusID = 24,
strOperationNumber = "d4", strOperationNumber = "d0",
strChannelNumber = new string[] { "d4","d5" }, strChannelNumber = new string[] { "d0","d1" },
bOpenOperation = new bool[] { true,true }, bOpenOperation = new bool[] { true,true },
bCloseOperation = new bool[] { false,false }, bCloseOperation = new bool[] { false,false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0xFF, byResModbusID = 12,
strResChannelNumber = null strResChannelNumber = "d3"
}; };
private static ModualPool.pcMachine cDesiltingPoolStirrer1 = new ModualPool.pcMachine("DesiltingPoolStirrer1", cDesiltingPoolStirrer1Base); private static ModualPool.pcMachine cDesiltingPoolStirrer1 = new ModualPool.pcMachine("DesiltingPoolStirrer1", cDesiltingPoolStirrer1Base);
private static ModualPool.pcOperation cDesiltingPoolStirrer2Base = new ModualPool.pcOperation private static ModualPool.pcOperation cDesiltingPoolStirrer2Base = new ModualPool.pcOperation
{ {
byModbusID = 90, byModbusID = 24,
strOperationNumber = "d1", strOperationNumber = "d2",
strChannelNumber = new string[] { "d1" }, strChannelNumber = new string[] { "d2","d3" },
bOpenOperation = new bool[] { true }, bOpenOperation = new bool[] { true,true },
bCloseOperation = new bool[] { false }, bCloseOperation = new bool[] { false,false},
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0xFF, byResModbusID = 12,
strResChannelNumber = "d0" strResChannelNumber = "d2"
}; };
private static ModualPool.pcMachine cDesiltingPoolStirrer2 = new ModualPool.pcMachine("DesiltingPoolStirrer2", cDesiltingPoolStirrer2Base); private static ModualPool.pcMachine cDesiltingPoolStirrer2 = new ModualPool.pcMachine("DesiltingPoolStirrer2", cDesiltingPoolStirrer2Base);
private static ModualPool.pcOperation cDesiltingPoolStirrer3Base = new ModualPool.pcOperation private static ModualPool.pcOperation cDesiltingPoolStirrer3Base = new ModualPool.pcOperation
{ {
byModbusID = 90, byModbusID = 24,
strOperationNumber = "d2", strOperationNumber = "d4",
strChannelNumber = new string[] { "d2" }, strChannelNumber = new string[] { "d4","d5" },
bOpenOperation = new bool[] { true }, bOpenOperation = new bool[] { true,true },
bCloseOperation = new bool[] { false }, bCloseOperation = new bool[] { false,false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0xFF, byResModbusID = 12,
strResChannelNumber = null strResChannelNumber = "d1"
}; };
private static ModualPool.pcMachine cDesiltingPoolStirrer3 = new ModualPool.pcMachine("DesiltingPoolStirrer3", cDesiltingPoolStirrer3Base); private static ModualPool.pcMachine cDesiltingPoolStirrer3 = new ModualPool.pcMachine("DesiltingPoolStirrer3", cDesiltingPoolStirrer3Base);
private static ModualPool.pcOperation cDesiltingPoolStirrer4Base = new ModualPool.pcOperation public static List<ModualPool.pcMachine> DesiltingPoolList = new List<ModualPool.pcMachine>(new ModualPool.pcMachine[] { cDesiltingPoolPumb1, cDesiltingPoolPumb2, cDesiltingPoolPumb3, cDesiltingPoolStirrer1, cDesiltingPoolStirrer2, cDesiltingPoolStirrer3 });
{
byModbusID = 90,
strOperationNumber = "d3",
strChannelNumber = new string[] { "d3" },
bOpenOperation = new bool[] { true },
bCloseOperation = new bool[] { false },
bHadRefControl = false,
byResModbusID = 0xFF,
strResChannelNumber = null
};
private static ModualPool.pcMachine cDesiltingPoolStirrer4 = new ModualPool.pcMachine("DesiltingPoolStirrer4", cDesiltingPoolStirrer4Base);
public static List<ModualPool.pcMachine> DesiltingPoolList = new List<ModualPool.pcMachine>(new ModualPool.pcMachine[] { cDesiltingPoolPumb1, cDesiltingPoolPumb2, cDesiltingPoolPumb3, cDesiltingPoolPumb4, cDesiltingPoolStirrer1, cDesiltingPoolStirrer2, cDesiltingPoolStirrer3, cDesiltingPoolStirrer4 });
public static class cDesiltingPool public static class cDesiltingPool
{ {
...@@ -1258,45 +1218,43 @@ namespace ModbusDemo.application ...@@ -1258,45 +1218,43 @@ namespace ModbusDemo.application
public static double vSetMinLevel; public static double vSetMinLevel;
public static ModualPool.pcTemperature cTemper { get => cDesiltingPoolTemper; set => cDesiltingPoolTemper = value; } public static ModualPool.pcTemperature cTemper { get => cDesiltingPoolTemper; set => cDesiltingPoolTemper = value; }
public static ModualPool.pcLiquidlevel cLevel { get => cDesiltingPoolLevel; set => cDesiltingPoolLevel = value; } public static ModualPool.pcLiquidlevel cLevel { get => cDesiltingPoolLevel; set => cDesiltingPoolLevel = value; }
public static ModualPool.pcMachine cPumb1 { get => cDesiltingPoolPumb1; set => cDesiltingPoolPumb1 = value; } public static ModualPool.pcMachine c6Pumb1 { get => cDesiltingPoolPumb1; set => cDesiltingPoolPumb1 = value; }
public static ModualPool.pcMachine cPumb2 { get => cDesiltingPoolPumb2; set => cDesiltingPoolPumb2 = value; } public static ModualPool.pcMachine c5Pumb2 { get => cDesiltingPoolPumb2; set => cDesiltingPoolPumb2 = value; }
public static ModualPool.pcMachine cPumb3 { get => cDesiltingPoolPumb3; set => cDesiltingPoolPumb3 = value; } public static ModualPool.pcMachine c1Pumb3 { get => cDesiltingPoolPumb3; set => cDesiltingPoolPumb3 = value; }
public static ModualPool.pcMachine cPumb4 { get => cDesiltingPoolPumb4; set => cDesiltingPoolPumb4 = value; } public static ModualPool.pcMachine c4Stirrer1 { get => cDesiltingPoolStirrer1; set => cDesiltingPoolStirrer1 = value; }
public static ModualPool.pcMachine cStirrer1 { get => cDesiltingPoolStirrer1; set => cDesiltingPoolStirrer1 = value; } public static ModualPool.pcMachine c3Stirrer2 { get => cDesiltingPoolStirrer2; set => cDesiltingPoolStirrer2 = value; }
public static ModualPool.pcMachine cStirrer2 { get => cDesiltingPoolStirrer2; set => cDesiltingPoolStirrer2 = value; } public static ModualPool.pcMachine c2Stirrer3 { get => cDesiltingPoolStirrer3; set => cDesiltingPoolStirrer3 = value; }
public static ModualPool.pcMachine cStirrer3 { get => cDesiltingPoolStirrer3; set => cDesiltingPoolStirrer3 = value; }
public static ModualPool.pcMachine cStirrer4 { get => cDesiltingPoolStirrer4; set => cDesiltingPoolStirrer4 = value; }
} }
#endregion #endregion
#region 出料池 #region 出料池
private static ModualPool.pcTemperature cDischargePoolTemper = new ModualPool.pcTemperature("DischargePoolTemper", 27, "d0"); private static ModualPool.pcTemperature cDischargePoolTemper = new ModualPool.pcTemperature("DischargePoolTemper", 27, "d0");
private static ModualPool.pcLiquidlevel cDischargePoolLevel = new ModualPool.pcLiquidlevel("DischargePoolLevel", 13, "d0"); private static ModualPool.pcLiquidlevel cDischargePoolLevel = new ModualPool.pcLiquidlevel("DischargePoolLevel", 45, "d0");
private static ModualPool.pcOperation cDischargePoolPumb1Base = new ModualPool.pcOperation private static ModualPool.pcOperation cDischargePoolPumb1Base = new ModualPool.pcOperation
{ {
byModbusID = 31, byModbusID = 50,
strOperationNumber = "d2", strOperationNumber = "d0",
strChannelNumber = new string[] { "d2", "d3" }, strChannelNumber = new string[] { "d0","d1" },
bOpenOperation = new bool[] { true, true }, bOpenOperation = new bool[] { true,false },
bCloseOperation = new bool[] { false, false }, bCloseOperation = new bool[] { false,true },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0, byResModbusID = 45,
strResChannelNumber = null strResChannelNumber = "d2"
}; };
private static ModualPool.pcMachine cDischargePoolPumb1 = new ModualPool.pcMachine("DischargePoolPumb1", cDischargePoolPumb1Base); private static ModualPool.pcMachine cDischargePoolPumb1 = new ModualPool.pcMachine("DischargePoolPumb1", cDischargePoolPumb1Base);
private static ModualPool.pcOperation cDischargePoolStirrer1Base = new ModualPool.pcOperation private static ModualPool.pcOperation cDischargePoolStirrer1Base = new ModualPool.pcOperation
{ {
byModbusID = 31, byModbusID = 50,
strOperationNumber = "d4", strOperationNumber = "d2",
strChannelNumber = new string[] { "d4","d5" }, strChannelNumber = new string[] { "d2", "d3" },
bOpenOperation = new bool[] { true,true }, bOpenOperation = new bool[] { true, false },
bCloseOperation = new bool[] { false,false }, bCloseOperation = new bool[] { false, true },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0xFF, byResModbusID = 45,
strResChannelNumber = null strResChannelNumber = "d1"
}; };
private static ModualPool.pcMachine cDischargePoolStirrer1 = new ModualPool.pcMachine("DischargePoolStirrer1", cDischargePoolStirrer1Base); private static ModualPool.pcMachine cDischargePoolStirrer1 = new ModualPool.pcMachine("DischargePoolStirrer1", cDischargePoolStirrer1Base);
...@@ -1308,38 +1266,38 @@ namespace ModbusDemo.application ...@@ -1308,38 +1266,38 @@ namespace ModbusDemo.application
public static double vSetMinLevel; public static double vSetMinLevel;
public static ModualPool.pcTemperature cTemper { get => cDischargePoolTemper; set => cDischargePoolTemper = value; } public static ModualPool.pcTemperature cTemper { get => cDischargePoolTemper; set => cDischargePoolTemper = value; }
public static ModualPool.pcLiquidlevel cLevel { get => cDischargePoolLevel; set => cDischargePoolLevel = value; } public static ModualPool.pcLiquidlevel cLevel { get => cDischargePoolLevel; set => cDischargePoolLevel = value; }
public static ModualPool.pcMachine cPumb1 { get => cDischargePoolPumb1; set => cDischargePoolPumb1 = value; } public static ModualPool.pcMachine c2Pumb1 { get => cDischargePoolPumb1; set => cDischargePoolPumb1 = value; }
public static ModualPool.pcMachine cStirrer1 { get => cDischargePoolStirrer1; set => cDischargePoolStirrer1 = value; } public static ModualPool.pcMachine c1Stirrer1 { get => cDischargePoolStirrer1; set => cDischargePoolStirrer1 = value; }
} }
#endregion #endregion
#region 匀浆池 #region 匀浆池
private static ModualPool.pcTemperature cSlurryPoolTemper = new ModualPool.pcTemperature("SlurryPoolTemper", 27, "d0"); private static ModualPool.pcTemperature cSlurryPoolTemper = new ModualPool.pcTemperature("SlurryPoolTemper", 17, "d0","d1");
private static ModualPool.pcLiquidlevel cSlurryPoolLevel = new ModualPool.pcLiquidlevel("SlurryPoolLevel", 13, "d0"); private static ModualPool.pcLiquidlevel cSlurryPoolLevel = new ModualPool.pcLiquidlevel("SlurryPoolLevel",25, "d0");
private static ModualPool.pcOperation cSlurryPoolPumb1Base = new ModualPool.pcOperation private static ModualPool.pcOperation cSlurryPoolPumb1Base = new ModualPool.pcOperation
{ {
byModbusID = 31, byModbusID = 57,
strOperationNumber = "d2", strOperationNumber = "d0",
strChannelNumber = new string[] { "d2", "d3" }, strChannelNumber = new string[] { "d0", "d1" },
bOpenOperation = new bool[] { true, true }, bOpenOperation = new bool[] { true, false },
bCloseOperation = new bool[] { false, false }, bCloseOperation = new bool[] { false, false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0, byResModbusID = 25,
strResChannelNumber = null strResChannelNumber = "d1"
}; };
private static ModualPool.pcMachine cSlurryPoolPumb1 = new ModualPool.pcMachine("SlurryPoolPumb1", cSlurryPoolPumb1Base); private static ModualPool.pcMachine cSlurryPoolPumb1 = new ModualPool.pcMachine("SlurryPoolPumb1", cSlurryPoolPumb1Base);
private static ModualPool.pcOperation cSlurryPoolStirrer1Base = new ModualPool.pcOperation private static ModualPool.pcOperation cSlurryPoolStirrer1Base = new ModualPool.pcOperation
{ {
byModbusID = 31, byModbusID = 57,
strOperationNumber = "d4", strOperationNumber = "d2",
strChannelNumber = new string[] { "d4","d5" }, strChannelNumber = new string[] { "d2","d3" },
bOpenOperation = new bool[] { true,true }, bOpenOperation = new bool[] { true,false },
bCloseOperation = new bool[] { false,false }, bCloseOperation = new bool[] { false,true },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0xFF, byResModbusID = 25,
strResChannelNumber = null strResChannelNumber = "d2"
}; };
private static ModualPool.pcMachine cSlurryPoolStirrer1 = new ModualPool.pcMachine("SlurryPoolStirrer1 ", cSlurryPoolStirrer1Base); private static ModualPool.pcMachine cSlurryPoolStirrer1 = new ModualPool.pcMachine("SlurryPoolStirrer1 ", cSlurryPoolStirrer1Base);
...@@ -1351,68 +1309,81 @@ namespace ModbusDemo.application ...@@ -1351,68 +1309,81 @@ namespace ModbusDemo.application
public static double vSetMinLevel; public static double vSetMinLevel;
public static ModualPool.pcTemperature cTemper { get => cSlurryPoolTemper; set => cSlurryPoolTemper = value; } public static ModualPool.pcTemperature cTemper { get => cSlurryPoolTemper; set => cSlurryPoolTemper = value; }
public static ModualPool.pcLiquidlevel cLevel { get => cSlurryPoolLevel; set => cSlurryPoolLevel = value; } public static ModualPool.pcLiquidlevel cLevel { get => cSlurryPoolLevel; set => cSlurryPoolLevel = value; }
public static ModualPool.pcMachine cPumb1 { get => cSlurryPoolPumb1; set => cSlurryPoolPumb1 = value; } public static ModualPool.pcMachine c1Pumb1 { get => cSlurryPoolPumb1; set => cSlurryPoolPumb1 = value; }
public static ModualPool.pcMachine cStirrer1 { get => cSlurryPoolStirrer1; set => cSlurryPoolStirrer1 = value; } public static ModualPool.pcMachine c2Stirrer1 { get => cSlurryPoolStirrer1; set => cSlurryPoolStirrer1 = value; }
} }
#endregion #endregion
#region 八角池 #region 八角池
private static ModualPool.pcTemperature cOctagonalPoolTemper = new ModualPool.pcTemperature("OctagonalPoolTemper", 27, "d0"); private static ModualPool.pcTemperature cOctagonalPoolTemper = new ModualPool.pcTemperature("OctagonalPoolTemper", 27, "d0");
private static ModualPool.pcLiquidlevel cOctagonalPoolLevel = new ModualPool.pcLiquidlevel("OctagonalPoolLevel", 13, "d0"); private static ModualPool.pcLiquidlevel cOctagonalPoolLevel = new ModualPool.pcLiquidlevel("OctagonalPoolLevel", 21, "d0");
private static ModualPool.pcOperation cOctagonalPoolPumb1Base = new ModualPool.pcOperation private static ModualPool.pcOperation cOctagonalPoolPumb1Base = new ModualPool.pcOperation
{ {
byModbusID = 31, byModbusID = 10,
strOperationNumber = "d2", strOperationNumber = "d0",
strChannelNumber = new string[] { "d2", "d3" }, strChannelNumber = new string[] { "d0", "d1" },
bOpenOperation = new bool[] { true, true }, bOpenOperation = new bool[] { true, false },
bCloseOperation = new bool[] { false, false }, bCloseOperation = new bool[] { false, false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0, byResModbusID = 21,
strResChannelNumber = null strResChannelNumber = "d3"
}; };
private static ModualPool.pcMachine cOctagonalPoolPumb1 = new ModualPool.pcMachine("OctagonalPoolPumb1 ", cOctagonalPoolPumb1Base); private static ModualPool.pcMachine cOctagonalPoolPumb1 = new ModualPool.pcMachine("OctagonalPoolPumb1 ", cOctagonalPoolPumb1Base);
private static ModualPool.pcOperation cOctagonalPoolPumb2Base = new ModualPool.pcOperation private static ModualPool.pcOperation cOctagonalPoolPumb2Base = new ModualPool.pcOperation
{ {
byModbusID = 39, byModbusID = 14,
strOperationNumber = "d2", strOperationNumber = "d0",
strChannelNumber = new string[] { "d2", "d3" }, strChannelNumber = new string[] { "d0", "d1","d2" },
bOpenOperation = new bool[] { true, true }, bOpenOperation = new bool[] { true, true,false },
bCloseOperation = new bool[] { false, true }, bCloseOperation = new bool[] { false, true,true },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0, byResModbusID = 21,
strResChannelNumber = null strResChannelNumber = "d2"
}; };
private static ModualPool.pcMachine cOctagonalPoolPumb2 = new ModualPool.pcMachine("OctagonalPoolPumb2", cOctagonalPoolPumb2Base); private static ModualPool.pcMachine cOctagonalPoolPumb2 = new ModualPool.pcMachine("OctagonalPoolPumb2", cOctagonalPoolPumb2Base);
private static ModualPool.pcOperation cOctagonalPoolStirrer1Base = new ModualPool.pcOperation private static ModualPool.pcOperation cOctagonalPoolStirrer1Base = new ModualPool.pcOperation
{ {
byModbusID = 90, byModbusID = 10,
strOperationNumber = "d1", strOperationNumber = "d2",
strChannelNumber = new string[] { "d1" }, strChannelNumber = new string[] { "d2","d3" },
bOpenOperation = new bool[] { true }, bOpenOperation = new bool[] { true,false },
bCloseOperation = new bool[] { false }, bCloseOperation = new bool[] { false,true },
bHadRefControl = false, bHadRefControl = false,
byResModbusID = 0xFF, byResModbusID = 0xFF,
strResChannelNumber = "d0" strResChannelNumber = null
}; };
private static ModualPool.pcMachine cOctagonalPoolStirrer1 = new ModualPool.pcMachine("OctagonalPoolStirrer1", cOctagonalPoolStirrer1Base); private static ModualPool.pcMachine cOctagonalPoolStirrer1 = new ModualPool.pcMachine("OctagonalPoolStirrer1", cOctagonalPoolStirrer1Base);
private static ModualPool.pcOperation cOctagonalPoolStirrer2Base = new ModualPool.pcOperation private static ModualPool.pcOperation cOctagonalPoolStirrer2Base = new ModualPool.pcOperation
{ {
byModbusID = 90, byModbusID = 46,
strOperationNumber = "d1", strOperationNumber = "d0",
strChannelNumber = new string[] { "d1" }, strChannelNumber = new string[] { "d0","d1","d2" },
bOpenOperation = new bool[] { true }, bOpenOperation = new bool[] { true,true,false },
bCloseOperation = new bool[] { false }, bCloseOperation = new bool[] { false,true,true },
bHadRefControl = false, bHadRefControl = false,
byResModbusID = 0xFF, byResModbusID = 0xFF,
strResChannelNumber = "d0" strResChannelNumber = null
}; };
private static ModualPool.pcMachine cOctagonalPoolStirrer2 = new ModualPool.pcMachine("OctagonalPoolStirrer2", cOctagonalPoolStirrer2Base); private static ModualPool.pcMachine cOctagonalPoolStirrer2 = new ModualPool.pcMachine("OctagonalPoolStirrer2", cOctagonalPoolStirrer2Base);
public static List<ModualPool.pcMachine> OctagonalPoolList = new List<ModualPool.pcMachine>(new ModualPool.pcMachine[] { cOctagonalPoolPumb1, cOctagonalPoolPumb2, cOctagonalPoolStirrer1, cOctagonalPoolStirrer2 }); private static ModualPool.pcOperation cOctagonalPoolStirrer3Base = new ModualPool.pcOperation
{
byModbusID = 52,
strOperationNumber = "d0",
strChannelNumber = new string[] { "d0","d1","d2" },
bOpenOperation = new bool[] { true,true,false },
bCloseOperation = new bool[] { false,true,true },
bHadRefControl = false,
byResModbusID = 0xFF,
strResChannelNumber = null
};
private static ModualPool.pcMachine cOctagonalPoolStirrer3 = new ModualPool.pcMachine("OctagonalPoolStirrer3", cOctagonalPoolStirrer3Base);
public static List<ModualPool.pcMachine> OctagonalPoolList = new List<ModualPool.pcMachine>(new ModualPool.pcMachine[] { cOctagonalPoolPumb1, cOctagonalPoolPumb2, cOctagonalPoolStirrer1, cOctagonalPoolStirrer2,cOctagonalPoolStirrer3 });
public static class cOctagonalPool public static class cOctagonalPool
{ {
...@@ -1420,10 +1391,11 @@ namespace ModbusDemo.application ...@@ -1420,10 +1391,11 @@ namespace ModbusDemo.application
public static double vSetMinLevel; public static double vSetMinLevel;
public static ModualPool.pcTemperature cTemper { get => cOctagonalPoolTemper; set => cOctagonalPoolTemper = value; } public static ModualPool.pcTemperature cTemper { get => cOctagonalPoolTemper; set => cOctagonalPoolTemper = value; }
public static ModualPool.pcLiquidlevel cLevel { get => cOctagonalPoolLevel; set => cOctagonalPoolLevel = value; } public static ModualPool.pcLiquidlevel cLevel { get => cOctagonalPoolLevel; set => cOctagonalPoolLevel = value; }
public static ModualPool.pcMachine cPumb1 { get => cOctagonalPoolPumb1; set => cOctagonalPoolPumb1 = value; } public static ModualPool.pcMachine c3Pumb1 { get => cOctagonalPoolPumb1; set => cOctagonalPoolPumb1 = value; }
public static ModualPool.pcMachine cPumb2 { get => cOctagonalPoolPumb2; set => cDesiltingPoolPumb2 = value; } public static ModualPool.pcMachine c2Pumb2 { get => cOctagonalPoolPumb2; set => cDesiltingPoolPumb2 = value; }
public static ModualPool.pcMachine cStirrer1 { get => cOctagonalPoolStirrer1; set => cOctagonalPoolStirrer1 = value; } public static ModualPool.pcMachine c1Stirrer1 { get => cOctagonalPoolStirrer1; set => cOctagonalPoolStirrer1 = value; }
public static ModualPool.pcMachine cStirrer2 { get => cOctagonalPoolStirrer2; set => cOctagonalPoolStirrer2 = value; } public static ModualPool.pcMachine c4Stirrer2 { get => cOctagonalPoolStirrer2; set => cOctagonalPoolStirrer2 = value; }
public static ModualPool.pcMachine c6Stirrer3 { get => cOctagonalPoolStirrer3; set => cOctagonalPoolStirrer3 = value; }
} }
#endregion #endregion
#region 中控柜 #region 中控柜
......
...@@ -293,7 +293,7 @@ namespace ModbusDemo.application ...@@ -293,7 +293,7 @@ namespace ModbusDemo.application
//Console.WriteLine(timespan); //Console.WriteLine(timespan);
} }
} }
//static bool Run_flag_bit = false; static bool Run_flag_bit = false;
public static void T_AutoControl() public static void T_AutoControl()
{ {
Control usEcontrol = new Control(); Control usEcontrol = new Control();
...@@ -301,7 +301,7 @@ namespace ModbusDemo.application ...@@ -301,7 +301,7 @@ namespace ModbusDemo.application
Control usWcontrol = new Control(); Control usWcontrol = new Control();
Control usWcontrolB = new Control(); Control usWcontrolB = new Control();
FileInfo file = new FileInfo(InIHelper.FileName); FileInfo file = new FileInfo(InIHelper.FileName);
//Run_flag_bit = true; Run_flag_bit = true;
while (true) while (true)
{ {
if (ModualControl.cPoolLevelConfig.Count != 0) if (ModualControl.cPoolLevelConfig.Count != 0)
...@@ -389,497 +389,571 @@ namespace ModbusDemo.application ...@@ -389,497 +389,571 @@ namespace ModbusDemo.application
); );
Automatic_control(usEcontrolB.status, usWcontrolB.status); Automatic_control(usEcontrolB.status, usWcontrolB.status);
} }
//else if (Run_flag_bit == true)
//{
// if (usEcontrolB.status == true)
// {
// }
// if (usWcontrolB.status == true)
// {
// }
//}
else else
{ {
usWcontrol.status = false; usWcontrol.status = false;
usEcontrol.status = false; usEcontrol.status = false;
Automatic_control(usEcontrol.status, usWcontrol.status); Automatic_control(usEcontrol.status, usWcontrol.status);
} }
//Run_flag_bit = false; if (Run_flag_bit == true)
} {
} if (usEcontrolB.status == false)
}
/*
* else
{
if (ModbusComm.Modbus_ReadCoilsTask(out Read_state, EmodbusId[i],16,4)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5");
ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i], 16, state_OFF);
}
else
{ {
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i], if (ModbusComm.Modbus_ReadCoilsTask(out Read_state, EmodbusId[0], 16, 4)
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, ==
"d0", "d1", "d2", "d3", "d4", "d5"); ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
} {
if (ModbusComm.Modbus_ReadCoilsTask(out Read_state, EmodbusId[i+1], 16, 4) ModualAlarm.vSet_Modual_Alarm(EmodbusId[0],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5");
ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[0], 16, state_OFF);
}
else
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[0],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5");
}
if (ModbusComm.Modbus_ReadCoilsTask(out Read_state, EmodbusId[1], 16, 4)
== ==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR) ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{ {
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i], ModualAlarm.vSet_Modual_Alarm(EmodbusId[1],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5"); "d0", "d1", "d2", "d3", "d4", "d5");
ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i+1], 16, state_OFF); ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[1], 16, state_OFF);
} }
else else
{ {
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i+1], ModualAlarm.vSet_Modual_Alarm(EmodbusId[1],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5"); "d0", "d1", "d2", "d3", "d4", "d5");
} }
}
if (ModbusComm.Modbus_ReadCoilsTask(out Read_state, WmodbusId[i], 18, 4)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5");
ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[i], 18, state_OFF);
} }
else if (usWcontrolB.status == false)
{ {
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i], if (ModbusComm.Modbus_ReadCoilsTask(out Read_state, WmodbusId[0], 18, 4)
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, ==
"d0", "d1", "d2", "d3", "d4", "d5"); ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[0],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5");
ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[0], 18, state_OFF);
}
else
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[1],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5");
}
} }
*/ }
Run_flag_bit = false;
}
}
}
#else #else
public class AutoControl public class AutoControl
{ {
//Automatic Control Enablation //Automatic Control Enablation
//Startcontrol MAX //Startcontrol MAX
//stopcontrol Min //stopcontrol Min
//modbuspolling ——water level //modbuspolling ——water level
//工作状态 //工作状态
public class Status public class Status
{ {
public bool Beyond_the_limit; //超出极限值 public bool Beyond_the_limit; //超出极限值
public bool normal;//正常·工作中 public bool normal;//正常·工作中
public bool Minimum_Early_Warning;//低值预警 public bool Minimum_Early_Warning;//低值预警
} }
public class Control : Status public class Control : Status
{ {
public bool Enablation; //任务使能 public bool Enablation; //任务使能
public double maxLevel; public double maxLevel;
public double minLevel; public double minLevel;
public double DifferenceValue; public double DifferenceValue;
public double realTimeLevel; public double realTimeLevel;
public bool status; public bool status;
public string Name; public string Name;
public double StatusTime; public double StatusTime;
public int modularx; public int modularx;
public byte modbusID; public byte modbusID;
} }
public static byte[] EmodbusId = { 15,12};//5,20 public static byte[] EmodbusId = { 5, 20 }; //东中转池 东七号柜/ID/41未加入,一路搅拌
public static byte[] WmodbusId = { 35, 31 };
public static byte[] LevelmodbusID = { 3, 13 };
public static bool[] state_ON = { true, true, true, true, true, true };
public static bool[] state_OFF = { false, false, false, false, false, false };
public static bool Etimerun = false;
public static bool Wtimerun = false;
static System.Diagnostics.Stopwatch ETime = new System.Diagnostics.Stopwatch(); public static byte[] WmodbusId = { 8, 37 }; //西中转池
static System.Diagnostics.Stopwatch WTime = new System.Diagnostics.Stopwatch();
private static readonly int Runtimeout = 30;
public static void CriticalValueMonitoring(ref Control usControl, bool Enabl, string Affiliation, out Control control) public static byte[] LevelmodbusID = { 97, 3 };
{
if (usControl.Enablation == true) public static bool[] state_ON = { true, true, true, true, true, true };
public static bool[] state_OFF = { false, false, false, false, false, false };
public static bool[] Read_state;
public static bool Etimerun = false;
public static bool Wtimerun = false;
static System.Diagnostics.Stopwatch ETime = new System.Diagnostics.Stopwatch();
static System.Diagnostics.Stopwatch WTime = new System.Diagnostics.Stopwatch();
private static readonly int Runtimeout = 30;
public static void CriticalValueMonitoring(ref Control usControl, bool Enabl, string Affiliation, out Control control)
{ {
if (usControl.maxLevel != 0.0 && usControl.minLevel != 0.0) if (usControl.Enablation == true)
{
InIHelper.WriteConfig("MaxLevel", Affiliation, usControl.maxLevel.ToString());
InIHelper.WriteConfig("MinLevel", Affiliation, usControl.minLevel.ToString());
}
else
{ {
usControl.maxLevel = InIHelper.ReadConfig<float>("MaxLevel", Affiliation); if (usControl.maxLevel != 0.0 && usControl.minLevel != 0.0)
usControl.minLevel = InIHelper.ReadConfig<float>("MinLevel", Affiliation); {
} InIHelper.WriteConfig("MaxLevel", Affiliation, usControl.maxLevel.ToString());
usControl.realTimeLevel = Meanfilter(usControl.realTimeLevel);//实时值 InIHelper.WriteConfig("MinLevel", Affiliation, usControl.minLevel.ToString());
}
else
{
usControl.maxLevel = InIHelper.ReadConfig<float>("MaxLevel", Affiliation);
usControl.minLevel = InIHelper.ReadConfig<float>("MinLevel", Affiliation);
}
usControl.realTimeLevel = Meanfilter(usControl.realTimeLevel);//实时值
//usControl.DifferenceValue = usControl.maxLevel - usControl.minLevel;//极值差 //usControl.DifferenceValue = usControl.maxLevel - usControl.minLevel;//极值差
if (usControl.realTimeLevel > usControl.maxLevel) if (usControl.realTimeLevel > usControl.maxLevel)
{ {
usControl.status = true; usControl.status = true;
usControl.Beyond_the_limit = true; usControl.Beyond_the_limit = true;
usControl.normal = false; usControl.normal = false;
usControl.Minimum_Early_Warning = false; usControl.Minimum_Early_Warning = false;
} }
else if (usControl.realTimeLevel < usControl.maxLevel && usControl.realTimeLevel > (usControl.minLevel + usControl.minLevel * 0.15)) else if (usControl.realTimeLevel < usControl.maxLevel && usControl.realTimeLevel > (usControl.minLevel + usControl.minLevel * 0.15))
{ {
usControl.normal = true; usControl.normal = true;
usControl.Beyond_the_limit = false; usControl.Beyond_the_limit = false;
usControl.Minimum_Early_Warning = false; usControl.Minimum_Early_Warning = false;
} }
if (usControl.realTimeLevel < (usControl.minLevel - usControl.minLevel * 0.1)) if (usControl.realTimeLevel < (usControl.minLevel - usControl.minLevel * 0.1))
{ {
usControl.status = false; usControl.status = false;
usControl.Minimum_Early_Warning = true; usControl.Minimum_Early_Warning = true;
usControl.Beyond_the_limit = false; usControl.Beyond_the_limit = false;
usControl.normal = false; usControl.normal = false;
} }
}
control = usControl;
} }
control = usControl; static double[] MeanValue = new double[10];
} public static double Meanfilter(double Value)
static double[] MeanValue = new double[10];
public static double Meanfilter(double Value)
{
MeanValue[0] = Value;
for (int i = 0; i < 10; i++)
{ {
for (int i = 0; i < 10; i++)
{
MeanValue[i] = Value;
}
Value = MeanValue[0] * 0.1 + MeanValue[5] * 0.3 + MeanValue[9] * 0.6;
return Value;
} }
Value = MeanValue[0] * 0.1 + MeanValue[5] * 0.3 + MeanValue[9] * 0.6;
return Value;
}
public static void Automatic_control(bool Eenabl, bool Wenabl) public static void Automatic_control(bool Eenabl, bool Wenabl)
{
TimeSpan Wtime = WTime.Elapsed;
TimeSpan timespan = ETime.Elapsed; // 获取当前实例测量得出的总时间
for (int i = 0; i < 1; i++)
{ {
TimeSpan Wtime = WTime.Elapsed;
if (Eenabl == true) TimeSpan timespan = ETime.Elapsed; // 获取当前实例测量得出的总时间
for (int i = 0; i < 1; i++)
{ {
if (Etimerun == false)
if (Eenabl == true)
{ {
if (ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i], 16, state_ON) if (Etimerun == false)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{ {
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i], if (ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i], 16, state_ON)
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1, ==
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
if (ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i + 1], 16, state_ON)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
ETime.Start(); // 开始监视运行时间
Etimerun = true;
} }
else if (timespan.TotalMinutes > Runtimeout)
{ {
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i], ModualAlarm.vSet_Modual_Alarm(EmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError | (ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, (ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
if (ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i + 1], 16, state_ON)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i + 1], ModualAlarm.vSet_Modual_Alarm(EmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1, (ushort)ModualAlarm.eAlarmCode.ChannelControlError |
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); (ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, true, 1,
}
else
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
if (timespan.TotalMinutes > Runtimeout + Runtimeout * 0.2)
{
ETime.Reset();
ETime.Stop(); // 停止监视
}
} }
ETime.Start(); // 开始监视运行时间
Etimerun = true;
} }
if (timespan.TotalMinutes > Runtimeout) else
{ {
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i], if (Etimerun == true)
(ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
if (timespan.TotalMinutes > Runtimeout + Runtimeout * 0.2)
{ {
if (ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i], 16, state_OFF)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
if (ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i + 1], 16, state_OFF)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR
)
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
ETime.Reset(); ETime.Reset();
ETime.Stop(); // 停止监视 ETime.Stop();
}
}
}
else
{
if (Etimerun == true)
{
if (ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i], 16, state_OFF)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i], ModualAlarm.vSet_Modual_Alarm(EmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1, (ushort)ModualAlarm.eAlarmCode.ChannelControlError |
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); (ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, false, 1,
}
else
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
if (ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i], 16, state_OFF)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR
)
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i + 1], ModualAlarm.vSet_Modual_Alarm(EmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, (ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
Etimerun = false;
} }
ETime.Reset();
ETime.Stop();
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
Etimerun = false;
} }
}
if (Wenabl == true) if (Wenabl == true)
{
if (Wtimerun == false)
{ {
if (ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[i], 16, state_ON) if (Wtimerun == false)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{ {
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i], if (ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[i], 16, state_ON)
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1, ==
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
if (ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[i + 1], 16, state_ON)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
WTime.Start();//开始监视
Wtimerun = true;
} }
else if (Wtime.TotalMinutes > Runtimeout)
{ {
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i], ModualAlarm.vSet_Modual_Alarm(WmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError | (ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, (ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
if (ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[i + 1], 16, state_ON)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i + 1], ModualAlarm.vSet_Modual_Alarm(WmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError | (ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, (ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
if (Wtime.TotalMinutes > Runtimeout * 2)
{
WTime.Reset();
WTime.Stop();//停止监视
}
} }
WTime.Start();//开始监视
Wtimerun = true;
} }
if (Wtime.TotalMinutes > Runtimeout) else
{ {
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i], if (Wtimerun == true)
(ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
if (Wtime.TotalMinutes > Runtimeout * 2)
{ {
if (ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[i], 16, state_OFF)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR
)
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
if (ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[i + 1], 16, state_OFF)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR
)
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
WTime.Reset(); WTime.Reset();
WTime.Stop();//停止监视 WTime.Stop();//停止监视
}
}
}
else
{
if (Wtimerun == true)
{
if (ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[i], 16, state_OFF)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR
)
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i], ModualAlarm.vSet_Modual_Alarm(WmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1, (ushort)ModualAlarm.eAlarmCode.ChannelControlError |
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); (ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, false, 1,
}
else
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
if (ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[i + 1], 16, state_OFF)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR
)
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i + 1], ModualAlarm.vSet_Modual_Alarm(WmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, (ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7"); "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
Wtimerun = false;
} }
WTime.Reset();
WTime.Stop();//停止监视
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
ModualAlarm.vSet_Modual_Alarm(WmodbusId[i + 1],
(ushort)ModualAlarm.eAlarmCode.ChannelControlError |
(ushort)ModualAlarm.eAlarmCode.ChannelRunOverTimeError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
Wtimerun = false;
} }
}
double Whours = Wtime.TotalHours; //double Whours = Wtime.TotalHours;
double Wminures = Wtime.TotalMinutes; //double Wminures = Wtime.TotalMinutes;
double Wseconds = Wtime.TotalSeconds; //double Wseconds = Wtime.TotalSeconds;
double Wmilliseconds = Wtime.TotalMilliseconds; // 总毫秒数 //double Wmilliseconds = Wtime.TotalMilliseconds; //总毫秒数
double hours = timespan.TotalHours; // 总小时 //double hours = timespan.TotalHours; // 总小时
double minutes = timespan.TotalMinutes; // 总分钟 //double minutes = timespan.TotalMinutes; // 总分钟
double seconds = timespan.TotalSeconds; // 总秒数 //double seconds = timespan.TotalSeconds; // 总秒数
double milliseconds = timespan.TotalMilliseconds; // 总毫秒数 //double milliseconds = timespan.TotalMilliseconds; // 总毫秒数
//Console.WriteLine(Wtime); //Console.WriteLine(Wtime);
//Console.WriteLine(timespan); //Console.WriteLine(timespan);
}
} }
} static bool Run_flag_bit = false;
public static void T_AutoControl()
public static void T_AutoControl()
{
Control usEcontrol = new Control();
Control usEcontrolB = new Control();
Control usWcontrol = new Control();
Control usWcontrolB = new Control();
FileInfo file = new FileInfo(InIHelper.FileName);
while (true)
{ {
if (ModualControl.cPoolLevelConfig.Count != 0) Control usEcontrol = new Control();
Control usEcontrolB = new Control();
Control usWcontrol = new Control();
Control usWcontrolB = new Control();
FileInfo file = new FileInfo(InIHelper.FileName);
Run_flag_bit = true;
while (true)
{ {
for (int i = 0; i < ModualControl.cPoolLevelConfig.Count; i++) if (ModualControl.cPoolLevelConfig.Count != 0)
{ {
for (int j = 0; j < ModualPoll.byX18xNumber; j++) for (int i = 0; i < ModualControl.cPoolLevelConfig.Count; i++)
{ {
if (ModualPoll.cx18x.byModbusID[j] == LevelmodbusID[0]) for (int j = 0; j < ModualPoll.byX18xNumber; j++)
{ {
usWcontrol.realTimeLevel = if (ModualPoll.cx18x.byModbusID[j] == LevelmodbusID[0])
ModualPoll.cx18x.sX18xDataStruct[j].dNowConvertData[0]; {
usWcontrol.modularx = j; usWcontrol.realTimeLevel =
usWcontrol.modbusID = LevelmodbusID[0]; ModualPoll.cx18x.sX18xDataStruct[j].dNowConvertData[1];
usWcontrol.modularx = j;
usWcontrol.modbusID = LevelmodbusID[0];
}
if (ModualPoll.cx18x.byModbusID[j] == LevelmodbusID[1])
{
usEcontrol.realTimeLevel =
ModualPoll.cx18x.sX18xDataStruct[j].dNowConvertData[1];
usEcontrol.modularx = j;
usEcontrol.modbusID = LevelmodbusID[1];
}
} }
if (ModualPoll.cx18x.byModbusID[j] == LevelmodbusID[1])
if (ModualControl.cPoolLevelConfig[i].byModbusID == LevelmodbusID[0]
&& ModualControl.cPoolLevelConfig[i].stChannelNumber == "d0")
{ {
usEcontrol.realTimeLevel = usWcontrol.maxLevel = ModualControl.cPoolLevelConfig[i].dUpLevel;
ModualPoll.cx18x.sX18xDataStruct[j].dNowConvertData[0]; usWcontrol.minLevel = ModualControl.cPoolLevelConfig[i].dDownLevel;
usEcontrol.modularx = j; usWcontrol.Name = "西·中转池";
usEcontrol.modbusID = LevelmodbusID[1]; usWcontrol.Enablation = true;
InIHelper.WriteConfig("Channel number", "西液位通道", usWcontrol.modularx.ToString());
CriticalValueMonitoring(ref usWcontrol,
true,
"西·中转池",
out usWcontrolB
);
} }
} if (ModualControl.cPoolLevelConfig[i].byModbusID == LevelmodbusID[1]
&& ModualControl.cPoolLevelConfig[i].stChannelNumber == "d0")
{
usEcontrol.maxLevel = ModualControl.cPoolLevelConfig[i].dUpLevel;
usEcontrol.minLevel = ModualControl.cPoolLevelConfig[i].dDownLevel;
usEcontrol.Name = "东·中转池";
usEcontrol.Enablation = true;
InIHelper.WriteConfig("Channel number", "东液位通道", usEcontrol.modularx.ToString());
CriticalValueMonitoring(
ref usEcontrol,
true,
"东·中转池",
out usEcontrolB
);
if (ModualControl.cPoolLevelConfig[i].byModbusID == LevelmodbusID[0]) }
ModualControl.cPoolLevelConfig.Remove(ModualControl.cPoolLevelConfig[i]);
}
Automatic_control(usEcontrolB.status, usWcontrolB.status);
}
else if (file.Length != 0)
{
usEcontrol.modularx = InIHelper.ReadConfig<int>("Channel number", "东液位通道");
usWcontrol.modularx = InIHelper.ReadConfig<int>("Channel number", "西液位通道");
usWcontrol.maxLevel = InIHelper.ReadConfig<float>("MaxLevel", "西·中转池");
usWcontrol.minLevel = InIHelper.ReadConfig<float>("MinLevel", "西·中转池");
usEcontrol.maxLevel = InIHelper.ReadConfig<float>("MaxLevel", "东·中转池");
usEcontrol.minLevel = InIHelper.ReadConfig<float>("MinLevel", "东·中转池");
usEcontrol.realTimeLevel =
ModualPoll.cx18x.sX18xDataStruct[usEcontrol.modularx].dNowConvertData[0];
usWcontrol.realTimeLevel =
ModualPoll.cx18x.sX18xDataStruct[usWcontrol.modularx].dNowConvertData[0];
usEcontrol.Enablation = true;
usWcontrol.Enablation = true;
CriticalValueMonitoring(
ref usEcontrol,
true,
"东·中转池",
out usEcontrolB
);
CriticalValueMonitoring(
ref usWcontrol,
true,
"西·中转池",
out usWcontrolB
);
Automatic_control(usEcontrolB.status, usWcontrolB.status);
}
else
{
usWcontrol.status = false;
usEcontrol.status = false;
Automatic_control(usEcontrol.status, usWcontrol.status);
}
if (Run_flag_bit == true)
{
if (usEcontrolB.status == false)
{ {
usWcontrol.maxLevel = ModualControl.cPoolLevelConfig[i].dUpLevel; if (ModbusComm.Modbus_ReadCoilsTask(out Read_state, EmodbusId[0], 16, 4)
usWcontrol.minLevel = ModualControl.cPoolLevelConfig[i].dDownLevel; ==
usWcontrol.Name = "西·中转池"; ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
usWcontrol.Enablation = true; {
InIHelper.WriteConfig("Channel number", "西液位通道", usWcontrol.modularx.ToString()); ModualAlarm.vSet_Modual_Alarm(EmodbusId[0],
CriticalValueMonitoring(ref usWcontrol, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1,
true, "d0", "d1", "d2", "d3", "d4", "d5");
"西·中转池", ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[0], 16, state_OFF);
out usWcontrolB }
); else
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[0],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5");
}
if (ModbusComm.Modbus_ReadCoilsTask(out Read_state, EmodbusId[1], 16, 6)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[1],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5");
ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[1], 16, state_OFF);
}
else
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[1],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5");
}
} }
if (ModualControl.cPoolLevelConfig[i].byModbusID == LevelmodbusID[1]) if (usWcontrolB.status == false)
{ {
usEcontrol.maxLevel = ModualControl.cPoolLevelConfig[i].dUpLevel; if (ModbusComm.Modbus_ReadCoilsTask(out Read_state, WmodbusId[0], 16, 4)
usEcontrol.minLevel = ModualControl.cPoolLevelConfig[i].dDownLevel; ==
usEcontrol.Name = "东·中转池"; ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
usEcontrol.Enablation = true; {
InIHelper.WriteConfig("Channel number", "东液位通道", usEcontrol.modularx.ToString()); ModualAlarm.vSet_Modual_Alarm(EmodbusId[0],
CriticalValueMonitoring( (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1,
ref usEcontrol, "d0", "d1", "d2", "d3", "d4", "d5");
true, ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[0], 16, state_OFF);
"东·中转池", }
out usEcontrolB else
); {
ModualAlarm.vSet_Modual_Alarm(WmodbusId[1],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5");
}
if (ModbusComm.Modbus_ReadCoilsTask(out Read_state, WmodbusId[1], 16, 6)
==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(EmodbusId[0],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, false, 1,
"d0", "d1", "d2", "d3", "d4", "d5");
ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[0], 16, state_OFF);
}
else
{
ModualAlarm.vSet_Modual_Alarm(WmodbusId[1],
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5");
} }
ModualControl.cPoolLevelConfig.Remove(ModualControl.cPoolLevelConfig[i]);
} }
Automatic_control(usWcontrolB.status, usEcontrolB.status); }
} Run_flag_bit = false;
else if (file.Length != 0)
{
usEcontrol.modularx = InIHelper.ReadConfig<int>("Channel number", "东液位通道");
usWcontrol.modularx = InIHelper.ReadConfig<int>("Channel number", "西液位通道");
usWcontrol.maxLevel = InIHelper.ReadConfig<float>("MaxLevel", "西·中转池");
usWcontrol.minLevel = InIHelper.ReadConfig<float>("MinLevel", "西·中转池");
usEcontrol.maxLevel = InIHelper.ReadConfig<float>("MaxLevel", "东·中转池");
usEcontrol.minLevel = InIHelper.ReadConfig<float>("MinLevel", "东·中转池");
usEcontrol.realTimeLevel =
ModualPoll.cx18x.sX18xDataStruct[usEcontrol.modularx].dNowConvertData[0];
usWcontrol.realTimeLevel =
ModualPoll.cx18x.sX18xDataStruct[usWcontrol.modularx].dNowConvertData[0];
CriticalValueMonitoring(
ref usEcontrol,
true,
"东·中转池",
out usEcontrolB
);
CriticalValueMonitoring(
ref usWcontrol,
true,
"西·中转池",
out usWcontrolB
);
Automatic_control(usWcontrolB.status, usEcontrolB.status);
}
else
{
usWcontrol.status = false;
usEcontrol.status = false;
Automatic_control(usWcontrol.status, usEcontrol.status);
} }
} }
}
} }
#endif #endif
......
...@@ -335,34 +335,146 @@ namespace ModbusDemo.application ...@@ -335,34 +335,146 @@ namespace ModbusDemo.application
if (bOpen == true) if (bOpen == true)
{ {
#region 东中转池开映射 #region 东中转池开映射
if (byControlID == 4 && strOperationChannelName[0] == "d0") //if (byControlID == 4 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cEastTransitPool.cSouthWater.bOpen_Machine;
//}
//else if (byControlID == 4 && strOperationChannelName[0] == "d2")
//{
// bDelege_Operation = AllPond.cEastTransitPool.cNorthWater.bOpen_Machine;
//}
//else if (byControlID == 20 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cEastTransitPool.c6Pumb1.bOpen_Machine;
//}
//else if (byControlID == 20 && strOperationChannelName[0] == "d2")
//{
// bDelege_Operation = AllPond.cEastTransitPool.c4Pumb2.bOpen_Machine;
//}
//else if (byControlID == 5 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cEastTransitPool.c2Stirrer1.bOpen_Machine;
//}
//else if (byControlID == 5 && strOperationChannelName[0] == "d2")
//{
// bDelege_Operation = AllPond.cEastTransitPool.c1Stirrer2.bOpen_Machine;
//}
//else if (byControlID == 20 && strOperationChannelName[0] == "d4")
//{
// bDelege_Operation = AllPond.cEastTransitPool.c5Stirrer3.bOpen_Machine;
//}
//else if (byControlID == 41 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cEastTransitPool.c7Stirrer4.bOpen_Machine;
//}
#endregion
#region 西中转池开映射
//else if (byControlID == 49 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cWestTransitPool.cSouthWater.bOpen_Machine;
//}
//else if (byControlID == 49 && strOperationChannelName[0] == "d2")
//{
// bDelege_Operation = AllPond.cWestTransitPool.cNorthWater.bOpen_Machine;
//}
//else if (byControlID == 37 && strOperationChannelName[0] == "d2")
//{
// bDelege_Operation = AllPond.cWestTransitPool.c6Pumb1.bOpen_Machine;
//}
//else if (byControlID == 8 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cWestTransitPool.c2Stirrer1.bOpen_Machine;
//}
//else if (byControlID == 8 && strOperationChannelName[0] == "d2")
//{
// bDelege_Operation = AllPond.cWestTransitPool.c1Stirrer2.bOpen_Machine;
//}
//else if (byControlID == 37 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cWestTransitPool.c5Stirrer3.bOpen_Machine;
//}
//else if (byControlID == 37 && strOperationChannelName[0] == "d4")
//{
// bDelege_Operation = AllPond.cWestTransitPool.c4Stirrer4.bOpen_Machine;
//}
#endregion
#region 出料池开映射
if (byControlID == 50 && strOperationChannelName[0] == "d0")
{ {
bDelege_Operation = AllPond.cEastTransitPool.cSouthWater.bOpen_Machine; bDelege_Operation = AllPond.cDischargePool.c2Pumb1.bOpen_Machine;
} }
else if (byControlID == 4 && strOperationChannelName[0] == "d2") else if (byControlID == 50 && strOperationChannelName[0] == "d2")
{ {
bDelege_Operation = AllPond.cEastTransitPool.cNorthWater.bOpen_Machine; bDelege_Operation = AllPond.cDischargePool.c1Stirrer1.bOpen_Machine;
} }
#endregion #endregion
#region 西中转池开映射 #region 匀浆池开映射
else if (byControlID == 49 && strOperationChannelName[0] == "d0") else if (byControlID == 57 && strOperationChannelName[0] == "d0")
{ {
bDelege_Operation = AllPond.cWestTransitPool.cSouthWater.bOpen_Machine; bDelege_Operation = AllPond.cSlurryPool.c1Pumb1.bOpen_Machine;
} }
else if (byControlID == 49 && strOperationChannelName[0] == "d2") else if (byControlID == 57 && strOperationChannelName[0] == "d2")
{ {
bDelege_Operation = AllPond.cWestTransitPool.cNorthWater.bOpen_Machine; bDelege_Operation = AllPond.cSlurryPool.c2Stirrer1.bOpen_Machine;
} }
#endregion #endregion
#region 中控柜开映射和暂停映射 #region 沉砂池开映射
else if (byControlID == 47 && strOperationChannelName[0] == "d0") else if (byControlID == 38 && strOperationChannelName[0] == "d0")
{ {
bDelege_Operation = AllPond.cCentralControlRoom.cStartButton1.bOpreation_Button; bDelege_Operation = AllPond.cDesiltingPool.c6Pumb1.bOpen_Machine;
} }
else if (byControlID == 44 && strOperationChannelName[0] == "d0") else if (byControlID == 38 && strOperationChannelName[0] == "d4")
{ {
bDelege_Operation = AllPond.cCentralControlRoom.cPauseButton1.bOpreation_Button; bDelege_Operation = AllPond.cDesiltingPool.c5Pumb2.bOpen_Machine;
} }
else if (byControlID == 51 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cDesiltingPool.c1Pumb3.bOpen_Machine;
}
else if (byControlID == 24 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cDesiltingPool.c4Stirrer1.bOpen_Machine;
}
else if (byControlID == 24 && strOperationChannelName[0] == "d2")
{
bDelege_Operation = AllPond.cDesiltingPool.c3Stirrer2.bOpen_Machine;
}
else if (byControlID == 24 && strOperationChannelName[0] == "d4")
{
bDelege_Operation = AllPond.cDesiltingPool.c2Stirrer3.bOpen_Machine;
}
#endregion
#region 八角池开映射
else if (byControlID == 10 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cOctagonalPool.c3Pumb1.bOpen_Machine;
}
else if (byControlID == 14 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cOctagonalPool.c2Pumb2.bOpen_Machine;
}
else if (byControlID == 10 && strOperationChannelName[0] == "d2")
{
bDelege_Operation = AllPond.cOctagonalPool.c1Stirrer1.bOpen_Machine;
}
else if (byControlID == 46 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cOctagonalPool.c4Stirrer2.bOpen_Machine;
}
else if (byControlID == 52 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cOctagonalPool.c6Stirrer3.bOpen_Machine;
}
#endregion
#region 中控柜开映射和暂停映射
//else if (byControlID == 47 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cCentralControlRoom.cStartButton1.bOpreation_Button;
//}
//else if (byControlID == 44 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cCentralControlRoom.cPauseButton1.bOpreation_Button;
//}
#endregion #endregion
else else
{ {
...@@ -372,34 +484,146 @@ namespace ModbusDemo.application ...@@ -372,34 +484,146 @@ namespace ModbusDemo.application
else else
{ {
#region 东中转池关映射 #region 东中转池关映射
if (byControlID == 4 && strOperationChannelName[0] == "d0") //if (byControlID == 4 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cEastTransitPool.cSouthWater.bClose_Machine;
//}
//else if (byControlID == 4 && strOperationChannelName[0] == "d2")
//{
// bDelege_Operation = AllPond.cEastTransitPool.cNorthWater.bClose_Machine;
//}
//else if (byControlID == 20 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cEastTransitPool.c6Pumb1.bClose_Machine;
//}
//else if (byControlID == 20 && strOperationChannelName[0] == "d2")
//{
// bDelege_Operation = AllPond.cEastTransitPool.c4Pumb2.bClose_Machine;
//}
//else if (byControlID == 5 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cEastTransitPool.c2Stirrer1.bClose_Machine;
//}
//else if (byControlID == 5 && strOperationChannelName[0] == "d2")
//{
// bDelege_Operation = AllPond.cEastTransitPool.c1Stirrer2.bClose_Machine;
//}
//else if (byControlID == 20 && strOperationChannelName[0] == "d4")
//{
// bDelege_Operation = AllPond.cEastTransitPool.c5Stirrer3.bClose_Machine;
//}
//else if (byControlID == 41 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cEastTransitPool.c7Stirrer4.bClose_Machine;
//}
#endregion
//#region 西中转池开映射
//else if (byControlID == 49 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cWestTransitPool.cSouthWater.bClose_Machine;
//}
//else if (byControlID == 49 && strOperationChannelName[0] == "d2")
//{
// bDelege_Operation = AllPond.cWestTransitPool.cNorthWater.bClose_Machine;
//}
//else if (byControlID == 37 && strOperationChannelName[0] == "d2")
//{
// bDelege_Operation = AllPond.cWestTransitPool.c6Pumb1.bClose_Machine;
//}
//else if (byControlID == 8 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cWestTransitPool.c2Stirrer1.bClose_Machine;
//}
//else if (byControlID == 8 && strOperationChannelName[0] == "d2")
//{
// bDelege_Operation = AllPond.cWestTransitPool.c1Stirrer2.bClose_Machine;
//}
//else if (byControlID == 37 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cWestTransitPool.c5Stirrer3.bClose_Machine;
//}
//else if (byControlID == 37 && strOperationChannelName[0] == "d4")
//{
// bDelege_Operation = AllPond.cWestTransitPool.c4Stirrer4.bClose_Machine;
//}
//#endregion
#region 出料池关映射
if (byControlID == 50 && strOperationChannelName[0] == "d0")
{ {
bDelege_Operation = AllPond.cEastTransitPool.cSouthWater.bClose_Machine; bDelege_Operation = AllPond.cDischargePool.c2Pumb1.bClose_Machine;
} }
else if (byControlID == 4 && strOperationChannelName[0] == "d2") else if (byControlID == 50 && strOperationChannelName[0] == "d2")
{ {
bDelege_Operation = AllPond.cEastTransitPool.cNorthWater.bClose_Machine; bDelege_Operation = AllPond.cDischargePool.c1Stirrer1.bClose_Machine;
} }
#endregion #endregion
#region 西中转池开映射 #region 匀浆池关映射
else if (byControlID == 49 && strOperationChannelName[0] == "d0") else if (byControlID == 57 && strOperationChannelName[0] == "d0")
{ {
bDelege_Operation = AllPond.cWestTransitPool.cSouthWater.bClose_Machine; bDelege_Operation = AllPond.cSlurryPool.c1Pumb1.bClose_Machine;
} }
else if (byControlID == 49 && strOperationChannelName[0] == "d2") else if (byControlID == 57 && strOperationChannelName[0] == "d2")
{ {
bDelege_Operation = AllPond.cWestTransitPool.cNorthWater.bClose_Machine; bDelege_Operation = AllPond.cSlurryPool.c2Stirrer1.bClose_Machine;
} }
#endregion #endregion
#region 中控柜关映射和手动映射 #region 沉砂池池关映射
else if (byControlID == 47 && strOperationChannelName[0] == "d0") else if (byControlID == 38 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cDesiltingPool.c6Pumb1.bClose_Machine;
}
else if (byControlID == 38 && strOperationChannelName[0] == "d4")
{
bDelege_Operation = AllPond.cDesiltingPool.c5Pumb2.bClose_Machine;
}
else if (byControlID == 51 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cDesiltingPool.c1Pumb3.bClose_Machine;
}
else if (byControlID == 24 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cDesiltingPool.c4Stirrer1.bClose_Machine;
}
else if (byControlID == 24 && strOperationChannelName[0] == "d2")
{
bDelege_Operation = AllPond.cDesiltingPool.c3Stirrer2.bClose_Machine;
}
else if (byControlID == 24 && strOperationChannelName[0] == "d4")
{
bDelege_Operation = AllPond.cDesiltingPool.c2Stirrer3.bClose_Machine;
}
#endregion
#region 八角池关映射
else if (byControlID == 10 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cOctagonalPool.c3Pumb1.bClose_Machine;
}
else if (byControlID == 14 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cOctagonalPool.c2Pumb2.bClose_Machine;
}
else if (byControlID == 10 && strOperationChannelName[0] == "d2")
{ {
bDelege_Operation = AllPond.cCentralControlRoom.cStopButton1.bOpreation_Button; bDelege_Operation = AllPond.cOctagonalPool.c1Stirrer1.bClose_Machine;
} }
else if (byControlID == 44 && strOperationChannelName[0] == "d0") else if (byControlID == 46 && strOperationChannelName[0] == "d0")
{ {
bDelege_Operation = AllPond.cCentralControlRoom.cHandButton1.bOpreation_Button; bDelege_Operation = AllPond.cOctagonalPool.c4Stirrer2.bClose_Machine;
} }
else if (byControlID == 52 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cOctagonalPool.c6Stirrer3.bClose_Machine;
}
#endregion
#region 中控柜关映射和手动映射
//else if (byControlID == 47 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cCentralControlRoom.cStopButton1.bOpreation_Button;
//}
//else if (byControlID == 44 && strOperationChannelName[0] == "d0")
//{
// bDelege_Operation = AllPond.cCentralControlRoom.cHandButton1.bOpreation_Button;
//}
#endregion #endregion
else else
{ {
......
...@@ -92,6 +92,8 @@ namespace ModbusDemo.application ...@@ -92,6 +92,8 @@ namespace ModbusDemo.application
public bool bHadRefControl; public bool bHadRefControl;
public byte byResModbusID; public byte byResModbusID;
public string strResChannelNumber; public string strResChannelNumber;
public int iRefAlarmCnt = 0;
public int MaxAlarmfeedback = 2;
} }
public class pcMachine : pcOperation public class pcMachine : pcOperation
{ {
...@@ -115,6 +117,10 @@ namespace ModbusDemo.application ...@@ -115,6 +117,10 @@ namespace ModbusDemo.application
{ {
bool[] bControlBit = new bool[bControldata.Count()]; bool[] bControlBit = new bool[bControldata.Count()];
bool bStatus; bool bStatus;
for (int i = 0; i < bControldata.Count();i++)
{
bControlBit[i] = false;
}
for (int i = 0; i < bControldata.Count(); i++) for (int i = 0; i < bControldata.Count(); i++)
{ {
string str= "d"+i.ToString(); string str= "d"+i.ToString();
...@@ -137,6 +143,10 @@ namespace ModbusDemo.application ...@@ -137,6 +143,10 @@ namespace ModbusDemo.application
{ {
bool[] bControlBit = new bool[bControldata.Count()]; bool[] bControlBit = new bool[bControldata.Count()];
bool bStatus; bool bStatus;
for (int i = 0; i < bControldata.Count();i++)
{
bControlBit[i] = false;
}
for (int i = 0; i < bControldata.Count(); i++) for (int i = 0; i < bControldata.Count(); i++)
{ {
string str = "d" + i.ToString(); string str = "d" + i.ToString();
...@@ -203,6 +213,10 @@ namespace ModbusDemo.application ...@@ -203,6 +213,10 @@ namespace ModbusDemo.application
bool bStatus; bool bStatus;
bool bHadOpenButton; bool bHadOpenButton;
bool[] bControlBit = new bool[bControldata.Count()]; bool[] bControlBit = new bool[bControldata.Count()];
for (int i = 0; i < bControldata.Count();i++)
{
bControlBit[i] = false;
}
for (int i = 0; i < bControldata.Count(); i++) for (int i = 0; i < bControldata.Count(); i++)
{ {
string str = "d" + i.ToString(); string str = "d" + i.ToString();
......
...@@ -26,7 +26,7 @@ namespace ModbusDemo ...@@ -26,7 +26,7 @@ namespace ModbusDemo
{ {
public partial class Form1 : Form public partial class Form1 : Form
{ {
const bool LOCALDEBUG = true; const bool LOCALDEBUG = false;
private bool bStart = false; private bool bStart = false;
AutoResetEvent exitEvent; AutoResetEvent exitEvent;
private int waitTime; private int waitTime;
...@@ -80,8 +80,7 @@ namespace ModbusDemo ...@@ -80,8 +80,7 @@ namespace ModbusDemo
int mqttPort; int mqttPort;
string mqttUsername; string mqttUsername;
string mqttPwd; string mqttPwd;
public const string mqttSn = "20193261";
public const string mqttSn = "66666666";
public const string mqttSubscribeControlTopic = "Witium/WTDS78X/" + mqttSn + "/Ctrl"; public const string mqttSubscribeControlTopic = "Witium/WTDS78X/" + mqttSn + "/Ctrl";
public const string mqttBackTopic = "Witium/WTDS78X/" + mqttSn + "/Back"; public const string mqttBackTopic = "Witium/WTDS78X/" + mqttSn + "/Back";
public const string mqttCfgTopic = "Witium/WTDS78X/" + mqttSn + "/Config"; public const string mqttCfgTopic = "Witium/WTDS78X/" + mqttSn + "/Config";
...@@ -96,15 +95,15 @@ namespace ModbusDemo ...@@ -96,15 +95,15 @@ namespace ModbusDemo
{ {
if (LOCALDEBUG == false) if (LOCALDEBUG == false)
{ {
mqttIp = "47.101.50.24"; mqttIp = "120.27.235.39";
mqttClientId = GetTimeStamp() + "sxz"; mqttClientId = GetTimeStamp() + "sxz";
mqttPort = 1883; mqttPort = 1883;
mqttUsername = "root"; mqttUsername = "pasture";
mqttPwd = "public"; mqttPwd = "Pasture37774020";
} }
else else
{ {
mqttIp = "172.16.1.24";//"120.27.235.39" mqttIp = "172.16.1.24";//""
mqttClientId = GetTimeStamp() + "sxz"; mqttClientId = GetTimeStamp() + "sxz";
mqttPort = 1883; mqttPort = 1883;
mqttUsername = "pasture"; mqttUsername = "pasture";
...@@ -156,6 +155,7 @@ namespace ModbusDemo ...@@ -156,6 +155,7 @@ namespace ModbusDemo
if (strJsonPackage != null) if (strJsonPackage != null)
{ {
await mqttClient.PublishAsync(message); await mqttClient.PublishAsync(message);
totxt.Log(strJsonPackage);
} }
} }
} }
...@@ -169,7 +169,12 @@ namespace ModbusDemo ...@@ -169,7 +169,12 @@ namespace ModbusDemo
.WithAtLeastOnceQoS() .WithAtLeastOnceQoS()
.WithRetainFlag(false) .WithRetainFlag(false)
.Build(); .Build();
mqttClient.PublishAsync(message); if (strJsonPackage != null)
{
mqttClient.PublishAsync(message);
totxt.Log(strJsonPackage);
}
} }
} }
...@@ -425,11 +430,9 @@ namespace ModbusDemo ...@@ -425,11 +430,9 @@ namespace ModbusDemo
bSetDataIsRunning = true; bSetDataIsRunning = true;
await Task.Run(() => await Task.Run(() =>
{ {
totxt.Log("开始执行");
ModualPoll.vAllNodePoll(); ModualPoll.vAllNodePoll();
mqttData = ModualPoll.vRemove_Nodes_Data_String(ModualPoll.stAll_Poll_Package()); mqttData = ModualPoll.vRemove_Nodes_Data_String(ModualPoll.stAll_Poll_Package());
ModualPoll.vCheckAlarm_And_Send(mqttClient); ModualPoll.vCheckAlarm_And_Send(mqttClient);
totxt.Log("执行结束");
}); });
bSetDataIsRunning = false; bSetDataIsRunning = false;
} }
...@@ -1146,7 +1149,7 @@ namespace ModbusDemo ...@@ -1146,7 +1149,7 @@ namespace ModbusDemo
MqttReceiveThread.Start(); MqttReceiveThread.Start();
MqttReceiveThread.Priority = ThreadPriority.AboveNormal; MqttReceiveThread.Priority = ThreadPriority.AboveNormal;
Task task1 = Task.Factory.StartNew(async() => {await ModualControl.vControl_Res_Poll();}); Task task1 = Task.Factory.StartNew(async () => { await ModualControl.vControl_Res_Poll(); });
t_AutoControl = new Thread(AtuoControl_run) t_AutoControl = new Thread(AtuoControl_run)
{ {
IsBackground = true IsBackground = true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment