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