基于 Modbus RTU 协议
浙江现代电气有限公司
双电源通信协议
V1.1
基于 Modbus RTU 协议
2012-03-02
本文档列出了双电源中所用到的 Modbus RTU 协议功能码及其每个功能码相关地址信息的定义
双电源通信协议
概述
x通讯协议遵循 MOD US RTU 通信协议,在阅读本协议时,手边最好有 Modbus 协议
相关的文档。本协议描述了双电源通信的物理层、数据链路层及应用层的详细信息。
通信基本规则
1. 本协议物理层基于 RS485 接口,所有通讯都应遵照主、从方式,数据可以在一个主站和 32 个子站之间传递。
2. 任何一次通讯都不能从子站开始。
3. 在 RS48 上的所有通讯都以“信息帧”方式传递。如果主站或子站接收到含有未知功能码的信息帧,则不予响应。
数据链路格式
串口通信为异步通信方式,并以数据帧为单位,每一数据帧都由 11 位的串行的数据位
(bit)组成,包括 1 位开始位,8 位数据位,1 位校验位,1 位停止位。数据帧格式如下图:
数据位在传输时,低位在前,高位在后。校验位没用使用
xx率为 9600bps。
通信规约
1. 通信过程及通信格式的说明:
主机向从机发送一信息帧(Modbus RTU 格式),与信息帧中地址码一致的从机接收信息帧,并验证信息帧的正确性和完整性,如果验证通过,则根据信息帧的内容执行相应的任务,然后向主机发送响应帧,以通知响应的结果;如果验证没有通过,则从机不执行任何任务,也不对主机进行响应。响应帧的信息中包括地址码、执行任务的功能码、执行任务后的数据以及错误校验码(CRC)等信息。Modbus RTU 的信息帧格式如下:
信息帧格式中的各字段的详细说明可参考 Modbus 通信协 。
持
2. 本协议规定的双电源所用到的功能码
功能码 | 功能说明 | 是否支 广播 |
0x01 | 读线圈状态 | 否 |
0x02 | 读输入状态 | 否 |
0x03 | 读寄存器 | 否 |
0x05 | 写单个线圈 | 是 |
0x06 | 写单个的寄存器 | 是 |
0x10 | 写多个的寄存器 | 是 |
双电源控制器用到的功能码
3. 功能码及其对应的地址信息定义及详细说明:
A. 读线圈状态(0x01)
读线圈状态(0x01)功能码的帧格式如下图:
读线圈状态(0x01)功能码的响应帧格式如下图:
读线圈状态(0x01)功能码的地址信息及说明定义如下表:
地址 | 名称 | 说明 | 控制器 | |
0000H | 常用电源欠压 | 1:欠压 | 0:正常 | |
0001H | 常用电源过压 | 1:过压 | 0:正常 | |
0002H | 常用电源断相 | 1:断相 | 0:正常 | |
0003H | 常用电源欠频 | 1:欠频 | 0:正常 | 不支持 |
0004H | 常用电源过频 | 1:过频 | 0:正常 | 不支持 |
0005H | 常用电源正常 | 1:正常 | 0:故障 | |
0006H | 保留 | |||
0007H | 保留 | |||
0008H | 备用电源欠压 | 1:欠压 | 0:正常 | |
0009H | 备用电源过压 | 1:过压 | 0:正常 | |
000AH | 备用电源断相 | 1:断相 | 0:正常 | |
000BH | 备用电源欠频 | 1:欠频 | 0:正常 | 不支持 |
000CH | 备用电源过频 | 1:过频 | 0:正常 | 不支持 |
000DH | 备用电源正常 | 1:正常 | 0:故障 | |
000EH | 保留 | |||
000FH | 保留 | |||
0010H | 负载过流 | 1:过流 | 0:正常 | 不支持 |
0011H | 历史记录 | 1:开启 | 0:关闭 | 不支持 |
0012H | 自动/手动 | 1:自动 | 0:手动 | |
0013H | 发电机启动输出状态 | 1:输出 | 0:关闭 | |
0014H | 常用故障输出状态 | 1:输出 | 0:关闭 | |
0015H | 密码开关状态 | 1:开启 | 0:关闭 | |
0016H | 保留 | - | ||
0017H | 保留 | - | ||
0018H | 保留 | - | ||
0019H | 保留 | - | ||
001AH | 保留 | - | ||
001BH | 保留 | - | ||
001CH | 保留 | - | ||
001DH | 保留 | - | ||
001EH | 保留 | - | ||
001FH | 保留 | - | ||
其它 | 未用 |
B. 读输入状态(0x02)
读输入状态(0x02)功能码的帧格式如下图:
读输入状态(0x02)功能码的响应格式如下图:
制
读输入状态(0x02)功能码的地址信息及说明定义如下表:
地址 | 名称 | 说明 | 控 器 | |
0000H | 消防输入 | 1:消防 | 0:无 | 仅 3 段位支持 |
0001H | 常电电源位置信号输入 | 1:合闸 | 0:分闸 | |
0002H | 备用电源位置信号输入 | 1:合闸 | 0:分闸 | |
0003H | 双分位置信号输入 | 1:双分 | 0:非双分 | |
0004H | 换向位置信号输入 | 1:换向 | 0:正常 | |
0005H | 常用开关脱扣信号输入 | 1:脱扣 | 0:正常 | 仅 CB 级支持 |
0006H | 备用开关脱扣信号输入 | 1:脱扣 | 0:正常 | 仅 CB 级支持 |
0007H | 远程投备信号 | 1:有 | 0:无 | 不支持 |
0008H | 远程投常信号 | 1:有 | 0:无 | 不支持 |
0009H | 门扣开关信号 | 1:合 | 0:分 | 不支持 |
000AH | 段位配置 | 1:3Pos | 0:2Pos | |
000BH | 双电源类型 | 1:PC | 0:CB | |
000CH | 显示配置 | 1:LCD&LED 0:LED | ||
000DH | 保留 | - |
000EH | 保留 | - | |
000FH | 保留 | - | |
其它 | 未用 | - |
C. 读寄存器(0x03)
读寄存器(0x03)功能码的帧格式如下图:
读寄存器(0x03)功能码的响应帧格式如下图:
地
说
x
安
安
读寄存器(0x03)功能码的地址信息及说明定义如下表:
址 | 名称 | x | 控制器 |
0000H | Security0 | 全码 0 | 不支持 |
0001H | Security1 | 全码 1 | 不支持 |
0002H | Securtiy2 | 全码 2 | 不支持 |
0003H | 常用 A 相校准系数 | 50 - 150 | |
0004H | 常用 B 相校准系数 | 50 - 150 | |
0005H | 常用 C 相校准系数 | 50 - 150 | |
0006H | 备用 A 相校准系数 | 50 - 150 | |
0007H | 备用 B 相校准系数 | 50 - 150 |
0008H | 备用 C 相校准系数 | 50 - 150 | |
0009H | 背光时间 | 0-255s | |
000AH | 常用欠压阈值 | 150V – 180V | |
000BH | 常用过压阈值 | 250V – 280V | |
000CH | 备用欠压阈值 | 150V – 180V | |
000DH | 备用过压阈值 | 250V – 280V | |
000EH | 常转备延时时间 | 0-255s | |
000FH | 备转常延时时间 | 0-255s | |
0010H | 工作模式 | 0xff:UE 0:UU | |
0011H | 动作方式 | 0:AA 1:Ad 2:BB | |
0012H | 发电机启动延时 | 0-255s | |
0013H | 发电机停止延时 | 0-255s | |
0014H | 常用欠频阈值 | 47Hz – 49.6Hz | 不支持 |
0015H | 常用过频阈值 | 50.6Hz – 53Hz | 不支持 |
0016H | 备用欠频阈值 | 47Hz – 49.6Hz | 不支持 |
0017H | 备用过频阈值 | 50.6Hz – 53Hz | 不支持 |
0018H | 保留 | - | |
0019H | 保留 | - | |
001AH | 保留 | - | |
001BH | 保留 | - | |
001CH | 保留 | - | |
001DH | 保留 | - | |
001EH | 保留 | - | |
001FH | 保留 | - | |
0020H | Uab1 | 常用 AB 相线电压 | 不支持 |
0021H | Ubc1 | 常用 BC 相线电压 | 不支持 |
0022H | Uca1 | 常用 CA 相线电压 | 不支持 |
0023H | Uab2 | 备用 AB 相线电压 | 不支持 |
0024H | Ubc2 | 备用 BC 相线电压 | 不支持 |
0025H | Uca2 | 备用 CA 相线电压 | 不支持 |
0026H | Ua1 | 常用 A 相相电压 | |
0027H | Ub1 | 常用 B 相相电压 | |
0028H | Uc1 | 常用 C 相相电压 | |
0029H | Ua2 | 备用 A 相相电压 | |
002AH | Ub2 | 备用 B 相相电压 | |
002BH | Uc2 | 备用 C 相相电压 | |
002CH | Ia | A 相负载电流 | 不支持 |
002DH | Ib | B 相负载电流 | 不支持 |
002EH | Ic | C 相负载电流 | 不支持 |
002FH | F1 | 常用电源频率 | 不支持 |
0030H | F2 | 备用电源频率 | 不支持 |
0031H | STn | 常用电源状态 |
0032H | STr | 备用电源状态 | |
0033H | 控制器工作模式 | 0:正常 1:扩展 2:测试 | |
0034H | Version0 | 软件版本 0 | |
0035H | Version1 | 软件版本 1 | |
0036H | Serial n m0 | 产品序列号 0 | 不支持 |
0037H | Serial n m1 | 产品序列号 1 | 不支持 |
0038H | Serial n m2 | 产品序列号 1 | 不支持 |
0039H | 保留 | - | |
003AH | 保留 | - | |
003BH | 保留 | - | |
003CH | 保留 | - | |
003DH | 保留 | - | |
003EH | 保留 | - | |
003FH | 保留 | - |
说明:
⚫ 0000H – 001FH 地址单元规定为可写地址单元,即在写单个寄存器(0x06)及写多寄存器(0x16)时,可以对这些地址单元写入一个值。
⚫ 0020H – 003FH 地址单元规定为只读地址单元,不允许进行写操作。
⚫ 工作模式中,UU 表示“电网电网”模式,UE 表示“电网发电机”模式。
⚫ 动作方式中,AA 表示“自投自复”方式,Ad 表示“自投不自复方式”,BB 表示 “互为备用”方式。
D. 写单个线圈(0x05)
写单个线圈(0x05)功能码的帧格式如下图:
写单个线圈(0x05)功能码的响应帧格式如下图:
写单个线圈(0x05)功能码的地址信息及说明如下表:
地址 | 名称 | 说明 | 备注 |
0000H | 常用电源合闸 | 置 1 合 ,置 0 无效 | 手动模式有效 |
0001H | 备用电源合闸 | 置 1 合 ,置 0 无效 | 手动模式有效 |
0002H | 常备用分闸 | 置 1 分 ,置 0 无效 | 手动模式有效 |
0003H | 手动/自动控制 | 置 1 手 ,置 0 自动 | |
0004H | 常用故障继电器 | 置 1 合 ,置 0 分闸 | 手动模式有效 |
0005H | 发电机信号继电器 | 置 1 合 ,置 0 分闸 | 手动模式有效 |
0006H | 保留 | - | |
0007H | 保留 | - | |
其它 | 未用 | - |
注:线圈置 1 或置 0 的方法参见 Modbus 协议。
E. 写单个寄存器(0x06)
由于双电源中有些寄存器是只读的,比如,电网电压,频率,电流等,这些寄存器的值取决于系统的测量,所以不需要进行设置,故写单个寄存器(0x06)功能码不支持对这些地址的写入。写单个寄存器(0x06)功能码所支持的写入的地址的定义与读寄存器功能码(0x03) 中的 0000H-001FH 完全一致。
写单个寄存器(0x06)功能码的帧格式如下图:
写单个寄存器(0x06)功能码的响应帧格式如下图:
F. 写多个寄存器(0x10)
写多个寄存器(0x10)功能码的帧格式如下图:
写多个寄存器(0x10)功能码的响应帧格式如下图:
写多个寄存器与写单个寄存器的地址的定义完全一致。
4. 错误处理
当双电源检测到了 CRC 码出错以外的错误时,必须向主机返送信息,功能码的最高位置 1,即从机机返送的功能码是在主机发送的功能码的基础上加 128。
错误响应帧格式如下图:
错误码(exception code)定义如下: 0x01 非法功能码
0x02 非法的数据地址
0x03 非法数据值
0x04 从机设备错误
0x06 从机忙
备注:
1. 标注为“保留”的地址单元,供协议将来扩展也不会使用。
2. 写操作时,所写数据的合法性由上位机来进行
用。标注为“未使用”的地址单元将来
断,双电源控制器不对数据的合法进行
检查。列如:欠压阈值的范围为 150-180V,当通过串口更改时,即使写入非法值 140,控制器仍然是接受的。要保证欠压阈值在 150-180 之间,是上位机软件的责任。