电磁流量计通讯协议
电磁流量计通讯协议适用于带有 RS485 通讯接口的智能电磁流量计,用于上位机、PLC、触摸屏、数据采集器、能源管理系统及工业物联网平台读取仪表测量数据和运行状态。
本通讯协议主要介绍电磁流量计的串口通讯参数、Modbus RTU 报文格式、常用功能码、寄存器数据类型、字节顺序、命令格式及通讯调试注意事项。
通讯接口
电磁流量计通常采用 RS485 半双工串行通讯接口,并使用 Modbus RTU 通讯协议。
RS485 总线支持多台仪表接入同一通讯网络。每台电磁流量计应设置唯一的通讯地址,避免因地址重复导致通讯冲突。
通讯接线时,应按照仪表接线端子标识连接 RS485 A、RS485 B及通讯地线。不同厂家对 A、B端子的命名可能存在差异,调试时应以仪表端子说明为准。
通讯参数
常用通讯参数如下:
| 参数 | 常用设置 |
|---|---|
| 通讯接口 | RS485 |
| 通讯协议 | Modbus RTU |
| 通讯方式 | 主从式半双工通讯 |
| 波特率 | 1200、2400、4800、9600、19200、38400 bps |
| 数据位 | 8位 |
| 停止位 | 1位或2位 |
| 校验方式 | 无校验、偶校验或奇校验 |
| 从机地址 | 1~247 |
| 数据编码 | 二进制RTU格式 |
上位机、PLC或数据采集器的通讯参数必须与电磁流量计内部设置保持一致。
Modbus RTU报文格式
Modbus RTU通讯报文通常由以下部分组成:
| 字段 | 长度 | 说明 |
|---|---|---|
| 从机地址 | 1字节 | 电磁流量计通讯地址 |
| 功能码 | 1字节 | 指定读取或写入操作 |
| 数据区 | 若干字节 | 寄存器地址、数量或数据内容 |
| CRC校验 | 2字节 | CRC16校验码,低字节在前 |
一帧通讯数据发送完成后,应保留符合Modbus RTU要求的帧间隔,避免仪表将前后两条命令识别为同一帧数据。
常用功能码
| 功能码 | 功能说明 |
|---|---|
| 03H | 读取保持寄存器 |
| 04H | 读取输入寄存器 |
| 06H | 写入单个保持寄存器 |
| 10H | 写入多个保持寄存器 |
不同型号电磁流量计开放的功能码可能不同。部分仪表仅允许读取测量数据,不允许通过通讯修改参数。
可读取数据
根据电磁流量计的型号和功能配置,通讯协议通常支持读取以下数据:
- 瞬时流量。
- 瞬时流量百分比。
- 正向累计流量。
- 反向累计流量。
- 净累计流量。
- 流速。
- 电流输出值。
- 频率输出值。
- 电极信号强度。
- 空管状态。
- 励磁状态。
- 报警状态。
- 测量方向。
- 仪表口径。
- 流量量程。
- 仪表系数。
- 阻尼时间。
- 通讯地址。
- 波特率及校验方式。
- 仪表运行状态和故障代码。
具体寄存器地址、数据长度、单位、倍率及读写权限,应以对应型号的电磁流量计寄存器映射表为准。
数据类型
电磁流量计寄存器通常采用以下数据格式:
| 数据类型 | 占用寄存器 | 说明 |
|---|---|---|
| 16位无符号整数 | 1个 | 用于状态、地址、参数编号等数据 |
| 16位有符号整数 | 1个 | 用于带正负符号的参数 |
| 32位无符号整数 | 2个 | 常用于累计流量 |
| 32位有符号整数 | 2个 | 可用于带方向的累计量或测量值 |
| IEEE 754单精度浮点数 | 2个 | 常用于瞬时流量、流速和量程 |
| 64位整数 | 4个 | 常用于高精度累计流量 |
| IEEE 754双精度浮点数 | 4个 | 用于高精度测量数据 |
读取多个寄存器后,应根据协议规定的数据类型、倍率和小数位进行解析。
字节顺序
32位数据由两个16位寄存器组成。不同型号电磁流量计可能采用不同的寄存器顺序和字节顺序。
常见排列方式如下:
| 排列方式 | 字节顺序 |
|---|---|
| ABCD | 高字在前,高字节在前 |
| CDAB | 低字在前,高字节在前 |
| BADC | 高字在前,低字节在前 |
| DCBA | 低字在前,低字节在前 |
当读取的瞬时流量、累计流量或流速数值明显异常时,应重点检查数据类型、寄存器顺序、字节顺序、倍率及小数点位置。
读取保持寄存器
读取保持寄存器时,主机发送格式如下:
从机地址 + 03H + 起始寄存器地址 + 寄存器数量 + CRC16
电磁流量计正常响应格式如下:
从机地址 + 03H + 返回字节数 + 寄存器数据 + CRC16
读取输入寄存器时,报文结构与读取保持寄存器基本相同,但功能码使用04H。
写入单个寄存器
写入单个保持寄存器时,主机发送格式如下:
从机地址 + 06H + 寄存器地址 + 写入数据 + CRC16
仪表正常执行后,通常返回与主机发送内容相同的响应报文。
写入通讯地址、波特率、量程或其他参数后,部分仪表需要重新启动才能使新参数生效。
写入多个寄存器
写入多个保持寄存器时,主机发送格式如下:
从机地址 + 10H + 起始寄存器地址 + 寄存器数量 + 数据字节数 + 写入数据 + CRC16
仪表正常响应格式如下:
从机地址 + 10H + 起始寄存器地址 + 写入寄存器数量 + CRC16
涉及浮点数、32位整数或多字节参数时,通常需要使用10H功能码写入多个连续寄存器。
累计流量解析
电磁流量计的累计流量可能采用32位整数、64位整数、单精度浮点数或双精度浮点数存储。
部分仪表会将累计流量拆分为整数部分和小数部分,也可能分别设置正向累计、反向累计和净累计寄存器。
解析累计流量时,应确认以下信息:
- 累计流量的数据类型。
- 占用的寄存器数量。
- 寄存器高低位顺序。
- 数据倍率和小数位。
- 流量单位。
- 正向和反向累计量的定义。
- 累计量是否会溢出或循环计数。
状态寄存器
电磁流量计通常使用状态寄存器表示仪表运行状态和报警信息。
状态寄存器中的每一位可能代表一种运行状态,例如:
| 状态位 | 可能含义 |
|---|---|
| Bit 0 | 空管报警 |
| Bit 1 | 流量上限报警 |
| Bit 2 | 流量下限报警 |
| Bit 3 | 励磁报警 |
| Bit 4 | 电极信号异常 |
| Bit 5 | 系统故障 |
| Bit 6 | 反向流量 |
| Bit 7 | 通讯或参数异常 |
具体位定义应以相应型号的通讯协议为准,不同仪表的状态位含义可能不同。
异常响应
当电磁流量计无法执行主机命令时,可能返回Modbus异常响应。
| 异常码 | 说明 |
|---|---|
| 01H | 不支持的功能码 |
| 02H | 非法寄存器地址 |
| 03H | 非法数据值 |
| 04H | 仪表执行失败 |
| 06H | 仪表忙,暂时无法处理 |
异常响应中的功能码通常为原功能码加80H。例如,读取保持寄存器时发生异常,返回功能码可能为83H。
通讯接线注意事项
- RS485 A、B通讯线不得接反。
- 同一通讯总线上的仪表地址不得重复。
- 建议使用屏蔽双绞线作为通讯电缆。
- RS485总线应采用手拉手方式连接,避免星形接线。
- 通讯线路应远离变频器、电机及高压动力电缆。
- 屏蔽层通常采用单端接地。
- 总线距离较长时,可在两端增加约120Ω终端电阻。
- 多台仪表联网时,应逐台设置不同的通讯地址。
- 通讯地线存在较大电位差时,应使用隔离型RS485转换器。
- 仪表与上位机之间距离较远时,应降低波特率以提高通讯稳定性。
通讯调试
通讯调试前,应确认电磁流量计供电正常,并核对通讯地址、波特率、数据位、停止位和校验方式。
可以使用串口调试软件或Modbus主站软件发送读取命令,观察仪表是否返回完整报文。
当仪表无数据返回时,应依次检查以下内容:
- 串口号是否正确。
- RS485转换器是否工作正常。
- A、B通讯线是否接反。
- 仪表地址是否正确。
- 波特率和校验方式是否一致。
- 功能码是否受仪表支持。
- 寄存器地址是否正确。
- CRC16校验是否正确。
- 仪表是否处于参数设置或故障状态。
- 总线是否存在地址冲突或线路干扰。
当仪表能够返回数据但数值不正确时,应检查寄存器地址偏移、数据类型、单位、倍率、字节顺序及寄存器顺序。
使用提示
不同型号电磁流量计的寄存器地址、数据格式、单位、倍率及读写权限可能存在差异。使用通讯协议前,应确认协议版本与仪表型号、转换器型号、软件版本及硬件版本相匹配。
涉及仪表系数、口径、量程、零点、励磁参数、累计流量及标定参数写入时,应做好原始参数记录,并设置操作权限和修改日志。
未经授权,不建议通过通讯接口修改与测量精度和计量性能相关的参数,以免造成测量偏差或影响仪表正常运行。