IEC61850 技术讲堂 · 知识分享与交流

首页 > 互动中心 > IEC 60870-5-101 与 10

IEC 60870-5-101 与 104 的差别:同一套 ASDU,两套链路层

👤 发布:微自恒通技术团队 📅 2026-11-06

很多人以为 101 换到 104 只是"把串口改成网口"。实际上两者共用同一套 ASDU,链路层却完全不同——把这两层分开看,迁移时该改什么、不该改什么就一目了然。

一、先看帧头:同一套 ASDU,两种外壳

IEC 60870-5-101IEC 60870-5-104
物理层串行(RS-232/485、光纤),异步字节传输TCP/IP(默认端口 2404)
链路层帧FT1.2:可变帧长以 68 L L 68 开头,固定帧长以 10 开头;末尾有校验和与结束符 16APCI:68 + 1 字节长度 + 4 字节控制域,没有校验和
链路地址每个帧都带 1~2 字节链路地址没有链路地址,改由公共地址(ASDU 内)区分站点
建立数据传输无此环节,帧来了就处理必须先 STARTDT 启用,之后 I 帧才有效

注意一个容易踩的坑:两边都用 68 开头,但 101 的第二个字节是长度、第三个字节又是同一个长度,第四个字节还是 68;104 是长度后直接跟控制域。拿 104 的解析器去切 101 的帧,一定会错位。

二、101 的两种帧长格式

  • 可变帧长:68 + L + L(重复一次,用于校验)+ 68 + 控制域 + 链路地址 + ASDU + 校验和 + 16。业务数据(带 ASDU)都走这个格式。
  • 固定帧长:10 + 控制域 + 链路地址 + 校验和 + 16。不带 ASDU,只做链路层的请求/确认、链路状态、请求链路层数据。

可变帧长里 L 的第一个字节算的是"L 自己+第二个 L+启动字符+后续内容",也就是从第一个 L 到校验和之前的字节数——这个定义和 104 的长度字段(控制域 4 字节 + ASDU)完全不是一回事。

三、ASDU:这一层是共用的

不管 101 还是 104,ASDU 的结构都是:类型标识(1 字节)+ 可变结构限定词(1 字节)+ 传送原因(1~2 字节,含 P/N 位与源发地址)+ 公共地址(1~2 字节)+ 信息体地址(1~3 字节)+ 信息元素。所以:

  • 点表、类型标识、传送原因的语义可以照搬;
  • 信息体地址的字节数由链路配置决定,两边不一致会导致"地址错位、值看起来乱跳";
  • 时标(CP56Time2a / CP24Time2a)编码也共用,与链路层无关。

四、迁移时真正需要改的四件事

项目101 有、104 没有处理方式
帧计数位 FCB / FCV靠它防重复帧104 用 TCP 保证顺序,逻辑直接去掉,不要硬塞进 ASDU
链路地址帧级寻址映射成公共地址,别把两个地址混成一个
固定帧长的链路请求请求链路状态、请求一级数据104 用 STARTDT/STOPDT/TESTFR 替代
链路超时与重发按帧计数的重发机制换成 t1/t2/t3 与 k/w(见我们另一篇 104 定时器的文章)

五、顺序建议

做协议转换或迁移,先定 ASDU 层(点表、类型、传送原因、时标),再定 链路层(帧格式、超时、重发、启停)。反过来先调链路层,会出现"链路通了但点全是错的",两边都白忙。

↑