以下是使用 Python 和pymodbus库配置多个 Modbus 协议设备并上传数据的一个简单示例。此代码将连接到多个 Modbus 设备,并以一定周期推送数据。

本文介绍了一个使用Python和pymodbus库连接并周期性读取多个Modbus设备保持寄存器数据的示例,涉及设备配置、异常处理和日志记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下是使用 Python 和pymodbus库配置多个 Modbus 协议设备并上传数据的一个简单示例。此代码将连接到多个 Modbus 设备,并以一定周期推送数据。

首先,请确保已安装pymodbus库。可以通过以下命令安装:

pip  install  pymodbus   
然后,创建一个名为multi_modbus_example.py的 Python 文件,并将以下代码粘贴到文件中:

from  pymodbus.client.sync  import  ModbusTcpClient   
from  time  import  sleep   
import  logging

#  设置日志格式   
logging.basicConfig(level=logging.DEBUG,  format='%(asctime)s  %(levelname)s  [%(funcName)s]:  %(message)s')

#  设备  IP  地址和端口   
devices  =  [   
     ('192.168.1.10',  502),   
     ('192.168.1.20',  502),   
     ('192.168.1.30',  502)   
]

#  连接到  Modbus  设备   
clients  =  [ModbusTcpClient(ip,  port)  for  ip,  port  in  devices]

#  循环读取数据   
while  True:   
     for  client  in  clients:   
          try:   
             #  连接到设备   
             if  not  client.connect():   
                 logging.error(f"无法连接到设备  {client.ip}")   
                 continue

             #  读取数据   
             response  =  client.read_holding_registers(0,  10)   #  从地址  0  开始读取  10  个保持寄存器   
             if  not  response.isError():   
                 data  =  response.registers   
                 logging.debug(f"从  {client.ip}  读取数据:{data}")   
             else:   
                 logging.error(f"从  {client.ip}  读取数据时出错")

         except  Exception  as  e:   
             logging.error(f"从  {client.ip}  读取数据时出错:{e}")

         #  断开连接   
         client.close()

     #  等待一段时间   
     sleep(1)   
在上述代码中,您需要将devices列表中的 IP 地址和端口替换为您实际设备的地址。同时,您可以通过修改read_holding_registers方法的参数来更改要读取的寄存器数量。

运行代码后,它将以一定周期(在本例中为 1 秒)连接到指定的 Modbus 设备,并读取保持寄存器的值。如果读取成功,数据将显示在日志中。

请注意,这只是一个简单的示例,您可能需要根据实际需求对代码进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值