Commit 432ed26a authored by leon.huang's avatar leon.huang

Modify Modbus and Pool abstruct

parent ee7b5c46
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<Name>Database1</Name>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>4.1</ProjectVersion>
<ProjectGuid>{214ece0a-ae66-4aad-a2ba-5c06fa5d5d97}</ProjectGuid>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql130DatabaseSchemaProvider</DSP>
<OutputType>Database</OutputType>
<RootPath>
</RootPath>
<RootNamespace>Database1</RootNamespace>
<AssemblyName>Database1</AssemblyName>
<ModelCollation>1033, CI</ModelCollation>
<DefaultFileStructure>BySchemaAndSchemaType</DefaultFileStructure>
<DeployToDatabase>True</DeployToDatabase>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetLanguage>CS</TargetLanguage>
<AppDesignerFolder>Properties</AppDesignerFolder>
<SqlServerVerification>False</SqlServerVerification>
<IncludeCompositeObjects>True</IncludeCompositeObjects>
<TargetDatabaseSet>True</TargetDatabaseSet>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
<!-- Default to the v11.0 targets path if the targets file for the current VS version is not found -->
<SSDTExists Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets')">True</SSDTExists>
<VisualStudioVersion Condition="'$(SSDTExists)' == ''">11.0</VisualStudioVersion>
</PropertyGroup>
<Import Condition="'$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
<Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
<ItemGroup>
<Folder Include="Properties" />
</ItemGroup>
</Project>
\ No newline at end of file
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15 # Visual Studio Version 16
VisualStudioVersion = 15.0.27703.2042 VisualStudioVersion = 16.0.28803.452
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModbusDemo", "ModbusDemo\ModbusDemo.csproj", "{7D83EE1F-F3D9-4592-A0ED-A0D92DCF91AB}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModbusDemo", "ModbusDemo\ModbusDemo.csproj", "{7D83EE1F-F3D9-4592-A0ED-A0D92DCF91AB}"
EndProject EndProject
......
...@@ -8,12 +8,11 @@ using System.Windows.Forms; ...@@ -8,12 +8,11 @@ using System.Windows.Forms;
namespace ModbusDemo.windows namespace ModbusDemo.windows
{ {
class Totxt public class Totxt
{ {
private string logFile; private string logFile;
private StreamWriter writer; private StreamWriter writer;
private FileStream fileStream = null; private FileStream fileStream = null;
public Totxt(string fileName) public Totxt(string fileName)
{ {
logFile = fileName; logFile = fileName;
...@@ -22,7 +21,6 @@ namespace ModbusDemo.windows ...@@ -22,7 +21,6 @@ namespace ModbusDemo.windows
public void Log(string info) public void Log(string info)
{ {
try try
{ {
System.IO.FileInfo fileInfo = new System.IO.FileInfo(logFile); System.IO.FileInfo fileInfo = new System.IO.FileInfo(logFile);
...@@ -59,7 +57,6 @@ namespace ModbusDemo.windows ...@@ -59,7 +57,6 @@ namespace ModbusDemo.windows
fileStream.Dispose(); fileStream.Dispose();
} }
} }
} }
public void CreateDirectory(string infoPath) public void CreateDirectory(string infoPath)
......
This diff is collapsed.
...@@ -4,6 +4,10 @@ using System.Linq; ...@@ -4,6 +4,10 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Collections; using System.Collections;
using MQTTnet;
using MQTTnet.Client;
using Newtonsoft.Json;
namespace ModbusDemo namespace ModbusDemo
{ {
class startAddress class startAddress
...@@ -24,8 +28,8 @@ namespace ModbusDemo ...@@ -24,8 +28,8 @@ namespace ModbusDemo
public int d5 { get; set; } public int d5 { get; set; }
public int d6 { get; set; } public int d6 { get; set; }
public int d7 { get; set; } public int d7 { get; set; }
public string ts { get; set; } public UInt64 ts { get; set; }
public WTDR18X(string addr, double d0, int d1, int d2, int d3, int d4, int d5, int d6, int d7, string ts) public WTDR18X(string addr, double d0, int d1, int d2, int d3, int d4, int d5, int d6, int d7, UInt64 ts)
{ {
this.addr = addr; this.addr = addr;
this.d0 = d0; this.d0 = d0;
...@@ -46,8 +50,8 @@ namespace ModbusDemo ...@@ -46,8 +50,8 @@ namespace ModbusDemo
public int d1 { get; set; } public int d1 { get; set; }
public int d2 { get; set; } public int d2 { get; set; }
public int d3 { get; set; } public int d3 { get; set; }
public string ts { get; set; } public UInt64 ts { get; set; }
public WTDR14P(string addr, double d0, int d1, int d2, int d3, string ts) public WTDR14P(string addr, double d0, int d1, int d2, int d3, UInt64 ts)
{ {
this.addr = addr; this.addr = addr;
this.d0 = d0; this.d0 = d0;
...@@ -66,9 +70,9 @@ namespace ModbusDemo ...@@ -66,9 +70,9 @@ namespace ModbusDemo
public int d3 { get; set; } public int d3 { get; set; }
public int d4 { get; set; } public int d4 { get; set; }
public int d5 { get; set; } public int d5 { get; set; }
public string ts { get; set; } public UInt64 ts { get; set; }
public WTDR66C(string addr, int d0, int d1, int d2, int d3, int d4, int d5, string ts) public WTDR66C(string addr, int d0, int d1, int d2, int d3, int d4, int d5, UInt64 ts)
{ {
this.addr = addr; this.addr = addr;
this.d0 = d0; this.d0 = d0;
...@@ -220,4 +224,47 @@ namespace ModbusDemo ...@@ -220,4 +224,47 @@ namespace ModbusDemo
return op; return op;
} }
} }
public class pcDeviceAlarm
{
public const ushort usChannelNumber = 8;
private const string sAlarmTopic = "Witium/WTDS78X/20193261/Alarm";
public Hashtable hMqtttAlarmMap = new Hashtable();
public bool bErrorHasSend = false;
private string sAlarmJson;
private string sAlarmJsonPackage;
//private IMqttClient mqttClient = null;
public enum eAlarmCode : sbyte
{
ChannelNoError = 0,
ChannelCommunError = 1,
ChannelCollectDataError = 2,
ChannelDataRespError = 4,
ChannelDataChangeError = 8
}
public void vSetAlarmList(ushort usAddress, ushort[] usChannel, eAlarmCode[] usChannelAlarmcode)
{
ushort i = 0;
hMqtttAlarmMap.Add("addr", usAddress.ToString());
string sAlarm = "alm";
foreach (ushort usdata in usChannelAlarmcode)
{
hMqtttAlarmMap.Add(sAlarm + i, usChannelAlarmcode[i]);
i++;
}
hMqtttAlarmMap.Add("ts", Form1.GetTimeStamp());
sAlarmJson = JsonConvert.SerializeObject(hMqtttAlarmMap);
}
public async Task vPublishAlarmPackageJson(IMqttClient mqttClient)
{
sAlarmJson = "[" + sAlarmJson + "]";
var message = new MqttApplicationMessageBuilder()
.WithTopic(sAlarmTopic)
.WithPayload(sAlarmJson)
.WithAtMostOnceQoS()
.WithRetainFlag(false)
.Build();
await mqttClient.PublishAsync(message);
}
}
} }
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <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>
</PropertyGroup>
<PropertyGroup>
<SSDTPath Condition="'$(SSDTPath)' == ''">$(VsInstallRoot)\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130</SSDTPath>
</PropertyGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
...@@ -59,15 +68,15 @@ ...@@ -59,15 +68,15 @@
<Reference Include="log4net"> <Reference Include="log4net">
<HintPath>Lib\log4net.dll</HintPath> <HintPath>Lib\log4net.dll</HintPath>
</Reference> </Reference>
<Reference Include="MQTTnet, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="MQTTnet, Version=2.8.5.0, Culture=neutral, PublicKeyToken=b69712f52770c0a7, processorArchitecture=MSIL">
<HintPath>..\packages\MQTTnet-CP.2.7.5\lib\net452\MQTTnet.dll</HintPath> <HintPath>..\packages\MQTTnet.2.8.5\lib\net452\MQTTnet.dll</HintPath>
<EmbedInteropTypes>False</EmbedInteropTypes>
</Reference> </Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> <HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference> </Reference>
<Reference Include="nmodbuspc"> <Reference Include="nmodbuspc, Version=1.12.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>Lib\nmodbuspc.dll</HintPath> <SpecificVersion>False</SpecificVersion>
<HintPath>bin\Debug\nmodbuspc.dll</HintPath>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
...@@ -81,7 +90,10 @@ ...@@ -81,7 +90,10 @@
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="application\PoolModbusSet.cs" />
<Compile Include="application\ModbusToPool.cs" />
<Compile Include="application\Pond.cs" /> <Compile Include="application\Pond.cs" />
<Compile Include="MessageFormat\ModbusComm.cs" />
<Compile Include="Modular\414P.cs" /> <Compile Include="Modular\414P.cs" />
<Compile Include="Modular\478C.cs" /> <Compile Include="Modular\478C.cs" />
<Compile Include="Modular\418X.cs" /> <Compile Include="Modular\418X.cs" />
...@@ -148,7 +160,33 @@ ...@@ -148,7 +160,33 @@
<Content Include="picture\nut_128px_1101797_easyicon.net.ico" /> <Content Include="picture\nut_128px_1101797_easyicon.net.ico" />
<None Include="Resources\logo.png" /> <None Include="Resources\logo.png" />
</ItemGroup> </ItemGroup>
<ItemGroup />
<ItemGroup />
<ItemGroup Condition="$(VisualStudioVersion) == '15.0'">
<Reference Include="Microsoft.Data.Tools.Schema.Sql, Version=13.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>$(SSDTPath)\Microsoft.Data.Tools.Schema.Sql.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Data.Tools.Schema.Sql.UnitTesting, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>$(SSDTUnitTestPath)\Microsoft.Data.Tools.Schema.Sql.UnitTesting.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Data.Tools.Schema.Sql.UnitTestingAdapter, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>$(SSDTUnitTestPath)\Microsoft.Data.Tools.Schema.Sql.UnitTestingAdapter.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <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)' == ''" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild"> <Target Name="BeforeBuild">
......
...@@ -8,6 +8,7 @@ namespace ModbusDemo ...@@ -8,6 +8,7 @@ namespace ModbusDemo
{ {
class _414P class _414P
{ {
//铂电阻+2路开关 //铂电阻+2路开关
const int MAX_AN_CH_NUM = 4; const int MAX_AN_CH_NUM = 4;
ushort[] typeData = new ushort[MAX_AN_CH_NUM];//当前量程读数 ushort[] typeData = new ushort[MAX_AN_CH_NUM];//当前量程读数
......
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 void vGet_Module_Channel_Status()
{
ModbusComm.Modbus_ReadCoilsTask(out this.bGetStatus, this.byModbusID, this.usRegAddList[0], (ushort)this.usRegAddList.Length, out this.bCommunicationStatus);
}
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 void vRead_Pumb_Data()
{
ModbusComm.Modbus_ReadHoldingRegistersTask(out this.usReadData, this.byModbusID, this.usRegAddList[0], (ushort)this.usRegAddList.Length, out this.bCommunicationStatus);
}
}
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);
}
}
}
}
...@@ -7,24 +7,27 @@ using System.Windows.Forms; ...@@ -7,24 +7,27 @@ using System.Windows.Forms;
using ModbusDemo; using ModbusDemo;
namespace ModbusDemo.application namespace ModbusDemo.application
{ {
class Pond // public class Pond
{ // {
private string Sname;//池子的名称 //private string Sname;//池子的名称
private bool state; //private bool state;
private double Dlevel;//池子的液位 //private double Dlevel;//池子的液位
private double Lowwaterlevel;//液位最低水位 //private double Lowwaterlevel;//液位最低水位
private double Peaklevel;//液位最高水位 //private double Peaklevel;//液位最高水位
private string Agitator;//搅拌器 //private string Agitator;//搅拌器
private ushort current;//电流 //private ushort current;//电流
private ushort Voltage;//电压 //private ushort Voltage;//电压
public string Sname1 { get => Sname; set => Sname = value; } //private float vs;
public bool State { get => state; set => state = value; }
public double Dlevel1 { get => Dlevel; set => Dlevel = value; } //public string Sname1 { get => Sname; set => Sname = value; }
public double Lowwaterlevel1 { get => Lowwaterlevel; set => Lowwaterlevel = value; } //public bool State { get => state; set => state = value; }
public double Peaklevel1 { get => Peaklevel; set => Peaklevel = value; } //public double Dlevel1 { get => Dlevel; set => Dlevel = value; }
public ushort Voltage1 { get => Voltage; set => Voltage = value; } //public double Lowwaterlevel1 { get => Lowwaterlevel; set => Lowwaterlevel = value; }
public ushort Current { get => current; set => current = value; } //public double Peaklevel1 { get => Peaklevel; set => Peaklevel = value; }
public string Agitator1 { get => Agitator; set => Agitator = 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 class Agitator : ModbusAttribute //搅拌器
...@@ -52,5 +55,187 @@ namespace ModbusDemo.application ...@@ -52,5 +55,187 @@ namespace ModbusDemo.application
// public byte[] SlaveAddress; // public byte[] SlaveAddress;
// public ushort[] RegisterAddress; // 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,
} }
} }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ModbusDemo.application
{
public struct psTemperData
{
public byte byModbusID;
public ushort usTemperRegAddress;
public ushort usTypeRegAddress;
public psTemperData(byte bySetModbusID, ushort usSetTempRegAddress, ushort usSetRegAddress)
{
this.byModbusID = bySetModbusID;
this.usTemperRegAddress = usSetTempRegAddress;
this.usTypeRegAddress = usSetRegAddress;
}
}
public struct psBumpData
{
public byte byModbusID;
public ushort[] usRegAddList;
public bool[] bOpenStatus;
public psBumpData(byte byInitModbusID, ushort[] usInitRegAddressInit, bool[] bInitOPen)
{
this.byModbusID = byInitModbusID;
this.usRegAddList = usInitRegAddressInit;
this.bOpenStatus = bInitOPen;
}
}
public struct psLevel
{
public byte byModbusID;
public ushort[] usDataAddressList;
public ushort[] usTypeAddressList;
public psLevel(byte byInitModbusID, ushort[] usDataRegAddress, ushort[] usDataTypeRegAddress)
{
this.byModbusID = byInitModbusID;
this.usDataAddressList = usDataRegAddress;
this.usTypeAddressList = usDataTypeRegAddress;
}
}
//public struct psPumbPeration
//{
// byte byInitModbusID, ushort[] usInitRegAddressInit, bool[] bInitOPen
//}
static class pcPoolInit
{
private static psTemperData sTemper = new psTemperData(1, 2, 3);
private static ModbusToPool.pcPoolTemperature cPoolTemperature = new ModbusToPool.pcPoolTemperature(sTemper.byModbusID, sTemper.usTemperRegAddress, sTemper.usTypeRegAddress);
public static double Get_Current_temper()
{
cPoolTemperature.vRead_Pumb_Data();
cPoolTemperature.vRead_Pumb_Type();
return cPoolTemperature.usReadData[0];
}
public const sbyte PoolBumpNumber = 4;
static ushort[] Data = { 12, 4 };
static bool[] Regdat = { true, false };
private static psBumpData psBumpData = new psBumpData(1, Data, Regdat);
public static ModbusToPool.pcModbusOperationPumb[] cPumb = new ModbusToPool.pcModbusOperationPumb[PoolBumpNumber] { new ModbusToPool.pcModbusOperationPumb(psBumpData.byModbusID, psBumpData.usRegAddList, psBumpData.bOpenStatus),
new ModbusToPool.pcModbusOperationPumb(psBumpData.byModbusID, psBumpData.usRegAddList, psBumpData.bOpenStatus) ,
new ModbusToPool.pcModbusOperationPumb( psBumpData.byModbusID, psBumpData.usRegAddList, psBumpData.bOpenStatus) ,
new ModbusToPool.pcModbusOperationPumb( psBumpData.byModbusID, psBumpData.usRegAddList, psBumpData.bOpenStatus)
};
//public static void vBumpSetting()
//{
// cPumb[0].vGet_Module_Channel_Status();
//}
}
public class pcAgitator
{
private double[] dBumpCurrent;
public double dBumpVoltage;
public bool bBumpStatus;
public bool bAgitatorHasOpen;
public double[] DBumpCurrent = new double[pcPoolInit.PoolBumpNumber] { pcPoolInit.cPumb[0].byModbusID, pcPoolInit.cPumb[0].byModbusID , pcPoolInit.cPumb[0].byModbusID , pcPoolInit.cPumb[0].byModbusID };
public void vOpen_Agitator()
{
}
public void vClose_Agitator()
{
}
public void vGet_Agitator_Status()
{
}
}
public class pcPoolConfig
{
public class pcPool
{
public pePondName ePondName;
public double dMaxlevel;//液位最低水位
public double dMinlevel;//液位最高水位
public double dMaxTemper;
public double dMinTemper;
public pcPump[] cPump;
public pcAgitator[] cAgitator;
public double dPondCurrentLevel;
public double dPondCurentTemper { get => pcPoolInit.Get_Current_temper(); }
public pcPool(pePondName eInitPondName)
{
this.ePondName = eInitPondName;
}
}
}
}
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net452" /> <package id="MQTTnet" version="2.8.5" targetFramework="net452" />
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net452" />
<package id="NModbus4" version="2.1.0" targetFramework="net452" /> <package id="NModbus4" version="2.1.0" targetFramework="net452" />
</packages> </packages>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
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