pymodbus启动一个简单的modbus tcp client
pymodbus启动一个简单的modbus tcp client
文章目录
- 前言
- 实现
- 测试
前言
pymodbus是一个用Python实现的Modbus协议库,支持Modbus RTU、ASCII和TCP/IP通信。它提供了客户端(主站)和服务器(从站)的实现,适用于工业自动化、物联网(IoT)等场景。12
主要功能:
- 协议支持:兼容Modbus RTU、ASCII、TCP/IP。
- 同步/异步操作:支持同步和异步(基于asyncio)通信模式。
- 客户端与服务器:提供ModbusClient(主站)和ModbusServer(从站)的实现。
- 功能码覆盖:支持常用功能码如读取线圈(Read Coils)、写入寄存器(Write Registers)等。
实现
from pymodbus.client import ModbusTcpClient
import time# PCL 设备的 IP 地址和端口号
ip_address = "192.168.3.4"
port = 502# 建立 Modbus TCP 连接
client = ModbusTcpClient(host=ip_address, port= port)if client.connect():print("Modbus TCP client is running...")read_bool_data_x = 0write_bool_data_x = Truefor i in range(10):print("读取和写入循环第 %d 次" % (i + 1))slave_address = 1 # 设备的从站地址start_address = 300 # 起始地址num_registers = 1 # 要读取的寄存器数量try:read_response = client.read_coils(address = start_address, count = num_registers, device_id = slave_address)print(read_response)if not read_response.isError():read_bool_data_x = read_response.bits[0]print("读取的数据: %d", read_bool_data_x)else:print("读取数据时出错:", read_response)except Exception as e:print("发生异常:", str(e))try:write_response = client.write_coil(address = start_address, value = write_bool_data_x, device_id = slave_address)print(write_response)if not write_response.isError():# data = response.registersprint("写入的数据: %d", write_bool_data_x)else:print("写入数据时出错:", write_response)except Exception as e:print("发生异常:", str(e))if write_bool_data_x == False :write_bool_data_x = Trueelse:write_bool_data_x = Falsetime.sleep(2)# 关闭连接client.close()
else:print("无法连接到设备")
运行程序
"Python312\python.exe" e:/.../modbus_tcp_test/modbus_tcp_client.py
Modbus TCP client is running...
测试
这里使用Mthings作为modbus调试助手。3
Modbus协议及基于Python的ModbusTCP客户端实现_python modbus-CSDN博客 ↩︎
python使用pymodbus库进行modbus tcp通信-CSDN博客 ↩︎
MThings MODBUS上位机软件-CSDN博客 ↩︎