0

我正在尝试连接到将使用 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
>>>

如何连接两台 PC,一台作为主机,另一台作为从机?

如何向线圈发送写入以实现这一点?

任何帮助将不胜感激。

注意:环境是 Ubuntu 20.04

4

1 回答 1

0

你在正确的轨道上,但你错过了几件事:

- 对于服务器,您需要定义和初始化 Modbus 寄存器和线圈。

- 在客户端,您需要定义查询以读取这些寄存器和/或线圈。

Foy pymodbus,最好的开始方法是查看示例。下载、编辑端口(默认为 5020)并从 GitHub存储库运行服务器示例,并从您的客户端运行一些查询:

rr = client.read_coils(1, 1, unit=0x01)
print(rr.registers)

您可以在任何异步客户端示例中找到其他类型的查询。

一旦建立并运行了客户端-服务器连接,您就可以查看服务器的详细信息,并可能定义更多具有不同 ID 的从站或设置具有更有意义值的寄存器。

在您熟练掌握 pymodbus 之后,libmodbus 应该非常简单。

于 2021-06-14T11:19:12.413 回答