五、数字通讯部分(适用于□E4,□代表外型尺寸。版本号:2011-06-V1.0)5-1概述高清晰LCD显示的三相电能表(习惯称□E4系列),提供串行异步半工RS485通讯接口,采用MODBUS-RTU协议,各种数据信息均可在通讯线路上传送。在一条485总线上可以同时连接多达32个网络电力仪表,每个网络电力仪表均可以设定其通讯地址。不同系列仪表的通讯接线端子号码不同,这点在布线时需要注意。通讯连接应使用带有铜网的屏蔽双绞线,线径不小于0.5mm2,不要用平行线,因其易引入干扰。将屏蔽双绞线的屏蔽层接地(GND端),布线时应使用通讯线远离强电电缆或其它强电磁环境。5-2MODBUS-RTU通讯协议MODBUS协议约定在一根通讯线上采用主从应答方式的通讯连接方式。首先,主计算机的信号寻址到一台唯一地址的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机,即在一根单独的通讯线上信号沿着相反的两个方向传输所有的通讯数据流(半双工的工作模式)。MODBUS协议只允许在主机(PC,PLC等)和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。1.主机查询:查询消息帧包括设备地址码、功能码、数据信息码、校验码。地址码表明要选中的从机设备功能代码告之被选中的从设备要执行何种功能,例如功能代码03或04是要求从设备读寄存器并返回它们的内容;数据段包含了从设备要执行功能的其它附加信息,如在读命令中,数据段的附加信息有从何寄存器开始读的寄存器数量;校验码用来检验一帧信息的正确性,为从设备提供了一种验证消息内容是否正确的方法,它采用CRC16的校准规则。2.从机响应:如果从设备产生一正常的回应,在回应消息中有从机地址码、功能代码、数据信息码和CRC16校验码。数据信息码包括了从设备收集的数据:如寄存器值或状态。如果有错误发生,我们约定是从机不进行响应。3.数据传输方式传输方式是指一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与MODBUS协议-RTU方式相兼容的传输方式。每个字节的位:1个起始位、8个数据位、(奇偶校验位)、1个停止位(有奇偶校验位时)或2个停止位(无奇偶校验位时)。5-3通讯报文格式数据帧的结构:即报文格式。地址码功能码数据码校验码1个字节1个字节N个字节2个字节1.地址码帧的开始部分,由1个字节(8位二进制码)组成,十进制为0~255,在我们的系统中只使用1~247,其它地址保留。这些位标明了用户指定的终端设备的地址,该设备将接收来自与之相连的主机数据。每个终端设备的地址必须是唯一的,仅仅被寻址到的终端会响应包含了该地址的查询,当终端发送回一个响应,响应中的从机地址数据告诉了主机那台终端与之进行通信。2.功能码告诉终端执行何种功能。下表列出多功能网络电力仪表所支持的功能码,以及它们的意义和功能。功能码意义行为03(或04)读数据寄存器获得一个或多个寄存器的当前二进制值3.数据码包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。这些数据的内容可能是数值、参考地址或者设置值。例如:功能码告诉终端读取一个寄存器,数据域则需要反映表明从哪个寄存器开始及读取多少个数据,而从机数据码回送内容则包含了数据长度和相应的数据。4.校验码错误校验域占用两个字节(CRC16),包含了一个16位的二进制值。CRC值由传输设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较。如果这两个值不相等,就发生了错误。5.CRC16算法生成一个CRC16的流程为:(1)预置一个16位寄存器为FFFFH(16进制,全1),称之为CRC寄存器。(2)把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器。(3)将CRC寄存器向右移一位,最高位填以0,最低位移出并检测。(4)上一步中被移出的那一位如果为0:重复第三步(下一次移位):为1;将CRC寄存器与预设的固定值(0A001H)进行异或运算。(5)重复第三步和第四步直到8次移位。这样处理完了一个完整的八位。(6)重复第二步到第5步来处理下一个八位,直到所有的字节处理结束。(7)最终CRC寄存器的值就是CRC的值。5-4MODBUS地址信息表(地址采用10进制数表示)字传输方式地址项目描述字节传输方式地址备注0MM编程设置密码0,12字节,0-99991XS电量显示选择2范围:0-4DZ仪表地址31字节,1-2472PT电压倍率4,52字节,1-99993CT电流倍率6,72字节,1-99994~5未定义8,9,10,11系统保留电参数测量信息6,7P总有功功率12,13,14,15浮点型数据,格式为IEEE-574,有功功率单位kW,无功功率单位kVar。一次侧及乘了变比之后的值。8,9Q总无功功率16,17,18,1910,11未定义20,21,22,23电能计量信息12,13EP一次侧有功电能24,25,26,27浮点型数据,格式为IEEE-574,有功电能单位kWh,无功电能单位kVarh。一次侧及乘了变比CT、PT之后的值。14,15EQ一次侧无功电能28,29,30,315-5浮点型数据计算方法浮点型数据(float)符合IEEE-574数据格式,其定义和计算方法如下:1位符号位(SIGN)8位指数位(E7…E0)23位尾数位(p22…p0)符号位:SIGN=0为正,SIGN=1为负;指数部分:E=指数部分-126;尾数部分:M=尾数部分补上最高位为1。数据结果:REAL=SIGN×2E×M/(256×65536)……(1)例:仪表返回十六进制的电流数值数据I=43556680H转化为二进制数据位:01000011010101010110011010000000,得到:最高位(数值符号位):SIGN=0,表示正数;指数部分E:(10000110)B=134;E=134-126=8;尾数M=(110101010110011010000000)B=D56680H=13985408;根据式(1)得到结果:(+)28×13985408/(256×65536)=213.4。5-6通讯报文举例,约定采用字(WORD)传输方式。例1:从终端设备地址为1(01H)的从机上读取一次侧正向有功电能的数值。主机发送查询数据帧(16进制表示)地址命令起始寄存器(高字节)起始寄存器(低字节)寄存器个数(高字节)寄存器个数(字节)CRC16低字节CRC16高字节0103000C00020408从机回传响应数据帧(16进制表示)地址命令数据长度4字节数据CRC16低字节CRC16高字节01030442DDCC802AD1仪表返回数据:42DDCC80,按照IEEE-574定义及转换方法(参照5-5),得到10进制数为110.80。表明一次侧正向有功电能为110.80(kWh),110.80就是电表上显示的一次侧有功电度值。一次侧无功电能参数值读取和转换方法类似。例2:从终端设备地址为1(01H)的从机上读取总有功功率的数值。主机发送查询数据帧(16进制表示)地址命令起始寄存器(高字节)起始寄存器(低字节)寄存器个数(高字节)寄存器个数(低字节)CRC16低字节CRC16高字节010300060002240A从机回传响应数据帧(16进制表示)地址命令数据长度4字节数据CRC16低字节CRC16高字节01030443556680D5A7仪表返回数据:43556680,按照IEEE-574定义及转换方法(参照5-5),得到10进制数为213.4。表明总有功功率的值为213.4(kW)。无功功率值的读取和转换方法类似,只要注意寄存器地址和单位即可。