0

我已成功将 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 -适配器组件输入数据

有什么建议吗?

4

1 回答 1

0

查看日志 /greengrass/v2/logs/aws.greengrass.Modbus.log 后,我很快意识到这是 pi 的权限问题。我能够使用端口的 sudo chmod 777 命令快速修复它。

于 2021-12-26T08:27:36.730 回答