Commit 7176757f authored by leon.huang's avatar leon.huang

modify level parse

parent 02a4bc27
......@@ -7,6 +7,7 @@ using System.Collections;
using MQTTnet;
using MQTTnet.Client;
using Newtonsoft.Json;
using ModbusDemo.Modular;
namespace ModbusDemo.Common
{
public static class ModualAlarm
......@@ -55,5 +56,137 @@ namespace ModbusDemo.Common
.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++)
{
if (byModbusID == ModualPoll.cx14P.byModbusID[i])
{
for (int j = 0; j < strChannalList.Count(); j++)
{
for (int k = 0; k < 8; k++)
{
string strChannel = "d" + i.ToString();
if (strChannalList[k] == strChannel)
{
if (bSetAlarm == true)
{
if ((usAlarmCodde & (ushort)eAlarmCode.ChannelCommunError) == (ushort)eAlarmCode.ChannelCommunError)
{
ModualPoll.cx14P.sX14PAlarmStruct[i].usCommFailTimes[k] += byCommFailTimes;
}
ModualPoll.cx14P.sX14PAlarmStruct[i].usNowAlarmCode[k] |= usAlarmCodde;
}
else
{
if ((usAlarmCodde & (ushort)eAlarmCode.ChannelCommunError) == (ushort)eAlarmCode.ChannelCommunError)
{
ModualPoll.cx14P.sX14PAlarmStruct[i].usCommFailTimes[k] = 0;
}
ModualPoll.cx14P.sX14PAlarmStruct[i].usNowAlarmCode[k] &= usAlarmCodde;
}
}
}
}
}
}
for (int i = 0; i < ModualPoll.byX18xNumber; i++)
{
if (byModbusID == ModualPoll.cx18x.byModbusID[i])
{
for (int j = 0; j < strChannalList.Count(); j++)
{
for (int k = 0; k < 8; k++)
{
string strChannel = "d" + i.ToString();
if (strChannalList[k] == strChannel)
{
if (bSetAlarm == true)
{
if ((usAlarmCodde & (ushort)eAlarmCode.ChannelCommunError) == (ushort)eAlarmCode.ChannelCommunError)
{
ModualPoll.cx18x.sX18xAlarmstruct[i].usCommFailTimes[k] += byCommFailTimes;
}
ModualPoll.cx18x.sX18xAlarmstruct[i].usNowAlarmCode[k] |= usAlarmCodde;
}
else
{
if ((usAlarmCodde & (ushort)eAlarmCode.ChannelCommunError) == (ushort)eAlarmCode.ChannelCommunError)
{
ModualPoll.cx18x.sX18xAlarmstruct[i].usCommFailTimes[k] = 0;
}
ModualPoll.cx18x.sX18xAlarmstruct[i].usNowAlarmCode[k] &= usAlarmCodde;
}
}
}
}
}
}
for (int i = 0; i < ModualPoll.byX78cNumber; i++)
{
if (byModbusID == ModualPoll.cx78c.byModbusID[i])
{
for (int j = 0; j < strChannalList.Count(); j++)
{
for (int k = 0; k < 16; k++)
{
string strChannel = "d" + i.ToString();
if (strChannalList[k] == strChannel)
{
if (bSetAlarm == true)
{
if ((usAlarmCodde & (ushort)eAlarmCode.ChannelCommunError) == (ushort)eAlarmCode.ChannelCommunError)
{
ModualPoll.cx78c.sX78cAlarmStruct[i].usCommFailTimes[k] += byCommFailTimes;
}
ModualPoll.cx78c.sX78cAlarmStruct[i].usNowAlarmCode[k] |= usAlarmCodde;
}
else
{
if ((usAlarmCodde & (ushort)eAlarmCode.ChannelCommunError) == (ushort)eAlarmCode.ChannelCommunError)
{
ModualPoll.cx78c.sX78cAlarmStruct[i].usCommFailTimes[k] = 0;
}
ModualPoll.cx78c.sX78cAlarmStruct[i].usNowAlarmCode[k] &= usAlarmCodde;
}
}
}
}
}
}
for (int i = 0; i < ModualPoll.byX66cNumber; i++)
{
if (byModbusID == ModualPoll.cx66c.byModbusID[i])
{
for (int j = 0; j < strChannalList.Count(); j++)
{
for (int k = 0; k < ModualPoll.byX66cRelayRegNumber; k++)
{
string strChannel = "d" + i.ToString();
if (strChannalList[k] == strChannel)
{
if (bSetAlarm == true)
{
if ((usAlarmCodde & (ushort)eAlarmCode.ChannelCommunError) == (ushort)eAlarmCode.ChannelCommunError)
{
ModualPoll.cx66c.sX66cAlarmStruct[i].usCommFailTimes[k] += byCommFailTimes;
}
ModualPoll.cx66c.sX66cAlarmStruct[i].usNowAlarmCode[k] |= usAlarmCodde;
}
else
{
if ((usAlarmCodde & (ushort)eAlarmCode.ChannelCommunError) == (ushort)eAlarmCode.ChannelCommunError)
{
ModualPoll.cx66c.sX66cAlarmStruct[i].usCommFailTimes[k] = 0;
}
ModualPoll.cx66c.sX66cAlarmStruct[i].usNowAlarmCode[k] &= usAlarmCodde;
}
}
}
}
}
}
}
}
}
......@@ -12,7 +12,6 @@ using ModbusDemo;
using ModbusDemo.Modular;
using ModbusDemo.Common;
using System.Threading;
using System.Threading.Tasks;
namespace ModbusDemo.MessageFormat
{
public class ModualControl
......@@ -54,6 +53,7 @@ namespace ModbusDemo.MessageFormat
public byte d5 { get; set; }
public byte d6 { get; set; }
public byte d7 { get; set; }
public string name {get; set; }
public string down { get; set; }
public string upper { get; set; }
public UInt64 ts { get; set; }
......@@ -76,6 +76,7 @@ namespace ModbusDemo.MessageFormat
public string srcId { get; set; }
public string srcType { get; set; }
public string srcCh { get; set; }
public string opType {get; set; }
public string resId { get; set; }
public string resType { get; set; }
public string resCh { get; set; }
......@@ -103,7 +104,8 @@ namespace ModbusDemo.MessageFormat
public UInt64 ulStartTime;
public bool[] bControlBit = new bool[8];
public modual.eModualType eModualType;
public ModualRespControl[] xModualRespControl = new ModualRespControl[8];
public bool bOpenMachine;
public ModualRespControl xModualRespControl;
}
public class pcLiquidLevelConfig
......@@ -117,30 +119,25 @@ namespace ModbusDemo.MessageFormat
public static List<ModualCntrol> liModuualControl = new List<ModualCntrol>();
public const ushort usDefineControlTimes = 1;
private static pcControlMap cControlMap = new pcControlMap();
private static object obLock = new object();
#if DEBUG_TEST
public const string strMapCfg = "{chMap:[{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\",\"d2\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
public const string strMapCfg = "{chMap:[" +
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d1\", \"dstCh\":[\"d1\",\"d2\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"16\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"16\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"16\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"35\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"35\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"35\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"90\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"39\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"39\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"39\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d6\", \"dstCh\":[\"d6\",\"d7\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
//"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
//"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
//"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
//"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d6\", \"dstCh\":[\"d6\",\"d7\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"]}";
#endif
public static void vGetaWay_Receive_Control(string sDataString, out string stResponseData)
......@@ -164,7 +161,7 @@ namespace ModbusDemo.MessageFormat
ModualCntrol cModualCntrol = new ModualCntrol
{
sbModbusID = byte.Parse(cControl.ss[i].addr),
usDurationTime = cControl.ss[i].op.duration,
usDurationTime = (ushort)(cControl.ss[i].op.duration * 60),
ulStartTime = cControl.ss[i].op.startTime
};
cModualCntrol.eModualType = eModdusId_Find_ModualType(cControl.ss[i].addr);
......@@ -240,6 +237,7 @@ namespace ModbusDemo.MessageFormat
{
vFindChannelMap(cControl.ss[i].addr, "d7", Convert.ToBoolean(cControl.ss[i].op.d7), ref cModualCntrol);
}
if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR && cModualCntrol.ulStartTime <= Form1.GetTimeStamp())
{
cModualCntrol.bStartControl = true;
......@@ -259,6 +257,9 @@ namespace ModbusDemo.MessageFormat
}
if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
lock (obLock)
{
vDelete_Same_Control(cModualCntrol);
if (cModualCntrol.bStartControl == true && cModualCntrol.ulStartTime != 0 && cModualCntrol.bControlStatus == true)
{
liModuualControl.Add(cModualCntrol);
......@@ -268,6 +269,7 @@ namespace ModbusDemo.MessageFormat
liModuualControl.Add(cModualCntrol);
}
}
}
for (int k = 0; k < 8; k++)
{
if (cModualCntrol.bControlBit[k] == true && ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
......@@ -329,6 +331,8 @@ namespace ModbusDemo.MessageFormat
{
cControlMap = JsonConvert.DeserializeObject<pcControlMap>(strMapCfg);
while (true)
{
lock (obLock)
{
for (sbyte i = 0; i < liModuualControl.Count; i++)
{
......@@ -377,9 +381,9 @@ namespace ModbusDemo.MessageFormat
}
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
}
}
......@@ -399,10 +403,10 @@ namespace ModbusDemo.MessageFormat
}
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C)
{
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] = 0;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] = 0;
if (Enumerable.SequenceEqual(bControlData, btReadTempData))
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
}
......@@ -418,23 +422,41 @@ namespace ModbusDemo.MessageFormat
bool[] bControlData = new bool[6];
bool[] btReadTempData;
byte ChannelNumber = 0;
byte byOperatinChannelNUmber = 0;
if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C)
{
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bControlData, liModuualControl[i].sbModbusID, 16, 6);
ChannelNumber= 6;
ChannelNumber = 6;
}
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C)
{
ChannelNumber = 8;
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bControlData, liModuualControl[i].sbModbusID, 16, 8);
}
for (sbyte k = 0; k < ChannelNumber; k++)
{
if (liModuualControl[i].bControlBit[k] == true)
{
byOperatinChannelNUmber++;
}
}
for (sbyte j = 0; j < ChannelNumber; j++)
{
if (byOperatinChannelNUmber == 3)
{
if (liModuualControl[i].bControlBit[j] == true && j != 2)
{
bControlData[j] = !liModuualControl[i].bControlData[j];
}
}
else
{
if (liModuualControl[i].bControlBit[j] == true)
{
bControlData[j] = !liModuualControl[i].bControlData[j];
}
}
}
ModbusErrorCode |= ModbusComm.Modbus_WriteMultipleCoils(liModuualControl[i].sbModbusID, 16, bControlData);
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out btReadTempData, liModuualControl[i].sbModbusID, 16, ChannelNumber);
if (ModbusErrorCode != ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
......@@ -451,9 +473,9 @@ namespace ModbusDemo.MessageFormat
}
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C)
{
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] += usDefineControlTimes;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] += usDefineControlTimes;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
}
}
......@@ -473,10 +495,10 @@ namespace ModbusDemo.MessageFormat
}
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C)
{
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] = 0;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] = 0;
if (Enumerable.SequenceEqual(bControlData, btReadTempData))
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
}
......@@ -486,52 +508,95 @@ namespace ModbusDemo.MessageFormat
}
}
}
}
Thread.Sleep(100);
}
}
public static modual.eModualType eModdusId_Find_ModualType(string sModbusID)
{
for (int i = 0; i < cControlMap.chMap.Count; i++)
for (int i = 0; i < ModualPoll.byX66cNumber; i++)
{
if (sModbusID == cControlMap.chMap[i].srcId)
if (byte.Parse(sModbusID) == ModualPoll.cx66c.byModbusID[i])
{
if(cControlMap.chMap[i].srcType == "WTDR14P")
return modual.eModualType.WTDR14P;
else if(cControlMap.chMap[i].srcType == "WTDR18X")
return modual.eModualType.WTDR18X;
else if(cControlMap.chMap[i].srcType == "WTDR78C")
return modual.eModualType.WTDR78C;
else if(cControlMap.chMap[i].srcType == "WTDR66C")
return modual.eModualType.WTDR66C;
}
}
for (int i = 0; i < ModualPoll.byX18xNumber; i++)
{
if (byte.Parse(sModbusID) == ModualPoll.cx78c.byModbusID[i])
{
return modual.eModualType.WTDR78C;
}
}
//if(cControlMap.chMap[i].srcType == "WTDR14P")
// return modual.eModualType.WTDR14P;
//else if(cControlMap.chMap[i].srcType == "WTDR18X")
// return modual.eModualType.WTDR18X;
//else if(cControlMap.chMap[i].srcType == "WTDR78C")
// return modual.eModualType.WTDR78C;
//else if(cControlMap.chMap[i].srcType == "WTDR66C")
// return modual.eModualType.WTDR66C;
return modual.eModualType.IDLE;
}
private static void vFindChannelMap(string stContrID, string stChannelName, bool bControlValue,ref ModualCntrol cModualCntrol)
{
bool bHadRef = false;
if (bControlValue == true)
{
cModualCntrol.bOpenMachine = true;
}
for (int i = 0; i < cControlMap.chMap.Count; i++)
{
if (cControlMap.chMap[i].srcId == stContrID)
{
bHadRef = true;
if (cControlMap.chMap[i].srcCh == stChannelName && cControlMap.chMap[i].dstCh.Count != 0)
{
if (cControlMap.chMap[i].opType == "durOp")
{
cModualCntrol.usDurationTime = 1;
cModualCntrol.ulStartTime = 0xFF;
}
for (int j = 0; j < cControlMap.chMap[i].dstCh.Count; j++)
{
for (int k = 0; k < 8; k++)
{
string str = "d" + k.ToString();
if (cControlMap.chMap[i].dstCh[j] == str)
{
if (cControlMap.chMap[i].dstCh.Count == 3)
{
if (j == 0)
{
cModualCntrol.bControlData[k] = bControlValue;
}
else if (j == 1)
{
cModualCntrol.bControlData[k] = true;
}
else if (j == 2)
{
cModualCntrol.bControlData[k] = !bControlValue;
}
else
{
cModualCntrol.bControlData[k] = bControlValue;
}
}
else if (cControlMap.chMap[i].dstCh.Count == 2)
{
cModualCntrol.bControlData[k] = bControlValue;
}
cModualCntrol.bControlBit[k] = true;
cModualCntrol.xModualRespControl[k].byResModualID = byte.Parse(cControlMap.chMap[i].resId);
cModualCntrol.xModualRespControl[k].eModualType = eModdusId_Find_ModualType(cControlMap.chMap[i].resId);
cModualCntrol.xModualRespControl[k].stResChannel = cControlMap.chMap[i].resCh;
}
}
}
cModualCntrol.xModualRespControl.byResModualID = byte.Parse(cControlMap.chMap[i].resId);
cModualCntrol.xModualRespControl.eModualType = eModdusId_Find_ModualType(cControlMap.chMap[i].resId);
cModualCntrol.xModualRespControl.stResChannel = cControlMap.chMap[i].resCh;
}
else
{
......@@ -547,38 +612,41 @@ namespace ModbusDemo.MessageFormat
}
}
}
if (bHadRef == false)
{
for (int k = 0; k < 8; k++)
{
string str = "d" + k.ToString();
if (stChannelName == str)
{
cModualCntrol.bControlData[k] = bControlValue;
cModualCntrol.bControlBit[k] = true;
}
}
}
}
//public static ModbusComm.eModbusErrorCode eOperation_Machine(modual.eModualType eModualType, byte bMoualID, bool[] bControldata,bool[] bControlBit, out bool bControlStatus,ModualRespControl sModualRespControl)
//public static ModbusComm.eModbusErrorCode eOperation_Machine(ModualCntrol cModualCntrol, out bool bControlStatus, ModualRespControl sModualRespControl)
//{
// ushort[] usRegData,usRegType;
// ModbusComm.eModbusErrorCode ModbusErrorCode = ModbusComm.eModbusErrorCode.MB_EMASTERNOERR;
// if (sModualRespControl.eModualType == modual.eModualType.WTDR78C)
// {
// double[] dConvertData = new double[8];
// string[] strDoubleString;
// _418X c18xformulasormual = new _418X();
// if ((ModbusErrorCode |= ModbusComm.Modbus_WriteMultipleCoils(bMoualID, 16, bControldata)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
// {
// for (int i = 0; i < 8; i++)
// {
// ModualPoll.cx18x.sX18xAlarmstruct
// }
// }
// ModbusErrorCode |= ModbusComm.Modbus_ReadHoldingRegistersTask(out usRegData, bMoualID, 0, 8);
// ModbusErrorCode |= ModbusComm.Modbus_ReadHoldingRegistersTask(out usRegType, bMoualID, 10,8);
// strDoubleString = c18xformulasormual.Value(usRegData, usRegType);
// for (int i = 0; i < 8; i++)
// {
// dConvertData[i] = double.Parse(strDoubleString[i]);
// }
// }
//}
//}
public static void vDelete_Same_Control(ModualCntrol cModualCntrol)
{
for (sbyte i = 0; i < liModuualControl.Count; i++)
{
if (liModuualControl[i].sbModbusID == cModualCntrol.sbModbusID)
{
if (Enumerable.SequenceEqual(liModuualControl[i].bControlBit, cModualCntrol.bControlBit))
{
liModuualControl.Remove(liModuualControl[i]);
}
}
}
}
public static void vPoolLevelParse(string stConfigString, out string stResponseStrign)
{
pcCfgRoot cCfgRoot = new pcCfgRoot();
......@@ -589,23 +657,24 @@ namespace ModbusDemo.MessageFormat
jsonObj = JObject.Parse(stConfigString);
for (int i = 0; i < cCfgRoot.ss.Count; i++)
{
string strChannelString = "d" + i.ToString();
pcLiquidLevelConfig cLiquidLevelConfig = new pcLiquidLevelConfig
{
byModbusID = byte.Parse(cCfgRoot.ss[i].addr),
dUpLevel = double.Parse(cCfgRoot.ss[i].cfg.upper),
dDownLevel = double.Parse(cCfgRoot.ss[i].cfg.down)
};
if (jsonObj["ss"][i]["cfg"][strChannelString] != null)
string strChannelString = "d" + i.ToString();
for (int j = 0; j < 8; j++)
{
if (jsonObj["ss"][i]["cfg"].Value<string>("name") == strChannelString)
{
cLiquidLevelConfig.stChannelNumber = strChannelString;
jsonObj["ss"][i]["cfg"][strChannelString] = 1;
break;
}
else
{
jsonObj["ss"][i]["cfg"][strChannelString] = 0;
continue;
}
if (jsonObj["ss"][i]["cfg"]["ts"] != null)
{
jsonObj["ss"][i]["cfg"]["ts"] = Form1.GetTimeStamp();
......
......@@ -17,8 +17,8 @@ namespace ModbusDemo.Modular
{
#if DEBUG_TEST
public const byte byX14pNumber = 1;
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 }};
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};
......@@ -35,8 +35,8 @@ namespace ModbusDemo.Modular
public static _414P c14formulasormual = new _414P();
#if DEBUG_TEST
public const byte byX18xNumber = 1;
public static byte[] byX18xIdlist = {13};
private static modual.eX18xSensorChannelType[,] sX18xChannelType = new modual.eX18xSensorChannelType[byX18xNumber, byX18xReadDataNumber] { { 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 }};
public static byte[] byX18xIdlist = { 13 };
private static modual.eX18xSensorChannelType[,] sX18xChannelType = new modual.eX18xSensorChannelType[byX18xNumber, byX18xReadDataNumber] { { 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 } };
#else
public const byte byX18xNumber = 6;
public static byte[] byX18xIdlist = {3,53,6,12,21,25};
......@@ -59,7 +59,7 @@ namespace ModbusDemo.Modular
#if DEBUG_TEST
public const byte byX78cNumber = 1;
public static byte[] byX78cIdlist = {20};
public static byte[] byX78cIdlist = { 20 };
#else
public const byte byX78cNumber = 0;
public static byte[] byX78cIdlist = {11,20,33,34,55,56};
......@@ -72,7 +72,7 @@ namespace ModbusDemo.Modular
#if DEBUG_TEST
public const byte byX66cNumber = 5;
public static byte[] byX66cIdlist = {16,31,35,39,90};
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};
......@@ -126,7 +126,7 @@ namespace ModbusDemo.Modular
{
cx14P.sX14pDataStruct[i].dNowConvertData[j] = 0;
}
if (cx14P.sX14PAlarmStruct[i].bDataNotFirstIncreaseOrDecrease == true && sX14pChannelType[i,j] != modual.eX14pSensorChannelType.Null)
if (cx14P.sX14PAlarmStruct[i].bDataNotFirstIncreaseOrDecrease == true && sX14pChannelType[i, j] != modual.eX14pSensorChannelType.Null)
{
if (cx14P.sX14pDataStruct[i].dNowConvertData[j] - cx14P.sX14pDataStruct[i].dBeforeConvertData[j] >= us14pMaxJumTemper || cx14P.sX14pDataStruct[i].dBeforeConvertData[j] - cx14P.sX14pDataStruct[i].dNowConvertData[j] >= us14pMaxJumTemper)
{
......@@ -173,7 +173,7 @@ namespace ModbusDemo.Modular
cx18x.sX18xAlarmstruct[i].usCommFailTimes[j] = 0;
}
}
for (byte j = 0; j < byX18xReadTypeNumber ; j++)
for (byte j = 0; j < byX18xReadTypeNumber; j++)
{
if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
......@@ -205,7 +205,7 @@ namespace ModbusDemo.Modular
{
cx18x.sX18xDataStruct[i].dNowConvertData[j] = 0;
}
if (cx18x.sX18xAlarmstruct[i].bDataNotFirstIncreaseOrDecrease == true && sX18xChannelType[i,j] != modual.eX18xSensorChannelType.Null)
if (cx18x.sX18xAlarmstruct[i].bDataNotFirstIncreaseOrDecrease == true && sX18xChannelType[i, j] != modual.eX18xSensorChannelType.Null)
{
if (cx18x.sX18xDataStruct[i].dNowConvertData[j] - cx18x.sX18xDataStruct[i].dBeforeConvertData[j] >= dX18xMaxJumpData || cx18x.sX18xDataStruct[i].dBeforeConvertData[j] - cx18x.sX18xDataStruct[i].dNowConvertData[j] >= dX18xMaxJumpData)
{
......@@ -238,7 +238,7 @@ namespace ModbusDemo.Modular
for (sbyte j = 0; j < byX78cInputRegNumber + byX78cOutputRegNumber; j++)
{
cx78c.sX78cAlarmStruct[i].usNowAlarmCode[j] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
cx78c.sX78cAlarmStruct[i].usCommFailTimes[j] ++;
cx78c.sX78cAlarmStruct[i].usCommFailTimes[j]++;
}
}
else
......@@ -260,7 +260,7 @@ namespace ModbusDemo.Modular
for (sbyte j = 0; j < byX66cRelayRegNumber; j++)
{
cx66c.sX66cAlarmStruct[i].usNowAlarmCode[j] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
cx66c.sX66cAlarmStruct[i].usCommFailTimes[j] ++;
cx66c.sX66cAlarmStruct[i].usCommFailTimes[j]++;
}
}
else
......@@ -293,10 +293,10 @@ namespace ModbusDemo.Modular
{
string stIdString = cx78c.byModbusID[i].ToString();
_478C cBoolConvertInt = new _478C();
int[] InputConvert,OutPutConver;
int[] InputConvert, OutPutConver;
InputConvert = cBoolConvertInt.IO(cx78c.sX78cRegStatusStruct[i].bInputRegStatus);
OutPutConver = cBoolConvertInt.IO(cx78c.sX78cRegStatusStruct[i].bOutPutRegStatus);
WTDR78C OneNodeJsonPackage = new WTDR78C(stIdString, InputConvert[0], InputConvert[1],InputConvert[2], InputConvert[3], InputConvert[4], InputConvert[5],InputConvert[6], InputConvert[7], OutPutConver[0], OutPutConver[1], OutPutConver[2], OutPutConver[3], OutPutConver[4], OutPutConver[5], OutPutConver[6], OutPutConver[7],Form1.GetTimeStamp());
WTDR78C OneNodeJsonPackage = new WTDR78C(stIdString, InputConvert[0], InputConvert[1], InputConvert[2], InputConvert[3], InputConvert[4], InputConvert[5], InputConvert[6], InputConvert[7], OutPutConver[0], OutPutConver[1], OutPutConver[2], OutPutConver[3], OutPutConver[4], OutPutConver[5], OutPutConver[6], OutPutConver[7], Form1.GetTimeStamp());
stPollString += JsonConvert.SerializeObject(OneNodeJsonPackage) + ",";
}
......@@ -307,7 +307,7 @@ namespace ModbusDemo.Modular
int[] sRelayConvert;
sRelayConvert = cBoolConvertInt.IO(cx66c.sX66cRegStatusStruct[i].bRegRelayStatus);
WTDR66C OneNodeJsonPackage = new WTDR66C(stIdString, sRelayConvert[0], sRelayConvert[1], sRelayConvert[2], sRelayConvert[3], sRelayConvert[4], sRelayConvert[5], Form1.GetTimeStamp());
if (i >= byX66cNumber -1)
if (i >= byX66cNumber - 1)
{
stPollString += JsonConvert.SerializeObject(OneNodeJsonPackage) + "]";
return stPollString;
......@@ -363,7 +363,7 @@ namespace ModbusDemo.Modular
{
bX18xError = true;
bOccurErrorChange = true;
usChannelErrorlist.Add (j);
usChannelErrorlist.Add(j);
usChannelErrorCodeList.Add((ushort)cx18x.sX18xAlarmstruct[i].usNowAlarmCode[j]);
}
cx18x.sX18xAlarmstruct[i].usBeforeAlarmCode[j] = cx18x.sX18xAlarmstruct[i].usNowAlarmCode[j];
......@@ -437,5 +437,224 @@ namespace ModbusDemo.Modular
await ModualAlarm.vPublishAlarmPackageJson(mqttClient);
}
}
public static ArrayList arryGet_channel_Value(byte byModbusID, out bool bGetStatus, params string[] strChannelList)
{
ModbusComm.eModbusErrorCode ModbusErrorCode = ModbusComm.eModbusErrorCode.MB_EMASTERNOERR;
bGetStatus = true;
ArrayList arrayList = new ArrayList();
ushort[] usRegValue, usRegType;
string[] strCalculData;
for (int i = 0; i < strChannelList.Count(); i++)
{
arrayList.Add(0);
}
for (int i = 0; i < ModualPoll.byX18xNumber; i++)
{
if (byModbusID == ModualPoll.cx18x.byModbusID[i])
{
if ((ModbusErrorCode |= ModbusComm.Modbus_ReadHoldingRegistersTask(out usRegValue, byModbusID, byX18xReadDataStartAddress, byX18xReadDataNumber)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, false, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bGetStatus = false;
}
if ((ModbusErrorCode |= ModbusComm.Modbus_ReadHoldingRegistersTask(out usRegType, byModbusID, byX18xReadTypeStartAddress, byX18xReadTypeNumber)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, false, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bGetStatus = false;
}
strCalculData = c18xformulasormual.Value(usRegValue, usRegType);
for (int j = 0; j < strChannelList.Count(); j++)
{
for (int k = 0; k < 8; k++)
{
string str = "d" + k.ToString();
if (str == strChannelList[j])
{
switch (cx18x.beChannelType[i, j])
{
case modual.eX18xSensorChannelType.Weiertai:
arrayList.Add(8 - ((double.Parse(strCalculData[k]) - 4) / 16 * 8));
break;
case modual.eX18xSensorChannelType.Mike_5:
arrayList.Add(5 - ((double.Parse(strCalculData[k]) - 4) / 16 * 5));
break;
case modual.eX18xSensorChannelType.Mike_6:
arrayList.Add(6 - ((double.Parse(strCalculData[k]) - 4) / 16 * 6));
break;
case modual.eX18xSensorChannelType.Mike_7:
arrayList.Add(7 - ((double.Parse(strCalculData[k]) - 4) / 16 * 7));
break;
case modual.eX18xSensorChannelType.NormalCurrent:
arrayList.Add(double.Parse(strCalculData[k]));
break;
case modual.eX18xSensorChannelType.Null:
arrayList.Add(0);
break;
default:
break;
}
}
}
}
}
}
for (int i = 0; i < ModualPoll.byX14pNumber; i++)
{
if (byModbusID == ModualPoll.cx14P.byModbusID[i])
{
if ((ModbusErrorCode |= ModbusComm.Modbus_ReadHoldingRegistersTask(out usRegValue, byModbusID, byX14pReadDataStartAddress, byX14pReadDataNumber)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, false, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bGetStatus = false;
}
if ((ModbusErrorCode |= ModbusComm.Modbus_ReadHoldingRegistersTask(out usRegType, byModbusID, byX14pReadTypeStartAddress, byX14pReadTypeNumber)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, false, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bGetStatus = false;
}
strCalculData = c14formulasormual.RtdValue(usRegValue, usRegType);
for (int j = 0; j < strChannelList.Count(); j++)
{
for (int k = 0; k < 8; k++)
{
string str = "d" + k.ToString();
if (str == strChannelList[j])
{
arrayList.Add(double.Parse(strCalculData[k]));
}
}
}
}
}
for (int i = 0; i < ModualPoll.byX78cNumber; i++)
{
bool[] bInputData, bOutPutData;
if (byModbusID == ModualPoll.cx78c.byModbusID[i])
{
if ((ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bInputData, byModbusID, byX78cInputRegStartAddress, byX78cInputRegNumber)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, false, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bGetStatus = false;
}
if ((ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bOutPutData, byModbusID, byX78cOutputRegStartAddress, byX78cOutputRegNumber)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, false, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bGetStatus = false;
}
for (int j = 0; j < strChannelList.Count(); j++)
{
for (int k = 0; k < 8; k++)
{
string str = "d" + k.ToString();
if (str == strChannelList[j])
{
arrayList.Add(bInputData[j]);
}
}
for (int k = 8; k < 16; k++)
{
string str = "d" + k.ToString();
if (str == strChannelList[j])
{
arrayList.Add(bOutPutData[j]);
}
}
}
}
}
for (int i = 0; i < ModualPoll.byX66cNumber; i++)
{
if (byModbusID == ModualPoll.cx66c.byModbusID[i])
{
bool[] bRelayValue;
if ((ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bRelayValue, byModbusID, byX66cRelayRegStartAddress, byX66cRelayRegNumber)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, false, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bGetStatus = false;
}
for (int j = 0; j < strChannelList.Count(); j++)
{
for (int k = 0; k < 8; k++)
{
string str = "d" + k.ToString();
if (str == strChannelList[j])
{
arrayList.Add(bRelayValue[j]);
}
}
}
}
}
return arrayList;
}
public static void vSet_All_Channel_Value(byte byModbusID, bool[] bControlData,out bool bControlStatus)
{
bControlStatus = true;
for (int i = 0; i < ModualPoll.byX14pNumber; i++)
{
if (byModbusID == ModualPoll.cx14P.byModbusID[i])
{
if ((ModbusComm.Modbus_WriteMultipleCoils(byModbusID, byX66cRelayRegStartAddress, bControlData)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, false, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bControlStatus = false;
}
}
}
for (int i = 0; i < ModualPoll.byX78cNumber; i++)
{
if (byModbusID == ModualPoll.cx78c.byModbusID[i])
{
if ((ModbusComm.Modbus_WriteMultipleCoils(byModbusID, byX78cOutputRegStartAddress, bControlData)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, false, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
}
else
{
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModbusComm.eModbusErrorCode.MB_EMASTERNOERR, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bControlStatus = false;
}
}
}
}
}
}
......@@ -152,7 +152,7 @@ namespace ModbusDemo
var message = new MqttApplicationMessageBuilder()
.WithTopic(mqttBackTopic)
.WithPayload(mqttData_Back)
.WithAtMostOnceQoS()
.WithAtLeastOnceQoS()
.WithRetainFlag(false)
.Build();
await mqttClient.PublishAsync(message);
......@@ -168,7 +168,6 @@ namespace ModbusDemo
.WithRetainFlag(false)
.Build();
await mqttClient.PublishAsync(message);
totxt.Log("我在247,执行了Back");
}
private async Task Subscribe()
{
......@@ -383,7 +382,7 @@ namespace ModbusDemo
private void Sendout()
{
Control.CheckForIllegalCrossThreadCalls = false;
MQTTTimer.Interval = 60000;//120500
MQTTTimer.Interval = 20000;//120500
MQTTTimer.Enabled = true;
MQTTTimer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
MQTTTimer.Start();
......
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