IEC104规约
目录
3.2.3、U帧(Under the control,控制帧)
3.3.5、ASDU30:带时标CP56Time2a的单点信息
IEC主要规约:
IEC规约 | 适用范围 | 通讯方式 |
---|---|---|
IEC-101 | 厂站与调度主站间通讯 | 串行 |
IEC-102 | 电量主站与站内抄表终端通讯 | |
IEC-103 | 与站内继电保护设备间通讯 | 串行 |
IEC-104 | 厂站与调度主站间通讯 | 以太网 |
IEC101与IEC104的比较:
- 相同点:① 适用范围:厂站与主站之间;② 规约结构:应用层定义相同。
- 不同点:① 通讯方式:101串行、104以太网;② 服务类型:101多采用非平衡传输,104多采用平衡传输。
104 | 101 | |
---|---|---|
应用层帧结构 | 同101结构 | --- |
容量 | 传输原因:2 | 传输原因:1/2 |
类型标识 | 扩展7字节时间的帧类型 | --- |
遥测 | 全遥测、浮点数 | 越限遥测、归一化 |
遥信 | SOE用7字节时间 | SOE用3字节时间 |
遥控、电度 | 同101结构 | --- |
104与101应用层不同之处:
- 控制方向:104规约扩展的类型标识。
- 监视方向:104规约带时标的信息全部采用CP56Time2a;
- 校时:当子站需要接收主站的校时,收到校时报文后直接修正本地时间即可,而不像101规约进行延时采集和传递。
1、IEC104规约简介
为了适应网络技术在远动通信中的应用,IEC在2000年12月完成第一个完整基于以太网规约的文件IEC60870-5-104(采用标准传输协议集的IEC90870-5-101网络访问)。
我国在2002年颁布DL/T634.5104-2002:远动设备与系统 第五部分:传输规约 第104篇:采用标准传输协议集的IEC60870-5-101网络访问(idt.IEC60870-5-104:2000)。
IEC60870-5-104实际处于应用层协议的位置;基于TCP/IP的应用层协议很多,每一种应用层协议都对应着一个网络端口号,根据其在传输层上使用的是TCP协议(传输控制协议)还是UDP(用户数据报文协议),端口号又分为TCP端口号和UDP端口号(端口号0~65535)。
IEC60870-5-104规定传输层使用的是TCP协议。常用的TCP端口有:ftp文件传输协议,使用21号端口;telnet远程登录协议,使用23号端口;SMTP简单邮件传送协议,使用25号端口;http超文本传输协议,使用80号端口;IEC60870-5-104规定本标准使用的端口号为2404,并且此端口号已经得到IANA(互联网地址分配机构,Internet Assigned Numbers Authority)的确认。
IEC60870-5-104实际上是将IEC60870-5-101与TCP/IP提供的网络传输功能相结合,使得IEC60870-5-101在TCP/IP内各种网络类型都可使用。
为了保证可靠的传输远动数据,DL/T634.5104-2002规定传输层使用的是TCP协议,因此其对应的端口号是TCP端口。
对于基于TCP的应用程序来说存在两种工作模式:服务器模式(子站)和客户机(主站)模式。服务器模式和客户机模式之间的区别是:当建立TCP连接时,服务器从不发起连接请求,它一直处于侦听状态,当侦听到来自客户机的连接请求时,则接受此请求,由此建立一个TCP连接,服务器和客户机就可以通过这个虚拟的通讯链路进行数据收发。IEC60870-5-104规定控制站(即调度站)作为客户机,而被控站(即站端RTU)作为服务器。
1.1、信息传输的三个要素
网络协议的三要素:语法,语义,时序(同步)。
- 语法:数据与控制信息的结构或格式。
- 语义:协调动作和差错处理的控制信息,即需要发出何种控制信息,完成何种动作,做出何种应答。
- 时序:同步,速度匹配及排序,即事件实现的顺序。
1.2、非平衡、平衡通信方式
- 非平衡通信方式:通信双方总是规定乙方为启动站,另一方为从动站。只允许启动站发起召唤命令,从动站被动回答响应。在实际应用中一般规定主站或接收方为启动站,厂站或提供数据方为从动站。IEC103规约采用非平衡通信方式。
- 平衡通信方式:通信双方都可以发起信息传输,一旦链路建立成功,变化信息除了响应召唤应答还可以主动发送而无需等待查询。但是两个方向上都需要采用有效的数据接收确认机制(如:IEC104的接收序号,IEC101的FCB位翻转)来确认信息的正确接收。
IEC104规约采用平衡通信方式;IEC101规约也可以采用平衡通信方式,但目前采用非平衡方式;基于RS485链路通信的IEC103规约只能采用非平衡通信方式。
1.3、启动站和从动站
- 发起通讯的一方为启动站;
- 响应服务的一方为从动站。
1.4、一次完整的交互过程
启动方发起通讯,从动方回应此次通讯过程,双方都知道最终的通讯结果如何。
1.5、服务类型
- 发送/无应答(S1):从动站无需回答启动站的报文,启动站也不知道从动站是否接收到报文,如校时。
- 发送/确认(S2):从动站接收后需要向启动站发确认报文,通常用于发送参数、发送控制命令等;
- 请求/响应(S3):从动站接收到启动站的请求报文后,用数据响应启动站的请求。如召唤数据、请求数据、请求链路状态等。
2、TCP通讯机制
2.1、TCP的可靠性机制
防丢失:确认与重传。
防重复:报文段序号。
2.2、三次握手(建立连接)
三次握手方式(未采用二次确认的方式)主要是为了防止已失效的连接请求报文段突然又传到了服务器端,服务器不能判断是否是有效的请求连接,即发出确认,误认为新的连接已经建立,而客户端收到非期望的确认则不处理,服务器端就会一直等待客户端发送数据请求,白白浪费许多资源,产生错误。
三次握手可以防止“已失效的连接请求报文段”产生的错误,服务器端收不到第三次确认,就不会认为连接已经建立。
客户机A主动打开端口,服务器B被动打开端口。
- A的TCP向B发出连接请求报文段,其首部中的同步位SYN=1,并选择序号seq=x,表明传送数据时的第一个数据字节的序号是x;
- B的TCP收到连接请求报文段后,如同意,则发回确认;B在确认报文段中应使SYN=1,使ACK=1,其确认号ack=x+1,自己选择的序号seq=y;
- A收到此报文段后向B给出确认,其ACK=1,确认号ack=y+1;A的TCP通知上层应用进程,连接已经建立;B的TCP收到主机A的确认后,也通知其上层应用进程,TCP连接已经建立。
调度主站(客户端) | 控制信息 | 厂站远动(服务端) | 过程说明 |
---|---|---|---|
请求连接(->) | SYN=1,seq=x | 被动打开 | 调度主站向厂站远动机的TCP发出连接请求,其首部的同步比特SYN=1,同时选择一个序号x,表明在后面传送数据时的第一个数据字节的序号是x。 |
SYN=1,ACK=1, seq=y,ack=x+1 | 确认(<-) | 厂站远动机的TCP收到连接请求后,如同意,则发回确认。在确认报文段中应将SYN=1,ACK=1,确认序号=x+1,同时自己也选择一个序号y。 | |
确认(->) | ACK=1,ack=y+1 | 调度主站的TCP收到厂站远动机的确认后,还要向厂站端给出确认,确认序号的=y+1;致辞,运行客户进程的调度主站通知上层应用进程,连接已经建立;运行服务进程的厂站远动机收到A机确认后,也通知上层应用进程,连接已经建立。 |
2.3、四次挥手(关闭连接)
数据传输结束后,通信的双方都可释放连接。
- 现在A的应用进程先向其TCP发出连接释放报文段,并停止发送数据,主动关闭TCP连接。A把连接释放报文段首部的FIN=1,其序号seq=u,等待B的确认;(A->B: FIN=1,seq=u,ack=v)
- B发出确认,确认号ack=u+1,而这个报文段自己的序号seq=v。TCP服务器进程通知高层应用进程。从A到B这个方向的连接就释放了,TCP连接处于半关闭状态,B若发送数据,A仍要接收。(A<-B: ACK=1,seq=v,ack=u+1)
- 若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接;(A<-B: FIN=1,ACK=1,seq=w,ack=u+1)
- A收到连接释放报文段后,必须发出确认。TCP连接必须经过2MSL后才真正释放掉(A->B: ACK=1,seq=u+1,ack=w+1)
3、IEC104规约报文解析
3.1、体系及报文结构
IEC104是IEC101的网络访问,规定了IEC101的应用层与TCP/IP提供的传输功能的结合。
报文的基本结构 APDU=APCI+ASDU。
- IEC104规约APCI与IEC101的LPCI控制机制差异大;
- IEC104规约基本采用IEC101的ASDU,差异小;
- 传送原因2个字节;
- ASDU公共地址2个字节;
- 信息对象序号(地址)3个字节。
信息对象 | 对应序号(16进制) | 对应序号(10进制) |
---|---|---|
遥信信息 | 1-8000 | |
遥测信息 | 8001-12000 | |
电能量 | 12001-14000 | |
遥控信息 | 14001-15000 |
注② 104规约ASDU解释和与101规约ASDU的比较:
- 类型标识(TYP):表示报文的类型,即报文所传送的内容,不同类型代表的信息元素集不同,类型标识确定则信息元素集中的信息也就确定了。
- 可变结构限定词(VSQ):表示信息元素的数目(如果传输的是遥测量,那么报文中有几个遥测量?),最高位代表信息元素寻址方式。根据功能类型和信息序号可以唯一确定上送的信息点。
- 传送原因(COT):指出报文的性质(为什么要传输这条报文),根据传送原因可以知道该信息点产生的原因。101规约为1字节;104规约为2字节,低字节同101规约,高字节为源发地址;
- ASDU公共地址(ADR):公共地址是用来区分此链路上不同的子站。常常和链路层地址一致,也就是装置地址。101规约为1字节;104规约为2字节;
- 信息对象地址(infoAdr):信息对象地址用于区分不同的应用,如遥信遥测等都每个信息都占用不同的信息对象地址。101规约及104规约均可设置信息对象地址长度为2字节或3字节。工程应用时,101规约通常设置信息对象地址长度为2字节;104规约通常设置信息对象地址长度为3字节,低2字节同101规约,高字节用于结构化对象信息体地址,不用时取0。
- 信息元素集:以一定的格式表示的信息的状态或数值(如遥信量、遥测量的值)。
- 信息对象时标:信息发送的时间。(时、分、毫秒数)
3.1.1、APDU(应用规约数据单元)
- 一个IEC104完整帧;
- 一个IEC104规约数据。
3.1.2、APCI(应用规约控制信息)
- IEC104控制信息;
- 启动、数据传输、停止、监测、同步等。
3.1.3、ASDU(应用服务数据单元)
- 一个IEC104帧携带的数据;
- 四遥、定值、顺控、文件等。
3.2、三种帧类型
IEC104报文帧格式:
3.2.1、I帧(Information,信息传输)
传输应用数据,捎带确认对方的发送。传送自动化信息,含发送序号,接收序号,ASDU长度可变。
控制域的第一个八位位组的第1位比特=0定义了I格式。I格式应用规约数据单元常常包含应用服务数据单元ASDU。
注:
- 发送方发送信息时增加发送序号;
- 接收方确认对方的发送序号时增加接收序号;
- 带信息发送并确认对方帧。
接收序号为“期望序号”=实际接收序号+1。
3.2.2、S帧(Sure,监视帧)
S格式帧为短帧,为计数的监视功能类型,用于传输对站端确认的报文,长度仅6个字节。无应用数据可传输时,带接受序号确认已经收到的信息。
控制域的第一个八位位组的第1位比特=1,第二位比特=0定义了S格式。S格式的APDU不包括ASDU,当报文接收方收到发送方的I格式报文后,如果没有I格式的报文发送给对方,可以向对方发送S格式的报文以对接收到的报文进行确认。
接收序号为“期望序号”。
3.2.3、U帧(Under the control,控制帧)
U格式为不计数的控制功能类型,用于传输链路控制命令的报文,U格式帧为6字节短帧,用于启动控制信息(V表示生效、C表示确认)。
控制用报文:
- 启动U帧(STARTDT),用于启动应用层传输。
- 停止U帧(STOPDT),用于停止应用层传输。
- 测试U帧(TEST),双方均无发送时,维持链路活动状态。
控制域的第一个八位位组的第1位比特位=1,第2位比特位=1定义了U格式。此格式的APDU也不含ASDU,其作用主要在于实现三种控制功能,即启动子站进行数据传输(STARTDT),停止子站的数据传输(STOPDT)和TCP链路测试(TESTER)。在同一时刻仅TESTFR,STOPDT,STARTDT功能之一被激活。
U、S帧长度固定为6个字节,只有APCI而无ASDU:68 04 xx xx xx xx。
可知U格式的APDU的帧内容是固定的6种。
3.3、101、104规约ASDU结构实例解析
3.3.1、ASDU1:不带时标的单点信息
1、SQ=0
2、SQ=1,104规约总召遥信
3.3.2、ASDU2:带时标的单点信息
3.3.3、ASDU13:测量值:短浮点数
1、SQ=0,越限遥测
2、SQ=1,总召遥测
3.3.4、ASDU20:带变位检出的成组单点信息
1、SQ=0
2、SQ=1,101规约总召遥信(华东版101规约总召为分组上送)
3.3.5、ASDU30:带时标CP56Time2a的单点信息
3.3.6、ASDU100:召唤命令
3.3.7、ASDU46:双命令
COT:6=激活,7=激活确认,8=停止激活,9=停止激活确认,10=激活终止。
DCO:最高位0执行1选择,低2位0进制1分2合3禁止。
3.3.8、ASDU48:设定命令,归一化值
COT:6=激活,7=激活确认,8=停止激活,9=停止激活确认,10=激活终止。
QOS:最高位0执行1选择。
3.3.9、ASDU50:设定命令,短浮点数
COT:6=激活,7=激活确认,8=停止激活,9=停止激活确认,10=激活终止。
QOS:最高位0执行1选择。
3.4、104规约报文详解(最详尽的解释)
IEC-60875-5-104:应用模型是:物理层,链路层,网络层,传输层,应用层。
物理层保证数据的正确送达,保证如何避免冲突。(物理层利用如RS232上利用全双工)。
链路层负责具体对哪个slave的通讯,对于成功与否,是否重传由链路层控制(RS485 2线利用禁止链路层确认)。
应用层负责具体的一些应用,如何全数据还是单点数据还是类数据等(网络利用CSMA/CD等保证避免冲突的发生)。
基本定义:端口号2404,站端为server,控端为client,平衡式传输,2Byte站地址,2Byte传送原因,3Byte信息地址。
每个字节都是unsigned char类型,如果是2个字节表示一个short型,则都是低位在前,高位在后。
3.5、电度
3.6、遥信
3.7、遥测
3.8、保护事件
3.9、遥控
4、104规约数据传输过程(主要环节)
流程详解:
- 由客户端向服务器建立连接,同时,发送链路启动帧。
- 服务端在收到链路启动帧后,向客户端发送启动确认帧。
- 客户端收到启动确认帧后,发送总召唤命令数据请求帧。
- 服务端收到总召唤命令数据请求后,发送总召唤命令数据响应帧,然后继续发送总召唤命令数据。总召唤命令数据发送完成后,发送总召唤命令数据结束帧。
- 客户端在收到总召唤命令数据结束帧后,发送对时请求帧。
- 服务器收到对时请求帧后,发送对时响应帧。
- 由服务器主动向客户端发送变化数据帧。同时,收到客户端发送的控制类命令,回复相应的操作结果。
- 客户端等到下一个数据总召唤命令数据周期,重复第4步之后的流程。
4.1、初始连接过程
TCP连接和建立都是采用客户/服务器方式,主动发起连接的进程叫做“客户(Client)”,而被动等待连接建立的进程叫做“服务器(Server)”。
- 厂站端的远动机是IEC104连接的服务器,运行一个服务器进程,它先发出一个“被动打开(passive open)”命令,告诉它的TCP要准备接受客户进程的连接请求,服务端口号是2404,然后服务器进程就处于“听(listen)”的状态,不断监测是否有客户进程要发起连接请求。如有则作出响应。
- 调度端的通信前置这杯是IEC104连接的客户端,运行一个客户进程,它先向其TCP发出主动打开(active open)命令,表明要向2404端口建立运输连接。
4.2、启动数据传输(U帧START置位)
4.2.1、IEC104规约的启/停传输控制描述
控制站(例如A站)利用STARTDT(启动数据传输)和STOPDT(停止数据传输)来控制被控站(B站)的数据传输。
当连接建立后,连接上的用户数据传输不会从被控制站自动激活,即当一个连接建立时,STOPDT是缺省状态。在这种状态下,被控站并不通过这个连接发送任何数据,除了未编号的控制功能和对这些功能的确认。控制站必须通过这个连接发送STARTDT激活指令来激活这个连接中的用户数据传输,被控站用STARTDT确认响应这个命令。如果STARTDT没有被确认,这个连接将被控制站关闭。
这意味着站初始化后,STARTDT必须总是在来自被控站的任何用户数据传输(例如:总召唤信息)开始前发送。任何被控站只有在发送STARTDT确认后才能发送待发用户数据。
4.2.2、IEC104初始连接连接过程:![](https://img-blog.csdnimg.cn/195347dd817f46c99bd236654e145997.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWK5ZmiMTIzMQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
-STARTDT报文如下:
请求:68 04 07 00 00 00
响应:68 04 0B 00 00 00
-STOPDT报文如下:
请求:68 04 13 00 00 00
响应:68 04 23 00 00 00
-测试过程
请求:68 04 43 00 00 00
响应:68 04 83 00 00 00
请求:68 04 43 00 00 00
响应:68 04 83 00 00 00
请求:68 04 43 00 00 00
响应:68 04 83 00 00 00
4.3、总召唤
4.3.1、总召过程
100 | 类别标识 | ASDU标识 1Byte |
1 | 可变结构限定词(规定报文中有多少信息) | 1Byte |
6 | 传输原因(为什么要发送这个报文) | 2Byte |
COMADDR | 单元公共地址(链路地址) | 2Byte |
0 | 信息地址 | 3Byte |
20 | QOI(状态) | 1Byte |
启动:68
长度:0E
----------------------------------
I格式控制域:96 01 02 0B
----------------------------------
ASDU:64
可变结构:01
传输原因:06 00
comaddr:00 11
信息体地址:00 00 00
QOI:14
总召确认(装置上行):回答确认命令。
100(64H) | 类别标识 | ASDU标识 1Byte |
1 | 可变结构限定词 | 1Byte |
7 | 传输原因 | 2Byte |
COMADDR | 单元公共地址 | 2Byte |
0 | 信息地址 | 3Byte |
20 | QOI | 1Byte |
总召启动、总召确认、总召结束报文格式完全相同,只是传输原因不同(0、FF扇区无数据总召后即结束召唤)。在装置确认总召命令后,若某扇区有数据则先上送数据,再上送总召结束报文。
例如:
68 0E DE 00 22 06 | 64 01 06 00 07 11 | 00 00 00 | 14 (总召)
68 0E 10 00 0A 00 | 34 01 07 00 07 11 | 00 00 00 | 14 (确认)
4.4、遵循规则传输信息
4.4.1、传输规则
1、差错控制:防止报文丢失和报文重复传送。
通信双方通过对序列号的验证来实现“防止报文丢失和报文重复传送”功能,发送和接收两个序列号在每个报文和每个方向上都应按顺序加1,发送方增加发送序列号而接收方增加接收序列号。接收方可以将连续接收的最后一个正确报文序列号返回,作为对所有小于或等于该号的报文的有效确认。报文序号的确认是至关重要的,根据附加在报文上的接受序号,确认传输到对方正确报文的条数,确认有、无报文丢失。如果序号不正确,则认为报文丢失,要重新传输丢失的报文。
2、流量控制:使得发送端的发送速度不要太快,要使接收端来得及接收。由收方控制发方的数据流量,仍然是计算机网络中流量控制的一个基本方法。
IEC104规约相关的第二个参数:
- K:未被确认的I帧格式ASDU的最大数目,推荐值=12;
- W:最迟确认的APDU的最大数目,推荐值=8。
发送12个APDU未收到确认报文,应终止传输;收到8个APDU则要回应发送方确认报文。因此要分别对发送、接收报文进行计数,当12条报文发送后没有收到确认的S格式报文或者I格式报文(包含对方接收报文数目信息),则断开链接,进行重连。在无信息回应对方情况下,收到8条报文后也应立即发送S格式的报文回应对方,以防对方断开链接。
3、链路管理:即链路的建立,维持,释放。
参数 | 默认值 | 备注 |
---|---|---|
t0 | 30秒 | 建立连接的超时 |
t1 | 15秒 | 发送或测试APDU的超时 |
t2 | 10秒 | 无数据报文时确认的超时,t2 < t1 |
t3 | 20秒 | 长期空闲状态下发送测试帧的超时 |
4.5、一段完成的基于TCP/IP的IEC104报文
5、IEC104规约常用参数
- T0:建立连接超时。t0规定了主站端和子站RTU端建立一次TCP连接的最大允许时间。(建议30秒,主站如果通过TCP连接子站超过30秒还没有建立连接,则应该重新建立连接,如果多次连接都不成功,则进行相应的告警等处理)
- T1:t1规定发送方发送一个I格式报文或U格式报文后,必须在t1的时间内得到接收方的认可,否则发送方认为TCP连接出现问题并应重新建立连接;(建议15秒)
- T2(T2 < T1):t2规定接收方在接收到I格式报文后,若经过t2时间未再收到新的I格式报文,则必须向发送方发送S格式帧对已经接收到的I格式报文进行认可;(建议10秒)
- T3(T3 > T1):t3规定调度端或子站RTU端每接收一帧I帧、S帧或者U帧将重新触发计时器t3,若在t3内未接收到任何报文,将向对方发送测试链路帧;(建议20秒)
- K:未被确认的I格式APDU(k)最大数目;(默认值12,k值的最大范围:1 到 32767(215-1)APDUs, 精确到 1APDU. )
- W:接收方收到w个I格式APDU后确认。(默认值8,w 值的最大范围:1 到 32767 APDUs, 精确到 1APDU。(建议:w 不应超过 k 的三分之二。)
)