PSM-E10监控模块CDT规约
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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。
7
b0
图2 控制字组成
图3 控制字节
B7字节
B8
B9
B10
B11
B12
S:源站址定义位,
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所示。
Bn
Bn+1
Bn+2
Bn+3
Bn+4
Bn+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 )帧结构
b0
B 7字节
B 8
b 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+1
B n+2 B n+2
B n+3 B n+3
B n+4 B n+4
B n+5 B n+5
B n字节B n字节
B n+1 B n+1
B n+2 B n+2
B n+3 B n+3
B n+4 B n+4
B 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+1
B n+2
B n+3
B n+4
B 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;
}。