使用带有 libmodbus 或 pymodbus 的 USB 连接在两台 PC 之间进行 Modbus 模拟
Posted
技术标签:
【中文标题】使用带有 libmodbus 或 pymodbus 的 USB 连接在两台 PC 之间进行 Modbus 模拟【英文标题】:Modbus Simulation between two PCs using a USB connection with libmodbus or pymodbus 【发布时间】:2021-08-27 08:47:47 【问题描述】:我正在尝试连接到将使用 modbus 协议相互通信的 PC(一主一从),我想使用 pymodbus (Python) 或 libmodbus (C++) 来实现这一点,但我对 Modbus 相对较新我不知道从哪里开始。 我已经使用 pymodbusTCP 构建(我认为)一个 Modbus 服务器,但我不确定如何使用 pymodbusTCP 与另一台 PC 通信。
我已经写了下面给定的代码:
#!/bin/python
import sys
sys.path.append("..")
from pyModbusTCP.server import ModbusServer, DataBank
from time import sleep
from random import uniform
# Create an instance of ModbusServer
server = ModbusServer("127.0.0.1", 12345, no_block=True)
try:
print("Start server ...")
server.start()
print("Server is online")
while True:
continue
except:
print("Shutdown server ...")
server.stop()
print("Server is offline")
当我从本地主机(作为奴隶)连接时,我可以连接。
>>> from pyModbusTCP.client import ModbusClient
>>>
>>> client = ModbusClient(host="127.0.0.1", port=12345)
>>> client.open()
True
>>>
如何连接两台电脑,一台作为主机,另一台作为从机?
如何向线圈发送写入以实现这一点?
任何帮助将不胜感激。
注意:环境为 Ubuntu 20.04
【问题讨论】:
【参考方案1】:你在正确的轨道上,但你错过了几件事:
-对于服务器,需要定义和初始化Modbus寄存器和线圈。
-在客户端,您需要定义查询以读取这些寄存器和/或线圈。
Foy pymodbus,最好的开始方法是查看示例。下载、编辑端口(默认为 5020)并从 GitHub 存储库运行 server example 并从您的客户端运行一些查询:
rr = client.read_coils(1, 1, unit=0x01)
print(rr.registers)
您可以在任何async client examples 上找到其他类型的查询。
一旦您建立并运行客户端-服务器连接,您就可以查看服务器的详细信息,并可能定义更多具有不同 ID 的从站或设置具有更有意义值的寄存器。
在您熟练掌握 pymodbus 之后,libmodbus 应该非常简单。
【讨论】:
以上是关于使用带有 libmodbus 或 pymodbus 的 USB 连接在两台 PC 之间进行 Modbus 模拟的主要内容,如果未能解决你的问题,请参考以下文章