bg

轮询并将 MODBUS RTU 设备数据记录到 PostgreSQL

从 MODBUS RTU 串口设备读取数据并将解析后的数值直接导出到 PostgreSQL 数据库的完整指南,支持自定义数据库结构。

1. 协议配置:MODBUS RTU

通信类型: 主动轮询(RS485/COM上的主站/从站)

由于MODBUS以二进制格式传输数据,解析器必须提取特定的保持寄存器(例如40001)或输入寄存器。如果您的传感器使用32位浮点数,请配置解析器读取两个相邻的16位寄存器,并应用正确的字节交换(字节序)来重建浮点数。

应用此基础配置进行串行连接:

{
  "port": "COM3",
  "baud_rate": 9600,
  "data_bits": 8,
  "stop_bits": 1,
  "parity": "none",
  "protocol": "modbus_rtu_serial",
  "poll_interval_ms": 1000
}
用于查询和解析数据的MODBUS RTU插件选择

用于查询和解析数据的MODBUS RTU插件选择

MODBUS RTU查询队列:用于读取不同寄存器的自定义配置

MODBUS RTU查询队列:用于读取不同寄存器的自定义配置

准备好将 MODBUS RTU 连接到 PostgreSQL 了吗?

2. 数据库设置:PostgreSQL

在运行 Advanced Serial Data Logger 的服务器上安装 PostgreSQL ODBC 驱动程序(psqlODBC)。创建系统 DSN 或在 SQL Database Professional 插件中使用直接连接字符串,如 192.168.1.100:mydatabase。

使用以下 SQL 脚本创建目标表。 确保您的用户角色对目标架构具有 INSERT 权限。使用 NUMERIC 数据类型以防止原始传感器数据的浮点精度损失。

CREATE TABLE rs232_logs (
  id SERIAL PRIMARY KEY,
  log_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  device_name VARCHAR(50),
  extracted_value NUMERIC(10, 2)
);
PostgreSQL 数据库连接器选择。

PostgreSQL 数据库连接器选择。

PgSQL 数据库连接设置。

PgSQL 数据库连接设置。

用于将数据插入表的 SQL 队列。

用于将数据插入表的 SQL 队列。

3. 协议特定故障排除

  • 超时或CRC错误: 与TCP不同,串行MODBUS RTU依赖于严格的时序。请确认RS485 A/B导线未反接,并且软件中的波特率和设备ID与从站设备完全匹配。
  • 设备返回“非法地址”错误代码: 请尝试在MODBUS请求中使用功能码3而非功能码4。否则,请确认您使用的是正确的寄存器地址。请尝试指定绝对偏移量(而非逻辑地址如40001)。
  • 我有多个值想要导出到一行数据中。但现在记录器每行只写一个值: 您需要在MODBUS插件设置中启用“一次性导出所有数据”选项。

4. 数据库特定故障排除

  • 致命错误:密码认证失败: 验证您的 pg_hba.conf 文件是否允许来自 Data Logger IP 地址的连接(如果是远程),以及认证方法是否设置为 md5 或 scram-sha-256。
  • 我的数据库中每个记录都有两条时间戳相同的相似记录: 验证您没有同时使用两个数据导出插件。例如 ODBC Database 和 SQL Database Pro,因为它们可以并行导出您的数据。
  • 我已安装 ODBC 驱动程序并创建了 DSN,但您的软件不允许我选择它。: 我们的软件需要 32 位 ODBC 驱动程序。因此,您应该安装此版本的驱动程序以在 32 位 ODBC 管理器中创建 DSN。您可以使用「ODBC Database」插件中的「Setup」按钮来执行此操作。

准备好将 MODBUS RTU 连接到 PostgreSQL 了吗?

软件产品 购买程序 下载 支持区域 联系人 网站地图
版权所有 © 1999 - 2026, AGG Software.
版权所有。. 使用条款 | 隐私政策