如何使用modbustk RTU(Python)设置简单的从站和主站

2024-05-20 00:37:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过Modbus协议在Raspberry PI(从机)和我的PC机(主)之间建立通信。目前,我正在使用modbus-tk(python)来设置通信协议。在

问题是主机无法从从机读取寄存器。我能知道我的代码有什么问题吗?我很困惑。在

我从Slave得到的错误是:
Handle request failed: Invalid CRC in request or Request length is invalid

我从Master得到的错误是:
ModbusInvalidResponseError

注:目的是使用主机从机读取数据。在

下面是奴隶的代码:

import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
import serial
import time  

modbusServ = modbus_rtu.RtuServer(serial.Serial('/dev/ttyUSB0'),baudrate= 19200,
                 bytesize=8, parity='N', stopbits=1, xonxoff=0)
print("start")

modbusServ.start()

slave_1 = modbus_tk.modbus.Slave(1)

slave_1.add_block ( "1", modbus_tk.defines.HOLDING_REGISTERS, 1, 5)

aa= (1,2,3,4,5) # data in the register

while True:

    slave_1.set_values ("1", 1, aa)
    time.sleep(0.5)   

下面是主机的代码:

^{pr2}$

这是我用来连接我的Raspberry Pi和我的PC的USB-to-rs485设备的数据表和图片:
https://www.enika.cz/data/files/produkty/komponenty/mereni-a-regulace/UT-890A%20User%20manual.pdf

https://c.76.my/Malaysia/ut-890-usb-to-rs485-converter-belco-1605-07-belco@2569.jpg

非常感谢你的帮助。在


Tags: 代码inimporttimerequest错误serialraspberry
1条回答
网友
1楼 · 发布于 2024-05-20 00:37:55

即使从机通过COM端口连接,主机也不会从该端口读取数据。使用ttyUSB0而不是COM3完成读取。 这应该有助于你阅读数据。在

相关问题 更多 >