1.什么是电网IEC104协议
- 104规约帧格式
- 帧格式有3种,I帧/U帧/S帧
- I帧-编号的信息传输格式,用于传输应用数据,顺带确认对方的发送。根据类型标识不同,报文形式有所差异。
- I帧的APDU包含APCI和ASDU
- 总体格式为基本格式中的`68H(启动字符)+APDU长度+APCI应用规约控制信息(APDU长度L+控制域1(c1)/2(c2)/3(c3)/4(c4))+ASDU应用服务数据单元
- I帧的控制域1/控制域2为发送序号,控制域3/控制域4为接收序号,
- 控制域1(发送LSB)和控制域3(接收LSB)最低位固定为0,即控制域1、2组成的字节与控制域3、4组成的字节,其十进制形式固定以偶数递增,所以控制域1及控制域3的最低位不用于构成序号。
- 综上在计算序号时,要先转换成十进制数值,再除以2;且需要注意的是低位字节在前,高位字节在后,所以计算时要先做颠倒
- 发送序号与接收序号是用于防止报文在传送过程中出现丢失或重复传送。发送方每发送一个I格式报文,其发送序号应加1,接收方每接收到一个与其接收序号相等的I格式报文后,其接收序号应加1,需要注意的是,每次重新建立TCP连接后,调度主站和子站RTU的接收序号和发送序号都应清零。
- 在双方开始数据传送后,接收方若收到一个I格式报文,应判断此I格式报文的发送序号是否等于自己的接收序号。若相等则应将自己的接收序号加1,若此I格式报文的发送序号大于自己的接收序号,这说明发送方发送的一些报文出现了丢失,若此I格式报文的发送序号小于自己的接收序号,这意味着发送方出现了重复传送。
- 当报文接收方收到发送方的I格式报文后,如果没有I格式报文需要发送给对方,可以向对方发送S格式报文以对所接收的报文进行确认;
- I格式和S格式报文的接收序号表明了发送该报文的一方对已接收的I格式报文(一个或多个)的确认。发送方会将一个或几个报文保存到一个缓冲区里直到它将自己的发送序号作为一个接收序号收回,这个接收序号小于发送序号时有效。这样就可以删除缓冲区里正确传送过的报文。如果是很长的数据传输只在一个方向进行,就得在另一个方向发送S格式报文,在缓冲区溢出或超时前认可报文。
- 若发送方发送的某一I格式报文后长时间无法在对方的接收序号中得到确认,这就意味着报文发生了丢失。
- 总召唤/对时/电度总召唤/遥控等下发指令;遥信/遥测/遥脉/SOE帧都属于I帧
- U帧-不计数的控制功能类型,用户传输控制命令的报文
- APDU只包含APCI,帧长6个字节
- 启动(命令/确认)/停止(命令/确认)/测试(命令/确认)功能的帧,APDU的帧内容是固定的六种
- S帧-计数的监视功能,用于传输对战端的确认的报文
- APDU只包含APCI,帧长6字节
- S帧-的APDU的帧内容为如下6个字节:68 04 01 00 98 53 前四个字节固定,后两个字节表示接收序号。
- S帧和I帧结合使用,用于信息确认,主站和子站可以按频率发送;比如接收8帧I帧回答一帧S帧,也可以要求接收一帧I帧就应答一帧S帧。
- ASDU
- 数据单元类型
- 类型标识(TYP):1字节
- 可变结构限定词(VSQ):1字节
- 最高位为是否连续标志(1:连续,0:不连续),后7位表示信息对象个数。
- 当可变结构限定词最高位为1表示连续时,对应n个信息对象中,第一个信息对象中含有信息体地址(3个字节)表示从这个规约地址开始,第二个信息对象中不再包含信息体地址,第二个信息对象地址是在第一信息对象中的信息体地址递增。当可变结构限定词最高位为0表示不连续,每个信息对象中都包含信息体地址。
- 传送原因(COT):2字节
- 低字节在前,高字节在后。
- ASDU公共地址(ADR):2字节
- 信息对象地址(InfoAdr):3字节