首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用USB接口与libmodbus或pymodbus连接的两台PC机之间的Modbus仿真

使用USB接口与libmodbus或pymodbus连接的两台PC机之间的Modbus仿真
EN

Stack Overflow用户
提问于 2021-06-10 10:40:32
回答 1查看 427关注 0票数 1

我正在尝试连接到PC机(一个主从机),它们将使用modbus协议相互通信,我想使用pymodbus (Python)或libmodbus (C++)来实现这一点,但是我对Modbus相对来说还是比较新的,所以我不知道从哪里开始。我已经用pymodbusTCP构建了一个Modbus服务器,但我不知道如何使用pymodbusTCP与另一台PC进行通信。

我编写了以下代码:

代码语言:javascript
复制
#!/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")

当我从本地主机(作为奴隶)连接时,我能够连接。

代码语言:javascript
复制
>>> from pyModbusTCP.client import ModbusClient
>>> 
>>> client = ModbusClient(host="127.0.0.1", port=12345)
>>> client.open()
True
>>>

我要做什么来连接两台PC,一台作为主人,另一台作为奴隶?

我怎样才能给线圈写信来实现这一点呢?

任何帮助都会很高兴的。

注意事项:环境为Ubuntu20.04

EN

回答 1

Stack Overflow用户

发布于 2021-06-14 11:19:12

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

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

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

,最好的开始方式是查看示例。下载、编辑端口(默认情况下为5020)并从服务器示例回购中运行GitHub,并通过以下方式从客户端运行一些查询:

代码语言:javascript
复制
rr = client.read_coils(1, 1, unit=0x01)
print(rr.registers)

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

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

在您掌握了pymodbus的一些能力之后,libmodbus应该非常简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67919541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档