我正在尝试连接到PC机(一个主从机),它们将使用modbus协议相互通信,我想使用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,一台作为主人,另一台作为奴隶?
我怎样才能给线圈写信来实现这一点呢?
任何帮助都会很高兴的。
注意事项:环境为Ubuntu20.04
发布于 2021-06-14 11:19:12
你走在正确的轨道上,但你错过了几件事:
-For服务器,您需要定义和初始化Modbus寄存器和线圈。
-On客户机,您需要定义查询来读取这些寄存器和/或线圈。
,最好的开始方式是查看示例。下载、编辑端口(默认情况下为5020)并从服务器示例回购中运行GitHub,并通过以下方式从客户端运行一些查询:
rr = client.read_coils(1, 1, unit=0x01)
print(rr.registers)您可以在任何异步客户端示例上找到其他类型的查询。
一旦建立并运行了客户机-服务器连接,您就可以查看服务器的详细信息,并可能定义更多具有不同ID的从站或具有更有意义值的安装寄存器。
在您掌握了pymodbus的一些能力之后,libmodbus应该非常简单。
https://stackoverflow.com/questions/67919541
复制相似问题