PSM-A10监控模块远程通讯协议(电力部颁CDT-91标准)(版本号:1.0)1、概述本文描述了PSM-A10监控模块应用于直流屏时向上级监控设备提供的通讯协议(规约),通过本协议可以获取直流屏的各种运行参数,控制直流屏的运行方式,从而方便地实现四遥功能。
2、适用范围本文适用于艾默生网络能源有限公司的开发人员及测试人员,也适用于采用通讯方式接入我司直流屏设备的各自动化厂家。
3、引用标准本文遵守中华人民共和国电力行业标准(DL 451—91)循环式远动规约标准。
4、术语定义状态量:用于描述系统运行时的采集量,取值为有限的几个值,并不表示系统的故障情况。
在本协议中一般指交流当前工作路号、系统控制方式、电池充电状态、充电模块控制方式、充电模块开/关机状态等五个量,在本协议的遥信量中包括了此类量。
告警量:用于描述系统处于异常时的采集量,取值为0或1,当取值为1时表示系统有故障存在。
在本协议上送遥信量中的大部分都是此类量。
5、物理接口5.1、串行通讯口提供RS232、RS485、RS422三种串行通讯方式(注:在RS485方式下,只支持遥测和遥信命令,不支持遥调和遥控命令)。
5.2、数据传输速率提供600、1200、2400、4800、9600(缺省值)、19200、38400七种通讯波特率。
注:在NP9802、NP9802-A中,只提供1200、2400、4800、9600(缺省值)四种波特率。
5.3、字符格式采用无校验位、8位数据位、1位停止位的异步串行通讯格式。
6、帧6.1、帧结构帧结构如图1所示,每帧都以同步字开头,随后发送1个控制字和多个信息字,图1、帧结构6.2、同步字本协议的同步字按发送的先后顺序为:EB、90、EB、90、EB、90。
6.3、控制字控制字共有B7~B126个字节,其组成如图2所示。
6.3.1 控制字节说明(如图3所示):E:扩展位当E=0时使用表2已定义的帧类别码;当E=1时帧类别码可另行定义,以便扩展功能。
在本协议中,此位总是为0。
L:帧长定义位当L=0时表示本帧信息字数n为0,即本帧没有信息字;当L=1时表示本帧有信息字。
在本协议中,此位总是为1。
7b0图2 控制字组成图3 控制字节B7字节B8B9B10B11B12S:源站址定义位,D:目的站址定义位6.3.2 S与D在上行及下行信息中的定义说明:在上行信息中,S=1表示控制字中源站址有内容,源站址字节即代表信息始发站的站号,即直流屏的本机地址;D=1表示目的的站址字节有内容,目的站址字节代表主站站号。
在本协议的上行信息中,S位总是为1,D位总是为1。
在下行信息中,S=1表示源站址字节有内容,源站址字节代表主站站号;D=1表示目的站址字节有内容,即直流屏的本机地址。
在本协议的下行信息中,D位必须为1,否则直流屏将不会执行下行命令。
以上所述的上行信息和下信息中若同时S=0,D=0,则表示源站址和目的的站址无意义。
6.3.3 源站址和目的站址说明在上行信息中,源站址是直流屏地址,即PSM-A监控模块面板显示中的本机地址,其取值范围为1~254,目的站址固定为01。
在下行信息中,源站址是指后台主机的地址,目的站址必须是直流屏的地址,若目的地址不正确,则下行命令将不会执行。
6.4、校验码本协议采用CRC校验,校验多项式为G(X)=X8+X2+X+1,对每个控制字或信息字的前5个字节进行CRC校验,生成一个8位的余数,该余数取反后即可作为校验码尾随前5字节发送。
计算方法如下:将每个控制字或信息字中的前5个字节按从低到高的顺序排列,每个字节的位从高到低排列,构成一个位流,在这个位流的后面加上8个0,从而得到一个48位的位流。
例如,对某个信息字有B0-B5共6个字节,每个字节8位分别为bi7-bi0(i为字节序号,取值范围0~4),则按上面的方法得到的位序列为b07b06...b00,b17b16..b10,...,b47b47...b40,00000000,用校验多项式107H (X^8+X^2+X+1)作为除数去除这个码流,相除时不做减法而做异或,最后得到一个8位的余数,将这个8位的余数取反后或到48位的码流的尾部,即可得到一个带8位CRC校验码的48位序列。
例:有信息字包括如下5个字节43H,E8H,7DH,33H,56H,可得到一个码流01000011,11101000,01111101,00110011,01010110,00000000,用107H 除该码流,得到余数为2FH,取反后得以校验码D0H,因此最后发送的字节序列为43H,E8H,7DH,33H,56H,D0H共6个字节(计算程序可参见附录A)。
6.5、帧类别本协议定义的帧类别码及其含义见表2表2 帧类别代号定义表6.6、信息字数信息字数n表示该帧中所含信息字数量,即信息字1至信息字n的总数,n=0表示无信息字。
6.7 帧系列及信息字传送规则6.7.1、对于遥测量,本协议按定时方式循环发送A帧(重要遥测)、B帧(次要遥测)、C帧(一般遥测)的内容,定时时长分别为:3秒、6秒、20秒。
6.7.2、对于遥信量,本协议按插入方式循环发送,即在A、B、C帧的发送时间间隙发送。
遥信信息字中不含子站工作状态信息,遥信变位时也不作处理。
6.7.3、对于遥控命令的返校信息,采用插入的方式进行发送。
7、信息字7.1、信息字结构每个信息字由B n~B n+56个字节构成:功能码1个字节,信息和数据码共4个字节,检验码1个字节,其通用格式如图4所示。
BnBn+1Bn+2Bn+3Bn+4Bn+5图4 信息字通用格式7.2、功能码定义本协议用到的功能码分配见表3。
注:在重要遥测、次要遥测量、一般遥测量中,本协议重复定义了功能码(具体功能码定义请参见表4、表5和表6),解释时可通过这三种遥测量不同的帧类别码来予以区分。
7.3 遥测信息字格式遥测信息字格式见图5。
图5 遥测信息字格说明:(1)每个信息字传送两路遥测量;(2)b11~b0传送一路模拟量,以二进制码表示,b11=0时为正数,b11=1时为负数,以2的补码表示负数;(3)b14=1表示溢出,b15=1表示无效。
7.4 遥信信息字格式遥信信息字格式见图6。
图6 遥信信息字格式说明:(1)每个遥信字含32个状态位;(2)各状态位定义参见表7、表8、表9、表10。
8 命令格式8.1 遥控命令遥控过程及遥控帧结构如图7所示。
遥控命令控制字和控制字节格式见图8。
遥控过程的信息字格式见图9。
此三个信息字内容相同(b )图7 遥控过程及帧结构(a )遥控结构;(b )帧结构b0B 7字节B 8b 7 b 0 B 9 B 10 B 11 B 12(a) (b)图8 遥控命令和控制字格式 (a )控制字格式;(b )控制字节格式撤消命令)(a )B n字节B n字节B n+1 B n+1B n+2 B n+2B n+3 B n+3B n+4 B n+4B n+5 B n+5B n字节B n字节B n+1 B n+1B n+2 B n+2B n+3 B n+3B n+4 B n+4B n+5 B n+5(c) (d)图9 遥控过程的信息字格式(a)遥控选择(下行)(b)遥控返校(上行)(c)遥控执行(下行)(d)遥控撤消(下行)说明:(1)开关序号为二进制码。
(2)遥控返校字为上行信息,随机插在上行信息中不跨帧地连送三遍;(3)开关操作将由直流屏进行检查,若不能进行操作则把B n+1字节内容改为FFH;(4)遥控返校后若超时30秒未收到下行的遥控执行命令,本次命令便自动撤消;8.2 设定命令设定命令控制字格式同8.1条遥控命令,但设定命令只有一个下行帧,无返校、执行和撤消命令帧。
控制字的帧类别改为57H,其信息字格式如图10所示。
B n字节B n+1B n+2B n+3B n+4B n+5图10 设定命令(下行)说明:(1)对象号为二进制码;(2)设点数为12进制码,不乘以系数,负数以2的补码表示;9 数据定义部分9.1、重要遥测量重要遥测量帧类别码为0x61,控制字节为0x71,信息字定义见表4。
表4 重要遥测量信息字定义9.2、次要遥测量次要遥测量帧类别码为0xC2,控制字节为0x71,信息字定义见表5。
表5 次要遥测量信息字定义9.3 一般遥测量一般遥测量帧类别码为0xB3,控制字节为0x71,信息字定义见表6。
表6 一般遥测量信息字定义9.4 遥信量遥信量的帧类别码为0xF4,控制字节为0x71,定义如表7。
表7 遥信量的信息字定义9.5 设定命令直流屏的设定包括系统控制方式修改、系统均/浮充转换。
表12 设定命令的对象号及设点数定义附录A:计算CRC校验的标准C程序/*=========================================================计算CRC校验码函数;输入: 要计算数据缓冲区的起始指针pBuff,缓冲区的字节数Len;输出: CRC校验码;功能: 计算CRC校验码。
==========================================================*/ BYTE CalcCRC(BYTE *pBuff, int len){int q, r;int crc;int i;crc = 0;q = 0; /*字节计数器*/r = 0; /*字节内位的计数器*/while(q < len){if(pBuff[q] & (0x80>>r)) /*当字节内某位为1时,在余数末尾置1,否则置0*/crc |= 0x01;if(crc >= 0x100)crc ^= 0x107; /*异或多项余子式*/crc <<= 1;r++;if(r == 8) /*处理下一个字节*/{r = 0;q++;}}for(i=0; i<8; i++) /*对位流的后8位计算CRC校验码*/{if(crc >= 0x100)crc ^= 0x107;crc <<= 1;}crc >>= 1;crc = (~crc); /*余数取反*/return (BYTE)crc;}。