Commit e3cca5ae authored by shaxuezheng's avatar shaxuezheng

自控合并代码

parents 95c66a1b f07825d9
......@@ -35,7 +35,7 @@ namespace ModbusDemo.Common
string sAlarm = "alm";
foreach (ushort usdata in usChannelAlarmcode)
{
hMqtttAlarmMap.Add(sAlarm + i, usChannelAlarmcode[i]);
hMqtttAlarmMap.Add(sAlarm + usChannel[i], usChannelAlarmcode[i]);
i++;
}
hMqtttAlarmMap.Add("ts", Form1.GetTimeStamp());
......@@ -65,10 +65,10 @@ namespace ModbusDemo.Common
{
for (int j = 0; j < strChannalList.Count(); j++)
{
for (int k = 0; k < 8; k++)
for (int k = 0; k < ModualPoll.byX18xReadDataNumber; k++)
{
string strChannel = "d" + i.ToString();
if (strChannalList[k] == strChannel)
string strChannel = "d" + k.ToString();
if (strChannalList[j] == strChannel)
{
if (bSetAlarm == true)
{
......@@ -84,7 +84,7 @@ namespace ModbusDemo.Common
{
ModualPoll.cx14P.sX14PAlarmStruct[i].usCommFailTimes[k] = 0;
}
ModualPoll.cx14P.sX14PAlarmStruct[i].usNowAlarmCode[k] &= usAlarmCodde;
ModualPoll.cx14P.sX14PAlarmStruct[i].usNowAlarmCode[k] &= (ushort)~usAlarmCodde;
}
}
}
......@@ -97,10 +97,10 @@ namespace ModbusDemo.Common
{
for (int j = 0; j < strChannalList.Count(); j++)
{
for (int k = 0; k < 8; k++)
for (int k = 0; k < ModualPoll.byX18xReadDataNumber; k++)
{
string strChannel = "d" + i.ToString();
if (strChannalList[k] == strChannel)
string strChannel = "d" + k.ToString();
if (strChannalList[j] == strChannel)
{
if (bSetAlarm == true)
{
......@@ -116,7 +116,7 @@ namespace ModbusDemo.Common
{
ModualPoll.cx18x.sX18xAlarmstruct[i].usCommFailTimes[k] = 0;
}
ModualPoll.cx18x.sX18xAlarmstruct[i].usNowAlarmCode[k] &= usAlarmCodde;
ModualPoll.cx18x.sX18xAlarmstruct[i].usNowAlarmCode[k] &= (ushort)~usAlarmCodde;
}
}
}
......@@ -129,10 +129,10 @@ namespace ModbusDemo.Common
{
for (int j = 0; j < strChannalList.Count(); j++)
{
for (int k = 0; k < 16; k++)
for (int k = 0; k < ModualPoll.byX78cInputRegNumber + ModualPoll.byX78cOutputRegNumber; k++)
{
string strChannel = "d" + i.ToString();
if (strChannalList[k] == strChannel)
string strChannel = "d" + k.ToString();
if (strChannalList[j] == strChannel)
{
if (bSetAlarm == true)
{
......@@ -148,7 +148,7 @@ namespace ModbusDemo.Common
{
ModualPoll.cx78c.sX78cAlarmStruct[i].usCommFailTimes[k] = 0;
}
ModualPoll.cx78c.sX78cAlarmStruct[i].usNowAlarmCode[k] &= usAlarmCodde;
ModualPoll.cx78c.sX78cAlarmStruct[i].usNowAlarmCode[k] &= (ushort)~usAlarmCodde;
}
}
}
......@@ -163,8 +163,8 @@ namespace ModbusDemo.Common
{
for (int k = 0; k < ModualPoll.byX66cRelayRegNumber; k++)
{
string strChannel = "d" + i.ToString();
if (strChannalList[k] == strChannel)
string strChannel = "d" + k.ToString();
if (strChannalList[j] == strChannel)
{
if (bSetAlarm == true)
{
......@@ -180,7 +180,7 @@ namespace ModbusDemo.Common
{
ModualPoll.cx66c.sX66cAlarmStruct[i].usCommFailTimes[k] = 0;
}
ModualPoll.cx66c.sX66cAlarmStruct[i].usNowAlarmCode[k] &= usAlarmCodde;
ModualPoll.cx66c.sX66cAlarmStruct[i].usNowAlarmCode[k] &= (ushort)~usAlarmCodde;
}
}
}
......
......@@ -28,12 +28,20 @@ namespace ModbusDemo.MessageFormat
MB_EMASTERSENT,
MB_RTUERNOERR
}
<<<<<<< HEAD
public static ModbusMaster Modbus;
public static ushort usCommunFailTimes = 0;
private static object oLock = new object();
public static eModbusErrorCode Modbus_ReadHoldingRegistersTask(out ushort[] OutputValue, byte slaveAddress, ushort startAddress, ushort numberOfPoints)
{
=======
public static ModbusMaster Modbus;
public static ushort usCommunFailTimes = 0;
static object oLock = new object();
public static eModbusErrorCode Modbus_ReadHoldingRegistersTask(out ushort[] OutputValue, byte slaveAddress, ushort startAddress, ushort numberOfPoints)
{
>>>>>>> 5635bdf708c90bb2146f99466d1145dda5dabb37
lock (oLock)
{
eModbusErrorCode ModbusErrorCode;
......@@ -118,7 +126,10 @@ namespace ModbusDemo.MessageFormat
}
public static eModbusErrorCode Modbus_ReadCoilsTask(out bool[] OutputValue, byte slaveAddress, ushort startAddress, ushort numberOfPoints)
{
<<<<<<< HEAD
=======
//object oLock = new object();
>>>>>>> 5635bdf708c90bb2146f99466d1145dda5dabb37
lock (oLock)
{
eModbusErrorCode ModbusErrorCode;
......@@ -203,14 +214,17 @@ namespace ModbusDemo.MessageFormat
}
public static eModbusErrorCode Modbus_WriteSingleCoil(byte slaveAddress, ushort startAddress, bool value)
{
<<<<<<< HEAD
=======
//object oLock = new object();
>>>>>>> 5635bdf708c90bb2146f99466d1145dda5dabb37
lock (oLock)
{
eModbusErrorCode ModbusErrorCode;
try
{
Modbus.WriteSingleCoil(slaveAddress, startAddress, value);
ModbusErrorCode = eModbusErrorCode.MB_ENOERR;
ModbusErrorCode = eModbusErrorCode.MB_EMASTERNOERR;
}
catch (Exception exception)
{
......@@ -286,14 +300,17 @@ namespace ModbusDemo.MessageFormat
}
public static eModbusErrorCode Modbus_WriteMultipleCoils(byte slaveAddress, ushort startAddress, bool[] data)
{
<<<<<<< HEAD
=======
//object oLock = new object();
>>>>>>> 5635bdf708c90bb2146f99466d1145dda5dabb37
lock (oLock)
{
eModbusErrorCode ModbusErrorCode;
try
{
Modbus.WriteMultipleCoils(slaveAddress, startAddress, data);
ModbusErrorCode = eModbusErrorCode.MB_ENOERR;
ModbusErrorCode = eModbusErrorCode.MB_EMASTERNOERR;
}
catch (Exception exception)
{
......
......@@ -12,6 +12,7 @@ using ModbusDemo;
using ModbusDemo.Modular;
using ModbusDemo.Common;
using System.Threading;
using ModbusDemo.application;
namespace ModbusDemo.MessageFormat
{
public class ModualControl
......@@ -106,8 +107,11 @@ namespace ModbusDemo.MessageFormat
public modual.eModualType eModualType;
public bool bOpenMachine;
public ModualRespControl xModualRespControl;
public string[] strOperationChannelName;
}
private const double OPENCURRENT = 2;
private const double CLOSECURRENT = 0;
public class pcLiquidLevelConfig
{
public byte byModbusID;
......@@ -122,7 +126,7 @@ namespace ModbusDemo.MessageFormat
private static object obLock = new object();
#if DEBUG_TEST
public const string strMapCfg = "{chMap:[" +
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d1\", \"dstCh\":[\"d1\",\"d2\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d1\", \"dstCh\":[\"d1\",\"d2\"],\"resId\":\"13\",\"resType\":\"WTDR78C\",\"resCh\":\"d2\"}," +
"{ \"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\"}," +
......@@ -142,7 +146,7 @@ namespace ModbusDemo.MessageFormat
#endif
public static void vGetaWay_Receive_Control(string sDataString, out string stResponseData)
{
byte byModualIndex = 0;
List<string> strOperation = new List<string>();
MqttRoot cControl = new MqttRoot();
var jsonObj = new JObject();
try
......@@ -157,170 +161,77 @@ namespace ModbusDemo.MessageFormat
for (int i = 0; i < cControl.ss.Count; i++)
{
bool[] btReadTempData = new bool[6];
ModbusComm.eModbusErrorCode ModbusErrorCode = ModbusComm.eModbusErrorCode.MB_EMASTERNOERR;
ModualCntrol cModualCntrol = new ModualCntrol
{
sbModbusID = byte.Parse(cControl.ss[i].addr),
usDurationTime = (ushort)(cControl.ss[i].op.duration * 60),
ulStartTime = cControl.ss[i].op.startTime
};
cModualCntrol.eModualType = eModdusId_Find_ModualType(cControl.ss[i].addr);
if (cModualCntrol.eModualType == modual.eModualType.WTDR66C)
cModualCntrol.bControlStatus = ModualPoll.bGet_channel_Value<bool>(cModualCntrol.sbModbusID, out cModualCntrol.bControlData, "d0", "d1", "d1", "d2", "d3", "d4", "d5");
if (jsonObj["ss"][i]["op"] != null)
{
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out cModualCntrol.bControlData, cModualCntrol.sbModbusID, 16, 6);
for (byte j = 0; j < ModualPoll.byX66cNumber; j++)
string str;
for (int j = 0; j < 8; j++)
{
if (cModualCntrol.sbModbusID == ModualPoll.byX66cIdlist[j])
{
byModualIndex = j;
cModualCntrol.sbModualIndex = j;
break;
}
else
str = "d" + j.ToString();
if (jsonObj["ss"][i]["op"][str] != null)
{
byModualIndex = 0xFF;
cModualCntrol.sbModualIndex = 0xFF;
if (Convert.ToBoolean(jsonObj["ss"][i]["op"].Value<int>(str)) == true)
{
cModualCntrol.bOpenMachine = true;
}
else
{
cModualCntrol.bOpenMachine = false;
}
cModualCntrol.bControlBit[j] = true;
strOperation.Add(str);
}
}
}
else if(cModualCntrol.eModualType == modual.eModualType.WTDR78C)
if (jsonObj["ss"][i]["op"]["ts"] != null)
{
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out cModualCntrol.bControlData, cModualCntrol.sbModbusID, 16, 8);
for (byte j = 0; j < ModualPoll.byX66cNumber; j++)
{
if (cModualCntrol.sbModbusID == ModualPoll.byX78cIdlist[j])
{
byModualIndex = j;
cModualCntrol.sbModualIndex = j;
break;
}
else
{
byModualIndex = 0xFF;
cModualCntrol.sbModualIndex = 0xFF;
}
}
jsonObj["ss"][i]["op"]["ts"] = Form1.GetTimeStamp();
}
if (jsonObj["ss"][i]["op"] != null)
if (cModualCntrol.bControlStatus == true && cModualCntrol.ulStartTime <= Form1.GetTimeStamp())
{
if (jsonObj["ss"][i]["op"]["d0"] != null)
{
vFindChannelMap(cControl.ss[i].addr,"d0",Convert.ToBoolean(cControl.ss[i].op.d0),ref cModualCntrol);
}
if (jsonObj["ss"][i]["op"]["d1"] != null)
{
vFindChannelMap(cControl.ss[i].addr,"d1",Convert.ToBoolean(cControl.ss[i].op.d1),ref cModualCntrol);
}
if (jsonObj["ss"][i]["op"]["d2"] != null)
cModualCntrol.bStartControl = true;
cModualCntrol.strOperationChannelName = strOperation.ToArray();
if (ControlMap.bControl_Map(cModualCntrol.bOpenMachine, cModualCntrol.sbModbusID, cModualCntrol.strOperationChannelName[0]))
{
vFindChannelMap(cControl.ss[i].addr,"d2",Convert.ToBoolean(cControl.ss[i].op.d2),ref cModualCntrol);
}
if (jsonObj["ss"][i]["op"]["d3"] != null)
{
vFindChannelMap(cControl.ss[i].addr,"d3",Convert.ToBoolean(cControl.ss[i].op.d3),ref cModualCntrol);
}
if (jsonObj["ss"][i]["op"]["d4"] != null)
{
vFindChannelMap(cControl.ss[i].addr,"d4",Convert.ToBoolean(cControl.ss[i].op.d4),ref cModualCntrol);
}
if (jsonObj["ss"][i]["op"]["d5"] != null)
{
vFindChannelMap(cControl.ss[i].addr, "d5", Convert.ToBoolean(cControl.ss[i].op.d5), ref cModualCntrol);
cModualCntrol.bControlStatus = ControlMap.bDelege_Operation(cModualCntrol.bControlData);
}
if (jsonObj["ss"][i]["op"]["d6"] != null)
{
vFindChannelMap(cControl.ss[i].addr, "d6", Convert.ToBoolean(cControl.ss[i].op.d6), ref cModualCntrol);
}
if (jsonObj["ss"][i]["op"]["d7"] != null)
else
{
vFindChannelMap(cControl.ss[i].addr, "d7", Convert.ToBoolean(cControl.ss[i].op.d7), ref cModualCntrol);
cModualCntrol.bControlStatus = false;
}
if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR && cModualCntrol.ulStartTime <= Form1.GetTimeStamp())
}
if (cModualCntrol.bControlStatus == true)
{
lock (obLock)
{
cModualCntrol.bStartControl = true;
ModbusErrorCode |= ModbusComm.Modbus_WriteMultipleCoils(cModualCntrol.sbModbusID, 16, cModualCntrol.bControlData);
if (cModualCntrol.eModualType == modual.eModualType.WTDR66C)
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out btReadTempData, cModualCntrol.sbModbusID, 16, 6);
else if(cModualCntrol.eModualType == modual.eModualType.WTDR78C)
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out btReadTempData, cModualCntrol.sbModbusID, 16, 8);
if (Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData))
vDelete_Same_Control(cModualCntrol);
if (cModualCntrol.bStartControl == true && cModualCntrol.ulStartTime != 0 && cModualCntrol.bControlStatus == true)
{
cModualCntrol.bControlStatus = true;
liModuualControl.Add(cModualCntrol);
}
}
if (jsonObj["ss"][i]["op"]["ts"] != null)
{
jsonObj["ss"][i]["op"]["ts"] = Form1.GetTimeStamp();
}
if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
lock (obLock)
else if (cModualCntrol.bStartControl == false && cModualCntrol.ulStartTime != 0)
{
vDelete_Same_Control(cModualCntrol);
if (cModualCntrol.bStartControl == true && cModualCntrol.ulStartTime != 0 && cModualCntrol.bControlStatus == true)
{
liModuualControl.Add(cModualCntrol);
}
else if (cModualCntrol.bStartControl == false && cModualCntrol.ulStartTime != 0)
{
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 && cModualCntrol.bStartControl == true)
{
if (cModualCntrol.bControlBit[k] == true && ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
string str = "d"+k.ToString();
jsonObj["ss"][i]["op"][str] = 1;
if (byModualIndex != 0xFF && k < 6)
{
if (cModualCntrol.eModualType == modual.eModualType.WTDR66C)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[k] = 0;
if (cModualCntrol.bStartControl == true && Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
else if(cModualCntrol.eModualType == modual.eModualType.WTDR78C)
{
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usNowAlarmCode[k+8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usCommFailTimes[k+8] = 0;
if (cModualCntrol.bStartControl == true && cModualCntrol.bStartControl == true)
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usNowAlarmCode[k+8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
}
else if (cModualCntrol.bControlBit[k] == true)
{
string str = "d"+k.ToString();
jsonObj["ss"][i]["op"][str] = 0;
if (ModbusErrorCode != ModbusComm.eModbusErrorCode.MB_EMASTERNOERR && byModualIndex != 0xFF)
{
if (cModualCntrol.eModualType == modual.eModualType.WTDR66C)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[k] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
else if (cModualCntrol.eModualType == modual.eModualType.WTDR78C)
{
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usNowAlarmCode[k+8] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usCommFailTimes[k+8] += usDefineControlTimes;
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usNowAlarmCode[k+8] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
}
if (!Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData) && byModualIndex != 0xFF && cModualCntrol.bStartControl == true)
{
if (cModualCntrol.eModualType == modual.eModualType.WTDR66C)
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
else if (cModualCntrol.eModualType == modual.eModualType.WTDR78C)
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usNowAlarmCode[k + 8] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
}
string str = "d" + k.ToString();
jsonObj["ss"][i]["op"][str] = 1;
}
else if (cModualCntrol.bControlBit[k] == true)
{
string str = "d" + k.ToString();
jsonObj["ss"][i]["op"][str] = 0;
}
}
}
......@@ -340,77 +251,12 @@ namespace ModbusDemo.MessageFormat
{
if (liModuualControl[i].ulStartTime <= Form1.GetTimeStamp())
{
ModbusComm.eModbusErrorCode ModbusErrorCode = ModbusComm.eModbusErrorCode.MB_EMASTERNOERR;
liModuualControl[i].bStartControl = true;
bool[] bControlData = new bool[6];
bool[] btReadTempData;
byte ChannelNumber = 0;
if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C)
bool[] bControlData;
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].strOperationChannelName[0]))
{
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bControlData, liModuualControl[i].sbModbusID, 16, 6);
ChannelNumber = 6;
}
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C)
{
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bControlData, liModuualControl[i].sbModbusID, 16, 8);
ChannelNumber = 8;
}
for (sbyte j = 0; j < ChannelNumber; j++)
{
if (liModuualControl[i].bControlBit[j] == true)
{
bControlData[j] = liModuualControl[i].bControlData[j];
}
else
{
liModuualControl[i].bControlData[j] = 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)
{
for (sbyte k = 0; k < ChannelNumber; k++)
{
if (liModuualControl[i].bControlBit[k] == true && liModuualControl[i].sbModualIndex != 0xFF)
{
if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
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;
}
}
}
}
else if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
for (sbyte k = 0; k < ChannelNumber; k++)
{
if (liModuualControl[i].bControlBit[k] == true && liModuualControl[i].sbModualIndex != 0xFF)
{
if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] = 0;
if (Enumerable.SequenceEqual(bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
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;
if (Enumerable.SequenceEqual(bControlData, btReadTempData))
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
}
}
liModuualControl[i].bControlStatus = ControlMap.bDelege_Operation(bControlData);
}
}
}
......@@ -418,90 +264,11 @@ namespace ModbusDemo.MessageFormat
{
if ((liModuualControl[i].usDurationTime + liModuualControl[i].ulStartTime) <= Form1.GetTimeStamp())
{
ModbusComm.eModbusErrorCode ModbusErrorCode = ModbusComm.eModbusErrorCode.MB_EMASTERNOERR;
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;
}
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)
{
for (sbyte k = 0; k < ChannelNumber; k++)
{
if (liModuualControl[i].bControlBit[k] == true && liModuualControl[i].sbModualIndex != 0xFF)
{
if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
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;
}
}
}
}
else if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
bool[] bControlData;
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].strOperationChannelName[0]))
{
for (sbyte k = 0; k < ChannelNumber; k++)
{
if (liModuualControl[i].bControlBit[k] == true && liModuualControl[i].sbModualIndex != 0xFF)
{
if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] = 0;
if (Enumerable.SequenceEqual(bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
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;
if (Enumerable.SequenceEqual(bControlData, btReadTempData))
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k + 8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
}
liModuualControl[i].bControlStatus = ControlMap.bDelege_Operation(bControlData);
}
liModuualControl.Remove(liModuualControl[i]);
break;
......@@ -512,7 +279,6 @@ namespace ModbusDemo.MessageFormat
Thread.Sleep(100);
}
}
public static modual.eModualType eModdusId_Find_ModualType(string sModbusID)
{
for (int i = 0; i < ModualPoll.byX66cNumber; i++)
......@@ -541,99 +307,143 @@ namespace ModbusDemo.MessageFormat
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++)
// {
// 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.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
// {
// for (int k = 0; k < 8; k++)
// {
// string str = "d" + k.ToString();
// if (stChannelName == str)
// {
// cModualCntrol.bControlData[k] = bControlValue;
// cModualCntrol.bControlBit[k] = true;
// }
// }
// }
// }
// }
// 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 bool bOperation_Machine(bool bOpenMachine, byte sbModbusID,bool[] bControlData,bool[] bControlBit, byte byResModualID,string stResChannel)
{
bool bHadRef = false;
if (bControlValue == true)
{
cModualCntrol.bOpenMachine = true;
}
for (int i = 0; i < cControlMap.chMap.Count; i++)
bool bControlStatus = true;
if (ModualPoll.bSet_All_Channel_Value(sbModbusID, bControlData) == true)
{
if (cControlMap.chMap[i].srcId == stContrID)
if (bOpenMachine == true && stResChannel != null)
{
bHadRef = true;
if (cControlMap.chMap[i].srcCh == stChannelName && cControlMap.chMap[i].dstCh.Count != 0)
double[] dConvertData;
bControlStatus = ModualPoll.bGet_channel_Value<double>(byResModualID, out dConvertData, stResChannel);
if (dConvertData[0] > OPENCURRENT && bControlStatus == true)
{
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.byResModualID = byte.Parse(cControlMap.chMap[i].resId);
cModualCntrol.xModualRespControl.eModualType = eModdusId_Find_ModualType(cControlMap.chMap[i].resId);
cModualCntrol.xModualRespControl.stResChannel = cControlMap.chMap[i].resCh;
bControlStatus = true;
}
else
{
for (int k = 0; k < 8; k++)
{
string str = "d" + k.ToString();
if (stChannelName == str)
{
cModualCntrol.bControlData[k] = bControlValue;
cModualCntrol.bControlBit[k] = true;
}
}
bControlStatus = false;
}
}
}
if (bHadRef == false)
{
for (int k = 0; k < 8; k++)
else if (bOpenMachine == false && stResChannel != null)
{
string str = "d" + k.ToString();
if (stChannelName == str)
double[] dConvertData;
bControlStatus = ModualPoll.bGet_channel_Value<double>(byResModualID, out dConvertData, stResChannel);
if (dConvertData[0] < CLOSECURRENT && bControlStatus == true)
{
cModualCntrol.bControlData[k] = bControlValue;
cModualCntrol.bControlBit[k] = true;
bControlStatus = true;
}
else
{
bControlStatus = false;
}
}
else
{
bControlStatus = true;
}
}
else
{
bControlStatus= false;
}
for (int i = 0; i < bControlBit.Count(); i++)
{
string str = "d" + i.ToString();
if (bControlBit[i] == true)
{
if (bControlStatus == true)
ModualAlarm.vSet_Modual_Alarm(sbModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelControlError, false, 1, str);
else
ModualAlarm.vSet_Modual_Alarm(sbModbusID,(ushort)ModualAlarm.eAlarmCode.ChannelControlError, true, 1, str);
}
}
return bControlStatus;
}
//public static ModbusComm.eModbusErrorCode eOperation_Machine(ModualCntrol cModualCntrol, out bool bControlStatus, ModualRespControl sModualRespControl)
//{
//}
public static void vDelete_Same_Control(ModualCntrol cModualCntrol)
{
for (sbyte i = 0; i < liModuualControl.Count; i++)
......
......@@ -2,6 +2,20 @@
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SSDTUnitTestPath Condition="'$(SSDTUnitTestPath)' == ''">$(VsInstallRoot)\Common7\IDE\Extensions\Microsoft\SQLDB</SSDTUnitTestPath>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup>
<SSDTPath Condition="'$(SSDTPath)' == ''">$(VsInstallRoot)\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130</SSDTPath>
......@@ -22,20 +36,6 @@
<FileAlignment>512</FileAlignment>
<IsWebBootstrapper>false</IsWebBootstrapper>
<TargetFrameworkProfile />
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x86</PlatformTarget>
......@@ -78,7 +78,6 @@
<HintPath>..\packages\NModbus4.2.1.0\lib\net40\NModbus4.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
......@@ -90,15 +89,16 @@
</ItemGroup>
<ItemGroup>
<Compile Include="application\AutoControl.cs" />
<Compile Include="application\ControlMap.cs" />
<Compile Include="application\InIHelper.cs" />
<Compile Include="application\PoolModbusSet.cs" />
<Compile Include="application\ModbusToPool.cs" />
<Compile Include="application\Pond.cs" />
<Compile Include="application\ModualPool.cs" />
<Compile Include="application\AllPond.cs" />
<Compile Include="application\UsThread.cs" />
<Compile Include="Common\ModualAlarm.cs" />
<Compile Include="Common\OperIni.cs" />
<Compile Include="MessageFormat\ModbusComm.cs" />
<Compile Include="MessageFormat\ModualControl.cs" />
<Compile Include="MessageFormat\ModbusComm.cs" />
<Compile Include="Modular\414P.cs" />
<Compile Include="Modular\478C.cs" />
<Compile Include="Modular\418X.cs" />
......@@ -171,13 +171,24 @@
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<!-- <SsdtUnitTestVersion>3.1</SsdtUnitTestVersion> -->
<!-- </PropertyGroup> -->
<!-- <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)' == ''" /> -->
<!-- <PropertyGroup> -->
<SsdtUnitTestVersion>3.1</SsdtUnitTestVersion>
</PropertyGroup>
<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)' == ''" />
<<<<<<< HEAD
<<<<<<< HEAD
=======
=======
>>>>>>> 5635bdf708c90bb2146f99466d1145dda5dabb37
<PropertyGroup>
<SsdtUnitTestVersion>3.1</SsdtUnitTestVersion>
</PropertyGroup>
>>>>>>> origin/master
<!-- 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.
<Target Name="BeforeBuild">
......
......@@ -34,9 +34,9 @@ namespace ModbusDemo.Modular
public static modual.pcx14P cx14P = new modual.pcx14P(byX14pIdlist, sX14pChannelType);
public static _414P c14formulasormual = new _414P();
#if DEBUG_TEST
public const byte byX18xNumber = 1;
public const byte byX18xNumber = 1;
public static byte[] byX18xIdlist = { 13 };
private static modual.eX18xSensorChannelType[,] sX18xChannelType = new modual.eX18xSensorChannelType[byX18xNumber, byX18xReadDataNumber] { { modual.eX18xSensorChannelType.NormalCurrent, modual.eX18xSensorChannelType.Mike_6, 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.NormalCurrent, 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};
......@@ -438,66 +438,64 @@ namespace ModbusDemo.Modular
}
}
public static ArrayList arryGet_channel_Value(byte byModbusID, out bool bGetStatus, params string[] strChannelList)
public static bool bGet_channel_Value<T> (byte byModbusID, out T[] ChannnelData, params string[] strChannelList)
{
ModbusComm.eModbusErrorCode ModbusErrorCode = ModbusComm.eModbusErrorCode.MB_EMASTERNOERR;
bGetStatus = true;
ArrayList arrayList = new ArrayList();
bool bGetStatus = true;
List<T> arrayList = new List<T>();
ushort[] usRegValue, usRegType;
string[] strCalculData;
for (int i = 0; i < strChannelList.Count(); i++)
{
arrayList.Add(0);
}
ChannnelData = (T[]) arrayList.ToArray();
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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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++)
for (int k = 0; k < byX18xReadTypeNumber; k++)
{
string str = "d" + k.ToString();
if (str == strChannelList[j])
{
switch (cx18x.beChannelType[i, j])
switch (cx18x.beChannelType[i, k])
{
case modual.eX18xSensorChannelType.Weiertai:
arrayList.Add(8 - ((double.Parse(strCalculData[k]) - 4) / 16 * 8));
arrayList.Add((T)Convert.ChangeType(8 - ((double.Parse(strCalculData[k]) - 4) / 16 * 8), typeof(T)));
break;
case modual.eX18xSensorChannelType.Mike_5:
arrayList.Add(5 - ((double.Parse(strCalculData[k]) - 4) / 16 * 5));
arrayList.Add((T)Convert.ChangeType(5 - ((double.Parse(strCalculData[k]) - 4) / 16 * 5), typeof(T)));
break;
case modual.eX18xSensorChannelType.Mike_6:
arrayList.Add(6 - ((double.Parse(strCalculData[k]) - 4) / 16 * 6));
arrayList.Add((T)Convert.ChangeType(6 - ((double.Parse(strCalculData[k]) - 4) / 16 * 6), typeof(T)));
break;
case modual.eX18xSensorChannelType.Mike_7:
arrayList.Add(7 - ((double.Parse(strCalculData[k]) - 4) / 16 * 7));
arrayList.Add((T)Convert.ChangeType(7 - ((double.Parse(strCalculData[k]) - 4) / 16 * 7), typeof(T)));
break;
case modual.eX18xSensorChannelType.NormalCurrent:
arrayList.Add(double.Parse(strCalculData[k]));
arrayList.Add((T)Convert.ChangeType(double.Parse(strCalculData[k]), typeof(T)));
break;
case modual.eX18xSensorChannelType.Null:
arrayList.Add(0);
arrayList.Add((T)Convert.ChangeType(0, typeof(T)));
break;
default:
break;
......@@ -506,9 +504,9 @@ namespace ModbusDemo.Modular
}
}
ChannnelData = (T[]) arrayList.ToArray();
}
}
for (int i = 0; i < ModualPoll.byX14pNumber; i++)
{
if (byModbusID == ModualPoll.cx14P.byModbusID[i])
......@@ -516,34 +514,35 @@ namespace ModbusDemo.Modular
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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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++)
for (int k = 0; k < byX14pReadTypeNumber; k++)
{
string str = "d" + k.ToString();
if (str == strChannelList[j])
{
arrayList.Add(double.Parse(strCalculData[k]));
arrayList.Add((T)Convert.ChangeType(strCalculData, typeof(T)));
}
}
}
ChannnelData = (T[]) arrayList.ToArray();
}
}
for (int i = 0; i < ModualPoll.byX78cNumber; i++)
......@@ -553,41 +552,42 @@ namespace ModbusDemo.Modular
{
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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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++)
for (int k = 0; k < byX78cInputRegNumber; k++)
{
string str = "d" + k.ToString();
if (str == strChannelList[j])
{
arrayList.Add(bInputData[j]);
arrayList.Add((T)Convert.ChangeType(bInputData[j], typeof(T)));
}
}
for (int k = 8; k < 16; k++)
for (int k = byX78cInputRegNumber; k < byX78cOutputRegNumber + byX78cInputRegNumber; k++)
{
string str = "d" + k.ToString();
if (str == strChannelList[j])
{
arrayList.Add(bOutPutData[j]);
arrayList.Add((T)Convert.ChangeType(bOutPutData[j],typeof(T)));
}
}
}
ChannnelData = (T[]) arrayList.ToArray();
}
}
for (int i = 0; i < ModualPoll.byX66cNumber; i++)
......@@ -597,43 +597,53 @@ namespace ModbusDemo.Modular
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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bGetStatus = false;
}
for (int j = 0; j < strChannelList.Count(); j++)
for (int j = 0; j < strChannelList.Count() && j < byX66cRelayRegNumber; j++)
{
for (int k = 0; k < 8; k++)
for (int k = 0; k < byX66cRelayRegNumber; k++)
{
string str = "d" + k.ToString();
if (str == strChannelList[j])
{
arrayList.Add(bRelayValue[j]);
arrayList.Add((T)Convert.ChangeType(bRelayValue[j],typeof(T)));
}
}
}
ChannnelData = (T[]) arrayList.ToArray();
}
}
if (arrayList.Count() == 0)
{
for (int i = 0; i < strChannelList.Count(); i++)
{
arrayList.Add((T)Convert.ChangeType(0, typeof(T)));
}
}
return arrayList;
ChannnelData = (T[]) arrayList.ToArray();
return bGetStatus;
}
public static void vSet_All_Channel_Value(byte byModbusID, bool[] bControlData,out bool bControlStatus)
public static bool bSet_All_Channel_Value(byte byModbusID, bool[] bControlData)
{
bControlStatus = true;
for (int i = 0; i < ModualPoll.byX14pNumber; i++)
bool bControlStatus = true;
for (int i = 0; i < ModualPoll.byX66cNumber; i++)
{
if (byModbusID == ModualPoll.cx14P.byModbusID[i])
if (byModbusID == ModualPoll.cx66c.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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bControlStatus = false;
}
}
......@@ -645,15 +655,16 @@ namespace ModbusDemo.Modular
{
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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, 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");
ModualAlarm.vSet_Modual_Alarm(byModbusID, (ushort)ModualAlarm.eAlarmCode.ChannelCommunError, true, 1, "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
bControlStatus = false;
}
}
}
return bControlStatus;
}
}
}
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ModbusDemo;
using ModbusDemo.application;
namespace ModbusDemo.application
{
public static class AllPond
{
private static ModualPool.pcTemperature cEastTransitPoolTemper = new ModualPool.pcTemperature("EastTransitPoolTemper", 27, "d0");
private static ModualPool.pcLiquidlevel cEastTransitPoolLevel = new ModualPool.pcLiquidlevel("EastTransitPoolLevel", 13, "d0");
private static ModualPool.pcOperation cEastTransitPoolSouthWaterBase = new ModualPool.pcOperation
{
byModbusID = 16,
strOperationNumber = "d0",
strChannelNumber = new string[] { "d0", "d1" },
bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, false },
bHadRefControl = false,
byResModbusID = 0xFF,
strResChannelNumber = null
};
private static ModualPool.pcMachine cEastTransitPoolSouthWater = new ModualPool.pcMachine("EastTransitPoolSouthWater", cEastTransitPoolSouthWaterBase);
private static ModualPool.pcOperation cEastTransitPoolNorthWaterBase = new ModualPool.pcOperation
{
byModbusID = 16,
strOperationNumber = "d2",
strChannelNumber = new string[] { "d2", "d3" },
bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, false },
bHadRefControl = false,
byResModbusID = 0xFF,
strResChannelNumber = null
};
private static ModualPool.pcMachine cEastTransitPoolNorthWater = new ModualPool.pcMachine("EastTransitPoolNorthWater", cEastTransitPoolNorthWaterBase);
private static ModualPool.pcOperation cEastTransitPoolPumb1Base = new ModualPool.pcOperation
{
byModbusID = 16,
strOperationNumber = "d0",
strChannelNumber = new string[] { "d0", "d1" },
bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, false },
bHadRefControl = false,
byResModbusID = 0xFF,
strResChannelNumber = null
};
private static ModualPool.pcMachine cEastTransitPoolPumb1 = new ModualPool.pcMachine("EastTransitPoolPumb_1", cEastTransitPoolPumb1Base);
private static ModualPool.pcOperation cEastTransitPoolPumb2Base = new ModualPool.pcOperation
{
byModbusID = 16,
strOperationNumber = "d0",
strChannelNumber = new string[] { "d0", "d1" },
bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, false },
bHadRefControl = false,
byResModbusID = 0xFF,
strResChannelNumber = null
};
private static ModualPool.pcMachine cEastTransitPoolPumb2 = new ModualPool.pcMachine("EastTransitPoolPumb_2", cEastTransitPoolPumb2Base);
private static ModualPool.pcOperation cEastTransitPoolStirrer1Base = new ModualPool.pcOperation
{
byModbusID = 16,
strOperationNumber = "d0",
strChannelNumber = new string[] { "d0", "d1" },
bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, false },
bHadRefControl = false,
byResModbusID = 0xFF,
strResChannelNumber = null
};
private static ModualPool.pcMachine cEastTransitPoolStirrer1 = new ModualPool.pcMachine("EastTransitPoolStirrer_1", cEastTransitPoolStirrer1Base);
private static ModualPool.pcOperation cEastTransitPoolStirrer2Base = new ModualPool.pcOperation
{
byModbusID = 16,
strOperationNumber = "d0",
strChannelNumber = new string[] { "d0", "d1" },
bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, false },
bHadRefControl = false,
byResModbusID = 0xFF,
strResChannelNumber = null
};
private static ModualPool.pcMachine cEastTransitPoolStirrer2 = new ModualPool.pcMachine("EastTransitPoolStirrer_2", cEastTransitPoolStirrer2Base);
private static ModualPool.pcOperation cEastTransitPoolStirrer3Base = new ModualPool.pcOperation
{
byModbusID = 16,
strOperationNumber = "d0",
strChannelNumber = new string[] { "d0", "d1" },
bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, false },
bHadRefControl = false,
byResModbusID = 0xFF,
strResChannelNumber = null
};
private static ModualPool.pcMachine cEastTransitPoolStirrer3 = new ModualPool.pcMachine("EastTransitPoolStirrer_3", cEastTransitPoolStirrer3Base);
private static ModualPool.pcOperation cEastTransitPoolStirrer4Base = new ModualPool.pcOperation
{
byModbusID = 16,
strOperationNumber = "d0",
strChannelNumber = new string[] { "d0", "d1" },
bOpenOperation = new bool[] { true, true },
bCloseOperation = new bool[] { false, false },
bHadRefControl = false,
byResModbusID = 0xFF,
strResChannelNumber = null
};
private static ModualPool.pcMachine cEastTransitPoolStirrer4 = new ModualPool.pcMachine("EastTransitPoolStirrer_4", cEastTransitPoolStirrer4Base);
public static class cEastTransitPool
{
public static double vSetMaxLevel;
public static double vSetMinLevel;
public static ModualPool.pcTemperature cTemper { get => cEastTransitPoolTemper; set => cEastTransitPoolTemper = value;}
public static ModualPool.pcLiquidlevel cLevel { get => cEastTransitPoolLevel; set => cEastTransitPoolLevel = value;}
public static ModualPool.pcMachine cSouthWater { get => cEastTransitPoolSouthWater; set => cEastTransitPoolSouthWater = value; }
public static ModualPool.pcMachine cNorthWater { get => cEastTransitPoolNorthWater; set => cEastTransitPoolNorthWater = value; }
public static ModualPool.pcMachine cPumb1 {get => cEastTransitPoolPumb1; set => cEastTransitPoolPumb1 = value; }
public static ModualPool.pcMachine cPumb2 {get => cEastTransitPoolPumb2; set => cEastTransitPoolPumb2 = value; }
public static ModualPool.pcMachine cStirrer1 {get => cEastTransitPoolStirrer1; set => cEastTransitPoolStirrer1 = value; }
public static ModualPool.pcMachine cStirrer2 {get => cEastTransitPoolStirrer2; set => cEastTransitPoolStirrer2 = value; }
public static ModualPool.pcMachine cStirrer3 {get => cEastTransitPoolStirrer3; set => cEastTransitPoolStirrer3 = value; }
public static ModualPool.pcMachine cStirrer4 {get => cEastTransitPoolStirrer4; set => cEastTransitPoolStirrer4 = value; }
private static void vSet_Poll_Max_Level(double dData)
{
vSetMaxLevel = dData;
}
private static void vSet_Poll_Min_Level(double dData)
{
vSetMinLevel = dData;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ModbusDemo.application;
namespace ModbusDemo.application
{
public class ControlMap
{
public delegate bool bDelege_Handle(bool[] bControlData);
public static bDelege_Handle bDelege_Operation;
public static bool bControl_Map(bool bOpen, byte byControlID, params string[] strOperationChannelName)
{
bool bMapStatus = true;
if (bOpen == true)
{
if (byControlID == 16 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cEastTransitPool.cPumb1.bOpen_Machine;
}
else if (byControlID == 16 && strOperationChannelName[0] == "d2")
{
bDelege_Operation = AllPond.cEastTransitPool.cPumb2.bOpen_Machine;
}
}
else
{
if (byControlID == 16 && strOperationChannelName[0] == "d0")
{
bDelege_Operation = AllPond.cEastTransitPool.cPumb1.bClose_Machine;
}
else if (byControlID == 16 && strOperationChannelName[0] == "d2")
{
bDelege_Operation = AllPond.cEastTransitPool.cPumb2.bClose_Machine;
}
}
return bMapStatus;
}
}
}
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;
//using ModbusDemo.windows;
//using ModbusDemo;
//using ModbusDemo.MessageFormat;
//namespace ModbusDemo.application
//{
// class ModbusToPool
// {
// public class pcModbusOperationPumb
// {
// public byte byModbusID;
// public ushort[] usRegAddList;
// public bool[] bGetStatus;
// public bool[] bSetStatus;
// public bool[] bOpenStatus;
// public bool bCommunicationStatus;
// public pcModbusOperationPumb(byte byInitModbusID, ushort[] usInitRegAddressInit, bool[] bInitOPen)
// {
// this.byModbusID = byInitModbusID;
// for (int i = 0; i < usInitRegAddressInit.Length; i++)
// {
// this.usRegAddList[i] = usInitRegAddressInit[i];
// this.bOpenStatus[i] = bInitOPen[i];
// }
// }
// public bool[] vGet_Module_Channel_Status()
// {
// ModbusComm.Modbus_ReadCoilsTask(out this.bGetStatus, this.byModbusID, this.usRegAddList[0], (ushort)this.usRegAddList.Length, out this.bCommunicationStatus);
// return this.bGetStatus;
// }
// public void vSet_Module_Channel_Status()
// {
// ModbusComm.Modbus_WriteMultipleCoils(this.byModbusID, this.usRegAddList[0], this.bSetStatus, out this.bCommunicationStatus);
// }
// }
// public class pcReadPumbOtherData
// {
// public byte byModbusID;
// public ushort[] usRegAddList;
// public ushort[] usReadData;
// public bool bCommunicationStatus;
// public pcReadPumbOtherData(byte byInitModbusID, ushort[] usInitRegAddressInit)
// {
// this.byModbusID = byInitModbusID;
// for (int i = 0; i < usInitRegAddressInit.Length; i++)
// {
// this.usRegAddList[i] = usInitRegAddressInit[i];
// }
// }
// public double vRead_Pumb_Data()
// {
// ModbusComm.Modbus_ReadHoldingRegistersTask(out this.usReadData, this.byModbusID, this.usRegAddList[0], (ushort)this.usRegAddList.Length, out this.bCommunicationStatus);
// return this.usReadData[0];
// }
// }
// public class pcModbusOperationAgitator
// {
// public byte byModbusID;
// public ushort[] usRegAddList;
// public bool[] bGetStatus;
// public bool[] bSetStatus;
// public bool[] bOpenStatus;
// public bool bCommunicationStatus;
// public pcModbusOperationAgitator(byte byInitModbusID, ushort[] usInitRegAddressInit, bool[] bInitOPen)
// {
// this.byModbusID = byInitModbusID;
// for (int i = 0; i < usInitRegAddressInit.Length; i++)
// {
// this.usRegAddList[i] = usInitRegAddressInit[i];
// this.bOpenStatus[i] = bInitOPen[i];
// }
// }
// public bool[] vGet_Module_Channel_Status()
// {
// ModbusComm.Modbus_ReadCoilsTask(out this.bGetStatus, this.byModbusID, this.usRegAddList[0], (ushort)this.usRegAddList.Length, out this.bCommunicationStatus);
// return this.bGetStatus;
// }
// public void vSet_Module_Channel_Status()
// {
// ModbusComm.Modbus_WriteMultipleCoils(this.byModbusID, this.usRegAddList[0], this.bSetStatus, out this.bCommunicationStatus);
// }
// }
// public class pcReadAgitatorOtherData
// {
// public byte byModbusID;
// public ushort[] usRegAddList;
// public ushort[] usReadData;
// public bool bCommunicationStatus;
// public pcReadAgitatorOtherData(byte byInitModbusID, ushort[] usInitRegAddressInit)
// {
// this.byModbusID = byInitModbusID;
// for (int i = 0; i < usInitRegAddressInit.Length; i++)
// {
// this.usRegAddList[i] = usInitRegAddressInit[i];
// }
// }
// public double vRead_Agitator_Data()
// {
// ModbusComm.Modbus_ReadHoldingRegistersTask(out this.usReadData, this.byModbusID, this.usRegAddList[0], (ushort)this.usRegAddList.Length, out this.bCommunicationStatus);
// return this.usReadData[0];
// }
// }
// public class pcPoolTemperature
// {
// public byte byModbusID;
// public ushort usTemperRegAddress;
// public ushort usTypeRegAddress;
// public ushort[] usReadData;
// public ushort[] usReadType;
// public bool bCommunicationStatus;
// public pcPoolTemperature(byte byInitModbusID, ushort usDataRegAddress, ushort usTypeAddress)
// {
// this.byModbusID = byInitModbusID;
// this.usTemperRegAddress = usDataRegAddress;
// this.usTypeRegAddress = usTypeAddress;
// }
// public void vRead_Pumb_Data()
// {
// ModbusComm.Modbus_ReadHoldingRegistersTask(out this.usReadData, this.byModbusID, this.usTemperRegAddress, 1, out this.bCommunicationStatus);
// }
// public void vRead_Pumb_Type()
// {
// ModbusComm.Modbus_ReadHoldingRegistersTask(out this.usReadType, this.byModbusID, this.usTypeRegAddress, 1, out this.bCommunicationStatus);
// }
// }
// public class pcPoolLevel
// {
// public byte byModbusID;
// public ushort[] usTemperRegAddress;
// public ushort[] usTypeRegAddress;
// public ushort[] usReadData;
// public ushort[] usReadType;
// public bool bCommunicationStatus;
// public pcPoolLevel(byte byInitModbusID, ushort[] usDataRegAddress, ushort[] usDataTypeRegAddress)
// {
// this.byModbusID = byInitModbusID;
// for (int i = 0; i < usDataRegAddress.Length; i++)
// {
// this.usTemperRegAddress[i] = usDataRegAddress[i];
// this.usTypeRegAddress[i] = usDataTypeRegAddress[i];
// }
// }
// public void vRead_Level_Data()
// {
// ModbusComm.Modbus_ReadHoldingRegistersTask(out this.usReadData, this.byModbusID, this.usTemperRegAddress[0], (ushort)this.usTemperRegAddress.Length, out this.bCommunicationStatus);
// }
// public void vRead_Level_Type()
// {
// ModbusComm.Modbus_ReadHoldingRegistersTask(out this.usReadType, this.byModbusID, this.usTypeRegAddress[0], (ushort)this.usTypeRegAddress.Length, out this.bCommunicationStatus);
// }
// }
// }
//}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ModbusDemo.windows;
using ModbusDemo;
using ModbusDemo.MessageFormat;
using ModbusDemo.Modular;
namespace ModbusDemo.application
{
public class ModualPool
{
public class pcTemperature
{
private string strTemperName;
public double dCurrentTemperate { get => vGet_ResCurrent();}
private byte byModbusID;
private string[] strChannelNumber;
public pcTemperature(string strName,byte byModbusID, params string[] strChannelNumber)
{
this.strTemperName = strName;
this.byModbusID = byModbusID;
this.strChannelNumber = strChannelNumber;
}
private double vGet_ResCurrent()
{
double[] dConvertData;
double resData = 0;
if (ModualPoll.bGet_channel_Value<double>(byModbusID, out dConvertData, strChannelNumber) == true)
{
List<double> ConvertData = new List<double>();
for (int i = 0; i < dConvertData.Count(); i++)
{
if (dConvertData[i] > 0 && dConvertData[i] < 80)
{
ConvertData.Add(dConvertData[i]);
}
}
for (int i = 0; i < ConvertData.Count(); i++)
{
resData+= ConvertData[i];
}
return resData/ConvertData.Count();
}
return 0;
}
}
public class pcLiquidlevel
{
private string strLevel;
public double dCurrentlevel { get => vGet_ResCurrent();}
private byte byModbusID;
private string[] strChannelNumber;
public pcLiquidlevel(string strName, byte byModbusID,params string[] strChannelNumber)
{
this.strLevel = strName;
this.byModbusID = byModbusID;
this.strChannelNumber = strChannelNumber;
}
private double vGet_ResCurrent()
{
double[] dConvertData;
double resData = 0;
if (ModualPoll.bGet_channel_Value<double>(byModbusID, out dConvertData, strChannelNumber) == true)
{
List<double> ConvertData = new List<double>();
for (int i = 0; i < dConvertData.Count(); i++)
{
if (dConvertData[i] > 0 && dConvertData[i] < 5)
{
ConvertData.Add(dConvertData[i]);
}
}
for (int i = 0; i < ConvertData.Count(); i++)
{
resData += ConvertData[i];
}
return resData / ConvertData.Count();
}
return 0;
}
}
public class pcOperation
{
public byte byModbusID;
public string[] strChannelNumber;
public string strOperationNumber;
public bool[] bOpenOperation;
public bool[] bCloseOperation;
public bool bHadRefControl;
public byte byResModbusID;
public string strResChannelNumber;
//public pcOperation(byte byControlID, string[] strChannelNumber,string strOperationNumber,bool bHadRefControl,byte byResID,string strResChannelName,bool[] bOpenData,bool[] bCloseData)
//{
// this.byModbusID = byControlID;
// this.strChannelNumber = strChannelNumber;
// this.strOperationNumber = strOperationNumber;
// this.bHadRefControl = bHadRefControl;
// this.byResModbusID = byResID;
// this.strResChannelNumber = strResChannelName;
// this.bOpenOperation = bOpenData;
// this.bCloseOperation = bCloseData;
//}
}
public class pcMachine:pcOperation
{
public string strMachinebName;
public double dChannelCurrent { get => vGet_ResCurrent();}
public bool bHadOpenPumb;
public bool[] bCurrentRelay;
public pcMachine(string strMachineName,pcOperation pcOperation) // base(pcOperation.byModbusID,pcOperation.strChannelNumber,pcOperation.strOperationNumber,pcOperation.bHadRefControl,pcOperation.byResModbusID,pcOperation.strResChannelNumber,pcOperation.bOpenOperation,pcOperation.bCloseOperation)
{
this.strMachinebName = strMachineName;
this.byModbusID = pcOperation.byModbusID;
this.strChannelNumber = pcOperation.strChannelNumber;
this.strOperationNumber = pcOperation.strOperationNumber;
this.bHadRefControl = pcOperation.bHadRefControl;
this.byResModbusID = pcOperation.byResModbusID;
this.strResChannelNumber = pcOperation.strResChannelNumber;
this.bOpenOperation = pcOperation.bOpenOperation;
this.bCloseOperation = pcOperation.bCloseOperation;
}
public bool bOpen_Machine(bool[] bControldata)
{
bool[] bControlBit = new bool[bControldata.Count()];
bool bStatus;
for (int i = 0; i < bControldata.Count(); i++)
{
string str= "d"+i.ToString();
for (int j = 0; j < strChannelNumber.Count(); j++)
{
if (str == strChannelNumber[j])
{
bControlBit[i] = true;
bControldata[i] = bOpenOperation[j];
}
}
}
if ((bStatus = ModualControl.bOperation_Machine(true, byModbusID, bControldata, bControlBit, byResModbusID, strResChannelNumber)) == true)
{
bHadOpenPumb = true;
}
return bStatus;
}
public bool bClose_Machine(bool[] bControldata)
{
bool[] bControlBit = new bool[bControldata.Count()];
bool bStatus;
for (int i = 0; i < bControldata.Count(); i++)
{
string str = "d" + i.ToString();
for (int j = 0; j < strChannelNumber.Count(); j++)
{
if (str == strChannelNumber[j])
{
bControlBit[i] = true;
bControldata[i] = bCloseOperation[j];
}
}
}
if ((bStatus = ModualControl.bOperation_Machine(false, byModbusID, bControldata, bControlBit, byResModbusID, strResChannelNumber)) == true)
{
bHadOpenPumb = false;
}
return bStatus;
}
private double vGet_ResCurrent()
{
double[] dConvertData;
if (ModualPoll.bGet_channel_Value<double>(byResModbusID, out dConvertData, strResChannelNumber) == true)
{
return dConvertData[0];
}
return 0;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ModbusDemo;
namespace ModbusDemo.application
{
// public class Pond
// {
//private string Sname;//池子的名称
//private bool state;
//private double Dlevel;//池子的液位
//private double Lowwaterlevel;//液位最低水位
//private double Peaklevel;//液位最高水位
//private string Agitator;//搅拌器
//private ushort current;//电流
//private ushort Voltage;//电压
//private float vs;
//public string Sname1 { get => Sname; set => Sname = value; }
//public bool State { get => state; set => state = value; }
//public double Dlevel1 { get => Dlevel; set => Dlevel = value; }
//public double Lowwaterlevel1 { get => Lowwaterlevel; set => Lowwaterlevel = value; }
//public double Peaklevel1 { get => Peaklevel; set => Peaklevel = value; }
//public ushort Voltage1 { get => Voltage; set => Voltage = value; }
//public ushort Current { get => current; set => current = value; }
//public string Agitator1 { get => Agitator; set => Agitator = value; }
//public float Vs { get => vs; set => vs = value; }
//public class Agitator : ModbusAttribute //搅拌器
//{
// public bool state;
// public ushort[] current;//电流
// public ushort[] Voltage;//电压
//}
//public class pump : ModbusAttribute//泵
//{
// public bool state;
// public ushort[] current;//电流
// public ushort[] Voltage;//电压
//}
//public class Level : ModbusAttribute //液位属性
//{
// public ushort[] level;//液位
// public ushort[] passageway; //液位通道
// public double[] Lowwaterlevel; // 液位最低水位
// public double[] Peaklevel; // 液位最高水位
//}
//public class ModbusAttribute //modbus属性
//{
// public byte[] SlaveAddress;
// public ushort[] RegisterAddress;
//}
//public class pcPool
//{
// public pePondName ePondName;
// private double dPondCurentTemper1;
// private double dPondCurrentLevel1;
// public double dMaxlevel;//液位最低水位
// public double dMinlevel;//液位最高水位
// public double dMaxTemper;
// public double dMinTemper;
// public pcPump[] cPump;
// public pcAgitator[] cAgitator;
// public double dPondCurentTemper { get => dPondCurentTemper1; }
// public double dPondCurrentLevel { get => dPondCurrentLevel1; }
// public pcPool(pePondName eInitPondName)
// {
// this.ePondName = eInitPondName;
// }
//}
//public class pcPump
//{
// public double dPumpCurrent;
// public double dPumpVoltage;
// public bool bPumpStatus;
// public bool bPumpHasOpen;
// public void vOpen_Pump()
// {
// }
// public void vClose_Pump()
// {
// }
// public void vGet_Pump_Status()
// {
// }
//}
public class pcTemperatureData
{
public double Temperature;
}
public class pcLevelHigh
{
}
public class pcSensorModule
{
public double dCalculateData;
public peSensorType eSensorType;
public ushort[] usCollectData;
public ushort[] usGetCurrentType;
public byte bDataCollectModualID;
public ushort[] usDataRegAddress;
public ushort usTypeRegAddress;
//public bool ReadDataStatus;
public int uReadModbusStatus;
public pcSensorModule(peSensorType eInitSensorType,byte bInitModbusID, ushort[] usInitRegAddress,ushort usInitTypedefAddress)
{
this.eSensorType = eInitSensorType;
this.bDataCollectModualID = bInitModbusID;
this.usTypeRegAddress = usInitTypedefAddress;
for (ushort i = 0; i < usInitRegAddress.Length; i++)
{
this.usDataRegAddress[i] = usInitRegAddress[i];
}
}
public void vGet_CollectData()
{
//Form1.Modbus_ReadHoldingRegistersTask(out this.usCollectData, this.bDataCollectModualID, this.usDataRegAddress[0], ((ushort)this.usDataRegAddress.Length), out this.uReadModbusStatus);
}
public void vGet_Sensor_Type()
{
//Form1.Modbus_ReadHoldingRegistersTask(out this.usGetCurrentType, this.bDataCollectModualID, this.usTypeRegAddress, 1, out this.uReadModbusStatus);
}
public void vGetCalculate_Send_Data()
{
if (this.eSensorType == peSensorType.X14p)
{
//this.dCalculateData =
}
else if (this.eSensorType == peSensorType.X78C)
{
//this.dCalculateData =
}
}
}
public class pcControlModule
{
public peControlName eControlMachineName;
public bool bMachineStatus;
public bool[] bMachineOpenSatus;
public bool[] bGetChannelStatus;
public bool[] bSetChannelStatus;
public byte bControlModualID;
public ushort[] usRegNumberlist;
public ulong[] ulControlChannel;
public int uReadModbusStatus;
public pcControlModule(peControlName eInitMachineName,byte bInitModbusID, ushort[] usInitRegAddress,bool[] bDefineMachineOpenStatus)
{
this.eControlMachineName = eInitMachineName;
this.bControlModualID = bInitModbusID;
for (ushort i = 0; i < usInitRegAddress.Length; i++)
{
this.usRegNumberlist[i] = usInitRegAddress[i];
this.bMachineOpenSatus[i] = bDefineMachineOpenStatus[i];
}
}
public void vOpen_Machine()
{
}
public void vClose_Machine()
{
}
public void vGet_Machine_Modual_Channel_Status()
{
//Form1.Modbus_ReadCoilsTask(out this.bGetChannelStatus, this.bControlModualID,this.usRegNumberlist[0],(ushort)this.usRegNumberlist.Length, out this.uReadModbusStatus);
}
public void vSet_Machinae_Modual_Channel_Status()
{
//Form1.Modbus_WriteSingleCoil(out this.bGetChannelStatus[0], this.bControlModualID, this.usRegNumberlist[0], bSetChannelStatus[0], out this.uReadModbusStatus);
}
}
public enum peSensorType : sbyte
{
Idle = 0,
X14p,
X78C
}
public enum pePondName : sbyte
{
Idel = 0,
EastTransitPool,
WestTransitPool,
GritBasinPool,
OctagonalPool,
SlurryPool,
SeparateRoom,
FermentationPool,
DischargePool
}
public enum peControlName : sbyte
{
Idle = 0,
NorthSouthWater,
Pump0Machine = 10,
Pump1Machine,
Pump2Machine,
Pump3Machine,
Pump4Machine,
Pump5Machine,
Pump6Machine,
Pump7Machine,
Pump8Machine,
Pump9Machine,
Stir0Machine = 100,
Stir1Machine,
Stir2Machine,
Stir3Machine,
Stir4Machine,
Stir5Machine,
Stir6Machine,
Stir7Machine,
Stir8Machine,
Stir9Machine,
}
}
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