Commit 4a5bdbd8 authored by leon.huang's avatar leon.huang

start test

parents bfa5625c de89515f
...@@ -28,9 +28,10 @@ namespace ModbusDemo.MessageFormat ...@@ -28,9 +28,10 @@ namespace ModbusDemo.MessageFormat
MB_EMASTERSENT, MB_EMASTERSENT,
MB_RTUERNOERR MB_RTUERNOERR
} }
public static ModbusMaster Modbus; public static ModbusMaster Modbus;
public static ushort usCommunFailTimes = 0; public static ushort usCommunFailTimes = 0;
static object oLock = new object(); private static object oLock = new object();
public static eModbusErrorCode Modbus_ReadHoldingRegistersTask(out ushort[] OutputValue, byte slaveAddress, ushort startAddress, ushort numberOfPoints) public static eModbusErrorCode Modbus_ReadHoldingRegistersTask(out ushort[] OutputValue, byte slaveAddress, ushort startAddress, ushort numberOfPoints)
{ {
lock (oLock) lock (oLock)
...@@ -53,6 +54,7 @@ namespace ModbusDemo.MessageFormat ...@@ -53,6 +54,7 @@ namespace ModbusDemo.MessageFormat
OutputValue = new ushort[numberOfPoints]; OutputValue = new ushort[numberOfPoints];
ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT; ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT;
usCommunFailTimes++; usCommunFailTimes++;
Console.WriteLine(slaveAddress.ToString());
} }
//The server return error code. //The server return error code.
//You can get the function code and exception code. //You can get the function code and exception code.
...@@ -137,6 +139,7 @@ namespace ModbusDemo.MessageFormat ...@@ -137,6 +139,7 @@ namespace ModbusDemo.MessageFormat
OutputValue = new bool[numberOfPoints]; OutputValue = new bool[numberOfPoints];
ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT; ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT;
usCommunFailTimes++; usCommunFailTimes++;
Console.WriteLine(slaveAddress.ToString());
} }
//The server return error code. //The server return error code.
//You can get the function code and exception code. //You can get the function code and exception code.
...@@ -220,6 +223,7 @@ namespace ModbusDemo.MessageFormat ...@@ -220,6 +223,7 @@ namespace ModbusDemo.MessageFormat
Form1.totxt.Log(DateTime.Now.ToString() + " " + exception.Message + "Modbus_WriteSingleCoil"); Form1.totxt.Log(DateTime.Now.ToString() + " " + exception.Message + "Modbus_WriteSingleCoil");
ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT; ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT;
usCommunFailTimes++; usCommunFailTimes++;
Console.WriteLine(slaveAddress.ToString());
} }
//The server return error code. //The server return error code.
//You can get the function code and exception code. //You can get the function code and exception code.
...@@ -302,6 +306,7 @@ namespace ModbusDemo.MessageFormat ...@@ -302,6 +306,7 @@ namespace ModbusDemo.MessageFormat
Form1.totxt.Log(DateTime.Now.ToString() + " " + exception.Message + "Modbus_WriteMultipleCoils"); Form1.totxt.Log(DateTime.Now.ToString() + " " + exception.Message + "Modbus_WriteMultipleCoils");
ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT; ModbusErrorCode = eModbusErrorCode.MB_ETIMEDOUT;
usCommunFailTimes++; usCommunFailTimes++;
Console.WriteLine(slaveAddress.ToString());
} }
//The server return error code. //The server return error code.
//You can get the function code and exception code. //You can get the function code and exception code.
......
...@@ -13,6 +13,7 @@ using ModbusDemo.Modular; ...@@ -13,6 +13,7 @@ using ModbusDemo.Modular;
using ModbusDemo.Common; using ModbusDemo.Common;
using System.Threading; using System.Threading;
using ModbusDemo.application; using ModbusDemo.application;
using System.Windows.Forms;
namespace ModbusDemo.MessageFormat namespace ModbusDemo.MessageFormat
{ {
public class ModualControl public class ModualControl
...@@ -150,7 +151,7 @@ namespace ModbusDemo.MessageFormat ...@@ -150,7 +151,7 @@ namespace ModbusDemo.MessageFormat
} }
for (int i = 0; i < cControl.ss.Count; i++) for (int i = 0; i < cControl.ss.Count; i++)
{ {
bool[] btReadTempData = new bool[6]; bool[] bOperationStatus = new bool[8] {false,false,false,false,false,false,false,false};
ModualCntrol cModualCntrol = new ModualCntrol ModualCntrol cModualCntrol = new ModualCntrol
{ {
sbModbusID = byte.Parse(cControl.ss[i].addr), sbModbusID = byte.Parse(cControl.ss[i].addr),
...@@ -185,20 +186,27 @@ namespace ModbusDemo.MessageFormat ...@@ -185,20 +186,27 @@ namespace ModbusDemo.MessageFormat
{ {
jsonObj["ss"][i]["op"]["ts"] = Form1.GetTimeStamp(); jsonObj["ss"][i]["op"]["ts"] = Form1.GetTimeStamp();
} }
cModualCntrol.strOperationChannelName = strOperation.ToArray();
if (cModualCntrol.bControlStatus == true && cModualCntrol.ulStartTime <= Form1.GetTimeStamp()) if (cModualCntrol.bControlStatus == true && cModualCntrol.ulStartTime <= Form1.GetTimeStamp())
{ {
//Form1.vSuspend_Poll_Control(true);
cModualCntrol.bStartControl = true; cModualCntrol.bStartControl = true;
cModualCntrol.strOperationChannelName = strOperation.ToArray(); for (int j = 0; j < cModualCntrol.strOperationChannelName.Count(); j++)
if (ControlMap.bControl_Map(cModualCntrol.bOpenMachine, cModualCntrol.sbModbusID,cModualCntrol.bControlData, cModualCntrol.strOperationChannelName[0])) {
if (ControlMap.bControl_Map(cModualCntrol.bOpenMachine, cModualCntrol.sbModbusID, cModualCntrol.bControlData, cModualCntrol.strOperationChannelName[j]))
{ {
cModualCntrol.bControlStatus = ControlMap.bDelege_Operation(cModualCntrol.bControlData); bOperationStatus[j] = ControlMap.bDelege_Operation(cModualCntrol.bControlData);
cModualCntrol.bControlStatus = bOperationStatus[j];
} }
else else
{ {
cModualCntrol.bControlStatus = false; cModualCntrol.bControlStatus = false;
bOperationStatus[j] = false;
} }
} }
if (cModualCntrol.bControlStatus == true) //Form1.vSuspend_Poll_Control(false);
}
if (cModualCntrol.bControlStatus == true && cModualCntrol.strOperationChannelName.Count() <= 1)
{ {
lock (obLock) lock (obLock)
{ {
...@@ -215,7 +223,7 @@ namespace ModbusDemo.MessageFormat ...@@ -215,7 +223,7 @@ namespace ModbusDemo.MessageFormat
} }
for (int k = 0; k < 8; k++) for (int k = 0; k < 8; k++)
{ {
if (cModualCntrol.bControlBit[k] == true && cModualCntrol.bControlStatus == true) if (cModualCntrol.bControlBit[k] == true && (cModualCntrol.bControlStatus == true || bOperationStatus[k] == true))
{ {
string str = "d" + k.ToString(); string str = "d" + k.ToString();
jsonObj["ss"][i]["op"][str] = 1; jsonObj["ss"][i]["op"][str] = 1;
...@@ -230,13 +238,13 @@ namespace ModbusDemo.MessageFormat ...@@ -230,13 +238,13 @@ namespace ModbusDemo.MessageFormat
stResponseData = jsonObj.ToString(); stResponseData = jsonObj.ToString();
} }
public static void vControl_Poll() public static void vControl_Poll()//async Task
{ {
while (true) while (true)
{ {
lock (obLock) lock (obLock)
{ {
for(sbyte i = 0; i < liModuualControl.Count; i++) for (sbyte i = 0; i < liModuualControl.Count; i++)
{ {
if (liModuualControl[i].bStartControl == false) if (liModuualControl[i].bStartControl == false)
{ {
...@@ -244,8 +252,8 @@ namespace ModbusDemo.MessageFormat ...@@ -244,8 +252,8 @@ namespace ModbusDemo.MessageFormat
{ {
liModuualControl[i].bStartControl = true; liModuualControl[i].bStartControl = true;
bool[] bControlData; bool[] bControlData;
liModuualControl[i].bControlStatus = ModualPoll.bGet_channel_Value<bool>(liModuualControl[i].sbModbusID, out bControlData,"d0","d1","d1","d2","d3","d4","d5","d6","d7"); liModuualControl[i].bControlStatus = ModualPoll.bGet_channel_Value<bool>(liModuualControl[i].sbModbusID, out bControlData, "d0", "d1", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
if (ControlMap.bControl_Map(liModuualControl[i].bOpenMachine, liModuualControl[i].sbModbusID,liModuualControl[i].bControlData,liModuualControl[i].strOperationChannelName[0])) if (ControlMap.bControl_Map(liModuualControl[i].bOpenMachine, liModuualControl[i].sbModbusID, liModuualControl[i].bControlData, liModuualControl[i].strOperationChannelName[0]))
{ {
liModuualControl[i].bControlStatus = ControlMap.bDelege_Operation(bControlData); liModuualControl[i].bControlStatus = ControlMap.bDelege_Operation(bControlData);
} }
...@@ -256,8 +264,17 @@ namespace ModbusDemo.MessageFormat ...@@ -256,8 +264,17 @@ namespace ModbusDemo.MessageFormat
if ((liModuualControl[i].usDurationTime + liModuualControl[i].ulStartTime) <= Form1.GetTimeStamp()) if ((liModuualControl[i].usDurationTime + liModuualControl[i].ulStartTime) <= Form1.GetTimeStamp())
{ {
bool[] bControlData; bool[] bControlData;
liModuualControl[i].bControlStatus = ModualPoll.bGet_channel_Value<bool>(liModuualControl[i].sbModbusID, out bControlData,"d0","d1","d1","d2","d3","d4","d5","d6","d7"); string str;
if (ControlMap.bControl_Map(liModuualControl[i].bOpenMachine, liModuualControl[i].sbModbusID,liModuualControl[i].bControlData, liModuualControl[i].strOperationChannelName[0])) liModuualControl[i].bControlStatus = ModualPoll.bGet_channel_Value<bool>(liModuualControl[i].sbModbusID, out bControlData, "d0", "d1", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
for (int j = 0; j < 8; j++)
{
str = "d"+j.ToString();
if (str == liModuualControl[i].strOperationChannelName[0])
{
liModuualControl[i].bControlData[j] = !liModuualControl[i].bControlData[j];
}
}
if (ControlMap.bControl_Map(!liModuualControl[i].bOpenMachine, liModuualControl[i].sbModbusID, liModuualControl[i].bControlData, liModuualControl[i].strOperationChannelName[0]))
{ {
liModuualControl[i].bControlStatus = ControlMap.bDelege_Operation(bControlData); liModuualControl[i].bControlStatus = ControlMap.bDelege_Operation(bControlData);
} }
...@@ -266,7 +283,16 @@ namespace ModbusDemo.MessageFormat ...@@ -266,7 +283,16 @@ namespace ModbusDemo.MessageFormat
} }
} }
} }
for(sbyte sbEastTransitPoolIndex = 0;sbEastTransitPoolIndex < AllPond.EastTransitPoolList.Count();sbEastTransitPoolIndex++) }
Thread.Sleep(100);
}
}
public static Task vControl_Res_Poll()
{
while (true)
{
for (sbyte sbEastTransitPoolIndex = 0; sbEastTransitPoolIndex < AllPond.EastTransitPoolList.Count(); sbEastTransitPoolIndex++)
{ {
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == true) if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == true)
{ {
...@@ -277,7 +303,7 @@ namespace ModbusDemo.MessageFormat ...@@ -277,7 +303,7 @@ namespace ModbusDemo.MessageFormat
{ {
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bClose_Machine(bControlData) == true) 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); ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
} }
} }
} }
...@@ -289,11 +315,162 @@ namespace ModbusDemo.MessageFormat ...@@ -289,11 +315,162 @@ namespace ModbusDemo.MessageFormat
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber); ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
} }
} }
Thread.Sleep(200);
}
for (sbyte sbEastTransitPoolIndex = 0; sbEastTransitPoolIndex < AllPond.EastTransitPoolList.Count(); sbEastTransitPoolIndex++)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == true)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent < OPENCURRENT)
{
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].bClose_Machine(bControlData) == true)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
}
}
}
}
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == false)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent > CLOSECURRENT)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
}
}
Thread.Sleep(200);
}
for (sbyte sbEastTransitPoolIndex = 0; sbEastTransitPoolIndex < AllPond.EastTransitPoolList.Count(); sbEastTransitPoolIndex++)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == true)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent < OPENCURRENT)
{
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].bClose_Machine(bControlData) == true)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
}
}
}
}
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == false)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent > CLOSECURRENT)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
}
}
Thread.Sleep(200);
}
for (sbyte sbEastTransitPoolIndex = 0; sbEastTransitPoolIndex < AllPond.EastTransitPoolList.Count(); sbEastTransitPoolIndex++)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == true)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent < OPENCURRENT)
{
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].bClose_Machine(bControlData) == true)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
}
}
}
}
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == false)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent > CLOSECURRENT)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
}
}
Thread.Sleep(200);
}
for (sbyte sbEastTransitPoolIndex = 0; sbEastTransitPoolIndex < AllPond.EastTransitPoolList.Count(); sbEastTransitPoolIndex++)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == true)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent < OPENCURRENT)
{
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].bClose_Machine(bControlData) == true)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
} }
} }
Thread.Sleep(100);
} }
} }
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == false)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent > CLOSECURRENT)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
}
}
Thread.Sleep(200);
}
for (sbyte sbEastTransitPoolIndex = 0; sbEastTransitPoolIndex < AllPond.EastTransitPoolList.Count(); sbEastTransitPoolIndex++)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == true)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent < OPENCURRENT)
{
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].bClose_Machine(bControlData) == true)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
}
}
}
}
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == false)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent > CLOSECURRENT)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
}
}
}
for (sbyte sbEastTransitPoolIndex = 0; sbEastTransitPoolIndex < AllPond.EastTransitPoolList.Count(); sbEastTransitPoolIndex++)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == true)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent < OPENCURRENT)
{
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].bClose_Machine(bControlData) == true)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
}
}
}
}
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadRefControl == true && AllPond.EastTransitPoolList[sbEastTransitPoolIndex].bHadOpenPumb == false)
{
if (AllPond.EastTransitPoolList[sbEastTransitPoolIndex].dChannelCurrent > CLOSECURRENT)
{
ModualAlarm.vSet_Modual_Alarm(AllPond.EastTransitPoolList[sbEastTransitPoolIndex].byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, AllPond.EastTransitPoolList[sbEastTransitPoolIndex].strChannelNumber);
}
}
}
Thread.Sleep(1000);
}
}
public static modual.eModualType eModdusId_Find_ModualType(string sModbusID) public static modual.eModualType eModdusId_Find_ModualType(string sModbusID)
{ {
for (int i = 0; i < ModualPoll.byX66cNumber; i++) for (int i = 0; i < ModualPoll.byX66cNumber; i++)
...@@ -322,14 +499,16 @@ namespace ModbusDemo.MessageFormat ...@@ -322,14 +499,16 @@ namespace ModbusDemo.MessageFormat
return modual.eModualType.IDLE; return modual.eModualType.IDLE;
} }
public static bool bOperation_Machine(bool bOpenMachine, byte sbModbusID,bool[] bControlData,bool[] bControlBit, byte byResModualID,string stResChannel) public static bool bOperation_Machine(bool bOpenMachine, byte sbModbusID,bool[] bControlData,bool[] bControlBit,out bool bHadOpenMachine, byte byResModualID,string stResChannel)
{ {
bHadOpenMachine = true;
bool bControlStatus = true; bool bControlStatus = true;
if (ModualPoll.bSet_All_Channel_Value(sbModbusID, bControlData) == true) if (ModualPoll.bSet_All_Channel_Value(sbModbusID, bControlData) == true)
{ {
if (bOpenMachine == true && stResChannel != null) if (bOpenMachine == true && stResChannel != null)
{ {
double[] dConvertData; double[] dConvertData;
bHadOpenMachine = true;
Thread.Sleep(1000); Thread.Sleep(1000);
bControlStatus = ModualPoll.bGet_channel_Value<double>(byResModualID, out dConvertData, stResChannel); bControlStatus = ModualPoll.bGet_channel_Value<double>(byResModualID, out dConvertData, stResChannel);
if (dConvertData[0] > OPENCURRENT && bControlStatus == true) if (dConvertData[0] > OPENCURRENT && bControlStatus == true)
...@@ -344,6 +523,7 @@ namespace ModbusDemo.MessageFormat ...@@ -344,6 +523,7 @@ namespace ModbusDemo.MessageFormat
else if (bOpenMachine == false && stResChannel != null) else if (bOpenMachine == false && stResChannel != null)
{ {
double[] dConvertData; double[] dConvertData;
bHadOpenMachine = false;
Thread.Sleep(1000); Thread.Sleep(1000);
bControlStatus = ModualPoll.bGet_channel_Value<double>(byResModualID, out dConvertData, stResChannel); bControlStatus = ModualPoll.bGet_channel_Value<double>(byResModualID, out dConvertData, stResChannel);
if (dConvertData[0] < CLOSECURRENT && bControlStatus == true) if (dConvertData[0] < CLOSECURRENT && bControlStatus == true)
......
...@@ -178,15 +178,9 @@ ...@@ -178,15 +178,9 @@
</PropertyGroup> </PropertyGroup>
<Import Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="$(VisualStudioVersion) != '15.0' And '$(SQLDBExtensionsRefPath)' != ''" /> <Import Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="$(VisualStudioVersion) != '15.0' And '$(SQLDBExtensionsRefPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="$(VisualStudioVersion) != '15.0' And '$(SQLDBExtensionsRefPath)' == ''" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="$(VisualStudioVersion) != '15.0' And '$(SQLDBExtensionsRefPath)' == ''" />
<!-- <<<<<<< HEAD -->
<!-- <<<<<<< HEAD -->
<!-- ======= -->
<!-- ======= -->
<!-- >>>>>>> 5635bdf708c90bb2146f99466d1145dda5dabb37 -->
<PropertyGroup> <PropertyGroup>
<SsdtUnitTestVersion>3.1</SsdtUnitTestVersion> <SsdtUnitTestVersion>3.1</SsdtUnitTestVersion>
</PropertyGroup> </PropertyGroup>
<!-- >>>>>>> origin/master -->
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild"> <Target Name="BeforeBuild">
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using ModbusDemo.MessageFormat; using ModbusDemo.MessageFormat;
using ModbusDemo.Common; using ModbusDemo.Common;
...@@ -35,7 +36,7 @@ namespace ModbusDemo.Modular ...@@ -35,7 +36,7 @@ namespace ModbusDemo.Modular
public static _414P c14formulasormual = new _414P(); public static _414P c14formulasormual = new _414P();
#if DEBUG_TEST #if DEBUG_TEST
public const byte byX18xNumber = 1; public const byte byX18xNumber = 1;
public static byte[] byX18xIdlist = { 13 }; public static byte[] byX18xIdlist = { 13,};
private static modual.eX18xSensorChannelType[,] sX18xChannelType = new modual.eX18xSensorChannelType[byX18xNumber, byX18xReadDataNumber] { { modual.eX18xSensorChannelType.NormalCurrent, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.NormalCurrent, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.Null } }; private static modual.eX18xSensorChannelType[,] sX18xChannelType = new modual.eX18xSensorChannelType[byX18xNumber, byX18xReadDataNumber] { { modual.eX18xSensorChannelType.NormalCurrent, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.NormalCurrent, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.Null } };
#else #else
public const byte byX18xNumber = 6; public const byte byX18xNumber = 6;
...@@ -59,7 +60,7 @@ namespace ModbusDemo.Modular ...@@ -59,7 +60,7 @@ namespace ModbusDemo.Modular
#if DEBUG_TEST #if DEBUG_TEST
public const byte byX78cNumber = 1; public const byte byX78cNumber = 1;
public static byte[] byX78cIdlist = { 20 }; public static byte[] byX78cIdlist = { 20};
#else #else
public const byte byX78cNumber = 0; public const byte byX78cNumber = 0;
public static byte[] byX78cIdlist = {11,20,33,34,55,56}; public static byte[] byX78cIdlist = {11,20,33,34,55,56};
...@@ -148,6 +149,7 @@ namespace ModbusDemo.Modular ...@@ -148,6 +149,7 @@ namespace ModbusDemo.Modular
cx14P.sX14pDataStruct[i].dBeforeConvertData[j] = cx14P.sX14pDataStruct[i].dNowConvertData[j]; cx14P.sX14pDataStruct[i].dBeforeConvertData[j] = cx14P.sX14pDataStruct[i].dNowConvertData[j];
} }
cx14P.sX14PAlarmStruct[i].bDataNotFirstIncreaseOrDecrease = true; cx14P.sX14PAlarmStruct[i].bDataNotFirstIncreaseOrDecrease = true;
Thread.Sleep(100);
} }
for (byte i = 0; i < byX18xNumber; i++) for (byte i = 0; i < byX18xNumber; i++)
...@@ -227,6 +229,7 @@ namespace ModbusDemo.Modular ...@@ -227,6 +229,7 @@ namespace ModbusDemo.Modular
cx18x.sX18xDataStruct[i].dBeforeConvertData[j] = cx18x.sX18xDataStruct[i].dNowConvertData[j]; cx18x.sX18xDataStruct[i].dBeforeConvertData[j] = cx18x.sX18xDataStruct[i].dNowConvertData[j];
} }
cx18x.sX18xAlarmstruct[i].bDataNotFirstIncreaseOrDecrease = true; cx18x.sX18xAlarmstruct[i].bDataNotFirstIncreaseOrDecrease = true;
Thread.Sleep(100);
} }
for (byte i = 0; i < byX78cNumber; i++) for (byte i = 0; i < byX78cNumber; i++)
{ {
...@@ -249,6 +252,7 @@ namespace ModbusDemo.Modular ...@@ -249,6 +252,7 @@ namespace ModbusDemo.Modular
cx78c.sX78cAlarmStruct[i].usCommFailTimes[j] = 0; cx78c.sX78cAlarmStruct[i].usCommFailTimes[j] = 0;
} }
} }
Thread.Sleep(100);
} }
for (byte i = 0; i < byX66cNumber; i++) for (byte i = 0; i < byX66cNumber; i++)
...@@ -271,6 +275,7 @@ namespace ModbusDemo.Modular ...@@ -271,6 +275,7 @@ namespace ModbusDemo.Modular
cx66c.sX66cAlarmStruct[i].usCommFailTimes[j] = 0; cx66c.sX66cAlarmStruct[i].usCommFailTimes[j] = 0;
} }
} }
Thread.Sleep(100);
} }
} }
public static string stAll_Poll_Package() public static string stAll_Poll_Package()
......
...@@ -19,9 +19,9 @@ namespace ModbusDemo.application ...@@ -19,9 +19,9 @@ namespace ModbusDemo.application
strChannelNumber = new string[] { "d1","d2" }, strChannelNumber = new string[] { "d1","d2" },
bOpenOperation = new bool[] { true,true }, bOpenOperation = new bool[] { true,true },
bCloseOperation = new bool[] { false,false }, bCloseOperation = new bool[] { false,false },
bHadRefControl = false, bHadRefControl = true,
byResModbusID = 0, byResModbusID = 13,
strResChannelNumber = null strResChannelNumber = "d0"
}; };
private static ModualPool.pcMachine cEastTransitPoolSouthWater = new ModualPool.pcMachine("EastTransitPoolSouthWater", cEastTransitPoolSouthWaterBase); private static ModualPool.pcMachine cEastTransitPoolSouthWater = new ModualPool.pcMachine("EastTransitPoolSouthWater", cEastTransitPoolSouthWaterBase);
......
...@@ -35,15 +35,11 @@ namespace ModbusDemo.application ...@@ -35,15 +35,11 @@ namespace ModbusDemo.application
public string Name; public string Name;
public double StatusTime; public double StatusTime;
public int modularx; public int modularx;
public byte modbusID;
} }
public static void CriticalValueMonitoring(ref Control usControl,bool Enabl, string Affiliation, out Control control) public static void CriticalValueMonitoring(ref Control usControl,bool Enabl, string Affiliation, out Control control)
{ {
//Control usControl = new Control
//{
// Enablation = Enabl,
// Name = Affiliation,
//};
if (usControl.Enablation == true) if (usControl.Enablation == true)
{ {
if (usControl.maxLevel != 0.0 && usControl.minLevel != 0.0) if (usControl.maxLevel != 0.0 && usControl.minLevel != 0.0)
...@@ -67,7 +63,6 @@ namespace ModbusDemo.application ...@@ -67,7 +63,6 @@ namespace ModbusDemo.application
} }
else if (usControl.realTimeLevel < usControl.maxLevel && usControl.realTimeLevel > (usControl.minLevel + usControl.minLevel * 0.15)) else if (usControl.realTimeLevel < usControl.maxLevel && usControl.realTimeLevel > (usControl.minLevel + usControl.minLevel * 0.15))
{ {
//usControl.status = true;
usControl.normal = true; usControl.normal = true;
} }
...@@ -99,7 +94,7 @@ namespace ModbusDemo.application ...@@ -99,7 +94,7 @@ namespace ModbusDemo.application
public static bool Wtimerun = false; public static bool Wtimerun = false;
static System.Diagnostics.Stopwatch ETime = new System.Diagnostics.Stopwatch(); static System.Diagnostics.Stopwatch ETime = new System.Diagnostics.Stopwatch();
static System.Diagnostics.Stopwatch WTime = new System.Diagnostics.Stopwatch(); static System.Diagnostics.Stopwatch WTime = new System.Diagnostics.Stopwatch();
//public static string
public static void Automatic_control(bool Eenabl,bool Wenabl) public static void Automatic_control(bool Eenabl,bool Wenabl)
{ {
TimeSpan Wtime = WTime.Elapsed; TimeSpan Wtime = WTime.Elapsed;
...@@ -146,36 +141,54 @@ namespace ModbusDemo.application ...@@ -146,36 +141,54 @@ namespace ModbusDemo.application
} }
if (timespan.TotalMinutes > 2) if (timespan.TotalMinutes > 2)
{ {
if(ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i], 16, state_OFF) 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");
ETime.Reset();
ETime.Stop(); // 停止监视
}
}
else
{
if (ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i], 16, state_OFF)
== ==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR) 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 else
{ {
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i],
(ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR |
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
} }
if(ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i + 1], 16, state_OFF) if(ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i], 16, state_OFF)
== ==
ModbusComm.eModbusErrorCode.MB_EMASTERNOERR 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");
ETime.Reset();
ETime.Stop(); // 停止监视
//timerun = false;
}
} }
else else
{ {
ModualAlarm.vSet_Modual_Alarm(EmodbusId[i + 1],
(ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR |
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
ETime.Reset(); ETime.Reset();
ETime.Stop(); // 停止监视 ETime.Stop(); // 停止监视
timerun = false; timerun = false;
ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i], 16, state_OFF);
ModbusComm.Modbus_WriteMultipleCoils(EmodbusId[i + 1], 16, state_OFF);
} }
if (Wenabl ==true) if (Wenabl ==true)
...@@ -216,26 +229,61 @@ namespace ModbusDemo.application ...@@ -216,26 +229,61 @@ namespace ModbusDemo.application
WTime.Start();//开始监视 WTime.Start();//开始监视
Wtimerun = true; Wtimerun = true;
} }
if(Wtime.TotalMinutes>2) if(Wtime.TotalMinutes>1)
{ {
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");
WTime.Reset(); WTime.Reset();
WTime.Stop();//停止监视 WTime.Stop();//停止监视
Wtimerun = false; Wtimerun = false;
ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[i], 16, state_OFF);
ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[i+1], 16, state_OFF);
} }
} }
else else
{ {
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)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR |
(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)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR |
(ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1,
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
WTime.Reset(); WTime.Reset();
WTime.Stop();//停止监视 WTime.Stop();//停止监视
Wtimerun = false; Wtimerun = false;
ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[i], 16, state_OFF);
ModbusComm.Modbus_WriteMultipleCoils(WmodbusId[i + 1], 16, state_OFF);
} }
double Whours = Wtime.TotalHours; double Whours = Wtime.TotalHours;
double Wminures = Wtime.TotalMinutes; double Wminures = Wtime.TotalMinutes;
double Wseconds = Wtime.TotalSeconds; double Wseconds = Wtime.TotalSeconds;
......
...@@ -14,10 +14,11 @@ namespace ModbusDemo.application ...@@ -14,10 +14,11 @@ namespace ModbusDemo.application
public static byte byMapIdleID; public static byte byMapIdleID;
public static bool[] byMapIdleControlData; public static bool[] byMapIdleControlData;
public static string[] strMapIdleChannelName; public static string[] strMapIdleChannelName;
public static bool bMap_Idle_Operation_Control(bool[] bControldata) public static bool bMap_Idle_Open_Control(bool[] bControldata)
{ {
bool[] bControlBit = new bool[bControldata.Count()]; bool[] bControlBit = new bool[bControldata.Count()];
bool bStatus; bool bStatus;
bool bHadOperation;
for (int i = 0; i < bControldata.Count(); i++) for (int i = 0; i < bControldata.Count(); i++)
{ {
string str = "d" + i.ToString(); string str = "d" + i.ToString();
...@@ -30,7 +31,27 @@ namespace ModbusDemo.application ...@@ -30,7 +31,27 @@ namespace ModbusDemo.application
} }
} }
} }
bStatus = ModualControl.bOperation_Machine(true, byMapIdleID, bControldata, bControlBit, 0, null); bStatus = ModualControl.bOperation_Machine(true, byMapIdleID, bControldata, bControlBit,out bHadOperation, 0, null);
return bStatus;
}
public static bool bMap_Idle_Close_Control(bool[] bControldata)
{
bool[] bControlBit = new bool[bControldata.Count()];
bool bStatus;
bool bHadOperation;
for (int i = 0; i < bControldata.Count(); i++)
{
string str = "d" + i.ToString();
for (int j = 0; j < strMapIdleChannelName.Count(); j++)
{
if (str == strMapIdleChannelName[j])
{
bControlBit[i] = true;
bControldata[i] = byMapIdleControlData[i];
}
}
}
bStatus = ModualControl.bOperation_Machine(true, byMapIdleID, bControldata, bControlBit,out bHadOperation, 0, null);
return bStatus; return bStatus;
} }
public static bool bControl_Map(bool bOpen, byte byControlID,bool[] bControlData, params string[] strOperationChannelName) public static bool bControl_Map(bool bOpen, byte byControlID,bool[] bControlData, params string[] strOperationChannelName)
...@@ -71,7 +92,7 @@ namespace ModbusDemo.application ...@@ -71,7 +92,7 @@ namespace ModbusDemo.application
byMapIdleID = byControlID; byMapIdleID = byControlID;
strMapIdleChannelName = strOperationChannelName; strMapIdleChannelName = strOperationChannelName;
byMapIdleControlData = bControlData; byMapIdleControlData = bControlData;
bDelege_Operation = bMap_Idle_Operation_Control; bDelege_Operation = bMap_Idle_Open_Control;
} }
} }
else else
...@@ -109,7 +130,7 @@ namespace ModbusDemo.application ...@@ -109,7 +130,7 @@ namespace ModbusDemo.application
byMapIdleID = byControlID; byMapIdleID = byControlID;
strMapIdleChannelName = strOperationChannelName; strMapIdleChannelName = strOperationChannelName;
byMapIdleControlData = bControlData; byMapIdleControlData = bControlData;
bDelege_Operation = bMap_Idle_Operation_Control; bDelege_Operation = bMap_Idle_Close_Control;
} }
} }
return bMapStatus; return bMapStatus;
......
...@@ -127,7 +127,7 @@ namespace ModbusDemo.application ...@@ -127,7 +127,7 @@ namespace ModbusDemo.application
} }
} }
} }
if ((bStatus = ModualControl.bOperation_Machine(true, byModbusID, bControldata, bControlBit, byResModbusID, strResChannelNumber)) == true) if ((bStatus = ModualControl.bOperation_Machine(true, byModbusID, bControldata, bControlBit,out bHadOpenPumb, byResModbusID, strResChannelNumber)) == true)
{ {
bHadOpenPumb = true; bHadOpenPumb = true;
} }
...@@ -149,7 +149,7 @@ namespace ModbusDemo.application ...@@ -149,7 +149,7 @@ namespace ModbusDemo.application
} }
} }
} }
if ((bStatus = ModualControl.bOperation_Machine(false, byModbusID, bControldata, bControlBit, byResModbusID, strResChannelNumber)) == true) if ((bStatus = ModualControl.bOperation_Machine(false, byModbusID, bControldata, bControlBit,out bHadOpenPumb, byResModbusID, strResChannelNumber)) == true)
{ {
bHadOpenPumb = false; bHadOpenPumb = false;
} }
...@@ -201,6 +201,7 @@ namespace ModbusDemo.application ...@@ -201,6 +201,7 @@ namespace ModbusDemo.application
public bool bOpreation_Button(bool[] bControldata) public bool bOpreation_Button(bool[] bControldata)
{ {
bool bStatus; bool bStatus;
bool bHadOpenButton;
bool[] bControlBit = new bool[bControldata.Count()]; bool[] bControlBit = new bool[bControldata.Count()];
for (int i = 0; i < bControldata.Count(); i++) for (int i = 0; i < bControldata.Count(); i++)
{ {
...@@ -214,7 +215,7 @@ namespace ModbusDemo.application ...@@ -214,7 +215,7 @@ namespace ModbusDemo.application
} }
} }
} }
if ((bStatus = ModualControl.bOperation_Machine(true, byModbusID, bControldata, bControlBit, 0, null)) == true) if ((bStatus = ModualControl.bOperation_Machine(true, byModbusID, bControldata, bControlBit,out bHadOpenButton, 0, null)) == true)
{ {
for (int i = 0; i < bControldata.Count(); i++) for (int i = 0; i < bControldata.Count(); i++)
{ {
...@@ -228,7 +229,7 @@ namespace ModbusDemo.application ...@@ -228,7 +229,7 @@ namespace ModbusDemo.application
} }
} }
} }
bStatus = ModualControl.bOperation_Machine(true, byModbusID, bControldata, bControlBit, 0, null); bStatus = ModualControl.bOperation_Machine(true, byModbusID, bControldata, bControlBit, out bHadOpenButton,0, null);
} }
return bStatus; return bStatus;
......
...@@ -137,6 +137,8 @@ namespace ModbusDemo ...@@ -137,6 +137,8 @@ namespace ModbusDemo
//定义一个委托变量 //定义一个委托变量
public UpdateTxt updateTxt; public UpdateTxt updateTxt;
private Thread ModbusControlThread; private Thread ModbusControlThread;
private Thread MqttReceiveThread;
public List<string> ListHandle = new List<string>();
private async Task Publish() private async Task Publish()
{ {
var message = new MqttApplicationMessageBuilder() var message = new MqttApplicationMessageBuilder()
...@@ -150,7 +152,7 @@ namespace ModbusDemo ...@@ -150,7 +152,7 @@ namespace ModbusDemo
await mqttClient.PublishAsync(message); await mqttClient.PublishAsync(message);
} }
} }
private async Task vControlResponseBack() private void vControlResponseBack()
{ {
var message = new MqttApplicationMessageBuilder() var message = new MqttApplicationMessageBuilder()
.WithTopic(mqttBackTopic) .WithTopic(mqttBackTopic)
...@@ -158,7 +160,7 @@ namespace ModbusDemo ...@@ -158,7 +160,7 @@ namespace ModbusDemo
.WithAtLeastOnceQoS() .WithAtLeastOnceQoS()
.WithRetainFlag(false) .WithRetainFlag(false)
.Build(); .Build();
await mqttClient.PublishAsync(message); mqttClient.PublishAsync(message);
totxt.Log("我在247,执行了Back"); totxt.Log("我在247,执行了Back");
} }
...@@ -203,6 +205,7 @@ namespace ModbusDemo ...@@ -203,6 +205,7 @@ namespace ModbusDemo
//txtReceiveMessage.AppendText($"已订阅[{Data}]主题{Environment.NewLine}"); //txtReceiveMessage.AppendText($"已订阅[{Data}]主题{Environment.NewLine}");
}))); })));
} }
//private async Task ConnectMqttServerAsync()
private async Task ConnectMqttServerAsync() private async Task ConnectMqttServerAsync()
{ {
// Create a new MQTT client. // Create a new MQTT client.
...@@ -327,12 +330,11 @@ namespace ModbusDemo ...@@ -327,12 +330,11 @@ namespace ModbusDemo
//收到的消息啦 //收到的消息啦
txtReceiveMessage.AppendText($">> {"### RECEIVED APPLICATION MESSAGE ###"}{Environment.NewLine}"); txtReceiveMessage.AppendText($">> {"### RECEIVED APPLICATION MESSAGE ###"}{Environment.NewLine}");
totxt.Log($">> {"### RECEIVED APPLICATION MESSAGE ###"}{Environment.NewLine}"); totxt.Log($">> {"### RECEIVED APPLICATION MESSAGE ###"}{Environment.NewLine}");
})));
Invoke((new Action(() =>
{
//我的订阅主题是。。。。。
txtReceiveMessage.AppendText($">> Topic = {e.ApplicationMessage.Topic}{Environment.NewLine}"); txtReceiveMessage.AppendText($">> Topic = {e.ApplicationMessage.Topic}{Environment.NewLine}");
totxt.Log($">> Topic = {e.ApplicationMessage.Topic}{Environment.NewLine}"); totxt.Log($">> Topic = {e.ApplicationMessage.Topic}{Environment.NewLine}");
txtReceiveMessage.AppendText($">> QoS = {e.ApplicationMessage.QualityOfServiceLevel}{Environment.NewLine}");
txtReceiveMessage.AppendText($">> Retain = {e.ApplicationMessage.Retain}{Environment.NewLine}");
}))); })));
Invoke((new Action(async () => Invoke((new Action(async () =>
{ {
...@@ -344,8 +346,7 @@ namespace ModbusDemo ...@@ -344,8 +346,7 @@ namespace ModbusDemo
Console.WriteLine(stConvertString); Console.WriteLine(stConvertString);
if (e.ApplicationMessage.Topic == mqttSubscribeControlTopic) if (e.ApplicationMessage.Topic == mqttSubscribeControlTopic)
{ {
ModualControl.vGetaWay_Receive_Control(stConvertString, out mqttData_Back); ListHandle.Add(stConvertString);
await vControlResponseBack();
} }
else if (e.ApplicationMessage.Topic == mqttCfgTopic) else if (e.ApplicationMessage.Topic == mqttCfgTopic)
{ {
...@@ -353,17 +354,20 @@ namespace ModbusDemo ...@@ -353,17 +354,20 @@ namespace ModbusDemo
await vCfgResponseBack(mqttData_Back); await vCfgResponseBack(mqttData_Back);
} }
}))); })));
Invoke((new Action(() => }
private void vMqtt_Receive_Handle()
{ {
txtReceiveMessage.AppendText($">> QoS = {e.ApplicationMessage.QualityOfServiceLevel}{Environment.NewLine}"); while (true)
//totxt.Log($">> QoS = {e.ApplicationMessage.QualityOfServiceLevel}{Environment.NewLine}");
})));
Invoke((new Action(() =>
{ {
txtReceiveMessage.AppendText($">> Retain = {e.ApplicationMessage.Retain}{Environment.NewLine}"); for (int i = 0; i < ListHandle.Count; i++)
//totxt.Log($">> Retain = {e.ApplicationMessage.Retain}{Environment.NewLine}"); {
}))); ModualControl.vGetaWay_Receive_Control(ListHandle[i], out mqttData_Back);
mqttData = null; vControlResponseBack();
ListHandle.Remove(ListHandle[i]);
}
Thread.Sleep(100);
}
} }
#endregion #endregion
...@@ -371,6 +375,7 @@ namespace ModbusDemo ...@@ -371,6 +375,7 @@ namespace ModbusDemo
private static bool bSetDataIsRunning = false; private static bool bSetDataIsRunning = false;
private Thread ModbusPollThread; private Thread ModbusPollThread;
private void T_AutoControl() private void T_AutoControl()
{ {
AutoControl.Control usEcontrol = new AutoControl.Control(); AutoControl.Control usEcontrol = new AutoControl.Control();
...@@ -391,12 +396,14 @@ namespace ModbusDemo ...@@ -391,12 +396,14 @@ namespace ModbusDemo
usWcontrol.realTimeLevel = usWcontrol.realTimeLevel =
ModualPoll.cx18x.sX18xDataStruct[j].dNowConvertData[0]; ModualPoll.cx18x.sX18xDataStruct[j].dNowConvertData[0];
usWcontrol.modularx = j; usWcontrol.modularx = j;
usWcontrol.modbusID = LevelmodbusID[0];
} }
if (ModualPoll.cx18x.byModbusID[j] == LevelmodbusID[1]) if (ModualPoll.cx18x.byModbusID[j] == LevelmodbusID[1])
{ {
usEcontrol.realTimeLevel = usEcontrol.realTimeLevel =
ModualPoll.cx18x.sX18xDataStruct[j].dNowConvertData[0]; ModualPoll.cx18x.sX18xDataStruct[j].dNowConvertData[0];
usEcontrol.modularx = j; usEcontrol.modularx = j;
usEcontrol.modbusID = LevelmodbusID[1];
} }
} }
if (ModualControl.cPoolLevelConfig[i].byModbusID == LevelmodbusID[0]) if (ModualControl.cPoolLevelConfig[i].byModbusID == LevelmodbusID[0])
...@@ -431,8 +438,7 @@ namespace ModbusDemo ...@@ -431,8 +438,7 @@ namespace ModbusDemo
} }
AutoControl.Automatic_control(usWcontrolB.status, usEcontrolB.status); AutoControl.Automatic_control(usWcontrolB.status, usEcontrolB.status);
} }
else if (file.Length != 0)
else if (file.Length!= 0)
{ {
usEcontrol.modularx = InIHelper.ReadConfig<int>("Channel number", "东液位通道"); usEcontrol.modularx = InIHelper.ReadConfig<int>("Channel number", "东液位通道");
usWcontrol.modularx = InIHelper.ReadConfig<int>("Channel number", "西液位通道"); usWcontrol.modularx = InIHelper.ReadConfig<int>("Channel number", "西液位通道");
...@@ -1083,7 +1089,6 @@ namespace ModbusDemo ...@@ -1083,7 +1089,6 @@ namespace ModbusDemo
{ {
} }
private async void SubscribeBut_Click(object sender, EventArgs e) private async void SubscribeBut_Click(object sender, EventArgs e)
{ {
await Subscribe(); await Subscribe();
...@@ -1138,7 +1143,7 @@ namespace ModbusDemo ...@@ -1138,7 +1143,7 @@ namespace ModbusDemo
SetMqtt(); SetMqtt();
MQTT_thread = new MethodInvoker(Sendout); MQTT_thread = new MethodInvoker(Sendout);
MQTT_thread.BeginInvoke(null, null); MQTT_thread.BeginInvoke(null, null);
Task.Run(async () => { await ConnectMqttServerAsync(); }); Task.Run(async () => {await ConnectMqttServerAsync(); });
ModbusComm.Modbus = ModbusSerialMaster.CreateRtu(comPort); ModbusComm.Modbus = ModbusSerialMaster.CreateRtu(comPort);
ModbusComm.Modbus.Transport.Retries = 0; ModbusComm.Modbus.Transport.Retries = 0;
ModbusComm.Modbus.Transport.ReadTimeout = 1000; ModbusComm.Modbus.Transport.ReadTimeout = 1000;
...@@ -1155,9 +1160,18 @@ namespace ModbusDemo ...@@ -1155,9 +1160,18 @@ namespace ModbusDemo
bCretaThead = true; bCretaThead = true;
ModbusPollThread = new Thread (vModbusPoll); ModbusPollThread = new Thread (vModbusPoll);
ModbusPollThread.Start(); ModbusPollThread.Start();
ModbusPollThread.Priority = ThreadPriority.Normal;
ModbusControlThread = new Thread(ModualControl.vControl_Poll); ModbusControlThread = new Thread(ModualControl.vControl_Poll);
ModbusControlThread.Start(); ModbusControlThread.Start();
ModbusControlThread.Priority = ThreadPriority.BelowNormal;
MqttReceiveThread = new Thread(vMqtt_Receive_Handle);
MqttReceiveThread.Start();
MqttReceiveThread.Priority = ThreadPriority.AboveNormal;
Task task1 = Task.Factory.StartNew(async() => {await ModualControl.vControl_Res_Poll();});
} }
else else
{ {
......
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