pymodbus tcp使用教程
pymodbus是一个Python编写的MODBUS通信协议库,支持RTU、ASCII和TCP三种传输方式。本文将介绍如何使用pymodbus进行TCP通信。
- 安装pymodbus
可以使用pip安装pymodbus,命令如下:
pip install pymodbus
- 创建Modbus TCP客户端
在代码中引入Modbus TCP客户端:
from pymodbus.client.sync import ModbusTcpClient
然后创建Modbus TCP客户端对象:
client = ModbusTcpClient('localhost', port=502)
其中,localhost为Modbus TCP服务器的IP地址,port为Modbus TCP服务器的端口号,默认为502。
- 连接Modbus TCP服务器
连接Modbus TCP服务器:
client.connect()
如果连接成功,返回True,否则返回False。
- 读取线圈状态
读取线圈状态,例如读取线圈0的状态:
result = client.read_coils(0, 1)
其中,0为线圈的地址,1为读取的线圈数量。
如果读取成功,result.bits[0]为线圈0的状态,返回True或False,否则返回一个Exception对象。
- 读取离散输入状态
读取离散输入状态,例如读取离散输入0的状态:
result = client.read_discrete_inputs(0, 1)
其中,0为离散输入的地址,1为读取的离散输入数量。
如果读取成功,result.bits[0]为离散输入0的状态,返回True或False,否则返回一个Exception对象。
- 读取保持寄存器的值
读取保持寄存器的值,例如读取保持寄存器0的值:
result = client.read_holding_registers(0, 1)
其中,0为保持寄存器的地址,1为读取的保持寄存器数量。
如果读取成功,result.registers[0]为保持寄存器0的值,否则返回一个Exception对象。
- 读取输入寄存器的值
读取输入寄存器的值,例如读取输入寄存器0的值:
result = client.read_input_registers(0, 1)
其中,0为输入寄存器的地址,1为读取的输入寄存器数量。
如果读取成功,result.registers[0]为输入寄存器0的值,否则返回一个Exception对象。
- 写入单个线圈状态
写入单个线圈状态,例如将线圈0的状态设置为True:
result = client.write_coil(0, True)
其中,0为线圈的地址,True为要写入的状态。
如果写入成功,返回True,否则返回一个Exception对象。
- 写入多个线圈状态
写入多个线圈状态,例如将线圈0、1、2的状态设置为True、False、True:
result = client.write_coils(0, [True, False, True])
其中,0为线圈的起始地址,[True, False, True]为要写入的状态列表。
如果写入成功,返回True,否则返回一个Exception对象。
- 写入单个保持寄存器的值
写入单个保持寄存器的值,例如将保持寄存器0的值设置为123:
result = client.write_register(0, 123)
其中,0为保持寄存器的地址,123为要写入的值。
如果写入成功,返回True,否则返回一个Exception对象。
- 写入多个保持寄存器的值
写入多个保持寄存器的值,例如将保持寄存器0、1、2的值设置为123、456、789:
result = client.write_registers(0, [123, 456, 789])
其中,0为保持寄存器的起始地址,[123, 456, 789]为要写入的值列表。
如果写入成功,返回True,否则返回一个Exception对象。
- 断开与Modbus TCP服务器的连接
断开与Modbus TCP服务器的连接:
client.close()
以上就是使用pymodbus进行TCP通信的基本操作。在实际应用中,需要根据具体的需求进行相应的读写操作。
原文地址: https://www.cveoy.top/t/topic/bI7M 著作权归作者所有。请勿转载和采集!