Modbus/TCP(标准协议)寄存器映射(新边缘节点)

本文件定义“新跨平台边缘节点”的 标准 Modbus/TCP(MBAP Header)对外寄存器映射。外部系统(PLC/DCS/上位机)只需按地址读写,不依赖旧版的 12 字节自定义帧。

1. 协议与连接

  • 传输:Modbus/TCP(标准 MBAP Header)
  • 默认端口:1502(推荐,Linux 下无需特权端口)
  • 可选端口:502(如现场强制要求,需要以 root/能力授权方式绑定)

多仪器约定:

  • 使用 MBAP Header 的 Unit Identifier(1 字节)区分仪器实例
  • 单仪器场景可固定 UnitId=1

通道分段约定:

  • base = channelIndex * 10000
  • 通道 0/1/2/3 分别使用 base=0/10000/20000/30000

2. 数据类型与字节序

  • uint16:一个 Holding Register
  • ascii2:每个 Holding Register 承载 2 个 ASCII 字符(高字节=第 1 个字符,低字节=第 2 个字符)
  • float32:使用 2 个 Holding Register(高字在前),每个寄存器内部高字节在前

3. Coils(01/05/15)

说明:

  • 读:Function 01
  • 写:Function 05/15(写入后由边缘节点映射为对仪器主站协议的下行命令)

状态位(读):

  • 10000:控温状态
  • 10001:分析/采集中状态
  • 10002:通道 0 采集态
  • 10003:通道 1 采集态
  • 10004:通道 2 采集态
  • 10005:通道 3 采集态
  • 10006:点火状态 1
  • 10007:点火状态 2
  • 10008:事件状态 bit1

控制位(写):

  • 10000:控温 开/关(映射主站命令 16/17)
  • 10001:全部样品分析 开/关(映射主站命令 18/19)
  • 10002..10005:通道 0..3 分析 开/关(映射主站命令 22/23)
  • 10006/10007:点火动作(映射主站命令 20)

4. Holding Registers(03/06/16)

4.1 StationId(全局,强约束)

设备标识(24 位 ASCII):

  • 地址:801 ~ 812(共 12 个寄存器)
  • 内容:24 字节 ASCII(每寄存器 2 字节)
  • 默认值与规范:见 docs/DEVICE_ID_STATIONID.md

4.2 通道快照(按 base 分段)

以下寄存器地址均指 base + offset

元信息:

  • 0..7:设备/通道描述(16 字节 ASCII,ascii2*8)
  • 8..15:状态文本(16 字节 ASCII,ascii2*8)
  • 16..21:采集时间 yyMMddHHmmss(12 字节 ASCII,ascii2*6)
  • 22:检测器标识 detMark(uint16)
  • 24:进样次数 injNo(uint16)
  • 25:峰数 peakCount(uint16)
  • 26..27:炉温/加热值 1(float32)
  • 28..29:炉温/加热值 2(float32)

峰表(建议):

  • 起始:1000
  • 每峰宽度:40 寄存器
  • 最大峰数:20(不足则后续峰记录全 0/空)

第 i 个峰(i = 0..19)基址:p = 1000 + i*40

  • p + 0..15:组分名(32 字节 ASCII)
  • p + 16..17:RT(float32,单位秒或分钟需在项目中统一)
  • p + 18..19:峰高(float32)
  • p + 20..21:面积(float32)
  • p + 22..23:面积百分比(float32,0~100)
  • p + 24..25:峰高百分比(float32,0~100)
  • p + 26..27:含量(float32)
  • p + 28..29:含量百分比(float32,0~100)

预留:

  • p + 30..39:预留扩展(后续加“状态/报警/定量单位/置信度”等)