2014-10-11 update 1
This commit is contained in:
@@ -17,7 +17,7 @@ namespace CrossLampControl.WebApi.Controllers
|
|||||||
public Lamp GetLamp()
|
public Lamp GetLamp()
|
||||||
{
|
{
|
||||||
Lamp light = new Lamp();
|
Lamp light = new Lamp();
|
||||||
byte[] lampsbyte = _utility.GetDatas(2, (byte)ModbusProtocalReadDataFunctionCode.ReadCoilStatus, "0", 6);
|
byte[] lampsbyte = _utility.GetDatas(2, ((byte)ModbusProtocalReadDataFunctionCode.ReadCoilStatus).ToString()+":0", 6);
|
||||||
bool[] lamps =
|
bool[] lamps =
|
||||||
ValueHelper.Instance.ObjectArrayToDestinationArray<bool>(
|
ValueHelper.Instance.ObjectArrayToDestinationArray<bool>(
|
||||||
ValueHelper.Instance.ByteArrayToObjectArray(lampsbyte,
|
ValueHelper.Instance.ByteArrayToObjectArray(lampsbyte,
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Dynamic;
|
using System.Dynamic;
|
||||||
|
|
||||||
namespace ModBus.Net
|
namespace ModBus.Net
|
||||||
@@ -32,7 +33,7 @@ namespace ModBus.Net
|
|||||||
Instance = instance;
|
Instance = instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract ushort AddressTranslate(string address);
|
public abstract KeyValuePair<int,int> AddressTranslate(string address, bool isRead);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -40,27 +41,50 @@ namespace ModBus.Net
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class AddressTranslatorNA200H : AddressTranslator
|
public class AddressTranslatorNA200H : AddressTranslator
|
||||||
{
|
{
|
||||||
public Dictionary<string, short> TransDictionary;
|
protected Dictionary<string, int> TransDictionary;
|
||||||
|
protected Dictionary<string, int> ReadFunctionCodeDictionary;
|
||||||
|
protected Dictionary<string, int> WriteFunctionCodeDictionary;
|
||||||
|
|
||||||
public AddressTranslatorNA200H()
|
public AddressTranslatorNA200H()
|
||||||
{
|
{
|
||||||
TransDictionary = new Dictionary<string, short>();
|
TransDictionary = new Dictionary<string, int>
|
||||||
TransDictionary.Add("Q", 0);
|
{
|
||||||
TransDictionary.Add("M", 10000);
|
{"Q", 0},
|
||||||
TransDictionary.Add("N", 20000);
|
{"M", 10000},
|
||||||
TransDictionary.Add("I", 0);
|
{"N", 20000},
|
||||||
TransDictionary.Add("S", 10000);
|
{"I", 0},
|
||||||
TransDictionary.Add("IW", 0);
|
{"S", 10000},
|
||||||
TransDictionary.Add("SW", 5000);
|
{"IW", 0},
|
||||||
TransDictionary.Add("E", 10000);
|
{"SW", 5000},
|
||||||
TransDictionary.Add("MW", 0);
|
{"MW", 0},
|
||||||
TransDictionary.Add("NW", 10000);
|
{"NW", 10000},
|
||||||
TransDictionary.Add("QW", 20000);
|
{"QW", 20000},
|
||||||
TransDictionary.Add("CLOCK", 30000);
|
};
|
||||||
TransDictionary.Add("V", 0);
|
ReadFunctionCodeDictionary = new Dictionary<string, int>
|
||||||
|
{
|
||||||
|
{"Q", (int)ModbusProtocalReadDataFunctionCode.ReadCoilStatus},
|
||||||
|
{"M", (int)ModbusProtocalReadDataFunctionCode.ReadCoilStatus},
|
||||||
|
{"N", (int)ModbusProtocalReadDataFunctionCode.ReadCoilStatus},
|
||||||
|
{"I", (int)ModbusProtocalReadDataFunctionCode.ReadInputStatus},
|
||||||
|
{"S", (int)ModbusProtocalReadDataFunctionCode.ReadInputStatus},
|
||||||
|
{"IW", (int)ModbusProtocalReadDataFunctionCode.ReadInputRegister},
|
||||||
|
{"SW", (int)ModbusProtocalReadDataFunctionCode.ReadInputRegister},
|
||||||
|
{"MW", (int)ModbusProtocalReadDataFunctionCode.ReadHoldRegister},
|
||||||
|
{"NW", (int)ModbusProtocalReadDataFunctionCode.ReadHoldRegister},
|
||||||
|
{"QW", (int)ModbusProtocalReadDataFunctionCode.ReadHoldRegister},
|
||||||
|
};
|
||||||
|
WriteFunctionCodeDictionary = new Dictionary<string, int>
|
||||||
|
{
|
||||||
|
{"Q", (int)ModbusProtocalWriteDataFunctionCode.WriteMultiCoil},
|
||||||
|
{"M", (int)ModbusProtocalWriteDataFunctionCode.WriteMultiCoil},
|
||||||
|
{"N", (int)ModbusProtocalWriteDataFunctionCode.WriteMultiCoil},
|
||||||
|
{"MW", (int)ModbusProtocalWriteDataFunctionCode.WriteMultiRegister},
|
||||||
|
{"NW", (int)ModbusProtocalWriteDataFunctionCode.WriteMultiRegister},
|
||||||
|
{"QW", (int)ModbusProtocalWriteDataFunctionCode.WriteMultiRegister},
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public override ushort AddressTranslate(string address)
|
public override KeyValuePair<int, int> AddressTranslate(string address, bool isRead)
|
||||||
{
|
{
|
||||||
address = address.ToUpper();
|
address = address.ToUpper();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
@@ -69,10 +93,14 @@ namespace ModBus.Net
|
|||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
if (i == 0) return ushort.Parse(address);
|
if (i == 0 || i >= address.Length) throw new FormatException();
|
||||||
string head = address.Substring(0, i);
|
string head = address.Substring(0, i);
|
||||||
string tail = address.Substring(i);
|
string tail = address.Substring(i);
|
||||||
return (ushort) (TransDictionary[head] + ushort.Parse(tail) - 1);
|
return isRead
|
||||||
|
? new KeyValuePair<int, int>(TransDictionary[head] + int.Parse(tail) - 1,
|
||||||
|
ReadFunctionCodeDictionary[head])
|
||||||
|
: new KeyValuePair<int, int>(TransDictionary[head] + int.Parse(tail) - 1,
|
||||||
|
WriteFunctionCodeDictionary[head]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,14 +109,16 @@ namespace ModBus.Net
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class AddressTranslatorBase : AddressTranslator
|
public class AddressTranslatorBase : AddressTranslator
|
||||||
{
|
{
|
||||||
public override ushort AddressTranslate(string address)
|
public override KeyValuePair<int, int> AddressTranslate(string address, bool isRead)
|
||||||
{
|
{
|
||||||
ushort num;
|
int num1,num2;
|
||||||
if (ushort.TryParse(address, out num))
|
string[] split = address.Split(':');
|
||||||
|
if (split.Length != 2) throw new FormatException();
|
||||||
|
if (int.TryParse(split[0], out num1) && int.TryParse(split[1], out num2))
|
||||||
{
|
{
|
||||||
return num;
|
return new KeyValuePair<int, int>(num2, num1);
|
||||||
}
|
}
|
||||||
return 0;
|
throw new FormatException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -26,19 +26,21 @@ namespace ModBus.Net
|
|||||||
/// 获取数据
|
/// 获取数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="belongAddress">从站地址</param>
|
/// <param name="belongAddress">从站地址</param>
|
||||||
/// <param name="functionCode">功能码</param>
|
|
||||||
/// <param name="startAddress">开始地址</param>
|
/// <param name="startAddress">开始地址</param>
|
||||||
/// <param name="getCount">接收个数</param>
|
/// <param name="getCount">接收个数</param>
|
||||||
/// <returns>接收到的byte数据</returns>
|
/// <returns>接收到的byte数据</returns>
|
||||||
public abstract byte[] GetDatas(byte belongAddress, byte functionCode, string startAddress, ushort getCount);
|
public abstract byte[] GetDatas(byte belongAddress, string startAddress, int getCount);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置数据
|
/// 设置数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="belongAddress">从站地址</param>
|
/// <param name="belongAddress">从站地址</param>
|
||||||
/// <param name="functionCode">功能码</param>
|
|
||||||
/// <param name="startAddress">开始地址</param>
|
/// <param name="startAddress">开始地址</param>
|
||||||
/// <param name="setContents">设置个数</param>
|
/// <param name="setContents">设置数据</param>
|
||||||
/// <returns>是否设置成功</returns>
|
/// <returns>是否设置成功</returns>
|
||||||
public abstract bool SetDatas(byte belongAddress, byte functionCode, string startAddress, object[] setContents);
|
public abstract bool SetDatas(byte belongAddress, string startAddress, object[] setContents);
|
||||||
|
|
||||||
|
public abstract DateTime GetTime(byte belongAddress);
|
||||||
|
|
||||||
|
public abstract bool SetTime(byte belongAddress, DateTime setTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,12 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Runtime.Remoting.Messaging;
|
using System.Runtime.Remoting.Messaging;
|
||||||
|
|
||||||
|
internal enum ModbusProtocalVariableFunctionCode : byte
|
||||||
|
{
|
||||||
|
ReadVariable = 20,
|
||||||
|
WriteVariable = 21,
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 跟时间有关的功能码
|
/// 跟时间有关的功能码
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -9,7 +15,7 @@ internal enum ModbusProtocalTimeFunctionCode : byte
|
|||||||
{
|
{
|
||||||
GetSystemTime = 3,
|
GetSystemTime = 3,
|
||||||
SetSystemTime = 16,
|
SetSystemTime = 16,
|
||||||
};
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 跟读数据有关的功能码
|
/// 跟读数据有关的功能码
|
||||||
@@ -41,11 +47,12 @@ namespace ModBus.Net
|
|||||||
#region 读PLC数据
|
#region 读PLC数据
|
||||||
public class ReadDataInputStruct : InputStruct
|
public class ReadDataInputStruct : InputStruct
|
||||||
{
|
{
|
||||||
public ReadDataInputStruct(byte belongAddress, ModbusProtocalReadDataFunctionCode functionCode, string startAddress, ushort getCount)
|
public ReadDataInputStruct(byte belongAddress, string startAddress, ushort getCount)
|
||||||
{
|
{
|
||||||
BelongAddress = belongAddress;
|
BelongAddress = belongAddress;
|
||||||
FunctionCode = (byte)functionCode;
|
KeyValuePair<int, int> translateAddress = AddressTranslator.Instance.AddressTranslate(startAddress, true);
|
||||||
StartAddress = AddressTranslator.Instance.AddressTranslate(startAddress);
|
FunctionCode = (byte)translateAddress.Value;
|
||||||
|
StartAddress = (ushort)translateAddress.Key;
|
||||||
GetCount = getCount;
|
GetCount = getCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,11 +110,12 @@ namespace ModBus.Net
|
|||||||
#region 写PLC数据
|
#region 写PLC数据
|
||||||
public class WriteDataInputStruct : InputStruct
|
public class WriteDataInputStruct : InputStruct
|
||||||
{
|
{
|
||||||
public WriteDataInputStruct(byte belongAddress, ModbusProtocalWriteDataFunctionCode functionCode, string startAddress, object[] writeValue)
|
public WriteDataInputStruct(byte belongAddress, string startAddress, object[] writeValue)
|
||||||
{
|
{
|
||||||
BelongAddress = belongAddress;
|
BelongAddress = belongAddress;
|
||||||
FunctionCode = (byte)functionCode;
|
KeyValuePair<int, int> translateAddress = AddressTranslator.Instance.AddressTranslate(startAddress, false);
|
||||||
StartAddress = AddressTranslator.Instance.AddressTranslate(startAddress);
|
FunctionCode = (byte)translateAddress.Value;
|
||||||
|
StartAddress = (ushort)translateAddress.Key;
|
||||||
WriteCount = (ushort)writeValue.Length;
|
WriteCount = (ushort)writeValue.Length;
|
||||||
WriteByteCount = 0;
|
WriteByteCount = 0;
|
||||||
WriteValue = writeValue.Clone() as object[];
|
WriteValue = writeValue.Clone() as object[];
|
||||||
|
|||||||
@@ -72,11 +72,11 @@ namespace ModBus.Net
|
|||||||
ModbusType = (ModbusType) connectionType;
|
ModbusType = (ModbusType) connectionType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override byte[] GetDatas(byte belongAddress, byte functionCode, string startAddress, ushort getCount)
|
public override byte[] GetDatas(byte belongAddress, string startAddress, int getCount)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var inputStruct = new ReadDataInputStruct(belongAddress, (ModbusProtocalReadDataFunctionCode)functionCode, startAddress, getCount);
|
var inputStruct = new ReadDataInputStruct(belongAddress, startAddress, getCount % 2 == 0 ? (ushort)(getCount / 2) : (ushort)(getCount / 2 + 1));
|
||||||
var outputStruct =
|
var outputStruct =
|
||||||
Wrapper.SendReceive(Wrapper["ReadDataModbusProtocal"], inputStruct) as ReadDataOutputStruct;
|
Wrapper.SendReceive(Wrapper["ReadDataModbusProtocal"], inputStruct) as ReadDataOutputStruct;
|
||||||
return outputStruct.DataValue;
|
return outputStruct.DataValue;
|
||||||
@@ -87,12 +87,11 @@ namespace ModBus.Net
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool SetDatas(byte belongAddress, byte functionCode, string startAddress, object[] setContents)
|
public override bool SetDatas(byte belongAddress, string startAddress, object[] setContents)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var inputStruct = new WriteDataInputStruct(belongAddress,
|
var inputStruct = new WriteDataInputStruct(belongAddress, startAddress, setContents);
|
||||||
(ModbusProtocalWriteDataFunctionCode) functionCode, startAddress, setContents);
|
|
||||||
var outputStruct =
|
var outputStruct =
|
||||||
Wrapper.SendReceive(Wrapper["WriteDataModbusProtocal"], inputStruct) as
|
Wrapper.SendReceive(Wrapper["WriteDataModbusProtocal"], inputStruct) as
|
||||||
WriteDataOutputStruct;
|
WriteDataOutputStruct;
|
||||||
@@ -104,5 +103,37 @@ namespace ModBus.Net
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override DateTime GetTime(byte belongAddress)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var inputStruct = new GetSystemTimeInputStruct(belongAddress);
|
||||||
|
var outputStruct =
|
||||||
|
Wrapper.SendReceive(Wrapper["GetSystemTimeModbusProtocal"], inputStruct) as
|
||||||
|
GetSystemTimeOutputStruct;
|
||||||
|
return outputStruct.Time;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
return DateTime.MinValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool SetTime(byte belongAddress, DateTime setTime)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var inputStruct = new SetSystemTimeInputStruct(belongAddress, setTime);
|
||||||
|
var outputStruct =
|
||||||
|
Wrapper.SendReceive(Wrapper["SetSystemTimeModbusProtocal"], inputStruct) as
|
||||||
|
SetSystemTimeOutputStruct;
|
||||||
|
return outputStruct.WriteCount > 0;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ namespace NA200H.UI.ConsoleApp
|
|||||||
//第一步:先生成一个输入结构体,然后向这个结构体中填写数据
|
//第一步:先生成一个输入结构体,然后向这个结构体中填写数据
|
||||||
AddressTranslator.CreateTranslator(new AddressTranslatorNA200H());
|
AddressTranslator.CreateTranslator(new AddressTranslatorNA200H());
|
||||||
|
|
||||||
ReadDataInputStruct readCoilStatusInputStruct = new ReadDataInputStruct(0x02, ModbusProtocalReadDataFunctionCode.ReadCoilStatus, "N1", 0x0a);
|
ReadDataInputStruct readCoilStatusInputStruct = new ReadDataInputStruct(0x02, "N1", 0x0a);
|
||||||
//第二步:再生成一个输出结构体,执行相应协议的发送指令,并将输出信息自动转换到输出结构体中
|
//第二步:再生成一个输出结构体,执行相应协议的发送指令,并将输出信息自动转换到输出结构体中
|
||||||
ReadDataOutputStruct readCoilStatusOutputStruct = (ReadDataOutputStruct)wrapper.SendReceive(wrapper["ReadDataModbusProtocal"], readCoilStatusInputStruct);
|
ReadDataOutputStruct readCoilStatusOutputStruct = (ReadDataOutputStruct)wrapper.SendReceive(wrapper["ReadDataModbusProtocal"], readCoilStatusInputStruct);
|
||||||
//第三步:读取这个输出结构体的信息。
|
//第三步:读取这个输出结构体的信息。
|
||||||
@@ -74,7 +74,7 @@ namespace NA200H.UI.ConsoleApp
|
|||||||
Console.Read();
|
Console.Read();
|
||||||
Console.Read();
|
Console.Read();
|
||||||
|
|
||||||
ReadDataInputStruct readHoldRegisterInputStruct = new ReadDataInputStruct(0x02, ModbusProtocalReadDataFunctionCode.ReadHoldRegister, "NW1", 4);
|
ReadDataInputStruct readHoldRegisterInputStruct = new ReadDataInputStruct(0x02, "NW1", 4);
|
||||||
ReadDataOutputStruct readHoldRegisterOutputStruct = (ReadDataOutputStruct)wrapper.SendReceive(wrapper["ReadDataModbusProtocal"], readHoldRegisterInputStruct);
|
ReadDataOutputStruct readHoldRegisterOutputStruct = (ReadDataOutputStruct)wrapper.SendReceive(wrapper["ReadDataModbusProtocal"], readHoldRegisterInputStruct);
|
||||||
ushort[] array2 =
|
ushort[] array2 =
|
||||||
ValueHelper.Instance.ObjectArrayToDestinationArray<ushort>(
|
ValueHelper.Instance.ObjectArrayToDestinationArray<ushort>(
|
||||||
@@ -88,7 +88,7 @@ namespace NA200H.UI.ConsoleApp
|
|||||||
Console.Read();
|
Console.Read();
|
||||||
Console.Read();
|
Console.Read();
|
||||||
|
|
||||||
WriteDataInputStruct writeMultiCoilInputStruct = new WriteDataInputStruct(0x02, ModbusProtocalWriteDataFunctionCode.WriteMultiCoil, "Q20", new object[] { true, false, true, true, false, false, true, true, true, false });
|
WriteDataInputStruct writeMultiCoilInputStruct = new WriteDataInputStruct(0x02, "Q20", new object[] { true, false, true, true, false, false, true, true, true, false });
|
||||||
WriteDataOutputStruct writeMultiCoilOutputStruct = (WriteDataOutputStruct)wrapper.SendReceive(wrapper["WriteDataModbusProtocal"], writeMultiCoilInputStruct);
|
WriteDataOutputStruct writeMultiCoilOutputStruct = (WriteDataOutputStruct)wrapper.SendReceive(wrapper["WriteDataModbusProtocal"], writeMultiCoilInputStruct);
|
||||||
Console.WriteLine(writeMultiCoilOutputStruct.StartAddress);
|
Console.WriteLine(writeMultiCoilOutputStruct.StartAddress);
|
||||||
Console.WriteLine(writeMultiCoilOutputStruct.WriteCount);
|
Console.WriteLine(writeMultiCoilOutputStruct.WriteCount);
|
||||||
@@ -96,7 +96,7 @@ namespace NA200H.UI.ConsoleApp
|
|||||||
Console.Read();
|
Console.Read();
|
||||||
Console.Read();
|
Console.Read();
|
||||||
|
|
||||||
WriteDataInputStruct writeMultiRegisterInputStruct = new WriteDataInputStruct(0x02, ModbusProtocalWriteDataFunctionCode.WriteMultiRegister, "NW1", new object[] { (ushort)25, (ushort)18, (ushort)17 });
|
WriteDataInputStruct writeMultiRegisterInputStruct = new WriteDataInputStruct(0x02, "NW1", new object[] { (ushort)25, (ushort)18, (ushort)17 });
|
||||||
WriteDataOutputStruct writeMultiRegisterOutputStruct = (WriteDataOutputStruct)wrapper.SendReceive(wrapper["WriteDataModbusProtocal"], writeMultiRegisterInputStruct);
|
WriteDataOutputStruct writeMultiRegisterOutputStruct = (WriteDataOutputStruct)wrapper.SendReceive(wrapper["WriteDataModbusProtocal"], writeMultiRegisterInputStruct);
|
||||||
Console.WriteLine(writeMultiRegisterOutputStruct.StartAddress);
|
Console.WriteLine(writeMultiRegisterOutputStruct.StartAddress);
|
||||||
Console.WriteLine(writeMultiRegisterOutputStruct.WriteCount);
|
Console.WriteLine(writeMultiRegisterOutputStruct.WriteCount);
|
||||||
|
|||||||
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/3Add.prj
Normal file
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/3Add.prj
Normal file
Binary file not shown.
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/MAIN.ld
Normal file
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/MAIN.ld
Normal file
Binary file not shown.
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/MAIN.ldo
Normal file
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/MAIN.ldo
Normal file
Binary file not shown.
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/MAIN.nal
Normal file
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/MAIN.nal
Normal file
Binary file not shown.
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/MAIN.o
Normal file
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/MAIN.o
Normal file
Binary file not shown.
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/MAIN.tag
Normal file
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/MAIN.tag
Normal file
Binary file not shown.
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/myvar.o
Normal file
BIN
Modbus.Net/NA200H.UI.WPF/3Add_NAPro5.0/myvar.o
Normal file
Binary file not shown.
@@ -21,7 +21,9 @@ namespace NA200H.UI.WPF
|
|||||||
private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
|
private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
utility = new ModbusUtility((int) ModbusType.Tcp, "192.168.3.247");
|
utility = new ModbusUtility((int) ModbusType.Tcp, "192.168.3.247");
|
||||||
byte[] getNum = utility.GetDatas(0x02, (byte) ModbusProtocalReadDataFunctionCode.ReadHoldRegister, "10000", 4);
|
AddressTranslator.CreateTranslator(new AddressTranslatorNA200H());
|
||||||
|
//byte[] getNum = utility.GetDatas(0x02, "03:10000", 8);
|
||||||
|
byte[] getNum = utility.GetDatas(0x02, "NW1", 8);
|
||||||
object[] getNumObjects =
|
object[] getNumObjects =
|
||||||
ValueHelper.Instance.ByteArrayToObjectArray(getNum,
|
ValueHelper.Instance.ByteArrayToObjectArray(getNum,
|
||||||
new List<KeyValuePair<Type, int>>(){{new KeyValuePair<Type, int>(typeof(ushort), 4)}});
|
new List<KeyValuePair<Type, int>>(){{new KeyValuePair<Type, int>(typeof(ushort), 4)}});
|
||||||
@@ -43,9 +45,11 @@ namespace NA200H.UI.WPF
|
|||||||
ushort.TryParse(Add1.Text, out add1);
|
ushort.TryParse(Add1.Text, out add1);
|
||||||
ushort.TryParse(Add2.Text, out add2);
|
ushort.TryParse(Add2.Text, out add2);
|
||||||
ushort.TryParse(Add3.Text, out add3);
|
ushort.TryParse(Add3.Text, out add3);
|
||||||
utility.SetDatas(0x02, (byte)ModbusProtocalWriteDataFunctionCode.WriteMultiRegister, "10000", new object[] {add1, add2, add3});
|
//utility.SetDatas(0x02, "16:10000", new object[] {add1, add2, add3});
|
||||||
|
utility.SetDatas(0x02, "NW1", new object[] { add1, add2, add3 });
|
||||||
Thread.Sleep(100);
|
Thread.Sleep(100);
|
||||||
byte[] getNum = utility.GetDatas(0x02, (byte)ModbusProtocalReadDataFunctionCode.ReadHoldRegister, "10000", 4);
|
//byte[] getNum = utility.GetDatas(0x02, "03:10000", 8);
|
||||||
|
byte[] getNum = utility.GetDatas(0x02, "NW1", 8);
|
||||||
object[] getNumObjects =
|
object[] getNumObjects =
|
||||||
ValueHelper.Instance.ByteArrayToObjectArray(getNum, new KeyValuePair<Type, int>(typeof(ushort), 4));
|
ValueHelper.Instance.ByteArrayToObjectArray(getNum, new KeyValuePair<Type, int>(typeof(ushort), 4));
|
||||||
ushort[] getNumUshorts = ValueHelper.Instance.ObjectArrayToDestinationArray<ushort>(getNumObjects);
|
ushort[] getNumUshorts = ValueHelper.Instance.ObjectArrayToDestinationArray<ushort>(getNumObjects);
|
||||||
|
|||||||
Reference in New Issue
Block a user