Commit d6df55a2 authored by leon.huang's avatar leon.huang

add pool abstract

parent 83d8d9d1
......@@ -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;
}
}
}
......
......@@ -29,10 +29,10 @@ namespace ModbusDemo.MessageFormat
MB_RTUERNOERR
}
public static ModbusMaster Modbus;
public static ushort usCommunFailTimes = 0;
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)
{
object oLock = new object();
lock (oLock)
{
eModbusErrorCode ModbusErrorCode;
......@@ -117,7 +117,6 @@ namespace ModbusDemo.MessageFormat
}
public static eModbusErrorCode Modbus_ReadCoilsTask(out bool[] OutputValue, byte slaveAddress, ushort startAddress, ushort numberOfPoints)
{
object oLock = new object();
lock (oLock)
{
eModbusErrorCode ModbusErrorCode;
......@@ -202,14 +201,13 @@ namespace ModbusDemo.MessageFormat
}
public static eModbusErrorCode Modbus_WriteSingleCoil(byte slaveAddress, ushort startAddress, bool value)
{
object oLock = new object();
lock (oLock)
{
eModbusErrorCode ModbusErrorCode;
try
{
Modbus.WriteSingleCoil(slaveAddress, startAddress, value);
ModbusErrorCode = eModbusErrorCode.MB_ENOERR;
ModbusErrorCode = eModbusErrorCode.MB_EMASTERNOERR;
}
catch (Exception exception)
{
......@@ -285,14 +283,13 @@ namespace ModbusDemo.MessageFormat
}
public static eModbusErrorCode Modbus_WriteMultipleCoils(byte slaveAddress, ushort startAddress, bool[] data)
{
object oLock = new object();
lock (oLock)
{
eModbusErrorCode ModbusErrorCode;
try
{
Modbus.WriteMultipleCoils(slaveAddress, startAddress, data);
ModbusErrorCode = eModbusErrorCode.MB_ENOERR;
ModbusErrorCode = eModbusErrorCode.MB_EMASTERNOERR;
}
catch (Exception exception)
{
......
This diff is collapsed.
......@@ -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,11 +171,15 @@
<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>
<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)' == ''" />
<!-- 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">
......
This diff is collapsed.
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,
}
}
......@@ -26,7 +26,7 @@ namespace ModbusDemo
{
public partial class Form1 : Form
{
const bool LOCALDEBUG = false;
const bool LOCALDEBUG = true;
private bool bStart = false;
AutoResetEvent exitEvent;
private int waitTime;
......@@ -78,7 +78,7 @@ namespace ModbusDemo
public const string mqttSubscribeControlTopic = "Witium/WTDS78X/" + mqttSn + "/Ctrl";
public const string mqttBackTopic = "Witium/WTDS78X/" + mqttSn + "/Back";
public const string mqttCfgTopic = "Witium/WTDS78X/" + mqttSn + "/Config";
public const string mqttCfgResTopic = "Witium/WTDS78X/" + mqttSn + "/CfgRes";
public const string mqttCfgResTopic = "Witium/WTDS78X/" + mqttSn + "/Back";
public const string mqttTopic = "Witium/WTDS78X/" + mqttSn + "/Data";
public const string sAlarmTopic = "Witium/WTDS78X/" + mqttSn + "/Alarm";
string mqttData;//数据
......
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