提供串行异步半工RS458通讯接口,采用MOD-BUS-RTU协议,各种数据记息均可在通讯线路上传送。在一条线路上可以同时连接多达32个网络电力仪表,每个网络电力仪表均可以设定其通讯地址(Address No.),不同系列仪表的通讯接线端子号码不同,通讯连接应使用带有铜网的屏蔽双绞线,线径不小于0.5mm。布线时应使用通讯线远离强电电缆或其他强电场环境,推荐采用型网络的连接方工,不建议采用星形或其他的连接方式。
MODBUS协议在一根通讯线上采用主从应答方式的通讯连接方式。首先,主计算机的信号寻址到一台唯一地址的终端设备(从机),然后,终端设备发也的应答信号以相反的方向传输给主机,即;在一根单独的通讯线上信号沿着相反的两个方向传输所有的通讯数据流(半双工的工作模式)。
MODBUS协议只允许在主机(PC,PLC等)和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。
主机查询:查询消息帧包括设备地址码、功能人码、数据信息码、校验码。地址码表明要选中的从机设备;功能代码告之被选中的从设备要执行何种功能,例如功能代码03或04是要求从设备读寄存器并返回它们的内容;数据段包含了从设备要执行功能的其它附加信息,如在读命令中,数据段的附加信息有从何寄存器开始读的寄存器数量;校验码用来检验一帧信息的正确性,为从设备提供了一种验证消息内容是否正确的方法,它采用CRC16的校准规则。
从机响应:如果从设备产生一正常的回应,在回应消息中有从机地址码、功能代码、数据信息码和CRC16校验码。数据信息码包括了从设备收集的数据:如寄存器值或状态。如果有错误发生,我们约定是从机不进行响应。
传输方式是指一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与MODBUS协议-RTU方式相兼容的传输方式。每个字节的位:1个起始位、8个数据位、(奇偶校验位)、1个停止位(有奇偶校验位时)或2个停止位(无奇偶校验位时)。
数据帧的结构:即:报文格式。
地址码 | 功能码 | 数据码 | 校验码 |
1个BYTE | 1个BYTE | N个BYTE | 2个BYTE |
地址码在帧的开始部分,由一个字节(8位二进制码)组成,十进制为0~255,在我们的系统中只使用1~247,其它地址保留。这些位标明了用户指定的终端设备的地址,该设备将接收来自与之相连的主机数据。每个终端设备的地址必须是唯一的,仅仅被寻址到的终端会响应包含了该地址的查询。当终端发送回一个响应,响应中的从机地址数据告诉了主机哪台终端与之进行通信。
功能码告诉了被寻址到的终端执行何种功能。下表列出所支持的功能码,以及它们的意义和功能。
代码 | 意义 | 行为 |
08 | 电能数据复位 (清0) | 将所操作的仪表的电能数据清0 |
数据码包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。这些数据的内容可能是数值、参考地址或者设置值。例如:功能域码告诉终端读取一个寄存器,数据域则需要反映明从哪个寄存器开始及读取多少个数据,而从机数据码回送内容则包含了数据长度和相应的数据。
校验码错误校验(CRC)域占用两个字节,包含了一个16位的二进制值。CRC值由传输设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较。如果这两个值不相等,就发生了错误。
生成一个CRC的流程为:
(1).预置一个16位寄存器为OFFFFH(16进制,全1),称之为CRC寄存器。
(2).把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器。
(3).将CRC寄存器向右移一位,最高位填以0,最低位移出并检测。
(4).上一步中被移出的那一位如果为0:重复第三步(下一次移位);为1:将CRC寄存器与一个预设的固定值(0A001H)进行异或运算。
(5).重复第三点和第四步直到8次移位。这样处理完了一个完整的八位。
(6).重复第2步到第5步来处理下一个八位,直到所有的字节处理结束。
(7).最终CRC寄存器的值就是CRC的值。
通讯报文举例:1.读数据(功能码:03/04):这个功能可使用户获得终端设备采集、记录的数据,以及系统参数。主机一次请求采集的数据个数没有限制,但不能超出定义的地址范围。下面的例子是从终端设备地址为12(0CH)的从机上,读取3个数据Ia、Ib、Ic(数据帧中数据每个地址占用2个字,Ia的字地址为18(12H)开始,数据长度为6(06H)个字。字通讯方式。)查询数据帧(主机)
地址 | 命令 | 起始寄存器地址 (高位) | 起始寄存器地址 (低位) | 寄存器个数 (高位) | 寄存器个数 (低位) | CRC16 低位 | CEC16 高位 |
0CH | 03H | 00H | 12H | 00H | 06H | 64H | D0H |
响应数据帧(从机)
地址 | 命令 | 数据长度 | 数据1~12 | CRC16 低位 | CRC16 低位 |
表明Ia=43556680H(213.4A)、Ib=43203040H(160.1A)、Ic=42DDCC80(110.8A).
预置数据(功能码:16):此功能允许用户改变多个寄存器的内容(需要强调的是所写入的数据为可写属性参数。个数不超过地址范围,下面的例子是写入电流变比为400A/5A=80通讯方式。
预置数据帧(主机)
地址 | 命令 | 起始寄存器地址 (高位) | 起始寄存器地址 (低位) | 寄存器个数 (高位) | 寄存器个数 (低位) | 字节 长度 | 写入 数据 | CRC16 低位 | CEC16 高位 |
响应数据帧(从机),表明数据已写入。
地址 | 命令 | 起始寄存器地址 (高位) | 起始寄存器地址 (低位) | 寄存器个数 (高位) | 寄存器个数 (低位) | CRC16 低位 | CEC16 高位 |
0CH | 10H | 00H | 04H | 00H | 01H | 41H | 15H |
MODBUS地址信息表:
地址 | 项目 | 1 | 字节 地址 | 说明 |
设置信息 | ||||
0 | MM | 编程设置密码 | 0,1 | 2字节,1-9999 |
1 | XS1 | 电量显示选择 | 2 | 电量显示方式,0-6 |
DZ | 仪表地址 | 3 | 1字节,1-247 | |
TXK | 通讯控制字 | 9 | 见位地址说明 | |
5 | STATUS | 状态 | 10,11 | 保留 |
电量信息 | ||||
22、23 | IC | C相电流 | 44、45、46、47 | |
26、27 | PB | B相有功功率 | 52、53、54、55 | |
28、29 | PC | C相有功功率 | 56、57、58、59 | |
30、31 | PS | 总有功功率 | 60、61、62、63 | |
32、33 | QA | A相无功功率 | 64、65、66、67 | |
34、35 | QB | B相无功功率 | 68、69、70、71 | |
36、37 | QC | C相无功功率 | 72、73、74、75 | |
38、39 | QS | 总无功功率 | 76、77、78、79 | |
40、41 | SS | 总视在功率 | 80、81、82、83 | |
42、43 | PFS | 功率因数 | 84、85、86、87 | |
44、45 | FRE | 频率 | 88、89、90、91 |
电能信息 | ||||
48、49 | 预留 | 预留 | 96、97、98、99 | |
50、51 | EQP | 无 功电能 | 100、101、102、103 | |
52、53 | 预留 | 预留 | 104、105、106、107 | |
58、59 | WQP | 无 功电能 | 116、117、118、119 | |
60、61 | 预留 | 预留 | 120、121、122、123 |
控制字部分 | ||
参数 | 意义 | |
01-O.8.2 | ||
通讯速率 BIT1 BIT0 | ||
10-9.6k | ||
11-4.8k |
注:是采用4字节的二进进制的浮点数来表示一个数据电量,其数据格式和意义如下:
符号位:SIGN=0为正,SIGN=1为负。
指数部分:E=指数部分-126。
尾数部分:M=尾数部分补上最高位为1。
数据结果:REAL=SIGN×2×M/(256×65536)
例如:主机读电能数据,从地址表上可以知道电能(正有功吸收)地址为:(字节方式,兼容旧标准)
92(005CH)长度为4(0004H)
主机:01H 04H 00 5CH 00 04H 31 DBH
从机:01 04H 04H 50 80 00 00H EBH 6CH`其中50 80 00 00为有功电度(吸收)数据,EBH 6CH CRC16的低位和高位。
其大小:SIGN(符号位=0,正),指数EX=A1H-126=35,尾数:80 00 00H
结果:2×80,00 00H/100 00 00H=17179869184Wh=17179869kWh。