(1.广东电网有限责任公司惠州惠阳供电局,广东 惠州 516008; 2.广东电网有限责任公司惠州供电局,广东 惠州 516008; 3.惠州电力勘察设计院有限公司,广东 惠州 516008)
摘要:主机和装置间以串行方式连接,主机以问答方式与装置通讯,数据和校验码都正确,则装置应在500ms 内响应正常上行报文,对于通信协议的研究及规定,对于后续试验的研究以及现场生产有一定的帮助。
关键词:串行连接、数据校验、试验研究
1.前言
网关与中继之间的通讯,主要依靠的是协议之间的对接,特别是在通讯接口,数据定义,交换方式等方面作了规定。规定网关发给中继模的报文为下行报文,中继模块发给网关的报文为上行报文。如无特殊说明,规约中“主机”指网关,“装置”指中继模块(或称集中器模块)通过8N1的方式,依据起始位(1bit)、数据位(8bit)、停止位(1bit),采用无奇偶校验,报文采用 CRC16_MODBUS 生成多项式校验,其传送方式有特定要求。
2.传送方式
2.1.串口传送方式
主机和装置间以串行方式连接,主机以问答方式与装置通讯,每帧报文不超过 255 字节。而异步 8N1 方式,采用起始位(1bit)、数据位(8bit)、停止位(1bit)组合,以及无奇偶校验,报文采用 CRC16_MODBUS 生成多项式校验。通讯接口为 UART-TTL 或 RS485,默认波特率见设备铭牌(可通过综合测试工具修改)。数据传输采用 Modbus-RTU 规约。如下行报文的装置地址,报文类型,数据和校验码都正确,则装置应在 500ms 内响应正常上行报文。如下行报文的装置地址或校验码错误,则装置不响应。主机判断超时后继续进行后续通讯。如下行报文的地址和校验码正确,但报文类型或数据错误,则装置应在 500ms 内响应异常上行报文。
主机向装置发送 | 装置向主机发送 | 对应寄存器地址范围 | ||
报文类型 | 类型码 | 报文类型 | 正常码/异常码 | |
读寄存器 | 03H | 读寄存器响应 | 03H/83H | |
写单个寄存器 | 06H | 写单个寄存器响应 | 06H/86H | |
写多个寄存器 | 10H | 写多个寄存器响应 | 10H/90H |
2.2.报文格式
装置 Modbus 从机地址范围,通常,合法的 Modbus 从机地址范围为 001~247。其中 255 为广播地址,只允许广播读,不允许广播写。目前尚未支持 255 广播地址的响应。正常报文,如下行报文的装置地址,报文类型,数据和校验码都正确,则装置应在 500ms 内响应正常上行报文。
表 2.正常报文
主站→装置 | 装置→主站 | ||
字节 1 | 装置地址 | 字节 1 | 装置地址 |
字节 2 | 报文类型(03H) | 字节 2 | 报文类型(03H) |
字节 3 | 寄存器起始地址(高字节) | 字节 3 | 数据长度(数据个数 N×2) |
字节 4 | 寄存器起始地址(低字节) | …… | …… |
字节 5 | 读取寄存器个数 N(高字节) | 字节 3+(i-1)*2+1 | 寄存器 i 数据(高)(1≤i≤N) |
字节 6 | 读取寄存器个数 N(低字节) | 字节 3+(i-1)*2+2 | 寄存器 i 数据(低)(1≤i≤N) |
字节 7 | 校验码(CRC 低字节) | …… | …… |
字节 8 | 校验码(CRC 高字节) | 字节 3+N*2+1 | 校验码(CRC 低字节) |
字节 3+N*2+2 | 校验码(CRC 高字节) |
装置 Modbus 从机地址范围,通常,合法的 Modbus 从机地址范围为 001~247。其中 255 为广播地址,只允许广播读,不允许广播写。目前尚未支持 255 广播地址的响应。正常报文,如下行报文的装置地址,报文类型,数据和校验码都正确,则装置应在 500ms 内响应正常上行报文。异常报文,是指如下行报文的装置地址和校验码正确,但报文类型或数据内容错误(例如不支持的报文类型或数据地址越界),则装置应在 500ms 内响应异常上行报文。异常报文的类型码为下行报文的类型码的最高位置 1。例如主机发送 03H,装置响应 83H)。
表 3.异常类型码
异常类型码 | 含义 | 异常类型码 | 含义 |
01H | 功能码类型无效 | 04H | CRC 校验错误 |
02H | 寄存器起始地址无效 | 05H | / |
03H | 数据长度越界 | 06H | / |
表 4.异常报文
主站→装置 | 装置→主站 | ||
字节 1 | 装置地址 | 字节 1 | 装置地址 |
字节 2 | 报文类型(03H) | 字节 2 | 报文类型(83H) |
字节 3 | 寄存器起始地址(高字节) | 字节 3 | 异常码类型 |
字节 4 | 寄存器起始地址(低字节) | 字节 4 | 校验码(CRC 低字节) |
字节 5 | 读取寄存器个数N(高字节) | 字节 5 | 校验码(CRC 高字节) |
字节 6 | 读取寄存器个数N(低字节) | ||
字节 7 | 校验码(CRC 低字节) | ||
字节 8 | 校验码(CRC 高字节) |
3.寄存器分配
Modbus 寄存器地址分为中继状态信息区、电流传感器实时数据区、电流传感器详细信息区、自定义协议数据收发区、电流故障录波数据区与全类型传感器实时数据区。中继状态信息区用于获取中继设备自身信息以及运行状态。电流传感器实时数据区存放传感器关键且需频繁实时读取的数据,可一次读取多个传感器数据(受限于标准modbus 协议,单次读取最多 125 个寄存器数据)。电流传感器详细信息区存放传感器台账、运行参数、实时运行数据等信息。
自定义协议收发区用于中继与网关之间按照自定义协议格式进行数据传输,如可用于网关向中继下发绑定传感器 MAC 地址列表,或远程下发其他中继配置数据。自定义协议为二次内嵌协议,需在Modbus-RTU 协议框架内进行通信,具体自定义协议见附录 5。电流故障录波数据区以环形队列的方式只存放单个传感器的一包录波数据,每次需一次性读完整一包故障录波数据后, 才会刷新为下一包录波数据,因 modbus 通信从机为被动应答,为保证故障录波数据实时性,主机应定时查询未读录波数量Unread_record_num,发现有新录波数据及时读取。
全类型传感器实时数据区存放各种类型传感器的数据,每个传感器分配固定长度的寄存器空间,同种类型的传感器最好连续存放(需绑定 mac 地址时同种类型连续绑定),网关需通过传感器类型标识 sensor.type 或者现场安装的传感器类型信息文档去判别是何种传感器并调用对应传感类型的数据解析模型进行数据处理。
4、结论
网关与中继之间的通讯规约较多,主机采用问答方式与装置通讯,可一次读取多个传感器数据,报文的装置地址,报文类型,数据和校验码都正确,则装置应在 500ms 内响应正常上行报文,对于后续试验的研究以及现场生产有一定的帮助。、
参考文献
[1]吴涛, 周有庆, 龚伟, 等. 基于新型电子式电流互感器的多功能电能表的设计[J]. 电力系统自动化, 2008, 32(16): 56- 60.
[2] 余梦婷,汪金刚,温生东等.基于电场逆问题的非接触电荷感应式电压互感器研究[J].电测与仪表,2012,49(10):82-85+90.