IEC104规约报文详解

标签:
365 |
目录:
一、规约概述
二、104报文分析例子
三、104规约源码示例
【a.对时过程的源码】主站->子站
【b.总召唤过程的源码】
【c. 电度召唤过程的源码】
【d. 单点遥控过程的源码】
【e. 关于主动上送】
【f .I格式和S格式报文控制字节中发送序号和接收序号的规律】
-----------------------------------------------------------------------------------------------------------
一、规约概述
IEC-60870-5-104:应用模型是:物理层,链路层,网络层,传输层,应用层
物理层保证数据的正确送达,保证如何避免冲突。(物理层利用如
链路层负责具体对那个slave的通讯,对于成功与否,是否重传由链路层控制(RS485
应用层负责具体的一些应用,如问全数据还是单点数据还是类数据等(网络利用CSMA/CD等保证避免冲突的发生)
-----------------------------------------------
基本定义:端口号2404,站端为Server 控端为Client,平衡式传输,2Byte站地址,2Byte传送原因,3Byte信息地址。
-----------------------------------------------
注:APDU 应用规约数据单元(整个数据) = APCI 应用规约控制信息(固定6个字节) + ASDU 应用服务数据单元(长度可变)
-----------------------------------------------
APDU长度(系统-特定参数,指定每个系统APDU的最大长度)APDU的最大长度域为253(缺省)。视具体系统最大长度可以压缩。
-----------------------------------------------
“可设置104调度规约”有1997年和2002年两个版本,在流程上没有什么变化,02版只是在97版上扩展了遥测、遥信等信息体基体址,区别如下:
下面的【字节12、13、14】有说明。
二、104报文分析例子
Buf序
M->R:6815
即0x0110=1*16*16+16=272 时标: 2002/10/18 19:36:00.272
-----------------------------------------------
每个字节都为unsigned Char类型,如果是2个字节表示1个short型,则都是低位在前,高位在后。
-----------------------------------------------
【字节0】0x68即十进制数104,68做为Buf第0个字节,下面的说明依次向后排
-----------------------------------------------
【字节1】15即从字节2到最后的所有字节数(长度)
-----------------------------------------------
【字节2、3、4、5】这4个字节是4个控制域,对应不同类型的格式(I帧、U帧、S帧),意义和格式都不相同
I帧(可变长度)的控制域定义:
http://s14/mw690/001gz4SZzy7j2kOxcCh0d&690
其中发送序号、接收序号的低位都需要左移1位,即乘2,才发出;接收时除2即可。
S帧(固定6个字节的短帧,用于确认接收到对方的帧,但本身无信息数据)的控制域定义:http://s6/mw690/001gz4SZzy7j2kPzkO105&690
U帧(固定6字节)的控制域定义:
http://s16/mw690/001gz4SZzy7j2kQzXdlcf&690
-----------------------------------------------
【字节6】即ASDU的首字节就是类型标识(标准ASDU的选集【ASDU定义】)
类型标识与传送原因分配(站-特定参数):
灰块:不要求;黑块:本配套标准不允许;空白:功能或ASDU未采用
类型标识与传输原因的标记:
"×"只用在标准方向;"R" 只用在反方向;"B" 用在两个方向
在监视方向的过程信息
(站-特定参数,只用在标准方向标"×",只用在相反方向标"R",用在两个方向标"B")
□<1>
■<2>
□<3>
■<4>
□<5>
■<6>
□<7>
■<8>
□<9>
■<10>
□<11>
■<12>
□<13>
■<14>
□<15>
■<16>
■<17>
■<18>
■<19>
□<20>
□<21>
□<30>
□<31>
□<32> 0x20:M-ST-TB-1 =带时标CP56Time2A的步位信息
□<33>
□<34>
□<35>
□<36>
□<37>
□<38>
□<39>
□<40>
ASDU集<1>、<3>、<5>、<7>、<9>、<11>、<13>、<15>、<20>、<21>、<30>-<40>都可采用。
在监视方向的系统信息
(站-特定参数,采用标"×")
□<70>
046x:M-EI-NA-1
以上都是RTU向主站上传的报文类型
在控制方向的过程信息
(站-特定参数,只用在标准方向标"×",只用在反方向标"R",用在两个方向标"B")
□<45> 0x2D:C-SC-NA-1 =单命令(遥控)
□<46> 0x2E:C-DC-NA-1 =双命令(遥控)
□<47> 0x2F:C-RC-NA-1 =升降命令
□<48> 0x30:C-SE-NA-1 =设定值命令,规一化值 (遥调)
□<49> 0x31:C-SE-NB-1 =设定值命令,标度化值
□<50> 0x32:C-SE-NC-1 =设定值命令,短浮点数
□<51> 0x33:C-BO-NA-1 =32比特串
□<58> 0x3A:C-SC-TA-1 =带时标CP56Time2A的单命令
□<59> 0x3B:C-DC-TA-1 =带时标CP56Time2A的双命令
□<60> 0x3C:C-RC-TA-1 =带时标CP56Time2A的升降命令
□<61> 0x3D:C-SE-TA-1 =带时标CP56Time2A的设定值命令,规一化值
□<62> 0x3E:C-SE-TB-1 =带时标CP56Time2A的设定值命令,标度化值
□<63> 0x3F:C-SE-TC-1 =带时标CP56Time2A的设定值命令,短浮点数
□<64> 0x40:C-BO-TA-1 =带时标CP56Time2A的32比特串
可采用〈45-51〉或〈58-64〉ASDU。
RTU须逐条对命令用相同报文确认
在控制方向的系统信息
(站-特定参数,只用在标准方向标"×",只用在反方向标"R",用在两个方向标"B")
□<100> 0x64:C-IC-NA-1 =总召唤命令(总召唤)
□<101> 0x65:C-CI-NA-1 =电能脉冲召唤命令(召唤电度量)
□<102> 0x66:C-RD-NA-1 =读命令
□<103> 0x67:C-CS-NA-1 =时钟同步命令(校时)
■<104> 0x68:C-TS-NA-1 =测试命令
□<105> 0x69:C-RP-NA-1 =复位进程命令
■<106> 0x6A:C-CD-NA-1 =延时传输命令
□<107> 0x6B:C-TS-TA-1 =带时标CP56TimE2A的测试命令
RTU须逐条形成镜像报文
在控制方向的参数命令
(站-特定参数,只用在标准方向标"×",只用在反方向标"R",用在两个方向标"B")
□<110> 0x6E:P-ME-NA-1 =测量值参数,规一化值
□<111> 0x6F:P-ME-NB-1 =测量值参数,标度化值
□<112> 0x70:P-ME-NC-1 =测量值参数,短浮点数
□<113> 0x71:P-AC-NA-1 =参数激活
文件传输
(站-特定参数,只用在标准方向标"×",只用在反方向标"R",用在两个方向标"B")
□<120> 0x78:F-FR-NA-1 =文件准备好
□<121> 0x79:F-SR-NA-1 =节已准备好
□<122> 0x7A:F-SC-NA-1 =召唤目录,选择文件,召唤文件,召唤节
□<123> 0x7B:F-LS-NA-1 =最后的节,最后的度
□<124> 0x7C:F-AF-NA-1 =确认文件,确认节
□<125> 0x7D:F-SG-NA-1 =段
□<126> 0x7E:F-DR-TA-1 =目录{空白或×,只在监视(标准)方向有效}
-----------------------------------------------
【字节7】可变结构限定词
http://s12/mw690/001gz4SZzy7j2kS49kvdb&690
D7位: SQ=0离散的信息报告,SQ=1顺序的信息报告,一般取1
Num:信息的数目范围0-127(即1个包中包含的遥测YC、遥信YX等信息的个数)
-----------------------------------------------
【字节8、9】传送原因
http://s13/mw690/001gz4SZzy7j2kT6rPSbc&690
常用传送原因CAUSE
3 0x03 突变信息
5 0x05 请求、被请求
6 0x06 激活
7 0x07 激活确认
8 0x08 停止激活
9 0x09 停止激活确认
10 0x0A 激活终止
20 0x14 响应站总召唤
21-36 0x15-0x24 响应第1组召唤-响应第16组召唤
37 0x25 响应计数量
38-41 0x26-0x29 响应第1组计数量-响应第4组计数量
-----------------------------------------------
【字节10、11】公共地址(即厂站地址)
一般LINK ADDR(链路地址)取站地址,如果站中仍分区(SUSTATION)就用ASDU来区分,如果只有一个那干脆取一样就好了。
例如01 00 则由于低位01 高位00 即 0x0001 公共地址=1
-----------------------------------------------
以下部分根据前面
-----------------------------------------------
【字节12、13、14】信息体地址,即我们常说的点号
例如 79 00 00 则由于低位79 中间00 高位00 即 0x000079 = 7*16+9 = 112+9 = 121
推荐的信息对象地址范围
数据类型 新地址分配范围 信息量 老地址分配范围 信息量
遥信量
遥测量
参数量
遥控量
设定值
步位置量(变压器分接头)
向子站传送二进制信息
子站远动终端状态
-----------------------------------------------
【字节15】信息定义
遥测归一化值(数据的一种离散表示方法,可保证数据精度)
可用下面公式。例子:传送二次电压值,量程(其它量程应该是多少呢?)为100,实时值X=99.98,使用16点采样方式,y应该是多少?
http://s13/small/001gz4SZzy7j2kVsKiU7c&690
-----------------------------------------------------------------------------------------------------------
三、104规约源码示例
【a.对时过程的源码】主站->子站
主站(客户)端下发:
68
RTU(服务器)端应答:
68
-----------------------------------------------
【b.总召唤过程的源码】
主站(客户)端下发:
68
《RTU(服务器)端应答》
1)对总召唤进行确认:
68
上送全遥信(可能多帧):(遥信都按单遥处理)
68
上送全遥测(可能多帧):(其中标度化遥测数的表示方法为:Bit10-Bit0为数值部分,负数为补码;Bit11为符号位,0正1负;Bit15-Bit12为空)
68
2)总召唤结束:
68
-----------------------------------------------
【c. 电度召唤过程的源码】
主站(客户)端下发:
68
《RTU(服务器)端应答(很明显窗口尺寸>1):》
1)对电度召唤进行确认:
68
2)上送全电度(可能多帧):
68
3)电度召唤结束:
68
-----------------------------------------------
【d. 单点遥控过程的源码】
1)主站(客户)端下发单点遥控选择:(其中遥控性质字节的各位含义:Bit7=1,选择;=0,执行;Bit1Bit0=01,合闸;=00,分闸(单遥);=02,合闸;=01,分闸(双遥);Bit65432=1,短脉冲;=2,长脉冲;=3,持续)
68
2)RTU(服务器)端进行单点遥控选择应答:和主站(客户)端下发基本相同,若是确认,把传送原因改为07;若是否认,把传送原因改为47(传送原因低字节的Bit6=1表示否定确认)
3)主站(客户)端下发单点遥控执行:和选择报文基本相同,仅遥控性质字节的Bit7=0
4)RTU(服务器)端进行单点遥控执行应答:和主站(客户)端下发基本相同,若是确认,把传送原因改为07;若是否认,把传送原因改为47
-----------------------------------------------
【e. 关于主动上送】
1)主动上送变化遥信的报文源码(可能多帧)(遥信都按单遥处理)
68
2)主动上送变化遥测的报文源码(可能多帧)
68
-----------------------------------------------
【f .I格式和S格式报文控制字节中发送序号和接收序号的规律】
1)本端每发送1次I格式报文,本端的发送序号加1;本端发送U格式或S格式报文,本端发送序号保持不变。
2)正常情况下对端上次报文中的发送序号+1=本端本次报文中的接收序号。
3)正常情况下对端上次报文中的接收序号 =本端的发送序号。
-----------------------------------------------------------------------------------------------------------