掌握modbus协议(Python)

**一、pymodbus Python modbus的协议的一种,仅知道支持Ubuntu系统**。

1、https://pymodbus.readthedocs.io/en/latest/
2、https://pymodbustcp.readthedocs.io/en/latest/examples/float_support.html
二、 modbus_tk python 的modbus协议栈,支持不同的操作系统
对寄存器的操作:
# 读保持寄存器
master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 16))
# 读输入寄存器
master.execute(1, cst.READ_INPUT_REGISTERS, 0, 16) # 读线圈寄存器
master.execute(1, cst.READ_COILS, 0, 16)
# 读离散输入寄存器
master.execute(1, cst.READ_DISCRETE_INPUTS, 0, 16)
# 单个读写寄存器操作
# 写寄存器地址为0的保持寄存器
master.execute(1, cst.WRITE_SINGLE_REGISTER, 0, output_value=21)
master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 1)
# 写寄存器地址为0的线圈寄存器,写入内容为0(位操作)
master.execute(1, cst.WRITE_SINGLE_COIL, 0, output_value=0)
master.execute(1, cst.READ_COILS, 0, 1)
# 多个寄存器读写操作
# 写寄存器起始地址为0的保持寄存器,操作寄存器个数为4
master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 0, output_value=[0,0,0,0])
master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 4)
# 写寄存器起始地址为0的线圈寄存器
master.execute(1, cst.WRITE_MULTIPLE_COILS, 0, output_value=[0,0,0,0])
master.execute(1, cst.READ_COILS, 0, 4)
参数的说明:
slaver 从机地址 modbus TCP时可以忽略该参数
function_code 功能码 modbus_tk.modbus_tcp中定义
starting_address 寄存器起始地址 可设定
quantity_of_x 寄存器数量 可设定
output_value 输出内容 读操作是无效,写操作是输入为List类型
data_format="" 数据格式

猜你喜欢

转载自blog.csdn.net/ailianda/article/details/85910324