远动传输规约之IEC60870-5-104篇

1)IEC-60870-5-104的规约结构
IEC-60870-5-104远动规约使用的参考模型源出于开放式系统互联的ISO-OSI参考模型,但它只采用其中的5层,其结构如图所示:
 远动传输规约之IEC60870-5-104篇_第1张图片
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)的结构如图所示,
远动传输规约之IEC60870-5-104篇_第2张图片
它由应用规约控制信息(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。
远动传输规约之IEC60870-5-104篇_第3张图片
②S格式用于编号的监视功能,用于确认I格式的数据帧。
远动传输规约之IEC60870-5-104篇_第4张图片
③U格式未编号的控制功能,用于启动数据传输,停止数据传输,测试链路。
远动传输规约之IEC60870-5-104篇_第5张图片
控制域的第一个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,其缺省定义如图所示:
远动传输规约之IEC60870-5-104篇_第6张图片
 
t0规定了主站端和子站RTU端建立一次TCP连接的最大允许时间,主站端和子站RTU端之间的TCP连接在实际运行中可能经常进行关闭和重建,这发生在4种情况下: 主站端和子站RTU端之间的I格式报文传送出现丢失、错序或者发送U格式报文得不到应答时,双方均可主动关闭TCP连接,然后进行重建; 主站系统重新启动后将与各个子站重新建立TCP连接; 子站RTU合上电源或由于自恢复而重新启动后,将重建连接; 子站RTU收到主站端的RESET_PROCESS(复位远方终端)信号后,将关闭连接并重新初始化,然后重建连接。每次建立连接时,RTU都调用socket的listen( )函数进行侦听,主站端调用socket的connect( )函数进行连接,如果在t0时间内未能成功建立连接,可能网络发生了故障,主站端应该向运行人员给出警告信息。 t1规定发送方发送一个I格式报文或U格式报文后,必须在t1的时间内得到接收方的认可,否则发送方认为TCP连接出现问题并应重新建立连接。 t2规定接收方在接收到I格式报文后,若经过t2时间未再收到新的I格式报文,则必须向发送方发送S格式帧对已经接收到的I格式报文进行认可,显然t2必须小于t1。 t3规定调度端或子站RTU端每接收一帧I帧、S帧或者U帧将重新触发计时器t3,若在t3内未接收到任何报文,将向对方发送测试链路帧TESTFR。
 
6)IEC-60870-5-104的实施过程
    TCP连接的建立过程。站端RTU作为服务器,在建立TCP连接前,应一直处于侦听状态并等待调度端的连接请求,当TCP连接已经建立,则应持续地监测TCP连接的状态,以便TCP连接被关闭后能重新进入侦听状态并初始化一些与TCP连接状态有关的程序变量;调度端作为客户机,在建立TCP连接前,应不断地向站端RTU发出连接请求,一旦连接请求被接收,则应监测TCP连接的状态,以便TCP连接被关闭后重新发出连接请求。需要注意的是,每次连接被建立后,调度端和站端RTU应将发送和接收序号清零,并且子站只有在收到了调度系统的STARTDT后,才能响应数据召唤以及循环上送数据,但在收到STARTDT之前,子站对于遥控、设点等命令仍然应进行响应。
    ②循环遥测数据传送。对于遥测量,可以使用类型标识为9(归一化值)、11(标度化值)和13(短浮点数)的ASDU定时循环向调度端发送。
    ③总召唤过程。调度主站向子站发送总召唤命令帧(类型标识为100,传输原因为6),子站向主站发送总召唤命令确认帧(类型标识为100,传输原因为7),然后子站向主站发送单点遥信帧(类型标识为1)和双点遥信帧(类型标识为3),最后向主站发送总召唤命令结束帧(类型标识为100,传输原因为10)。
    ④校时过程。调度主站向子站发送时间同步帧(类型标识为104,传输原因6),子站收到后立即更新系统时钟并向主站发送时间同步确认帧(类型标识为104,传输原因7)。需要注意的是,在以太网上进行时钟同步,要求最大的网络延时小于接收站时钟所要求的准确度,即如果网络提供者保证在网络中的延时不会超过400ms(典型的X.25 WAN值),在子站所要求的准确度为1s,这样时钟同步才有效。使用这个校时过程可以避免成百上千地在子站安装GPS卫星定位系统,但如果网络延时很大或者子站所要求的准确度很高(例如1ms),则变电站综合自动化系统必须安装精确度很高的全球定位系统(GPS),而以上的时钟同步过程实际上就没有意义了。
    ⑤子站事件主动上传。以太网对于调度端和子站端都是一个全双工高速网络,因此IEC6080-5-104必然使用平衡式传输。当子站发生了突发事件,子站将根据具体情况主动向主站发送下述报文:遥信变位帧(单点遥信类型标识为1, 双点遥信类型标识为3,传输原因为3)、遥信SOE帧(单点遥信类型标识为30, 双点遥信类型标识为31,传输原因为3)、调压变分接头状态变化帧(类型标识为32,传输原因为3)、继电保护装置事件(类型标识为38)、继电保护装置成组启动事件(类型标识为39)、继电保护装置成组输出电路信息(类型标识为40)。
    ⑥遥控/遥调过程。主站发送遥控/遥调选择命令(类型标识为46/47,传输原因为6,S/E=1),子站返回遥控/遥调返校(类型标识为46/47,传输原因为7,S/E=1),主站下发遥控/遥调执行命令(类型标识为46/47,传输原因为6,S/E=0),子站返回遥控/遥调执行确认(类型标识为46/47,传输原因为7,S/E=0),当遥控/遥调操作执行完毕后,子站返回遥控/遥调操作结束命令(类型标识为46/47,传输原因为10,S/E=0)。
    ⑦召唤电度过程。主站发送电度量冻结命令(类型标识为101,传输原因为6),子站返回电度量冻结确认(类型标识为101,传输原因为7),然后子站发送电度量数据(类型标识为15,传输原因为37),最后子站发送电度量召唤结束命令(类型标识为101,传输原因为10)。
 
7)其它
104规约中应用服务数据单元结构(ASDU)的结构如图:
远动传输规约之IEC60870-5-104篇_第7张图片 
注1:应用服务数据单元结构(ASDU)结构如下:
①一个8位位组表示类型标识;
②一个8位位组表示可变结构限定词;
③两个8位位组表示传送原因;
④两个8位位组表示应用服务数据单元公共地址;
⑤三个8位位组表示信息体地址。
注2:104规约中,应用规约数据单元(APDU)没有校验、没有结束字符 (由于底层有TCP/IP,所以不需要额外判断一帧的正确与完整性)。
 
参考文献:
【1】赵渊 沈智健. 基于TCP/IP的IEC60870-5-104远动规约在电力系统中的应用.

你可能感兴趣的:(tcp,网络,socket,服务器,internet,Numbers)