前言
本文将使用一个NuGet公开的组件技术来实现一个ModBus RTU的客户端,方便的对Modbus rtu的服务器进行读写,这个服务器可以是电脑端C#设计的,也可以是PLC实现的,也可以是其他任何支持这个通信协议的服务器。
github地址:https://github.com/dathlin/HslCommunication 如果喜欢可以star或是fork,还可以打赏支持。
在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台输入下面的指令安装:
Install-Package HslCommunication
NuGet安装教程 http://www.cnblogs.com/dathlin/p/7705014.html
组件API地址:http://www.cnblogs.com/dathlin/p/7703805.html
特别感谢
- 网友:陈恩富 对float,int数据的读取测试,才修复了权重位颠倒的BUG。
- 网友:U4幸福的蜗牛 发现了博客上错误的一个方法名称,已于2018年1月8日13:34:39更新。并反馈了一些特殊设备(modbus tcp服务器)的读取数据的BUG。已修复。
随便聊聊
此处的设计模式是客户端主动请求服务器数据,然后接收服务器的反馈数据,支持原生的指令收发,支持其他一些方便的API收发。特殊功能码需要使用原生收发的API,本组件支持如下的功能操作:
- 0x01 读取线圈的操作,
- 0x02 读取离散的操作,
- 0x03 读取寄存器的值,
- 0x05 写一个线圈操作,
- 0x06 写一个寄存器值,
- 0x0F 批量写线圈操作,
- 0x10 批量写寄存器值,
如果你的设备需要这些功能之外的数据,可以使用原生API方法,但是这个方法的前提就是你对MODBUS 协议非常清晰才可以,如果你不了解这个协议,可以参照下面的博客说明:
http://blog.csdn.net/thebestleo/article/details/52269999
如果你需要搭建自己的ModBus服务器,可以参照这边文章:http://www.cnblogs.com/dathlin/p/7782315.html
访问测试项目
需要下载一个串口虚拟的软件
Virtual Serial Port Driver
下载地址:https://virtual-serial-port-driver.en.softonic.com/
然后虚拟化两个串口出来,COM4 ,COM5 默认是连接在一起的。这样我们就可以进行本地的测试了
在你开发自己的客户端程序之前,可以先用MODBUS测试工具进行测试,以下地址的一个开源项目就是基于这个组件开发的Modbus rtu测试工具,可直接用于读写测试。
ModbusTcpServer.zip 先启动服务,然后启动串口
下面的一个项目是这个组件的访问测试项目,您可以进行初步的访问的测试,免去了您写测试程序的麻烦,这个项目是和三菱,西门子PLC的访问写在一起的。可以同时参考。
下载地址为:HslCommunicationDemo.zip