远动传输规约之IEC60870-5-104篇
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
远动传输规约之IEC60870-5-104篇
(2009-02-02 10:33:57)
转载▼
标签:
104规约
104规约下载
1)IEC-60870-5-104的规约结构
IEC-60870-5-104远动规约使用的参考模型源出于开放式系统互联的ISO-OSI参考模型,但它只采用其中的5层,其结构如图所示:
IEC60870-5-104实际上是将IEC60870-5-101与TCP/IP(Transmission Control Protocol /Internet Protocol)提供的网络传输功能相组合,使得IEC60870-5-101在TCP/IP内各种
网络类型都可使用,在上图的5层参考模型中,IEC60870-5-104实际上处于应用层协议的位置;基于TCP/IP的应用层协议很多,每一种应用层协议都对应着一个网络端口号,根据其在传输层上使用的是TCP协议(传输控制协议)还是UDP协议(用户数据报文协议),端口号又分为TCP端口号和UDP端口号,其中TCP协议是一种面向连接的协议,为用户提
供可靠的、全双工的字节流服务,具有确认、流控制、多路复用和同步等功能,适用于数据传输,而UDP协议则是无连接的,每个分组都携带完整的目的地址,各分组在系统中独立地从数据源走到终点,它不保证数据的可靠传输,也不提供重新排列次序或重新请求功能,为了保证可靠地传输远动数据,IEC60870-5-104规定传输层使用的是TCP协议,因此其对
应的端口号是TCP端口。IEC60870-5-104规定本标准使用的端口号为2404,并且此端口号已经得到IANA(互联网地址分配机构,Internet Assigned Numbers Authority)的确认。对于基于TCP的应用程序来说,存在两种工作模式,即服务器模式和客户机模式。服务器模式
和客户机模式的区别是,在建立TCP连接时,服务器从不主动发起连接请求,它一直处于
侦听状态,当侦听到来自客户机的连接请求后,则接受此请求,由此建立一个TCP连接,
服务器和客户机就可以通过这个虚拟的通信链路进行数据的收发。IEC60870-5-104规定控制站(即调度系统)作为客户机,而被控站(即站端RTU)作为服务器。
2)IEC-60870-5-104的应用规约数据单元的结构
IEC-60870-5-104的应用规约数据单元(APDU)的结构如图所示,
它由应用规约控制信息(APCI)和应用服务数据单元(ASDU)组成,和IEC-60870-5-101的帧结构相比,其中应用服务数据单元是相同的,相异之处在于,IEC-60870-5-104使用应用规约控制信息(APCI),而IEC-60870-5-101使用链路规约控制信息(LPCI)。在APDU 中,启动字符68H定义了数据流内的起始点,应用规约数据单元的长度定义了APDU主体的长度;需要注意的是,IEC 60870-5-104规定一个APDU报文(包括启动字符和长度标识)不能超过255个字节,因此APDU最大长度为253(等于255减去启动和长度标识共两个8位位组),ASDU的最大长度为249,这个要求限制了一个APDU报文最多能发送121个不带品质描述的归一化测量值或243个不带时标的单点遥信信息,若RTU采集的信息量超过此数目,则必须分成多个APDU进行发送。
3)IEC-60870-5-104的数据帧类型
APDU控制域包括4个8位位组,根据其定义,可以将APDU分成3种报文格式,即I格式、S格式和U格式。
①I格式用于编号的信息传输,包含ASDU。
②S格式用于编号的监视功能,用于确认I格式的数据帧。
③U格式未编号的控制功能,用于启动数据传输,停止数据传输,测试链路。
控制域的第一个8位位组的第1比特=0定义了I格式,它表明APDU中包含应用服务数据单元ASDU;控制域的第一个8位位组的第1比特为1,第2比特为0定义了S格式,此种格式的APDU不包含ASDU,当报文接收方收到发送方的I格式报文后,如果没有I
格式报文需要发送给对方,可以向对方发送S格式报文以对所接收到的报文进行确认;控制域的第一个8位位组的第1比特=1,第2比特=1定义了U格式,此种格式的APDU也不含ASDU,其作用主要在于实现3种控制功能,即启动子站进行数据传输(STARTDT)、停止子站的数据传输(STOPDT)和TCP链路测试(TESTFR)。
4)应用规约数据单元(APDU)的发送和接收序号的维护
IEC 60870-5-104采用RFC 793/RFC791(即TCP/IP)协议。IP协议负责将数据从一处传往另一处,TCP负责控制数据流量,并保证传输的正确性。由于在最底层的计算机通信网络提供的服务是不可靠的分组传送,所以当传送过程中出现错误以及在网络硬件失效或网络负荷太重时,数据包有可能丢失、延迟、重复和乱序,因此应用层协议必须使用超时和重传机构。为了防止I格式报文在传送过程中丢失或重复传送,IEC 60870-5-104的I格式报文的控制域定义了发送序号N(S)和接收序号R(S),发送方每发送一个I格式报文,其发送
序号应加1,接收方每接收到一个与其接收序号相等的I格式报文后,其接收序号也应加1。需要注意的是,每次重新建立TCP连接后,调度主站和子站RTU的接收序号和发送序号都应清零,因此在双方开始数据传送后,接收方若收到一个I格式报文,应判断此I格式报文的发送序号是否等于自己的接收序号。若相等则应将自己接收序号加1,若此I格式报文的发送序号大于自己的接收序号,这说明发送方发送的一些报文出现了丢失;若此I格式报文的发送序号小于自己的接收序号,这意味着发送方出现了重复传送。此外,I格式和S格式报文的接收序号表明了发送该报文的一方对已接收到的I格式报文的确认,若发送方发送的某一I格式报文后长时间无法在对方的接收序号中得到确认,这就意味着发生了报文丢失。当出现上述这些报文丢失、错序的情况时,通常意味着TCP连接出现了问题,发送方或接收方应关闭现在的TCP连接然后再重新建立新的TCP连接,并在新的TCP连接上重新开始会话过程。
在主站端和子站RTU端进行通信时,接收方可以使用S格式报文(当有应用服务单元需要发送给对方时,可使用I格式报文)对已接收到的I格式报文进行确认,以免发送方超时收不到确认信息而重新建立TCP连接。这就存在一个接收方收到多少个I格式报文进行一次确认的问题,以及发送方应在多少个I格式报文未得到确认时停止发送数据。IEC 60870-5-104规定了两个参数k和w,其取值范围为1到32767(注:当溢出时重新计数),其中k表示发送方在有k个I格式报文未得到对方的确认时,将停止数据传送,w表示接收方最迟在接收了w个I格式报文后应发出认可;IEC 60870-5-104规定k和w的默认值分别为12个APDU和8个APDU。在实际中,k和w的具体取值可以根据TCP连接双方的数据通信量来加以确定,对于子站RTU端来说,每收到一个调度端的I格式报文都应立即进行响应,其w的取值实际上为1,由于RTU端可以循环向调度端发送遥信、遥测等信息,因此k的取值与其循环发送的定时周期有关,通常12到20个APDU就足够了;对于主站端,由于不停接收到RTU的数据,因此应及时地给以确认,通常w取小于8个APDU的值。
5)关于超时时间的理解
为了能对TCP连接进行检查和维护,IEC 60870-5-104规定了几个超时时间,即t0、t1、t2、t3,它们的取值范围为1~255s,准确度为1s,其缺省定义如图所示:
t0规定了主站端和子站RTU端建立一次TCP连接的最大允许时间,主站端和子站RTU 端之间的TCP连接在实际运行中可能经常进行关闭和重建,这发生在4种情况下:①主站端和子站RTU端之间的I格式报文传送出现丢失、错序或者发送U格式报文得不到应答时,双方均可主动关闭TCP连接,然后进行重建;②主站系统重新启动后将与各个子站重新建立TCP连接;③子站RTU合上电源或由于自恢复而重新启动后,将重建连接;④子站RTU收到主站端的RESET_PROCESS(复位远方终端)信号后,将关闭连接并重新初始化,然后重建连接。每次建立连接时,RTU都调用socket的listen( )函数进行侦听,主站端调用socket的connect( )函数进行连接,如果在t0时间内未能成功建立连接,可能网络发生了故