RS485串口服务器实现Modbus-RTU转Modbus-TCP采集串口设备数据

原创
2020/05/15 09:48
阅读数 5K

回顾一下当时踩的坑:我计划是把采集电量这个任务也挂到NAS上(DS218+)。于是把采集数据的RS485(Modbus-RUT转)USB连接到NAS的USB口,发现调用不到,一查NAS上有4个串口,然后没有一个能用,找商家一问:Nas的USB口只支持存储设备,其他不支持。结果很明显,不能用NAS跑采集任务。

于是我在某宝上找到了一款RS485串口服务器,它天生就是为了填平我踩的这个坑:因为它能完成Modbus-RTU到Modbus-TCP透明转换,实现通过网络方式读取串口设备数据。

经过2天的等待今天收到RS485串口服务器,跟我认识的USB有线网卡好像呢

使用RS485串口服务器定制的特殊的连接线,连接方式简单易懂。从上图即可看出来,需要注意的地方就是连接线C端,它是RS485的引线用于连接串口设备的,根据标识连接对应接口即可(分别是地线、VCC、A、B),当时店家说RS串口服务器要单独供电,12V1A。我直接就用串口设备供电(5V)也能正常跑就不管单独供电了,如果通讯距离远可能还是要单独供电。

连线接好之后,打开店家发过来的工具软件,找到IP地址,就可以用WEB的方式管理了。

在WEB管理后台主要就是配置了串口设置的波特率和协议两项参数。

后面就是敲代码了。

import modbus_tk.modbus_tcp as mt

import modbus_tk.defines as md

master = mt.TcpMaster("RS485串口服务器IP地址", 8899)#这个商口是默认端口

master.set_timeout(1.0)

result= master.execute(slave=1, function_code=md.READ_INPUT_REGISTERS, starting_address=0,quantity_of_x=9)

slave:从机编号,用1即可,如果有多个就是搞清楚

function_code:Modbus-TCP功能码

starting_address:要读取的寄存器地址

quantity_of_x:要读取寄存器个数

就三行代码就已经读出结果,但是结果需要二次加工才能使用的。否则数据就会不正确。

未完待续……

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部