我已成功将 Greengrass Modbus 组件部署到我的 Raspberry pi 4B 并具有所需的依赖项。pi 通过 RS485 USB 加密狗连接到 Modbus 温度和湿度传感器。我确认我可以使用 Modpoll 命令行主模拟器工具成功读取保持寄存器,到目前为止一切都很可爱。可以通过路径“/dev/ttyUSB0”访问传感器。
我希望 Greengrass 将传感器上这些寄存器的值报告给 AWS IoTCore。
为了请求数据,我将负载从 AWS 代理发送到特定主题到 Greengrass 核心。在我的特殊情况下,主题是默认的“modbus/adapter/request”。我发送了以下有效载荷:
{
"request": {
"operation": "ReadHoldingRegistersRequest",
"device": 4,
"address": 1,
"count": 2
},
"id": "TestRequest"
}
我得到以下关于“modbus/adapter/response”主题的回复:
{
"response": {
"status": "fail",
"error_message": "Modbus Error: [Connection] Failed to connect[rtu baud[9600]]",
"error": "Exception",
"payload": {
"error": "Modbus Error: [Connection] Failed to connect[rtu baud[9600]]"
},
"operation": "ReadHoldingRegistersRequest",
"device": 4
},
"id": "TestRequest"
}
重申一下,我知道正确的端口,因为我可以使用命令行 Modbuspoll 读取保持寄存器。但是,使用该工具我可以指定更多参数,例如奇偶校验类型、波特率等……这似乎我不能在这里做。供大家参考,我在 Modpoll 上使用的参数如下:
Address: 4
Baud rate: 9600
Parity: none
Registers: 1 (or 40001 for PLC)
Path: /dev/ttyUSB0
供您参考,上述所有步骤都遵循本指南:https ://docs.aws.amazon.com/greengrass/v2/developerguide/modbus-rtu-protocol-adapter-component.html#modbus-rtu-protocol -适配器组件输入数据
有什么建议吗?