NetCore下模拟和使用Modbus工业通信协议
2017-12-01 13:13
477 查看
Tips:
1、目前NetCore下与Modbus通信的框架主要选择了 Modbus.Net https://github.com/parallelbgls/Modbus.Net
2、modbus是常用的工业通信协议,在软件调试时可以通过modbus poll+slave模拟通信通过达到调试目的,下图是我使用软件
1)为串口模拟工具
2)为Modbus Slave模拟工具
3)为Modbus Poll模拟,修改对应Value值即可发送到Slave
调用和测试代码:
也可以使用Modbus-TCP Client Tester来模拟展现,可以写入或读写寄存器
1、目前NetCore下与Modbus通信的框架主要选择了 Modbus.Net https://github.com/parallelbgls/Modbus.Net
2、modbus是常用的工业通信协议,在软件调试时可以通过modbus poll+slave模拟通信通过达到调试目的,下图是我使用软件
1)为串口模拟工具
2)为Modbus Slave模拟工具
3)为Modbus Poll模拟,修改对应Value值即可发送到Slave
调用和测试代码:
public class ModbusTest { public Dictionary<string, ReturnUnit> GetModbusValues(List<AddressUnit> addresses, ModbusType connectType = ModbusType.Tcp, string connectString = "127.0.0.1") { var _modbusTcpMachine = new ModbusMachine(connectType, connectString, addresses, true, 2, 0); var result = _modbusTcpMachine.GetDatas(MachineGetDataType.Address); return result; } public bool SetModbusValues(List<AddressUnit> addresses, Dictionary<string, double> setDict, ModbusType connectType = ModbusType.Tcp, string connectString = "127.0.0.1") { var _modbusTcpMachine = new ModbusMachine(connectType, connectString, addresses, true, 2, 0); var result = _modbusTcpMachine.SetDatas(MachineSetDataType.Address, setDict); return result; } //获取测试 [Obsolete("固定写死的测试方法,临时测试用")] public void TestGetModbusValues() { var addresses = new List<AddressUnit>(); for (int i = 0; i < 6; i++) { addresses.Add(new AddressUnit { Id = "1", Area = "4X", Address = i + 1, DataType = typeof(ushort) }); } var _modbusTcpMachine = new ModbusMachine(ModbusType.RtuInTcp, "127.0.0.1", addresses, true, 2, 0); var result = _modbusTcpMachine.GetDatas(MachineGetDataType.Address); foreach (var item in result) { Console.WriteLine($"Key:{item.Key} Value:{item.Value.PlcValue}"); } } //设置测试 [Obsolete("固定写死的测试方法,临时测试用")] public void TestSetModbusValues() { var addresses = new List<AddressUnit>(); var setDict = new Dictionary<string, double>(); for (int i = 0; i < 6; i++) { addresses.Add(new AddressUnit { Id = "1", Area = "4X", Address = i + 1, DataType = typeof(ushort) }); var r = new Random(); var intValue = r.Next(0, 100); System.Threading.Thread.Sleep(100); setDict.Add($"4X {i + 1}.0", intValue); } var _modbusTcpMachine = new ModbusMachine(ModbusType.RtuInTcp, "127.0.0.1", addresses, true, 2, 0); _modbusTcpMachine.SetDatas(MachineSetDataType.Address, setDict); } }
也可以使用Modbus-TCP Client Tester来模拟展现,可以写入或读写寄存器
相关文章推荐
- ModBus通信协议的【Modbus RTU 协议使用汇总】
- Linux下使用多线程模拟异步网络通信
- 使用GPIO模拟I2C总线进行通信
- java socket使用udp协议与局域网群聊软件feiQ通信
- 使用C#实现基于TCP和UDP协议的网络通信程序的基本示例
- modbus通信协议
- 使用Socket模拟简单的C/S通信,客户端之间数据传输采用对象流
- ModBus通信协议的【主从模式】
- 模拟socket通信中自定义协议通信(编码/解码、成帧/界定帧)
- 51单片机模拟PS2协议制作5X5矩阵工业键盘
- Linux中使用C语言实现基于UDP协议的Socket通信示例
- 学习java多线程的笔记3-使用BlockingQueue阻塞队列来模拟两个线程之间的通信
- 轻量级通信引擎StriveEngine —— C/S通信demo(2) —— 使用二进制协议 (附源码)
- 使用lwip协议实现UDP通信
- 高通LK阶段使用模拟i2c--附i2c子协议smbus-protocol
- 使用Lua脚本为wireshark编写自定义通信协议解析器插件
- ModBus通信协议的【传输方式】
- 使用java模拟post协议实现图片上传
- 推荐2本学习Modbus通信协议的资料书
- 使用Lua脚本为wireshark编写自定义通信协议解析器插件