python中通过modbus_tcp协议如何获取数据

crystalordiamond 2019-03-19 11:56:03
小白求大佬指导: 今天刚接触Modbus_tcp协议,也都是在网上看的资料python代码。看了这些网上的代码,也知道了真实机器的IP和端口,显示能连接上,但是就是数据获取不了,这个execute(1, cst.READ_INPUT_REGISTERS, 10, 3)里面的参数,要怎么和下面excel表里面的数据对上啊。是不是不能这样直接获取。弄了好久了
...全文
2058 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
猫是这样的 2019-12-31
  • 打赏
  • 举报
回复
# -*- coding: utf_8 -*- import serial import modbus_tk.defines as cst from modbus_tk import modbus_rtu def mod(slaveID,option,startID): red = [] alarm = "" try: # 设定串口为从站 master = modbus_rtu.RtuMaster(serial.Serial(port='com7', baudrate=19200, bytesize=8, parity='N', stopbits=1)) master.set_timeout(5.0) master.set_verbose(True) # 读保持寄存器 red = master.execute(slaveID,option,startID,output_value=[28000,0]) # 这里可以修改需要读取的功能码 print(red) alarm = "正常" return list(red), alarm except Exception as exc: print(str(exc)) alarm = (str(exc)) return red, alarm ##如果异常就返回[],故障信息 if __name__ == "__main__": mod(1, cst.WRITE_MULTIPLE_REGISTERS, 12) #这是我modbusRTU与伺服电机通讯改写寄存器地址值的代码,和tcp应该差不多,参数的含义分别是从机地址、写多个寄存器、从第12个寄存器开始写,写的值是第12个寄存器值为28000,第13个寄存器值为0
jeky_zhang2013 2019-03-20
  • 打赏
  • 举报
回复
首先要弄清下面表格里面数据的含义,和方法参数的对应关系
crystalordiamond 2019-03-19
  • 打赏
  • 举报
回复
主要就是怎么获取数据的,怎么写代码,execute括弧里面的参数如何配置。

37,741

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧