0

我的任务是开发一个用于测试设备的自动化系统。我有我的处置:

  • 树莓派 (3b+/4)
  • modbus 模块:icp con m - 7051D、m - 7055D、m-7061D 等。

首先我想了解,如何在 RPi 上实现 modbus 协议,它是如何工作的。为了做到这一点,我在 RPi 上使用了 pymodbus 库,它作为主机工作,在 PC 上使用了 modbusMAT,用于接收和解码来自 RPi 的指令。它们通过 rs-485 - USB 适配器连接。我写了一些简单的代码,用于编写线圈。RPi 正在与 PC 通信,但问题是,输出对我来说没有意义。

这是代码:

from pymodbus.client.sync import ModbusSerialClient as ModbusClient

client = ModbusClient(method = 'rtu', port='/dev/ttyUSB0', stopbits=1, bytesize = 8, parity='N', baurdrate = '9600', timeout=0.3)
connection = client.connect()
print (connection)

client.write_coils(1, 1, unit=0x01)

来自 modbusMat 控制台的屏幕截图

在此处输入图像描述

输出:

[9C][84][8C][E4][FF]
[9C][08][8C][B4][FF]
[9C][84][8C][E4][FF]
[38][18][18][8C][CA]

输出与我所做的参数更改有关。从上到下:

 address=1, values=1, unit=0x01
 address=2, values=1, unit=0x01
 address=1, values=2, unit=0x01
 address=1, values=1, unit=0x02

我的理解是,如果我将地址设置为 1,那么控制台上的地址字节应该是相同的 - [01],而不是 [9C]。

我之前设法通过 RS-485 而不是从 RPi 成功地从 PC 向 icp 模块(打开、关闭线圈)发送了一些指令。

4

0 回答 0