Commit 5635bdf7 authored by shaxuezheng's avatar shaxuezheng

Updata cotrol logic

parents beb1f654 83d8d9d1
...@@ -7,6 +7,7 @@ using System.Collections; ...@@ -7,6 +7,7 @@ using System.Collections;
using MQTTnet; using MQTTnet;
using MQTTnet.Client; using MQTTnet.Client;
using Newtonsoft.Json; using Newtonsoft.Json;
using ModbusDemo.Modular;
namespace ModbusDemo.Common namespace ModbusDemo.Common
{ {
public static class ModualAlarm public static class ModualAlarm
...@@ -55,5 +56,137 @@ namespace ModbusDemo.Common ...@@ -55,5 +56,137 @@ namespace ModbusDemo.Common
.Build(); .Build();
await mqttClient.PublishAsync(message); await mqttClient.PublishAsync(message);
} }
public static void vSet_Modual_Alarm(byte byModbusID,ushort usAlarmCodde,bool bSetAlarm,byte byCommFailTimes,params string[] strChannalList)
{
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; ...@@ -12,7 +12,6 @@ using ModbusDemo;
using ModbusDemo.Modular; using ModbusDemo.Modular;
using ModbusDemo.Common; using ModbusDemo.Common;
using System.Threading; using System.Threading;
using System.Threading.Tasks;
namespace ModbusDemo.MessageFormat namespace ModbusDemo.MessageFormat
{ {
public class ModualControl public class ModualControl
...@@ -54,6 +53,7 @@ namespace ModbusDemo.MessageFormat ...@@ -54,6 +53,7 @@ namespace ModbusDemo.MessageFormat
public byte d5 { get; set; } public byte d5 { get; set; }
public byte d6 { get; set; } public byte d6 { get; set; }
public byte d7 { get; set; } public byte d7 { get; set; }
public string name {get; set; }
public string down { get; set; } public string down { get; set; }
public string upper { get; set; } public string upper { get; set; }
public UInt64 ts { get; set; } public UInt64 ts { get; set; }
...@@ -76,6 +76,7 @@ namespace ModbusDemo.MessageFormat ...@@ -76,6 +76,7 @@ namespace ModbusDemo.MessageFormat
public string srcId { get; set; } public string srcId { get; set; }
public string srcType { get; set; } public string srcType { get; set; }
public string srcCh { get; set; } public string srcCh { get; set; }
public string opType {get; set; }
public string resId { get; set; } public string resId { get; set; }
public string resType { get; set; } public string resType { get; set; }
public string resCh { get; set; } public string resCh { get; set; }
...@@ -103,7 +104,8 @@ namespace ModbusDemo.MessageFormat ...@@ -103,7 +104,8 @@ namespace ModbusDemo.MessageFormat
public UInt64 ulStartTime; public UInt64 ulStartTime;
public bool[] bControlBit = new bool[8]; public bool[] bControlBit = new bool[8];
public modual.eModualType eModualType; public modual.eModualType eModualType;
public ModualRespControl[] xModualRespControl = new ModualRespControl[8]; public bool bOpenMachine;
public ModualRespControl xModualRespControl;
} }
public class pcLiquidLevelConfig public class pcLiquidLevelConfig
...@@ -117,30 +119,25 @@ namespace ModbusDemo.MessageFormat ...@@ -117,30 +119,25 @@ namespace ModbusDemo.MessageFormat
public static List<ModualCntrol> liModuualControl = new List<ModualCntrol>(); public static List<ModualCntrol> liModuualControl = new List<ModualCntrol>();
public const ushort usDefineControlTimes = 1; public const ushort usDefineControlTimes = 1;
private static pcControlMap cControlMap = new pcControlMap(); private static pcControlMap cControlMap = new pcControlMap();
private static object obLock = new object();
#if DEBUG_TEST #if DEBUG_TEST
public const string strMapCfg = "{chMap:[{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\",\"d2\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," + public const string strMapCfg = "{chMap:[" +
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," + "{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d1\", \"dstCh\":[\"d1\",\"d2\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"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\":\"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\":\"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\":\"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\":\"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\":\"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\":\"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\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"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\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"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\":\"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 #endif
public static void vGetaWay_Receive_Control(string sDataString, out string stResponseData) public static void vGetaWay_Receive_Control(string sDataString, out string stResponseData)
...@@ -164,7 +161,7 @@ namespace ModbusDemo.MessageFormat ...@@ -164,7 +161,7 @@ namespace ModbusDemo.MessageFormat
ModualCntrol cModualCntrol = new ModualCntrol ModualCntrol cModualCntrol = new ModualCntrol
{ {
sbModbusID = byte.Parse(cControl.ss[i].addr), 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 ulStartTime = cControl.ss[i].op.startTime
}; };
cModualCntrol.eModualType = eModdusId_Find_ModualType(cControl.ss[i].addr); cModualCntrol.eModualType = eModdusId_Find_ModualType(cControl.ss[i].addr);
...@@ -240,6 +237,7 @@ namespace ModbusDemo.MessageFormat ...@@ -240,6 +237,7 @@ namespace ModbusDemo.MessageFormat
{ {
vFindChannelMap(cControl.ss[i].addr, "d7", Convert.ToBoolean(cControl.ss[i].op.d7), ref cModualCntrol); 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()) if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR && cModualCntrol.ulStartTime <= Form1.GetTimeStamp())
{ {
cModualCntrol.bStartControl = true; cModualCntrol.bStartControl = true;
...@@ -259,6 +257,9 @@ namespace ModbusDemo.MessageFormat ...@@ -259,6 +257,9 @@ namespace ModbusDemo.MessageFormat
} }
if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR) if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{ {
lock (obLock)
{
vDelete_Same_Control(cModualCntrol);
if (cModualCntrol.bStartControl == true && cModualCntrol.ulStartTime != 0 && cModualCntrol.bControlStatus == true) if (cModualCntrol.bStartControl == true && cModualCntrol.ulStartTime != 0 && cModualCntrol.bControlStatus == true)
{ {
liModuualControl.Add(cModualCntrol); liModuualControl.Add(cModualCntrol);
...@@ -268,6 +269,7 @@ namespace ModbusDemo.MessageFormat ...@@ -268,6 +269,7 @@ namespace ModbusDemo.MessageFormat
liModuualControl.Add(cModualCntrol); liModuualControl.Add(cModualCntrol);
} }
} }
}
for (int k = 0; k < 8; k++) for (int k = 0; k < 8; k++)
{ {
if (cModualCntrol.bControlBit[k] == true && ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR) if (cModualCntrol.bControlBit[k] == true && ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
...@@ -329,6 +331,8 @@ namespace ModbusDemo.MessageFormat ...@@ -329,6 +331,8 @@ namespace ModbusDemo.MessageFormat
{ {
cControlMap = JsonConvert.DeserializeObject<pcControlMap>(strMapCfg); cControlMap = JsonConvert.DeserializeObject<pcControlMap>(strMapCfg);
while (true) while (true)
{
lock (obLock)
{ {
for (sbyte i = 0; i < liModuualControl.Count; i++) for (sbyte i = 0; i < liModuualControl.Count; i++)
{ {
...@@ -377,9 +381,9 @@ namespace ModbusDemo.MessageFormat ...@@ -377,9 +381,9 @@ namespace ModbusDemo.MessageFormat
} }
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C) 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] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] += usDefineControlTimes; 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.ChannelControlError;
} }
} }
} }
...@@ -399,10 +403,10 @@ namespace ModbusDemo.MessageFormat ...@@ -399,10 +403,10 @@ namespace ModbusDemo.MessageFormat
} }
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C) 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] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] = 0; ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] = 0;
if (Enumerable.SequenceEqual(bControlData, btReadTempData)) 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 ...@@ -418,23 +422,41 @@ namespace ModbusDemo.MessageFormat
bool[] bControlData = new bool[6]; bool[] bControlData = new bool[6];
bool[] btReadTempData; bool[] btReadTempData;
byte ChannelNumber = 0; byte ChannelNumber = 0;
byte byOperatinChannelNUmber = 0;
if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C) if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C)
{ {
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bControlData, liModuualControl[i].sbModbusID, 16, 6); ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bControlData, liModuualControl[i].sbModbusID, 16, 6);
ChannelNumber= 6; ChannelNumber = 6;
} }
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C) else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C)
{ {
ChannelNumber = 8; ChannelNumber = 8;
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bControlData, liModuualControl[i].sbModbusID, 16, 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++) 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) if (liModuualControl[i].bControlBit[j] == true)
{ {
bControlData[j] = !liModuualControl[i].bControlData[j]; bControlData[j] = !liModuualControl[i].bControlData[j];
} }
} }
}
ModbusErrorCode |= ModbusComm.Modbus_WriteMultipleCoils(liModuualControl[i].sbModbusID, 16, bControlData); ModbusErrorCode |= ModbusComm.Modbus_WriteMultipleCoils(liModuualControl[i].sbModbusID, 16, bControlData);
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out btReadTempData, liModuualControl[i].sbModbusID, 16, ChannelNumber); ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out btReadTempData, liModuualControl[i].sbModbusID, 16, ChannelNumber);
if (ModbusErrorCode != ModbusComm.eModbusErrorCode.MB_EMASTERNOERR) if (ModbusErrorCode != ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
...@@ -451,9 +473,9 @@ namespace ModbusDemo.MessageFormat ...@@ -451,9 +473,9 @@ namespace ModbusDemo.MessageFormat
} }
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C) 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] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] += usDefineControlTimes; 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.ChannelControlError;
} }
} }
} }
...@@ -473,10 +495,10 @@ namespace ModbusDemo.MessageFormat ...@@ -473,10 +495,10 @@ namespace ModbusDemo.MessageFormat
} }
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C) 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] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] = 0; ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] = 0;
if (Enumerable.SequenceEqual(bControlData, btReadTempData)) 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 ...@@ -486,52 +508,95 @@ namespace ModbusDemo.MessageFormat
} }
} }
} }
}
Thread.Sleep(100); Thread.Sleep(100);
} }
} }
public static modual.eModualType eModdusId_Find_ModualType(string sModbusID) 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; 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; return modual.eModualType.IDLE;
} }
private static void vFindChannelMap(string stContrID, string stChannelName, bool bControlValue,ref ModualCntrol cModualCntrol) 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++) for (int i = 0; i < cControlMap.chMap.Count; i++)
{ {
if (cControlMap.chMap[i].srcId == stContrID) if (cControlMap.chMap[i].srcId == stContrID)
{ {
bHadRef = true;
if (cControlMap.chMap[i].srcCh == stChannelName && cControlMap.chMap[i].dstCh.Count != 0) 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 j = 0; j < cControlMap.chMap[i].dstCh.Count; j++)
{ {
for (int k = 0; k < 8; k++) for (int k = 0; k < 8; k++)
{ {
string str = "d" + k.ToString(); string str = "d" + k.ToString();
if (cControlMap.chMap[i].dstCh[j] == str) 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; cModualCntrol.bControlData[k] = bControlValue;
}
}
else if (cControlMap.chMap[i].dstCh.Count == 2)
{
cModualCntrol.bControlData[k] = bControlValue;
}
cModualCntrol.bControlBit[k] = true; 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 else
{ {
...@@ -547,38 +612,41 @@ namespace ModbusDemo.MessageFormat ...@@ -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) public static void vPoolLevelParse(string stConfigString, out string stResponseStrign)
{ {
pcCfgRoot cCfgRoot = new pcCfgRoot(); pcCfgRoot cCfgRoot = new pcCfgRoot();
...@@ -589,23 +657,23 @@ namespace ModbusDemo.MessageFormat ...@@ -589,23 +657,23 @@ namespace ModbusDemo.MessageFormat
jsonObj = JObject.Parse(stConfigString); jsonObj = JObject.Parse(stConfigString);
for (int i = 0; i < cCfgRoot.ss.Count; i++) for (int i = 0; i < cCfgRoot.ss.Count; i++)
{ {
string strChannelString = "d" + i.ToString();
pcLiquidLevelConfig cLiquidLevelConfig = new pcLiquidLevelConfig pcLiquidLevelConfig cLiquidLevelConfig = new pcLiquidLevelConfig
{ {
byModbusID = byte.Parse(cCfgRoot.ss[i].addr), byModbusID = byte.Parse(cCfgRoot.ss[i].addr),
dUpLevel = double.Parse(cCfgRoot.ss[i].cfg.upper), dUpLevel = double.Parse(cCfgRoot.ss[i].cfg.upper),
dDownLevel = double.Parse(cCfgRoot.ss[i].cfg.down) 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; cLiquidLevelConfig.stChannelNumber = strChannelString;
jsonObj["ss"][i]["cfg"][strChannelString] = 1; jsonObj["ss"][i]["cfg"][strChannelString] = 1;
break;
} }
else
{
jsonObj["ss"][i]["cfg"][strChannelString] = 0;
continue;
} }
if (jsonObj["ss"][i]["cfg"]["ts"] != null) if (jsonObj["ss"][i]["cfg"]["ts"] != null)
{ {
jsonObj["ss"][i]["cfg"]["ts"] = Form1.GetTimeStamp(); jsonObj["ss"][i]["cfg"]["ts"] = Form1.GetTimeStamp();
......
...@@ -17,8 +17,8 @@ namespace ModbusDemo.Modular ...@@ -17,8 +17,8 @@ namespace ModbusDemo.Modular
{ {
#if DEBUG_TEST #if DEBUG_TEST
public const byte byX14pNumber = 1; public const byte byX14pNumber = 1;
public static byte[] byX14pIdlist = {27}; public static byte[] byX14pIdlist = { 27 };
private static modual.eX14pSensorChannelType[,] sX14pChannelType = new modual.eX14pSensorChannelType[byX14pNumber, byX14pReadTypeNumber] { { modual.eX14pSensorChannelType.Normal, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null }}; private static modual.eX14pSensorChannelType[,] sX14pChannelType = new modual.eX14pSensorChannelType[byX14pNumber, byX14pReadTypeNumber] { { modual.eX14pSensorChannelType.Normal, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null, modual.eX14pSensorChannelType.Null } };
#else #else
public const byte byX14pNumber = 2; public const byte byX14pNumber = 2;
public static byte[] byX14pIdlist = { 1,17}; public static byte[] byX14pIdlist = { 1,17};
...@@ -35,8 +35,8 @@ namespace ModbusDemo.Modular ...@@ -35,8 +35,8 @@ 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.Mike_6, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.Null, 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.Mike_6, modual.eX18xSensorChannelType.Null, modual.eX18xSensorChannelType.Null, 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;
public static byte[] byX18xIdlist = {3,53,6,12,21,25}; public static byte[] byX18xIdlist = {3,53,6,12,21,25};
...@@ -59,7 +59,7 @@ namespace ModbusDemo.Modular ...@@ -59,7 +59,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};
...@@ -72,7 +72,7 @@ namespace ModbusDemo.Modular ...@@ -72,7 +72,7 @@ namespace ModbusDemo.Modular
#if DEBUG_TEST #if DEBUG_TEST
public const byte byX66cNumber = 5; public const byte byX66cNumber = 5;
public static byte[] byX66cIdlist = {16,31,35,39,90}; public static byte[] byX66cIdlist = { 16, 31, 35, 39, 90 };
#else #else
public const byte byX66cNumber = 32; public const byte byX66cNumber = 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 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 ...@@ -126,7 +126,7 @@ namespace ModbusDemo.Modular
{ {
cx14P.sX14pDataStruct[i].dNowConvertData[j] = 0; 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) 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 ...@@ -173,7 +173,7 @@ namespace ModbusDemo.Modular
cx18x.sX18xAlarmstruct[i].usCommFailTimes[j] = 0; 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) if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{ {
...@@ -205,7 +205,7 @@ namespace ModbusDemo.Modular ...@@ -205,7 +205,7 @@ namespace ModbusDemo.Modular
{ {
cx18x.sX18xDataStruct[i].dNowConvertData[j] = 0; 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) 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 ...@@ -238,7 +238,7 @@ namespace ModbusDemo.Modular
for (sbyte j = 0; j < byX78cInputRegNumber + byX78cOutputRegNumber; j++) for (sbyte j = 0; j < byX78cInputRegNumber + byX78cOutputRegNumber; j++)
{ {
cx78c.sX78cAlarmStruct[i].usNowAlarmCode[j] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError; cx78c.sX78cAlarmStruct[i].usNowAlarmCode[j] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
cx78c.sX78cAlarmStruct[i].usCommFailTimes[j] ++; cx78c.sX78cAlarmStruct[i].usCommFailTimes[j]++;
} }
} }
else else
...@@ -260,7 +260,7 @@ namespace ModbusDemo.Modular ...@@ -260,7 +260,7 @@ namespace ModbusDemo.Modular
for (sbyte j = 0; j < byX66cRelayRegNumber; j++) for (sbyte j = 0; j < byX66cRelayRegNumber; j++)
{ {
cx66c.sX66cAlarmStruct[i].usNowAlarmCode[j] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError; cx66c.sX66cAlarmStruct[i].usNowAlarmCode[j] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
cx66c.sX66cAlarmStruct[i].usCommFailTimes[j] ++; cx66c.sX66cAlarmStruct[i].usCommFailTimes[j]++;
} }
} }
else else
...@@ -293,10 +293,10 @@ namespace ModbusDemo.Modular ...@@ -293,10 +293,10 @@ namespace ModbusDemo.Modular
{ {
string stIdString = cx78c.byModbusID[i].ToString(); string stIdString = cx78c.byModbusID[i].ToString();
_478C cBoolConvertInt = new _478C(); _478C cBoolConvertInt = new _478C();
int[] InputConvert,OutPutConver; int[] InputConvert, OutPutConver;
InputConvert = cBoolConvertInt.IO(cx78c.sX78cRegStatusStruct[i].bInputRegStatus); InputConvert = cBoolConvertInt.IO(cx78c.sX78cRegStatusStruct[i].bInputRegStatus);
OutPutConver = cBoolConvertInt.IO(cx78c.sX78cRegStatusStruct[i].bOutPutRegStatus); 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) + ","; stPollString += JsonConvert.SerializeObject(OneNodeJsonPackage) + ",";
} }
...@@ -307,7 +307,7 @@ namespace ModbusDemo.Modular ...@@ -307,7 +307,7 @@ namespace ModbusDemo.Modular
int[] sRelayConvert; int[] sRelayConvert;
sRelayConvert = cBoolConvertInt.IO(cx66c.sX66cRegStatusStruct[i].bRegRelayStatus); 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()); 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) + "]"; stPollString += JsonConvert.SerializeObject(OneNodeJsonPackage) + "]";
return stPollString; return stPollString;
...@@ -363,7 +363,7 @@ namespace ModbusDemo.Modular ...@@ -363,7 +363,7 @@ namespace ModbusDemo.Modular
{ {
bX18xError = true; bX18xError = true;
bOccurErrorChange = true; bOccurErrorChange = true;
usChannelErrorlist.Add (j); usChannelErrorlist.Add(j);
usChannelErrorCodeList.Add((ushort)cx18x.sX18xAlarmstruct[i].usNowAlarmCode[j]); usChannelErrorCodeList.Add((ushort)cx18x.sX18xAlarmstruct[i].usNowAlarmCode[j]);
} }
cx18x.sX18xAlarmstruct[i].usBeforeAlarmCode[j] = cx18x.sX18xAlarmstruct[i].usNowAlarmCode[j]; cx18x.sX18xAlarmstruct[i].usBeforeAlarmCode[j] = cx18x.sX18xAlarmstruct[i].usNowAlarmCode[j];
...@@ -437,5 +437,224 @@ namespace ModbusDemo.Modular ...@@ -437,5 +437,224 @@ namespace ModbusDemo.Modular
await ModualAlarm.vPublishAlarmPackageJson(mqttClient); 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;
}
}
}
}
} }
} }
...@@ -155,7 +155,7 @@ namespace ModbusDemo ...@@ -155,7 +155,7 @@ namespace ModbusDemo
var message = new MqttApplicationMessageBuilder() var message = new MqttApplicationMessageBuilder()
.WithTopic(mqttBackTopic) .WithTopic(mqttBackTopic)
.WithPayload(mqttData_Back) .WithPayload(mqttData_Back)
.WithAtMostOnceQoS() .WithAtLeastOnceQoS()
.WithRetainFlag(false) .WithRetainFlag(false)
.Build(); .Build();
await mqttClient.PublishAsync(message); await mqttClient.PublishAsync(message);
...@@ -171,7 +171,6 @@ namespace ModbusDemo ...@@ -171,7 +171,6 @@ namespace ModbusDemo
.WithRetainFlag(false) .WithRetainFlag(false)
.Build(); .Build();
await mqttClient.PublishAsync(message); await mqttClient.PublishAsync(message);
totxt.Log("我在247,执行了Back");
} }
private async Task Subscribe() private async Task Subscribe()
{ {
...@@ -471,7 +470,7 @@ namespace ModbusDemo ...@@ -471,7 +470,7 @@ namespace ModbusDemo
private void Sendout() private void Sendout()
{ {
Control.CheckForIllegalCrossThreadCalls = false; Control.CheckForIllegalCrossThreadCalls = false;
MQTTTimer.Interval = 60000;//120500 MQTTTimer.Interval = 20000;//120500
MQTTTimer.Enabled = true; MQTTTimer.Enabled = true;
MQTTTimer.AutoReset = true;//设置是执行一次(false)还是一直执行(true); MQTTTimer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
MQTTTimer.Start(); MQTTTimer.Start();
...@@ -1070,6 +1069,45 @@ namespace ModbusDemo ...@@ -1070,6 +1069,45 @@ namespace ModbusDemo
private void button2_Click(object sender, EventArgs e) private void button2_Click(object sender, EventArgs e)
{ {
<<<<<<< HEAD
=======
//AutoControl.Control usEcontrol = new AutoControl.Control();
//AutoControl.Control usWcontrol = new AutoControl.Control();
//if (ModualControl.cPoolLevelConfig.Count!=0)
//{
// for (int i = 0; i < ModualControl.cPoolLevelConfig.Count; i++)
// {
// if (ModualControl.cPoolLevelConfig[i].byModbusID == 6)
// {
// usWcontrol.maxLevel = ModualControl.cPoolLevelConfig[i].dUpLevel;
// usWcontrol.minLevel = ModualControl.cPoolLevelConfig[i].dDownLevel;
// usWcontrol.Name = "西·中转池";
// usWcontrol.Enablation = true;
// AutoControl.CriticalValueMonitoring(true, ModualControl.cPoolLevelConfig[1].dUpLevel,
// ModualControl.cPoolLevelConfig[0].dDownLevel, ModualPoll.cx18x.sX18xDataStruct[1].dNowConvertData[1],
// "西·中转池",
// out usWcontrol
// );
// }
// if (ModualControl.cPoolLevelConfig[i].byModbusID == 3)
// {
// usEcontrol.maxLevel = ModualControl.cPoolLevelConfig[i].dUpLevel;
// usEcontrol.minLevel = ModualControl.cPoolLevelConfig[i].dDownLevel;
// usEcontrol.Name = "东·中转池";
// usEcontrol.Enablation = true;
// AutoControl.CriticalValueMonitoring(true, ModualControl.cPoolLevelConfig[0].dUpLevel,
// ModualControl.cPoolLevelConfig[0].dDownLevel, ModualPoll.cx18x.sX18xDataStruct[0].dNowConvertData[0],
// "东·中转池",
// out usEcontrol
// );
// }
// }
//}
>>>>>>> 83d8d9d1b2182210455375f355bb9f6860d45dc2
} }
......
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