【发布时间】:2021-04-07 02:47:18
【问题描述】:
我在通过 Modbus RTU 进行通信时遇到问题。首先对不起我的英语;):
- 我正在使用 RS485 Pi SN65HVD72 连接 MultiCONT PRD-28-2。我在这个指令中做了所有的事情:https://www.abelectronics.co.uk/kb/article/1035/raspberry-pi-3-serial-port-usage
config.txt 更改:
- toverlay=pi3-miniuart-bt
- enable_uart=1
在这一步之后,我的 /dev 的配置如下所示:
- lrwxrwxrwx 1 root root 7 gru 30 15:03 serial0 -> ttyAMA0
- lrwxrwxrwx 1 root root 5 gru 30 15:03 serial1 -> ttyS0
- 在 MultiCONT PRD-28-2 中,我将 RS485 选项更改为:
- 协议:Modbus
- 奇偶校验:奇数
- 停止位:1 位
- Python 代码:
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
import logging
FORMAT = ('%(asctime)-15s %(threadName)-15s'
' %(levelname)-8s %(module)-15s:%(lineno)-8s %(message)s')
logging.basicConfig(format=FORMAT)
log = logging.getLogger()
log.setLevel(logging.DEBUG)
#multicont = ModbusClient(method='rtu',port='/dev/serial0',stopbits=1,bytsize=8,parity='N',baudrate=9600,timeout=1,strict=False)
multicont = ModbusClient(method='rtu',port='/dev/serial0',stopbits=1,bytsize=8,parity='O',baudrate=9600,timeout=1,strict=False)
connection = multicont.connect()
print(connection)
value = multicont.read_coils(1,15,unit=1)
log.debug(value)
- 错误信息:
Modbus 错误:[输入/输出] Modbus 错误:[无效消息] 收到不完整的消息,预计至少 2 个字节(收到 0 个)
- 日志:
2020-12-30 16:24:51,992 主线程调试事务:118
当前事务状态 - IDLE
2020-12-30 16:24:51,992 MainThread DEBUG 事务:123 正在运行的事务 1
2020-12-30 16:24:51,992 MainThread DEBUG 事务
:230 发送:0x1 0x1 0x0 0x1 0x0 0xf 0x2d 0xce
2020-12-30 16:24:51,993 主线程调试同步:75 新 事务状态 'SENDING'
2020-12-30 16:24:51,993 MainThread
调试事务:239 更改事务状态 “正在发送”到“等待回复”
2020-12-30 16:24:52,995 MainThread DEBUG 事务:253 事务失败。 (Modbus 错误:[无效消息] 收到不完整的消息,预期 至少 2 个字节(已接收 0 个))
2020-12-30 16:24:52,995 MainThread DEBUG rtu_framer:241 帧 - [b''] 不是 准备就绪
2020-12-30 16:24:52,996 主线程调试
交易:409 获得交易1
2020-12-30 16:24:52,996 主线程调试事务:204
将事务状态从“处理回复”更改为 'TRANSACTION_COMPLETE'
2020-12-30 16:24:52,996 主线程
调试通信:20 Modbus 错误:[输入/输出] Modbus 错误:[无效消息]收到不完整的消息,预计在 至少 2 个字节(收到 0 个)
【问题讨论】: