NScada
文档中心 › 串口采集

RS-485/串口仪表数据采集到 Web 与 MQTT

分类:串口采集 · 2026-09-07 · nscada 技术团队

很多电表、称重仪表、流量计没有以太网口,只有 RS-232/RS-485 串口。把它们的数据采集到上位机 Web 或 MQTT 平台,通常需要三步:接线对上、协议说清、软件轮询。本文以 nscada 为例说明落地方法。

一、接线与端口参数

二、把“协议”变成点表

仪表协议一般就是:发送一帧请求(HEX),设备回一帧数据。nscada 的做法是把“读指令”配在设备上:

读指令:txHex = "01 03 00 00 00 02",CRC = crc16-modbus
点表:  地址 = 指令代号:响应字节偏移(如 R1:4 → float32)

点表地址格式:<指令代号>:<响应内偏移>,如 R1:0DATA:4;类型支持 bool/int16/uint16/int32/uint32/float32/float64,字节序 big/little 可配。

三、串口上的常见坑

  1. 串口占用冲突:一个串口只能被一个进程打开;多个采集任务共口必须串行——采集引擎对同串口做了事务互斥;
  2. 一帧读不全/粘帧:按“静默窗口”切帧(无新字节超过设定毫秒即认为一帧结束),响应边界可调;
  3. CRC 不匹配:核对是 CRC16-Modbus 还是和校验,nscada 支持发送前自动追加 none/crc16-modbus/sum8;
  4. 电平/驱动:RS-485 要 A/B 别接反,USB 转 485 线驱动装好。

四、从串口到 MQTT/HTTP

采集到数据后与网络设备并无差别:数据写本地 SQLite 的同时进入 Outbox 队列,由转发器发布到 MQTT 主题(如 cx/{deviceId}/data,支持 QoS)或 HTTP 批量上送。这样即使总线上某台仪表临时离线,其它设备照常采集,历史数据也不丢。

想直接体验?打开 在线 Demo下载软件
扫码加客服获取完整《部署与联调手册》
客服
扫码联系客服

扫码咨询