pymodbus简单使用

pymodbus 是一个基于Python的开源Modbus协议实现库,主要用于工业自动化领域的设备通信。它支持Modbus RTU/ASCII over Serial(串口)及Modbus TCP/IP(以太网)协议,提供客户端(主站)和服务器(从站)功能,适用于PLC、传感器、仪表等设备的读写操作。其设计目标是为开发者提供轻量级、高灵活性的Modbus通信解决方案。

典型应用场景

  • 工业自动化:与PLC(如西门子、三菱)通信,采集温度、压力数据。
  • 能源监控:读取电表、水表的Modbus寄存器数据。
  • 物联网网关:通过TCP将串口设备接入云端。

连接设备:

from pymodbus.client import ModbusTcpClient
from pymodbus.bit_read_message import ReadCoilsResponse
from pymodbus.register_read_message import ReadInputRegistersResponse
from pymodbus.exceptions import ConnectionException      # 连接失败,用于异常处理

host = '127.0.0.1'#设备IP地址
port = 502
client = ModbusTcpClient(host,port)

if client.connect():
    print("Modbus RTU Client Connected")
else:
    print("Failed to connect to Modbus RTU Client")

读线圈

response = client.read_coils(address=1, count=5, unit=1)
if not response.isError():   
    print("coils Values: ", response.bits )
else:
    print("Failed to read registers")

写线圈:

write_response = client.write_coil(address=1, value=True, unit=1)#SM
if not write_response.isError():
    print("Written successfully")
else:
    print("Failed to write coils")

写多个线圈:

values = [True, False, False, True, False]
write_response = client.write_coils(address=1, values=values, unit=1)
if not write_response.isError():
    print("Multiple registers written successfully")
else:
    print("Failed to write multiple registers")

读寄存器:

response = client.read_holding_registers(address=1, count=5, unit=1)
if not response.isError():
    print("Register Values: ", response.registers)
else:
    print("Failed to read registers")

写寄存器:

write_response = client.write_register(address=41088, value=25, unit=1)
if not write_response.isError():
    print("Written successfully")
else:
    print("Failed to write register")

写多个寄存器:

values = [17,23, 40, 60, 80, 100]
write_response = client.write_registers(address=41088, values=values, unit=1)
if not write_response.isError():
    print("Multiple registers written successfully")
else:
    print("Failed to write multiple registers")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值