工业协议解析——IEC60870-104

104报文较为繁琐。
共有S帧、I帧、U帧。
简单的说I帧是用来传输数据、S帧是用来信息确认、U帧用来控制

104规约的报文帧分为三类,I帧,S帧,U帧;
I帧为信息帧,用于传输数据,长度大于6个字节,为长帧;
S帧为确认帧,用于确认接收的I帧,长度为6个字节,为短帧;
U帧为控制帧,用于控制启动/停止/测试,长度为6个字节,为短帧;

长帧报文分为APCI和ASDU两个部分,统称为APDU
短帧报文只有APCI部分

1 U帧

U帧具有不计数的控制功能,长度为6个字节固定帧长。
用于控制报文。

在这里插入图片描述
其中,C表示确认,V表示生效。

U 格式帧使用到以下三种命令

  1. 启动 U 帧,用于启动应用层 传输控制命令

主站发送:680407000000 从站返回:68040B000000

07 0B为控制域
  1. 停止 U 帧,用于停止应用层 *传输控制命令 *

主站发送:680413000000 从站返回:680423000000

13 23为控制域
  1. 测试 U 帧,双方均无发送时,维持链路活动状态控制命令:

主站发送:680443000000 从站返回:680483000000

43 83为控制域

1、U帧只用于控制,并且只存在APCI中(意思就是U帧的apdu报文只会有apci不会存在asdu);
2、测试、停止和开启在一个U帧报文中只可能存在其中的一种。

2 S帧

S 格式具有计数的监视功能, S 格式帧为短帧,长度 6 个字节。
接收方接收到 I 帧数据,但本身没有信息要发送的情况下, S 帧用于确认接收到对方的帧

在这里插入图片描述

主站发送 68 04 01 00 0e 00
从站回复 68 04 01 00 1a 00

1、S帧报文格式规定控制域1的第0位为1,第1位为0和控制域第0位为0;
2、S帧报文的发送序列号都为0
3、S帧只用于APCI中(意思就是S帧的apdu报文只会有apci不会存在asdu)。
不能用于传输信息,只用给对方信息的确认,比如子站发送8条报文,结束后主站就会给子站发送一个确认帧(S帧),告诉子站我收到了8条报文。
比如:接收计数为RxCounter
控制域1 = 0x01
控制域2 = 0x00
控制域3 = RxCounter & 0xFE
控制域4 = (RxCounter >> 8) & 0xFF

3 I帧

I帧报文格式规定控制域1和控制域3的最低位为0;
其他部分用于发送序列号和接收序列号的计数;
比如:发送计数为 TxCounter 接收计数为RxCounter
控制域1 = TxCounter & 0xFE
控制域2 = (TxCounter >> 8) & 0xFF
控制域3 = RxCounter & 0xFE
控制域4 = (RxCounter >> 8) & 0xFF

1、I 帧的控制域包含发送序列号接收序列号两个参数

2、两个序列号在每个 APDU 和每个方向上都应按顺序加一

3、发送序列号和接受序列号在 0~32767 之间循环,发送方增加发送序列号,而接受方增加接收序列号
4、接收站认可连续正确 接收的一个 APDU 或者多个 APDU,将最后一个正确接收的 APDU 的发送序列号作为接收序列号返回

这个接收序列号是对所有发送序列号小于或等于该号的 APDU 的有效确认

如只在一个方向进行较长的数据传输,就得在另一个方向发送 S 格式认可这些 APDU

在这里插入图片描述

4 IEC104 协议结构

APDU:应用规约数据单元
APCI:应用规约控制单元
ASDU:应用服务数据单元

ASDU格式如下图
在这里插入图片描述

4.1 启动字符

默认固定为 68H,意思就是只要是IEC104协议就是以68H开头

4.2 控制域

控制域主要是有两个功能

1、报文的类型(I帧报文、U帧报文或者S帧报文)
2、记录收发报文的个数

4.3 类型标识

占一个字节,标识出后面的信息体的数据类型
一个 APDU 中信息体中的所有数据的类型都是一致的,在类型标识这个位置标识

4.3.1 监视方向的用户类型

一般从 主站发到从站在这里插入图片描述
在这里插入图片描述

4.3.2 控制方向的用户类型

一般从 主站发往从站
在这里插入图片描述

在这里插入图片描述

4.3.3 监视方向的用户类型

从站发给主站
当厂站(从站)短重新上电、初始化参数、重新分配缓存区等情况下,厂站需要给主站发送该类型,而主站收到该类型的APDU包,主站一般会做一次总召唤;
在这里插入图片描述

4.3.4 控制方向的系统类型

主站发往从站
在这里插入图片描述

5 举例

5.1 单点遥控

5.1.1 发包

I帧共有两层、第一层为控制域与序列计数
在这里插入图片描述
Byte[0] 68 只要是IEC104规约那么开头规定的即为是68

Byte[1] 0e 为长度 自此往后的长度

Byte[3][4] 1c 00 发送序号,计数

Byte[3][4] 1c 00 接收序号,计数

下一层

在这里插入图片描述
Byte[0] 2d 为控制符 即为功能码

Byte[1] 01 可变结构限定词、若信息对象的地址不连续则为0、若信息对象的地址连续则为1

Byte[2] 06 传输的原因

Byte[3] 00 公共地址 即RTU站址

Byte[4] 01 00 信息体地址

接下来看IOA这个结构体内的

Byte[0][2] IOA 00 00 00 信息体地址,数据点在数据库中的序号,低位在前高位在后

Byte[0][2] SCO 80 代表单点遥控的分合状态

5.1.2 回包

在这里插入图片描述
跟发包都是一样 I帧发送了数据 那么会有S或U帧确认或控制这个信息 所以I帧的回应包与发包一致

  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值