---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IEC-60870-5-104:应用模型是:物理层,链路层,网络层,传输层,应用层
物理层保证数据的正确送达,保证如何避免冲突。(物理层利用如 RS232上利用全双工)
链路层负责具体对那个slave的通讯,对于成功与否,是否重传由链路层控制(RS485 2线利用禁止链路层确认)
应用层负责具体的一些应用,如问全数据还是单点数据还是类数据等(网络利用CSMA/CD等保证避免冲突的发生)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
基本定义:端口号2404,站端为Server 控端为Client,平衡式传输,2Byte站地址,2Byte传送原因,3Byte信息地址。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
注: APDU 应用规约数据单元(整个数据) = APCI 应用规约控制信息(固定6个字节) + ASDU 应用服务数据单元(长度可变)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
APDU长度(系统-特定参数,指定每个系统APDU的最大长度)APDU的最大长度域为253(缺省)。视具体系统最大长度可以压缩。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
【1个例子】
104报文分析
BUF序 0 1 23 4 5 6 7 8 9 .10 11 12 13 14 15 16 17 18 19 20 21 22
M->R:68 1510 0002 001E 01 030001 0079 00 00 01 10 01 24 13 D2 0A 02 分析的结果是I (主动上报SOE,主动上报是因为104是平衡式规约)
报文头固定为0x68,即十进制104
长度15字节(不是6帧的,都是I帧)
发送序号=8【控制字节的解析10 00 02 00 ,发送序号:0010H/2=16/2=8】
接收序号=1 【控制字节的解析 10 00 0200 ,接收序号:0002H/2=2/2 =1】
0x1E=30 即 M_SP_TB_1 带长时标的单点信息
01 -> SQ:0 信号个数:1
03 00 -> 传送原因:[ T=0 P/N=0 原因=3 | 突发 ]
01 00 -> 公共地址:1
79 00 00 ->0x79=121 信息体地址: 121
01 -> 状态: 1 IV:0 NT:0 SB:0 BL:0
10 01 24 13 D2 0A 02 ->低位10 高位01,即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帧(可变长度)的控制域定义其中发送序号、接收序号的低位都需要左移1位,即乘2,才发出;接收时除2即可。
S帧(固定6个字节的短帧,用于确认接收到对方的帧,但本身无信息数据)的控制域定义
U帧(固定6字节)的控制域定义 启动控制信息(V-生效(激活) C-确认) 命令(TEST-测试 STOP-停止 START-启动)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
【字节6】即ASDU的首字节就是类型标识(标准ASDU的选集【ASDU定义】)
类型标识与传送原因分配(站-特定参数): 灰块:不要求 黑块:本配套标准不允许 空白:功能或ASDU未采用
类型标识与传输原因的标记: "×"只用在标准方向 "R" 只用在反方向 "B"用在两个方向
在监视方向的过程信息
(站-特定参数,只用在标准方向标"×",只用在相反方向标"R",用在两个方向标"B")
□<1> 0x01:M-SP-NA-1 =单点信息 (总召唤遥信、变位遥信)
■<2> 0x02:M-SP-TA-1 =带时标单点信息 (SOE事项)
□<3> 0x03:M-DP-TA-1 =双点信息
■<4> 0x04:M-DP-TA-1 =带时标双点信息
□<5> 0x05:M-ST-NA-1 =步位置信息
■<6> 0x06:M-ST-TA-1 =带时标步位置信息
□<7> 0x07:M-BO-NA-1 =32比特串
■<8> 0x08:M-BO-TA-1 =带时标32比特串
□<9> 0x09:M-ME-NA-1 =测量值,规一化值 (越限遥测)
■<10> 0x0A:M-ME-TA-1 =测量值,带时标规一化值
□<11> 0x0B:M-ME-NB-1 =测量值,标度化值
■<12> 0x0C:M-ME-TB-1 =测量值,带时标标度化值
□<13> 0x0D:M-ME-NC-1 =测量值,短浮点数
■<14> 0x0E:M-ME-TC-1 =测量值,带时标短浮点数
□<15> 0x0F:M-IT-NA-1 =累计量 (电度量)
■<16> 0x10:M-IT-TA-1 =带时标累计量
■<17> 0x11:M-EP-TA-1 =带时标继电保护装置事件
■<18> 0x12:M-EP-TB-1 =带时标继电保护装置成组启动事件
■<19> 0x13:M-EP-TC-1 =带时标继电保护装置成组输出电路信息
□<20> 0x14:M-SP-NA-1 =具有状态变位检出的成组单点信息
□<21> 0x15:M-ME-ND-1 =测量值,不带品质描述的规一化值 (总召唤遥测量)
□<30> 0x1E:M-SP-TB-1 =带时标CP56TimE2A的单点信息
□<31> 0x1F:M-DP-TB-1 =带时标CP56TimE2A的双点信息
□<32> 0x20:M-ST-TB-1 =带时标CP56TimE2A的步位信息
□<33> 0x21:M-BO-TB-1 =带时标CP56TimE2A的32位串
□<34> 0x22:M-ME-TD-1 =带时标CP56TimE2A的规一化测量值
□<35> 0x23:M-ME-TE-1 =测量值,带时标CP56TimE2A的标度化值
□<36> 0x24:M-ME-TF-1 =测量值,带时标CP56TimE2A的短浮点数
□<37> 0x25:M-IT-TB-1 =带时标CP56TimE2A的累计值
□<38> 0x26:M-EP-TD-1 =带时标CP56TimE2A的继电保护装置事件
□<39> 0x27:M-EP-TE-1 =带时标CP56TimE2A的成组继电保护装置成组启动事件
□<40> 0x28:M-EP-TF-1 =带时标CP56TimE2A的继电保护装置成组输出电路信息
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】可变结构限定词
D7位: SQ=0离散的信息报告 SQ=1顺序的信息报告
Num:信息的数目范围0-127(即1个包中包含的YC、YX等信息的个数)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
【字节8、9】传送原因
常用传送原因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
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以下部分根据前面 字节6的类型,字节7的个数、以及是顺序还是单个,决定了信息体的个数和格式
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
【字节12、13、14】信息体地址,即我们常说的点号
例如 79 00 00 则由于低位79 中间00 高位00 即 0x000079 = 7*16+9 = 112+9 = 121
推荐的信息对象地址范围
数据类型 新地址分配范围 信息量 老地址分配范围 信息量
遥信量 1H—1000H 4096 1H—400H 1024
遥测量 4001H—5000H 4096 701H-900H 512
参数量 5001H—6000H 4096 901H-B00H 512
遥控量 6001H—6200H 512 B01H-B80H 128
设定值 6201H—6400H 512 B81H-C00H 128
步位置量(变压器分接头) 66011H—6700H 256 C81H-CA0H 32
向子站传送二进制信息 6701H—6800H 256 CA1H-CC0H 32
子站远动终端状态 6801H CE9H
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
【字节15】信息定义
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
遥测归一化值(数据的一种离散表示方法,可保证数据精度)
可用下面公式。例子:传送二次电压值,量程(其它量程应该是多少呢?)为100,实时值X=99.98,使用16点采样方式,Y应该是多少?
求得Y=27300.37217,取整并整理为 0x6AA4,则发送的归一化值为 0x A4 A6
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
104规约源码示例
【h.对时过程的源码】主站->子站
主站(客户)端下发:
68 14(APDU长度)控制字节1 控制字节2 控制字节3 控制字节4 67(ASDU) 1(信息体个数)06 00(传送原因) 公共地址低 公共地址高 00 00 00(信息体地址)毫秒低 毫秒高分钟 小时 日期 月份年份
RTU(服务器)端应答:
68 14(APDU长度)控制字节1 控制字节2 控制字节3 控制字节4 67(ASDU) 1(信息体个数)07 00(传送原因) 公共地址低 公共地址高 00 00 00(信息体地址)毫秒低 毫秒高分钟 小时 日期 月份年份
【i.总召唤过程的源码】
主站(客户)端下发:
68 0E(APDU长度)控制字节1 控制字节2 控制字节3 控制字节4 64(ASDU) 1(信息体个数)06 00(传送原因) 公共地址低 公共地址高 00 00 00(信息体地址)14
《RTU(服务器)端应答》
1.对总召唤进行确认:
68 0E(APDU长度)控制字节1 控制字节2 控制字节3 控制字节4 64(ASDU) 1(信息体个数)07 00(传送原因) 公共地址低 公共地址地 00 00 00(信息体地址)14
上送全遥信(可能多帧):(遥信都按单遥处理)
68 APDU长度 控制字节1 控制字节2 控制字节3 控制字节4 02(ASDU)信息体个数(Bit7=1,表示连续信息体地址) 14 00(传送原因)公共地址低 公共地址高 3字节的第1点遥信信息体地址 第1点遥信的品质描述和值 第1点遥信的3字节时标……
上送全遥测(可能多帧):(其中标度化遥测数的表示方法为:Bit10-Bit0为数值部分,负数为补码;Bit11为符号位,0正1负;Bit15-Bit12为空)
68 APDU长度 控制字节1 控制字节2 控制字节3 控制字节4 0B(ASDU,表示采用标度化值)信息体个数(Bit7=1,表示连续信息体地址)14 00(传送原因) 公共地址低 公共地址高 3字节的第1点遥测信息体地址 第1点遥测的2字节标度化值 第1点遥测的品质描述 ……
4.总召唤结束:
68 0E(APDU长度)控制字节1 控制字节2 控制字节3 控制字节4 64(ASDU)1(信息体个数)0A 00(传送原因) 公共地址低 公共地址地 00 00 00(信息体地址)14
【j. 电度召唤过程的源码】
主站(客户)端下发:
68 0E(APDU长度)控制字节1 控制字节2 控制字节3 控制字节4 0F(ASDU) 1(信息体个数)06 00(传送原因) 公共地址低 公共地址高 00 00 00(信息体地址)14
《RTU(服务器)端应答(很明显窗口尺寸>1):》
1. 对电度召唤进行确认:
68 0E(APDU长度)控制字节1 控制字节2 控制字节3 控制字节4 0F(ASDU) 1(信息体个数)07 00(传送原因) 公共地址低 公共地址地 00 00 00(信息体地址)1
2. 上送全电度(可能多帧):
68 APDU长度 控制字节1 控制字节2 控制字节3 控制字节4 0F(ASDU)信息体个数(Bit7=1) 25 00(传送原因) 公共地址低 公共地址高 3字节的第1点电度信息体地址 第1点电度的4字节值 第1点电度的品质 描述0xC0 ……
3.电度召唤结束:
68 0E(APDU长度)控制字节1 控制字节2 控制字节3 控制字节4 64(ASDU)1(信息体个数)0A 00(传送原因) 公共地址低 公共地址地 00 00 00(信息体地址)14
【k. 单点遥控过程的源码】
1.主站(客户)端下发单点遥控选择:(其中遥控性质字节的各位含义:Bit7=1,选择;=0,执行;Bit1Bit0=01,合闸;=00,分闸(单遥);=02,合闸;=01,分闸(双遥);Bit65432=1,短脉冲;=2,长脉冲;=3,持续)
68 0E(APDU长度)控制字节1 控制字节2 控制字节3 控制字节4 2D(ASDU)1(信息体个数)06 00(传送原因) 公共地址低 公共地址地被控点的3字节信息体地址 1字节的遥控性质
2.RTU(服务器)端进行单点遥控选择应答:和主站(客户)端下发基本相同,若是确认,把传送原因改为07;若是否认,把传送原因改为47(传送原因低字节的Bit6=1表示否定确认)
3.主站(客户)端下发单点遥控执行:和选择报文基本相同,仅遥控性质字节的Bit7=0
4.RTU(服务器)端进行单点遥控执行应答:和主站(客户)端下发基本相同,若是确认,把传送原因改为07;若是否认,把传送原因改为47
【l. 关于主动上送】
2.主动上送变化遥信的报文源码(可能多帧)(遥信都按单遥处理)
68 APDU长度 控制字节1 控制字节2 控制字节3 控制字节4 02(ASDU)信息体个数(Bit7=0,表示每个变化点前自带信息体地址) 03 00(传送原因) 公共地址低 公共地址高 3字节的第1个变化遥信点信息体地址 第1个变化遥信点的品质描述和值 第1点遥信的3字节时标……
3.主动上送变化遥测的报文源码(可能多帧)
68 APDU长度 控制字节1 控制字节2 控制字节3 控制字节4 0B(ASDU)信息体个数(Bit7=0,表示每个变化点前自带信息体地址) 03 00(传送原因) 公共地址低 公共地址高 3字节的第1个变化遥测点的信息体地址 第1个变化遥测点的2字节标度化值 第1个变化遥测点的品质描述 ……
【M .I格式和S格式报文控制字节中发送序号和接收序号的规律】
1.本端每发送1次I格式报文,本端的发送序号加1;本端发送U格式或S格式报文,本端发送序号保持不变。
2.正常情况下对端上次报文中的发送序号+1=本端本次报文中的接收序号。
3.正常情况下对端上次报文中的接收序号 < 本端的发送序号。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------