104规约整理
104规约定义一. 104报文的一般格式:以下图中:APCI 为应用规约控制信息ASDU 为应用服务数据单元APDU 为应用规约数据单元图 1 –远动配套标准的APDU定义图2 –远动配套标准的APCI定义1、104规约报文:启动字符为68H,没有结束字符(比如:101规约中的结束字符16)。
2、“APDU的长度”定义了APDU体的长度,◆它包括APCI中的四个控制域八位位组和ASDU。
既从控制域的第一个八位位组开始,到报文的最后结束。
◆ASDU的最大长度限制在249以内,因为APDU域的最大长度是253(APDU最大值=255减去启动和长度八位位组),控制域的长度是4个八位位组。
二、控制域的定义(I 格式、S 格式和U 格式)三种类型的控制域格式:用于编号的信息传输(I 格式)编号的监视功能(S 格式) 未编号的控制功能(U 格式)。
1、I 格式定义控制域第一个八位位组的第一位 = 0 定义了I 格式,I 格式的APDU 常包括APCI 和一个ASDU (数据单元)。
I 格式的控制信息如图3所示比特图 3– 信息传输格式类型的控制域(I 格式)2、S 格式定义控制域第一个八位位组的第一位 = 1 并且第二位 = 0 定义了S 格式,S 格式的APDU只包括APCI 。
S 格式的控制信息如图4所示。
比特 8 7 6 5 4 3 2 1图 4 –编号的监视功能类型的控制域(S 格式)3、U 格式定义控制域第一个八位位组的第一位= 1 并且第二位=1 定义了U 格式,U 格式的APDU 只包括APCI 。
在同一时刻,TESTFR, STOPDT 或 STARTDT 中只有一个功能可以被激活。
.U 格式的控制信息如图5所示八位位组 1 八位位组 2 八位位组 3 八位位组 4八位位组1 八位位组 2 八位位组 3 八位位组 4比特图 5 –未编号的控制功能类型的控制域(U 格式)三、数据传输过程1、 用启/停进行传输控制控制站(例如,A 站)利用STARTDT(启动数据传输)和STOPDT(停止数据传输)来控制被控站(B 站)的数据传输。
这个方法很有效。
例如,当在站间有超过一个以上的连接打开从而可利用时,一次只有一个连接可以用于数据传输。
定义STARTDT 和STOPDT 的功能在于从一个连接切换到另一个连接时避免数据的丢失。
STARTDT 和STOPDT 还可与单个连接一起用于控制连接的通信量。
2、测试过程:(1)未使用但已建立的连接会通过发送测试APDUs( TESTFR=激活)并得到接收站发回的TESTFR=确认,在两个方向上进行周期性测试。
(2)发送站和接收站在某个具体时间段内没有数据传输(超时)会启动测试过程。
以上过程使用U 格式:在同一时刻,TESTFR, STOPDT 或 STARTDT 中只有一个功能可以被激活。
(1)在启动数据传输时:STARTDT 被激活,启动方STARTDT 生效,即第3位为1,接受方STARTDT 确认,即第4位为1 ,如下:发送:启动数据传输U 帧 68 04 07 00 00 00接受:启动数据传输确认U 帧 68 04 0b 00 00 00(2)在启动测试过程时:TESTFR 被激活,启动方TESTFR 生效,即第7位为1,接受方TESTFR 确认,即第8位为1 ,如下:发送:启动数据传输U 帧 68 04 43 00 00 00接受:启动数据传输确认U 帧 68 04 83 00 00 00(3)在停止数据传输时:STOPDT 被激活,启动方STOPDT 生效,即第5位为1,接受方STOPDT 确认,即第6位为1 ,如下:发送:启动数据传输U 帧 68 04 13 00 00 00接受:启动数据传输确认U 帧 68 04 23 00 00 00八位位组t 八位位组3 八位位组4八位位组23、传输过程在创建一个TCP连接后,使用I格式传输数据,发送和接收序列号都被设置成0。
两个序列号在每个APDU和每个方向上都会按顺序递增一位。
发送方增加发送序列号,接受方增加接收序列号。
当接收站按APDU正确收到的数字返回接收序列数字时,表示接收站认可这个APDU或者多个APDU.发送站把一个或几个APDU保存到一个缓冲区里直到它将自己的发送序列号作为一个接收序列号收回,这个接收序列号小于等于发送序列号时有效。
这样就可以删除缓冲区里正确传送过的APDU。
万一更长的数据传输只在一个方向进行,就得在另一个方向发送S格式,在缓冲区溢出或超时前认可APDU。
这种方法应该在两个方向上应用。
报文实例:初始化子站TX:启动数据传输U帧:=68 04 07 00 00 00RX:启动数据传输确认U帧:=68 04 0b 00 00 00时钟同步TX:校时命令:=68 14 00 00 00 00 67 01 06 01 01 00 00 00 00 78 23 1d 10 39 04 05RX:校时命令:=68 14 00 00 02 00 67 01 07 00 01 00 00 00 00 78 23 1d 10 39 04 05总召唤TX:总召唤:=68 0e 02 00 02 00 64 01 06 01 01 00 00 00 00 14RX:总召唤确认:=68 0e 02 00 04 00 64 01 07 00 01 00 00 00 00 14RX:单点信息:=68 36 04 00 04 00 01 a9 14 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 01 00 00 RX:无品质测量值:=68 23 06 00 04 00 15 8b 14 00 01 00 01 07 00 00 00 00 00 00 00 00 00 00 00 a3 8b 00 00 00 00 00 00 00 00 02 00RX:总召唤结束:=68 0e 08 00 04 00 64 01 0a 00 01 00 00 00 00 14TX:S帧数据:=68 04 01 00 0a 00TX:测试U帧:=68 04 43 00 00 00RX:测试确认U帧:=68 04 83 00 00 00四、应用服务数据单元(ASDU)中类型标识的定义:表1 --- 在监视方向的过程信息表2 在控制方向的过程信息在控制方向传送过程信息给指定站时,可以带或者不带时标,但二者不能混合发送.注在控制方向上具有CON标记的ASDU,在监视方向上可以传送同样的报文内容,只是传送原因会不相同,在监视方向上这些ASDU用作肯定或否定确认.表3 在监视方向的系统命令表4 在控制方向的系统命令*时钟同步命令不能在104中应用,因为网络路由的延时永远不定(随机),导致对时不准;表5 在控制方向的参数表6 文件传输注在控制方向上具有CON标记的ASDU,在监视方向上可以传送同样的报文内容,只是传送原因会不相同,在监视方向上这些ASDU用作肯定或否定确认.五、应用服务数据单元(ASDU )定义:参考101规约中对ASDU 的定义(101规约中的7.3)和以下内容: 1、类型标识 58: C_SC_TA_1 带时标CP56Time2a 的单命令单个信息体(SQ=0)0 0 1 1 1 0 1 0 类型标识数据单元标识符 在IEC60870-5-101 7.1中定义 0 0 0 0 0 0 0 1 可变结构限定词 在IEC60870-5-101 7.2.3中定义 传送原因 在IEC60870-5-101 7.2.4中定义 ASDU 公共地址 在IEC60870-5-101 7.2.5中定义 信息体地址信息体S/EQU 0 SCSSCO=单命令,在IEC60870-5-101 7.2.6.15中定义CP56Time2a在IEC60870-5-101 7.2.6.18中定义7个八位位组的二进制时间 (日期和时间为毫秒至年)图21-ASDU :C_SC_TA_1 带时标CP56Time2a 的单命令 长时标格式(7位):短时标格式(3位):C_SC_TA_1 := CP{数据单元标识符, 信息体地址, SCO, CP56Time2a} 类型标识58 := C_SC_TA_1中使用的传送原因:在控制方向:<6>: = 激活<8>: = 停止激活在监视方向:<7>: = 激活确认<9> : = 停止激活确认<10> : = 激活终止<44>: = 未知的类型标识<45>: = 未知的传送原因<46>: = 未知的ASDU公共地址<47>: = 未知的信息体地址2、类型标识59:C_DC_TA_1带时标CP56Time2a的双命令单个信息体(SQ=0)图22-ASDU:C_DC_TA_1带时标CP56Time2a的双命令C_DC_TA_1 := CP{数据单元标识符, 信息体地址, DCO, CP56Time2a} 类型标识59 := C_DC_TA_1中使用的传送原因:控制方向:<6>: = 激活<8> : = 停止激活监视方向:<7>: = 激活确认<9> : = 停止激活确认<10> : = 激活终止<44>: = 未知的类型标识<45>: = 未知的传送原因<46>: = 未知的ASDU公共地址<47>: = 未知的信息体地址带时标CP56Time2a的升降命令单个信息体(SQ=0)图23-ASDU:C_RC_TA_1带时标CP56Time2a的步调节命令C_RC_TA_1 := CP{数据单元标识符, 信息体地址, RCO, CP56Time2a} 类型标识60 := C_RC_TA_1中使用的传送原因:控制方向:<6> : = 激活<8> : = 停止激活监视方向:<7> : = 激活确认<9> : = 停止激活确认<10> : = 激活终止<44> : = 未知的类型标识<45> : = 未知的传送原因<46> : = 未知的ASDU公共地址<47> : = 未知的信息体地址带时标CP56Time2a的设定值命令,规一化值单个信息体(SQ=0)图24-ASDU:C_SE_TA_1带时标CP56Time2a的设定值命令,规一化值C_SE_TA_1 := CP{数据单元标识符, 信息体地址, NV A,QOS, CP56Time2a} 类型标识61 := C_SE_TA_1中使用的传送原因:控制方向:<6> : = 激活<8> : = 停止激活监视方向:<7> : = 激活确认<9> : = 停止激活确认<10> : = 激活终止<44> : = 未知的类型标识<45> : = 未知的传送原因<46> : = 未知的ASDU公共地址<47> : = 未知的信息体地址带时标CP56Time2a的设定值命令,标度化值单个信息体(SQ=0)图25-ASDU:C_SE_TB_1带时标CP56Time2a的设定命令, 标度化值C_SE_TB_1 := CP{数据单元标识符, 信息体地址, SV A,QOS, CP56Time2a} 类型标识62 := C_SE_TB_1中使用的传送原因:控制方向:<6> : = 激活<8> : = 停止激活监视方向:<7> : = 激活确认<9> : = 停止激活确认<10> : = 激活终止<44> : = 未知的类型标识<45> : = 未知的传送原因<46> : = 未知的ASDU公共地址<47> : = 未知的信息体地址带时标CP56Time2a的设定值命令,短浮点数单个信息体(SQ=0)图26-ASDU:C_SE_TC_1带时标CP56Time2a的设定值命令, 短浮点数C_SE_TC_1 := CP{数据单元标识符, 信息体地址, IEEE STD 754,QOS, CP56Time2a} 类型标识63 := C_SE_TC_1中使用的传送原因:控制方向:<6> : = 激活<8> : = 停止激活监视方向:<7> : = 激活确认<9> : = 停止激活确认<10> : = 激活终止<44> : = 未知的类型标识<45> : = 未知的传送原因<46> : = 未知的ASDU公共地址<47> : = 未知的信息体地址带时标CP56Time2a的32比特串单个信息体(SQ=0)IEC 2811/2000图27-ASDU:C_BO_TA_1带时标CP56Time2a的32比特串C_BO_TA_1 := CP{数据单元标识符, 信息体地址, BSI, CP56Time2a}类型标识64 := C_BO_TA_1中使用的传送原因:控制方向:<6> : = 激活<8> : = 停止激活监视方向:<7> : = 激活确认<9> : = 停止激活确认<10> : = 激活终止<44> : = 未知的类型标识<45> : = 未知的传送原因<46> : = 未知的ASDU公共地址<47> : = 未知的信息体地址带时标CP56Time2a的测试命令单个信息体(SQ=0)IEC 2812/2000图28-ASDU:C_TS_TA_1带时标CP56Time2a的测试命令C_ TS_TA _1 := CP{数据单元标识符, 信息体地址, TSC, CP56Time2a}TSC :=UI 16 [1..16] <0 .. 65535 >TSC是一个二进制计数器,它给出测试命令的顺序号。
104规约详细介绍及报文解析 -回复
104规约详细介绍及报文解析-回复规约(Protocol)是计算机网络通信中的一种协议,用于定义数据交换的格式、顺序以及错误检测和纠正等内容。
104规约(IEC 60870-5-104)是国际电工委员会(International Electrotechnical Commission)制定的一种规约,主要用于监控与控制系统之间的通信。
本文将详细介绍104规约及其报文解析。
一、104规约简介104规约是一种基于TCP/IP网络通信的规约,主要用于工业自动化领域中的远程监控与控制系统。
它提供了一种可靠、高效的通信方式,能够满足实时性、灵活性和可靠性等要求。
104规约采用了面向报文和面向连接的通信方式,能够支持点对点、点对多点和多点对点的通信模式。
二、104规约报文结构104规约的报文结构包括报文头(Header)、ASDU(Application Service Data Unit)和报文尾(Footer)。
报文头包含了报文的控制信息,用于表示报文类型、优先级和传输原因等。
ASDU是实际传输的数据部分,负责携带各种监控与控制的信息。
报文尾用于检测报文的完整性和一致性。
三、104规约报文解析1. 报文头解析:首先读取报文头,根据报文头的信息可以确定报文的类型、传输原因和发送序号等。
报文类型表示了报文的目的和功能,如启动报文、确认报文或者监控与控制的报文。
传输原因表示了触发发送该报文的原因,如周期定时发送、事件触发发送等。
2. ASDU解析:根据ASDU的类型可以确定ASDU的功能和数据的含义。
不同类型的ASDU用于传输不同种类的监控与控制的数据,如单点信息、双点信息、测量值和参数等。
根据ASDU的结构和定义,可以提取出数据的具体内容。
3. 报文尾解析:最后检查报文尾以验证报文的完整性和一致性。
报文尾通常包括一个校验和,用于检测报文是否被修改或丢失。
四、104规约报文的应用104规约广泛应用于电力、水利、交通、石油等行业中的远程监控与控制系统。
104规约详解
链路先握手再通信,不握手不通信,通信中断须再握手(建立链路)确认报文的来回须对方的认可,认可方式可以是一条专用的报文也可以是下一个询问报文中的FCB来暗示原因传送的信息都必须带上原因,不允许没有理由的传输地址每个信息量都有一个唯一的不重复的地址类型每种信息的传输都有不同的功能类型68 启动符5D 长度6C 控制域103 控制域278 控制域300 控制域401 遥信D0 可变结构限定词(信息体个数)14 00 传送原因01 00 站地址01 00 00 信息体地址(点号=信息体地址-起始地址)00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00结构说明:TYP:类型标识,可查表在监视方向的过程信息<0> := 未定义<1> := 单点信息M_SP_NA_1<3> := 双点信息M_DP_NA_1<5> := 步位置信息M_ST_NA_1<7> := 32比特串M_BO_NA_1<9> := 测量值,归一化值M_ME_NA_1<11> := 测量值,标度化值M_ME_NB_1<13> := 测量值,短浮点数M_ME_NC_1<15> := 累计量M_IT_NA_1<20> := 带状态检出的成组单点信息M_PS_NA_1<21> := 不带品质描述的归一化测量值M_ME_ND_1<22..29>:= 为将来的兼容定义保留<30> := 带时标CP56Time2a的单点信息M_SP_TB_1<31> := 带时标CP56Time2a的双点信息M_DP_TB_1<32> := 带时标CP56Time2a的步位置信息M_ST_TB_1<33> := 带时标CP56Time2a的32比特串M_BO_TB_1<34> := 带时标CP56Time2a的测量值,归一化值M_ME_TD_1<35> := 带时标CP56Time2a的测量值,标度化值M_ME_TE_1<36> := 带时标CP56Time2a的测量值,短浮点数M_ME_TF_1<37> := 带时标CP56Time2a的累计量M_IT_TB_1<38> := 带时标CP56Time2a的继电保护装置事件M_EP_TD_1<39> := 带时标CP56Time2a的继电保护装置成组启动事件M_EP_TE_1<40> := 带时标CP56Time2a的继电保护装置成组输出电路信息M_EP_TF_1<41..44>:= 为将来的兼容定义保留在控制方向的过程信息类型标识:= UI8[1..8]<45..69>CON <45> := 单命令C_SC_NA_1 CON <46> := 双命令C_DC_NA_1 CON <47> := 步调节命令C_RC_NA_1 CON <48> := 设点命令,归一化值C_SE_NA_1 CON <49> := 设点命令,标度化值C_SE_NB_1 CON <50> := 设点命令,短浮点数C_SE_NC_1 CON <51> := 32比特串C_BO_NA_1<52..57> := 为将来的兼容定义保留在控制方向的过程信息,带时标的ASDUCON <58> := 带时标CP56Time2a的单命令C_SC_TA_1 CON <59> := 带时标CP56Time2a的双命令C_DC_TA_1 CON <60> := 带时标CP56Time2a的步调节命令C_RC_TA_1 CON <61> := 带时标CP56Time2a的设点命令,归一化值C_SE_TA_1 CON <62> := 带时标CP56Time2a的设点命令,标度化值C_SE_TB_1 CON <63> := 带时标CP56Time2a的设点命令,短浮点数C_SE_TC_1 CON <64> := 带时标CP56Time2a的32比特串C_BO_TA_1 <65..69> := 为将来的兼容定义保留VSQ:可变结构限定词D7 D6 …… D0SQ 信息对象数目SQ=0:离散的信息报告SQ=1:顺序的信息报告信息对象数目的个数是0-127;一包报文中所含的信息(YC、YX等)的数目COT_L,COTH:传送原因1,NET保护单元之间的通讯怎样设置在6800里??2,控制域的I,S,U等格式是怎样用的I格式:信息传输格式类型(Information transmit format)简称 I-FORMAT。
104规约详细介绍及报文解析
104规约详细介绍及报文解析【原创实用版】目录1.104 规约的概述2.104 规约的特点3.104 规约的报文结构4.104 规约的报文解析实例5.104 规约的应用场景正文一、104 规约的概述104 规约,全称为 Modbus RTU 通讯协议,是一种串行通信协议,主要应用于工业自动化领域。
它是由 Modicon 公司于 1979 年开发的,现在已成为工业控制领域中应用最广泛的通讯协议之一。
104 规约具有传输速度快、可靠性高、兼容性好等特点,广泛应用于 PLC、PAC、智能仪表等工业控制设备的通讯。
二、104 规约的特点1.传输速度快:104 规约采用二进制编码方式,传输速率最高可达1Mbps,满足了工业自动化领域对通讯速度的要求。
2.可靠性高:104 规约具有强大的错误检测和纠正能力,可以有效地防止通讯错误,确保通讯的可靠性。
3.兼容性好:104 规约支持多种工业控制设备,如 PLC、PAC、智能仪表等,具有很好的兼容性。
4.拓展性强:104 规约具有丰富的功能指令,可以满足各种工业自动化应用的需求。
三、104 规约的报文结构104 规约的报文由帧头、地址、命令、数据、校验和、结束符等部分组成。
其中,帧头用于标识报文的开始和结束;地址用于标识通讯设备的地址;命令用于指示通讯的类型和功能;数据是通讯的核心内容;校验和用于检验数据是否正确;结束符用于标识报文的结束。
四、104 规约的报文解析实例以读取保持型输入为例,假设设备地址为 1,输入寄存器地址为 0,对应的报文如下:- 帧头:0x03 0x03(表示报文开始和结束)- 地址:0x01(表示设备地址为 1)- 命令:0x04(表示读取保持型输入)- 数据:0x00 0x01(表示输入寄存器地址为 0)- 校验和:0x12(用于检验数据是否正确)- 结束符:0x03 0x03(表示报文结束)五、104 规约的应用场景104 规约广泛应用于工业自动化领域的通讯,如 PLC 与 PAC 之间的通讯、智能仪表的数据采集等。
java 104规约解析
java 104规约解析Java 104规约解析一、命名规约1. 类名使用大写字母开头的驼峰命名法,不使用下划线分隔。
2. 方法名、变量名使用小写字母开头的驼峰命名法,不使用下划线分隔。
3. 常量名使用全大写字母,多个单词之间用下划线分隔。
4. 包名使用小写字母,多个单词之间使用点分隔。
二、常量定义规约1. 不允许使用魔法值,应使用常量进行定义。
2. 常量命名要清晰明了,尽量避免使用单个字母作为常量名。
3. 常量应该使用final关键字修饰,确保不被修改。
三、代码格式规约1. 缩进使用4个空格,不使用tab键。
2. 每行代码不应超过120个字符。
3. 代码块使用大括号包裹,即使代码块只有一行。
4. 方法和类的左大括号与方法名或类名在同一行。
5. 操作符前后应添加空格,增强代码可读性。
四、OOP规约1. 遵循单一职责原则,每个类应该只负责一个功能。
2. 避免使用大量的getter和setter方法,尽量通过方法来操作对象状态。
3. 避免使用全局变量,使用依赖注入或者单例模式来管理全局状态。
4. 优先使用组合而不是继承,减少类之间的耦合性。
五、并发处理规约1. 多线程使用线程池来管理线程的生命周期。
2. 使用volatile关键字保证多线程间的可见性。
3. 合理使用synchronized关键字来保证线程安全。
4. 使用Lock对象替代synchronized关键字,提高性能。
六、异常处理规约1. 不要捕获异常之后不进行处理。
2. 不要在finally块中使用return语句,可能会导致难以预料的结果。
3. 不要在循环体中捕获异常,应该在循环体外进行捕获和处理。
4. 捕获异常时,应该尽量精确地捕获,并在catch块中进行相应的处理。
七、日志规约1. 使用日志框架来管理日志输出,不要直接使用System.out.println。
2. 日志输出应该包含时间、日志级别、类名和方法名等信息,方便定位问题。
3. 日志级别应根据不同的环境进行配置,避免输出过多无用的日志。
104规约调试
104规约说明一、104规约配置。
基本配置:传送原因字节数(例:占2个字节),公共地址字节数(例:占2个字节),信息体地址字节数(例:占3个字节)。
调试配置:CSM300E的主站IP地址、端口等网络配置、对方南瑞调度104客户端的IP地址。
遥信、遥测的个数、起始地址等,与IEC101配置方法一致。
二、问答过程及帧格式。
0、双方TCP/IP层的连接建立后,双方握手过程。
例:调度主站发送U格式的START启动报文,CSM300E用U格式的START确认报文应答。
主站:68 04 43 00 00 00子站:68 04 83 00 00 001、链路初始化过程主站:68 04 07 00 00 00子站:68 04 04 00 00 002、总召唤过程。
例:主站发送S格式的总召唤(ASDU=0x64,传送原因=0x06,信息体地址=0,QQI=0x14)。
CSM300E依次用总召唤确认帧(ASDU=0x64,传送原因=0x07,信息体地址=0,QQI=0x14),若干的全遥信帧,若干的全遥测帧和总召唤结束帧(ASDU=0x64,传送原因=0x0A,信息体地址=0,QQI=0x14)进行应答。
传送原因为2字节,公共地址为2字节,信息体元素地址为3字节。
报文举例:主—>子68 0e ** ** ** ** 64 01 06 00 01 00 00 00 00 14(总召唤命令)子—>主68 0e 00 00 00 00 64 01 07 00 01 00 00 00 00 14(总召唤确认)子—>主68 8c 00 00 00 00 01 ff 14 00 01 00 01 00……(多帧总召唤四遥子—>主68 8c 00 00 00 00 01 ff 14 00 01 00 01 00……报文连续上送)子—>主68 0e 00 00 00 00 64 01 0a 00 00 01 00 00 00 14(总召唤结束帧)3、全遥信的上送格式。
104规约学习(非常好)
104规约(2002版)报文解析1、 初始化● 主站发: 68 04 07 00 00 00目的:给子站发请求链路状态命令。
子站回答:68 04 0B 00 00 00目的:子站向主站响应链路状态。
子站回答:68 0E 00 00 00 00 46 01 04 00 01 00 00 00 00 00 目的:初始化结束。
2、 对时 时钟同步命令一般不在104中应用,因为网络路由的延时永远不定(随机),导致对时不准。
● 主站发:68 14 2C 00 6A 00 67 01 06 00 01 00 00 00 00 E5 3F 00 0F 09 0C 04目的:向子站发送对时报文。
357 毫秒 16 秒 0分 15小时 9日 12月 4年3、 总召唤● 主站发:68 0E 00 00 06 00 64 01 06 00 01 00 00 00 00 14目的:向地址为01的子站发总召唤命令。
子站回答:68 0E 08 00 02 00 64 01 07 00 01 00 00 00 00 14目的:子站响应总召唤。
子站回答:68 2D 0A 00 02 00 01 A0 14 00 01 00 01 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 目的:子站向主站以ASDU1方式连续上送全遥信,此为第一帧。
报文解析:子站回答:68 2D 0C 00 02 00 01 A0 14 00 01 00 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 目的:子站继续上送全遥信的下一帧。
…………子站回答:68 2D 20 00 02 00 01 A0 14 00 01 00 61 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 目的:子站向主站上送全遥信的最后一帧。
104规约
104规约104:是厂站与配网主站进行通讯的规约,以以太网为载体,服务模式是平衡模式。
用于远动控制通信的,用于调度自动化系统,厂站之间的通讯;104规约的报文帧分为三类,I帧,S帧,U帧;I帧为信息帧,用于传输数据,长度大于6个字节,为长帧;S帧为确认帧,用于确认接收的I帧,长度为6个字节,为短帧;U帧为控制帧,用于控制启动/停止/测试,长度为6个字节,为短帧;长帧报文分为APCI和ASDU两个部分,统称为APDU,而短帧报文只有APCI部分;APCI的6个字节的构成:起动字符68H,1个字节;后面的报文长度,1个字节(最大253);控制域位组,4个字节;区分I,S,U 帧:I帧的4字节控制域位组规定为:字节1和字节2位发送序号,字节3和字节4为接收序号;注意:1.由于字节1和字节3的最低位固定为0,不用于构成序号,所以在计算序号时,要先转换成十进制数值,再除以2;2.由于低位字节在前,高位字节在后,所以计算时要先做颠倒;S帧的字节1固定为01H,字节2固定为00H,字节3和字节4位接收序号计算时仍要注意以上两点;U帧的字节2,3,4均固定为00H,字节1包含TESTFR,STARTDT,STOPDT三种功能,同时只能激活其中的一种功能;启动(STARTDT)和停止(STOPDT)都是由主站(104的客户端)发起的,先由主站发送生效报文,子站随后确认。
而主站和子站都可发送测试(TESTFR)报文,由另一方确认。
客户端发起:(请求连接报文和确认连接报文)STARTDT:68 04 07 00 00 00(启动激活);68 04 0B 00 00 00(启动确认)07 = 00000111,最后两个1表示信息传输格式为U格式,倒数第3个1表示请求连接;0B = 00001011,最后两个1表示信息传输格式为U格式,倒数第4个1表示连接确认;客户端发起:STOPDT:68 04 13 00 00 00(停止激活);68 04 23 00 00 00(停止确认)客户端和服务器对发:TESTFR:68 04 43 00 00 00 (测试激活);68 04 83 00 00 00(测试确认)104协议是101协议的网络版,101协议每次只能发送一个链路帧,而104协议可以连续发送多个链路帧,其传输效率明显高于101协议,而且具有TCP/IP的冲突检测和错误重传机制,具有比101协议更高的可靠性和稳定性,另外对通信延时的限制更宽松。
104报文分析(最新整理)
1. 104规约框架分析1.1 原始报文的组成报文组成(1字节启动字符0x68,1字节报文长度,4字节控制域,不定长用户数据)第1个字节是启动字符0x68;第2个字节是报文长度;第3~6共4个字节是控制域;第7个字节是报文类型;第8个字节是可变结构限定词;第9~10共2个字节是传送原因;第11~12共2个字节是应用服务数据单元公共地址;第13~15共3个字节是信息对象地址;。
1.2 三种报文格式的控制域定义(1)I帧编号的信息传输格式(InFormation Transmit Format),简称I-格式I格式控制域标志,控制域:第一个八位位组的第一位比特= 0 第三个八位位组第一位比特= 0(2)S帧编号的监视功能格式(Numbered supervisory Functions),简称S-格式,控制域,第一个八位位组的第一位比特= 1 并且第二位比特= 0,第三个八位位组第一位比特= 0(3)U帧不编号的控制功能格式(Unnumbered control Function),简称U-格式,第一个八位位组的第一位比特= 1 并且第二位比特=1 且第三个八位位组第一位比特= 01.3 报文类型(第7个字节)1.3.1 监视方向的应用功能类型类型标识∶=UI8[1..8]<0..44>M_SP_NA_1(1) 无时标单点遥信M_SP_TA_1(2) 带短时标的单点遥信M_DP_NA_1(3) 无时标双点遥信M_DP_TA_1(4) 带短时标双点遥信M_ST_NA_1(5) 步位置信息M_ST_TA_1(6) 带短时标的步位置信息M_BO_NA_1(7) 32比特串M_BO_TA_1(8) 带短时标的比特串M_ME_NA_1(9) 不带时标的常规遥测(规一化值)M_ME_TA_1(10) 带短时标的常规遥测(规一化值)M_ME_NB_1(11) 不带时标的常规遥测(标度化值)M_ME_TB_1(12) 带短时标的常规遥测(标度化值)M_ME_NC_1(13) 不带时标浮点遥测M_ME_TC_1(14) 带短时标浮点遥测M_IT_NA_1(15) 累计量M_IT_TA_1(16) 带短时标的累计量M_EP_TA_1(17) 带短时标的继电保护装置事件M_EP_TB_1(18) 带短时标的继电保护装置成组事件M_EP_TC_1(19) 带短时标的继电保护装置成组输出电路信息M_PS_NA_1(20) 带变位检出的成组单点信息M_ME_ND_1(21) 不带品质描述的常规遥测(规一化值)M_SP_TB_1(30) 带长时标的单点遥信M_DP_TB_1(31) 带长时标的双点遥信M_ST_TB_1(32) 带长时标的步位置信息M_BO_TB_1(33) 带长时标的32比特串M_ME_TD_1(34) 带长时标的遥测(规一化值)M_ME_TE_1(35) 带长时标的遥测(标度化值)M_ME_TF_1(36) 带长时标的浮点遥测M_IT_TB_1(37) 带长时标的累计量M_EP_TD_1(38) 带长时标的继电保护装置事件M_EP_TE_1(39) 带长时标的继电保护装置成组事件M_EP_TF_1(40) 带长时标的继电保护装置成组输出电路信息1.3.2 控制方向的过程信息类型标识∶= UI8[1..8]<45..69>C_SC_NA_1(45) 单点遥控命令C_DC_NA_1(46) 双点遥控命令C_RC_NA_1(47) 调节步命令C_SE_NA_1(48) 设定值命令,规一化值C_SE_NB_1(49) 设定值命令,标度化值C_SE_NC_1(50) 设定值命令,短浮点数C_BO_NC_1(51) 32比特串1.3.3 在监视方向的系统信息类型标识∶= UI8[1..8]<70..99>M_EI_NA_1(70) 初始化结束<71..99>∶= 保留1.3.4 在控制方向的系统信息类型标识∶= UI8[1..8]<100..109>C_IC_NA_1(100) 总召唤C_CI_NA_1(101) 累计量召唤命令C_RD_NA_1(102) 读取数据命令C_CS_NA_1(103) 时钟同步命令C_TS_NA_1(104) 测试命令C_RP_NA_1(105) 复位进程命令C_CD_NA_1(106) 收集传输延时P_ME_NA_1(110) 测量值参数,规一化值P_ME_NB_1(111) 测量值参数,标度化值P_ME_NC_1(112) 测量值参数,短浮点数P_AC_NA_1(113) 参数激活F_FR_NA_1(120) 文件准备就绪F_SR_NA_1(121) 节准备就绪F_SC_NA_1(122) 召唤目录,选择文件,召唤文件召唤节F_LS_NA_1(123) 最后的节,最后的段F_AF_NA_1(124) 认可文件,认可节F_SG_NA_1(125) 段F_DR_NA_1(126) 目录1.4 可变结构限定词(第8个字节)可变结构限定词,下图所示:bit 8 7 6 5 4 3 2 1S数目Q第1~7bit位表示信息元素的个数,比如10个遥信值,20个遥测值等等第8 bit位是表示,后面信息单元中的数据是否连续,=1时表示是连续,=0时表示是非连续。
104规约解读
104规约解读一、104规约报文分3种类型,称U格式、S格式、I格式。
激活帧生效:680407000000激活帧确认:68040B000000测试帧生效:680443000000测试帧确认:680483000000停止帧生效:680413000000如S帧确认:6804010002003、I格式:一般带有ASDU报文,传输各种数据、命令,如YX、YC数据总召唤、读命令、YK、对时等。
二、通讯报文实例:68 04 07 00 00 00 /* U格式启动帧 */68 04 0B 00 00 00 /* 响应帧 */68 0E 00 00 02 00 64 01 06 00 01 00 00 00 0014/* I格式总召帧 */ 68 0E 44 00 02 00 64 01 07 00 01 00 00 00 0014/* 总召激活帧 *//* 总召遥信帧 */68 8C 46 00 02 00 01 FF 14 00 01 00 01 00 00 00 00 01 01 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 01 01 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 01 00 00 00 00 00信息字个数为:FF-80,当信息字个数小于80时为非连续数据,应给出每个信息字的地址68 8C 48 00 02 00 01 FF 14 00 01 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 01 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0001 00 00 00 00 01 00 00 00 00 01 01 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 00 01 00 00 00 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00/* 总召遥测帧 */68 8D 5C 00 02 00 15 C0 14 00 01 00 01 40 00 0B 04 0D 04 09 04 69 00 79 00 67 00 40 FD EC FF CE FF AA 06 0C 04 09 04 09 04 27 02 21 02 3D 02 4B F8 F0 FE B6 FF AA 06 0B 04 0B 04 09 04 00 00 00 00 00 00 00 00 00 00 00 00 0B 04 0C 04 09 04 00 00 02 07 01 07 00 07 1F 06 1A 06 77 04 4B 04 EA 04 12 05 00 00 00 00 00 00 00 00 00 00 73 05 75 05 58 05 5A 05 37 01 12 01 1B 01 00 00 00 00 00 00 E5 03 DF 03 F0 03 10 00 C4 06 C3 06 BC 0668 8D 5E 00 02 00 15 C0 14 00 01 00 41 40 00 E9 03 D0 03 F2 03 22 00 BD 06 BE 06 BD 06 0A 04 0C 04 0A 04 54 02 4B 02 52 02 3E 07 0E 01 7C 00 E6 03 DF 03 EF 03 D6 03 D6 03 DB 03 84 07 C3 01 A2 00 0B 04 0B 04 09 04 9A 02 96 02 99 02 67 07 37 01 7E 00 E8 03 D0 03 F3 03 4D 04 4B 04 46 04 A6 07 01 02 9A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8D 01 94 01 98 01 96 07 BC 0068 0E 64 00 02 00 64 01 0A 00 01 00 00 00 0014/* 总召激活终止帧 *//* 对时报文 */68 14 08 00 04 00 67 01 0600 01 00 00 00 0020 00 1E 08 18 0A 0668 14 0A 00 04 00 67 0107 00 01 00 00 00 0020 00 1E 08 18 0A 06|> |-------------| | | |-----| |-----| |---------| |--------------------------| 长度帧计数 | 个数原因主站地址信息地址 CP56Time2a时标按乘2变化类型毫秒L-毫秒H-分-时-日-月-年68 04 43 00 00 00 /* 链路测试报文 */68 04 83 00 00 00 /* 响应帧 *//* 变化遥测帧 */68 AA 64 00 02 00 15 20 03 00 01 00 01 40 0005 04 02 40 0005 04 03 40 00 18 04 07 40 00 24 FD 0F 40 00 26 02 3E 40 00 C4 06 3F 40 00 BD 06 4C 40 00 51 02 50 40 00 81 00 55 40 00 DC 03 66 40 00 59 04 81 40 00 42 00 95 40 00 56 03 97 40 00 5307 9A 40 00 C9 01 9B 40 00 C8 01 9C 40 00 C6 01 9E 40 00 D3 00 A2 40 00 ED 01 A7 40 00 2E 02 A8 40 00 2C 02 AA 40 00 11 01 AC 40 00 37 02 AD 40 00 2C 02 B8 40 00 35 00 B9 40 00 47 00 BB 40 00 71 FE C7 40 00 B9 FD CA 40 00 3E 02 CB 40 00 3E 02 CC 40 00 41 02 D6 40 00 86 06/* 变位遥信帧 */68 16 0E 00 0A 00 01 03 0300 01 00 01 00 00 01 02 00 00 01 03 00 00 01| |-------------| | | |-----| |-----| |---------| | |---------| | |--------| | 长度帧计数类型个数原因主站地址遥信地址值遥信地址值遥信地址值/* SOE事件帧 */68 15 10 00 0C 00 1E 01 0300 01 00 01 00 00 01 01 62 3A 08 18 0A 06|> |-------------| | | |-----| |-----| |---------| | |-------------------------| 长度帧计数 | 个数原因主站地址遥信地址值 CP56Time2a时标类型毫秒L-毫秒H-分-时-日-月-年68 0E 12 00 0E 00 2E 01 0600 01 00 01 60 0081/* 双点遥控分选择 */68 0E 12 00 0E 00 2E 01 07 00 01 00 01 60 0081 /* 遥控返校 */|> |-------------| | | |-----| |-----| |---------| |长度帧计数 | 个数原因主站地址信息地址双命令类型68 0E 12 00 0E 00 2E 01 0600 01 00 01 60 0001/* 双点遥控分执行 */68 0E 12 00 0E 00 2E 01 07 00 01 00 01 60 0001 /* 遥控返校 */68 0E 12 00 0E 00 2D 01 0600 01 00 01 60 0080/* 单点遥控分选择 */68 0E 12 00 0E 00 2D 01 07 00 01 00 01 60 0080 /* 遥控返校 */68 0E 14 00 10 00 2D 01 06 00 01 00 01 60 0000/* 单点遥控分执行 */68 0E 14 00 10 00 2D 01 07 00 01 00 01 60 0000 /* 遥控返校 */|> |-------------| | | |-----| |-----| |---------| |长度帧计数 | 个数原因主站地址信息地址单命令类型68 0E 14 00 10 00 2D 01 08 00 01 00 01 60 0080/* 单点遥控分撤销 */68 0E 14 00 10 00 2D 01 09 00 01 00 01 60 0080 /* 遥控返校 */68 10 34 00 00 00 30 01 06 00 01 00 01 62 00 64 00 80/*单点AGC选择*/|> |-------------| | | |-----| |-----| |---------| | |长度帧计数 | 个数原因主站地址信息地址 YT值单命令类型68 0E 40 00 00 00 65 01 06 00 01 00 00 00 0045/* I格式总召YM*/68 10 36 00 00 00 30 01 06 00 01 00 01 62 00 64 00 00/*单点AGC执行*/68 04 01 00 12 00 /* S格式计数帧 */|> |-----| |------|长度 S格式帧接收序号注:收到5、6帧以后,主站发一次确认帧,可以以此判断通道状况三、信息体地址的问题前面说101对YX、YC、YK都有规定的信息体起始地址。
IEC104规约报文分析(104报文解释的比较好的文本)
IEC104规约调试小结一、四遥信息体基地址范围“可设置104调度规约”有1997年和2002年两个版本,在流程上没有什么变化,02此配置要根据主站来定,有的主站可能设为1,1,2,我们要改与主站一致。
三、以公共地址字节数=2,传输原因字节数=2,信息体地址字节数=3为例对一些基本的报文分析第一步:首次握手(U帧)发送→激活传输启动:68(启动符)04(长度)07(控制域)00 00 00接收→确认激活传输启动:68(启动符)04(长度)0B(控制域)00 00 00第二步:总召唤(I帧)召唤YC、YX(可变长I帧)初始化后定时发送总召唤,每次总召唤的间隔时间一般设为15分钟召唤一次,不同的主站系统设置不同。
发送→总召唤:68(启动符)0E(长度)00 00(发送序号)00 00(接收序号)64(类型标示)01(可变结构限定词)06 00(传输原因)01 00(公共地址即RTU地址)00 00 00(信息体地址)14(区分是总召唤还是分组召唤,02年修改后的规约中没有分组召唤)接收→S帧:注意:记录接收到的长帧,双方可以按频率发送,比如接收8帧I帧回答一帧S帧,也可以要求接收1帧I帧就应答1帧S帧。
6804 01 00 02 00接收→总召唤确认(发送帧的镜像,除传送原因不同):68(启动符)0E(长度)00 00(发送序号)00 00(接收序号)64(类型标示)01(可变结构限定词)07 00(传输原因)01 00(公共地址即RTU地址)00 00 00(信息体地址)14(同上)发送→S帧:注意:记录接收到的长帧,双方可以按频率发送,比如接收8帧I帧回答一帧S帧,也可以要求接收1帧I帧就应答1帧S帧。
68 04 01 00 02 00接收→YX帧(以类型标识1为例):68(启动符)1A(长度)02 00(发送序号)02 00(接收序号)01(类型标示,单点遥信)04(可变结构限定词,有4个遥信上送)14 00(传输原因,响应总召唤)01 00(公共地址即RTU地址)03 00 00(信息体地址,第3号遥信)00(遥信分)发送→S帧:68 04 01 00 04 00接收→YX帧(以类型标识3为例):68(启动符)1E(长度)04 00(发送序号)02 00(接收序号)03(类型标示,双点遥信)05(可变结构限定词,有5个遥信上送)14 00(传输原因,响应总召唤)01 00(公共地址)01 00 00(信息体地址,第1号遥信)02(遥信合)06 00 00(信息体地址,第6号遥信)02(遥信合)0A 00 00(信息体地址,第10号遥信)01(遥信分)0B 00 00(信息体地址,第11号遥信)02(遥信合)0C 00 00(信息体地址,第12号遥信)01(遥信分)发送→S帧:68 04 01 00 06 00接收→YC帧(以类型标识9为例):68(启动符)13(长度)06 00(发送序号)02 00(接收序号)09(类型标示,带品质描述的遥测)82(可变结构限定词,有2个连续遥测上送)14 00(传输原因,响应总召唤)01 00(公共地址)01 40 00(信息体地址,从0X4001开始第0号遥测)A1 10(遥测值10A1)00(品质描述)89 15(遥测值1589)00(品质描述)发送→S帧:68 04 01 00 08 00接收→结束总召唤帧:68(启动符)0E(长度)08 00(发送序号)02 00(接收序号)64(类型标示)01(可变结构限定词)0A 00(传输原因)01 00(公共地址)00 00 00(信息体地址)14(区分是总召唤还是分组召唤,02年修改后的规约中没有分组召唤)发送→S帧:6804 01 00 0A 00第二步:发送对时报文(通过设置RTU参数表中的”对间间隔”,单位是分钟,一般是20分钟)发送→对时命令:68(启动符)14(长度)02 00(发送序号)0A 00(接收序号)67(类型标示)01(可变结构限定词)06 00(传输原因)01 00(公共地址)00 00 00(信息体地址)01(毫秒低位)02(毫秒高位)03(分钟)04(时)81(日与星期)09(月)05(年)接收→对时确认:68(启动符)14(长度)0C 00(发送序号)02 00(接收序号)67(类型标示)01(可变结构限定词)07 00(传输原因)01 00(公共地址)00 00 00(信息体地址)**(毫秒低位)**(毫秒高位)**(分钟)04(时)81(日与星期)09(月)05(年)发送→S帧:68 04 01 00 0E 00第三步:电度总召唤(如果没有电度此步骤可以省略且可以在对时之前以送.通过设置参数中”全数据扫描间隔”,单位是分钟一般是15分钟召唤一交,如果不需要召唤电度一定要将参数中的电度个数设为0)发送→召唤电度:68(启动符)0E(长度)04 00(发送序号)0E 00(接收序号)65(类型标示)01(可变结构限定词)06 00(传输原因)01 00(公共地址)00 00 00(信息体地址)45(QCC)接收→召唤确认(发送帧的镜像,除传送原因不同) :68(启动符)0E(长度)10 00(发送序号)06 00(接收序号)65(类型标示)01(可变结构限定词)07 00(传输原因)01 00(公共地址)00 00 00(信息体地址)45(QCC)发送→S帧:68 04 01 00 12 00接收→电度数据:68(启动符)1A(长度)12 00(发送序号)06 00(接收序号)0F(类型标示)02(可变结构限定词,有两个电度量上送)05 00(传输原因)01 00(公共地址)01 64 00(信息体地址,从0X6401开始第0号电度)00 00 00 00(电度值)00(描述信息)02 64 00(信息体地址,从0X6401开始第1号电度)00 00 00 00(电度值)01(描述信息)发送→S帧:68 04 01 00 14 00接收→结束总召唤帧:68(启动符)0E(长度)14 00(发送序号)06 00(接收序号)65(类型标示)01(可变结构限定词)0A 00(传输原因)01 00(公共地址)00 00 00(信息体地址)45(QCC)发送→S帧:6804 01 00 16 00第四步:如果RTU有变化数据主动上送主动上送变位遥信,类型标识为1或3接收→变位遥信:68(启动符)0E(长度)16 00(发送序号)06 00(接收序号)01(类型标示,单点遥信)01(可变结构限定词,有1个变位遥信上送)03 00(传输原因,表突发事件)01 00(公共地址即RTU地址)03 00 00(信息体地址,第3号遥信)00(遥信分)发送→S帧:68 04 01 00 18 00接收→变位遥信:68(启动符)0E(长度)18 00(发送序号)06 00(接收序号)03(类型标示,双点遥信)01(可变结构限定词,有1个变位遥信上送)03 00(传输原因,表突发事件)01 00(公共地址即RTU地址)06 00 00(信息体地址,第6号遥信)01(遥信分)发送→S帧:68 04 01 00 1a 00主动上送SOE,类型标识为0x1e(单点YX)或0x1f(双点YX)接收→SOE :68(启动符)15(长度)1a 00(发送序号)06 00(接收序号)1e(类型标示,单点遥信)01(可变结构限定词,有1个SOE)03 00(传输原因,表突发事件)01 00(公共地址即RTU 地址)08 00 00(信息体地址,第8号遥信)00(遥信分)ad(毫秒低位)39(毫秒高位)1c(分钟)10(时)7a(日与星期)0b(月)05(年)发送→S帧:68 04 01 00 1c 00接收→SOE :68(启动符)15(长度)1c 00(发送序号)06 00(接收序号)1f(类型标示,双点遥信)01(可变结构限定词,有1个SOE)03 00(传输原因,表突发事件)01 00(公共地址即RTU 地址)0a 00 00(信息体地址,第10遥信)01(遥信分)2f(毫秒低位)40(毫秒高位)1c(分钟)10(时)7a(日与星期)0b(月)05(年)第四步:如果主站超过一定时间没有下发报文或RTU也没有上送任何报文则双方都可以按频率发送U帧,测试帧,以检测链路通断。
