Commit 99e950f7 authored by leon.huang's avatar leon.huang

add modual Alarm

parent 1dfb305f
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using MQTTnet;
using MQTTnet.Client;
using Newtonsoft.Json;
namespace ModbusDemo.Common
{
public class ModualAlarm
{
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, ushort[] 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);
}
}
}
......@@ -30,8 +30,9 @@ namespace ModbusDemo.MessageFormat
}
public static ModbusMaster Modbus;
public static ushort usCommunFailTimes = 0;
public static void Modbus_ReadHoldingRegistersTask(out ushort[] OutputValue, byte slaveAddress, ushort startAddress, ushort numberOfPoints, out eModbusErrorCode ModbusErrorCode)
public static eModbusErrorCode Modbus_ReadHoldingRegistersTask(out ushort[] OutputValue, byte slaveAddress, ushort startAddress, ushort numberOfPoints)
{
eModbusErrorCode ModbusErrorCode;
try
{
OutputValue = Modbus.ReadHoldingRegisters(slaveAddress, startAddress, numberOfPoints);
......@@ -108,9 +109,11 @@ namespace ModbusDemo.MessageFormat
OutputValue = new ushort[numberOfPoints];
ModbusErrorCode = eModbusErrorCode.MB_EMASTERERR;
}
return ModbusErrorCode;
}
public static void Modbus_ReadCoilsTask(out bool[] OutputValue, byte slaveAddress, ushort startAddress, ushort numberOfPoints, out eModbusErrorCode ModbusErrorCode)
public static eModbusErrorCode Modbus_ReadCoilsTask(out bool[] OutputValue, byte slaveAddress, ushort startAddress, ushort numberOfPoints)
{
eModbusErrorCode ModbusErrorCode;
try
{
OutputValue = Modbus.ReadCoils(slaveAddress, startAddress, numberOfPoints);
......@@ -187,9 +190,11 @@ namespace ModbusDemo.MessageFormat
OutputValue = new bool[numberOfPoints];
ModbusErrorCode = eModbusErrorCode.MB_EMASTERERR;
}
return ModbusErrorCode;
}
public static void Modbus_WriteSingleCoil(byte slaveAddress, ushort startAddress, bool[] value, out eModbusErrorCode ModbusErrorCode)
public static eModbusErrorCode Modbus_WriteSingleCoil(byte slaveAddress, ushort startAddress, bool[] value)
{
eModbusErrorCode ModbusErrorCode;
try
{
Modbus.WriteMultipleCoils(slaveAddress, startAddress, value);
......@@ -263,9 +268,11 @@ namespace ModbusDemo.MessageFormat
}
ModbusErrorCode = eModbusErrorCode.MB_EMASTERERR;
}
return ModbusErrorCode;
}
public static void Modbus_WriteMultipleCoils(byte slaveAddress, ushort startAddress, bool[] data, out eModbusErrorCode ModbusErrorCode)
public static eModbusErrorCode Modbus_WriteMultipleCoils(byte slaveAddress, ushort startAddress, bool[] data)
{
eModbusErrorCode ModbusErrorCode;
try
{
Modbus.WriteMultipleCoils(slaveAddress, startAddress, data);
......@@ -339,6 +346,7 @@ namespace ModbusDemo.MessageFormat
}
ModbusErrorCode = eModbusErrorCode.MB_EMASTERERR;
}
return ModbusErrorCode;
}
//private void Init_Read_data()
//{
......
......@@ -225,46 +225,5 @@ namespace ModbusDemo
}
}
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);
}
}
}
......@@ -74,9 +74,8 @@
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="nmodbuspc, Version=1.12.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>bin\Debug\nmodbuspc.dll</HintPath>
<Reference Include="NModbus4, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NModbus4.2.1.0\lib\net40\NModbus4.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
......@@ -93,6 +92,7 @@
<Compile Include="application\PoolModbusSet.cs" />
<Compile Include="application\ModbusToPool.cs" />
<Compile Include="application\Pond.cs" />
<Compile Include="Common\ModualAlarm.cs" />
<Compile Include="MessageFormat\ModbusComm.cs" />
<Compile Include="Modular\414P.cs" />
<Compile Include="Modular\478C.cs" />
......@@ -164,20 +164,6 @@
</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" />
<PropertyGroup>
<SsdtUnitTestVersion>3.1</SsdtUnitTestVersion>
......
This diff is collapsed.
......@@ -4,20 +4,30 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ModbusDemo.MessageFormat;
using ModbusDemo.Common;
namespace ModbusDemo.Modular
{
class modual
{
public struct psx14p
public struct psx14pData
{
public ushort[] usX14pRegData;
public ushort[] usX14pRegType;
public double[] dX14pConvertData;
public double[] dX14pNowConvertData;
public double[] dX14pBeforeConvertData;
}
public struct psxModualAlarm
{
public bool bDataNotFirstIncreaseOrDecrease;
public ModualAlarm.eAlarmCode[] eNowAlarmCode;
public ModualAlarm.eAlarmCode[] eBeforeAlarmCode;
}
public class pcx14P
{
public byte[] byModbusID;
public psx14p[] sX14pDataStruct;
public psx14pData[] sX14pDataStruct;
public psxModualAlarm[] sX14PAlarmStruct;
public ModbusComm.eModbusErrorCode[] ModbusErrorCode;
public pcx14P(byte[] InitIDlist)
{
......@@ -30,17 +40,19 @@ namespace ModbusDemo.Modular
Level,
}
public struct psX18x
public struct psX18xData
{
public ushort[] usRegData;
public ushort[] usTypeData;
public eX18xSensorChannelType[] eChannelType;
public double[] dConvertData;
public double[] dNowConvertData;
public double[] dBeforeConvertData;
}
public class pcx18X
{
public byte[] byModbusID;
public psX18x[] sX18xDataStruct;
public psX18xData[] sX18xDataStruct;
public psxModualAlarm[] sX18xAlarmstruct;
public ModbusComm.eModbusErrorCode[] ModbusErrorCode;
public pcx18X(byte[] InitIDlist, eX18xSensorChannelType[,] eChannnelType)
{
......@@ -57,12 +69,14 @@ namespace ModbusDemo.Modular
public struct psx78C
{
public bool[] bInputRegStatus;
public bool[] bOutPutRegStatus;
public bool[] bOutPutRegStatus;
public bool bX78cAllChannelAlarm;
}
public class pcx78C
{
public byte[] byModbusID;
public psx78C[] sx78CRegDataStructStatus;
public psx78C[] sX78cRegStatusStruct;
public psxModualAlarm[] sX78cAlarmStruct;
public ModbusComm.eModbusErrorCode[] ModbusErrorCode;
public pcx78C(byte[] InitIDlist)
{
......@@ -72,11 +86,13 @@ namespace ModbusDemo.Modular
public struct psx66C
{
public bool[] bRegRelayStatus;
public bool[] bX66CAllChannelAlarm;
}
public class pcx66C
{
public byte[] byModbusID;
public psx78C[] sx78CDatastructStatus;
public byte[] byModbusID;
public psx78C[] sX66cRegStatusStruct;
public psxModualAlarm[] sX66cAlarmStruct;
public ModbusComm.eModbusErrorCode[] ModbusErrorCode;
public pcx66C(byte[] InitIDlist)
{
......
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