[电力通信规约]设备侧IEC60870-5 101/103协议开发要点

1、IEC101简介

电力通讯规约IEC101国内早期的标准是《DL/T 634-1997运动设备和系统的传输规约》。该标准是电力部1997年批准的。它等同于国际标准IEC870-5-101。本标准适用于网络拓扑结构为多个点对点、多点共线、多点环形和多点行星的网络配置的配网系统,通道可以是双工或半双工。它主要用于配电自动化领域的通讯协议,该协议分为非平衡式传输和平衡式传输。
电力通讯规约IEC103是自动化变电站设备通信的重要协议,主要用于变电站内设备通信。它主要传输采用非平衡模式。
由于IEC101/103协议的基本帧结构完全一样,这里就重点介绍一下IEC101协议

2.报文格式

新手可以先阅读以下文章,基本的内容也就不写了:
电力-IEC101/104规约基础1
IEC60870-5-101协议解析

2.1采用的帧格式为FT1.2异步式字节传输帧格式

FT1.2可变帧长帧格式
在这里插入图片描述
传输规定:
 线路空闲状态为‘1’
 每个字符为1个起始位、8个数据位、1位偶校验位、1个停止位
 每个字符间无需线路空闲间隔
 两帧之间的线路空闲间隔最少33位
 长度L包括控制域、地址域、用户数据域的8位位组的个数,为二进制数
 帧校验和是控制、地址、用户数据域的8位位组的算术和(256模和)
 接收校验

  1. 每个字符的启动位、停止位、偶检验位。
  2. 校验两个启动字符、两个长度L应一致、接收字符数为L+6、帧校验和、结束字符若无差错,则数据有效。若检出一个错误时,则校验线路空闲间隔。
  3. 在校验中, 若检出一个差错, 则舍弃此帧数据。

FT1.2固定帧长帧格式
在这里插入图片描述
传输规定:
 线路空闲状态为‘1’
 每个字符为1个起始位、8个数据位、1位偶校验位、1个停止位
 每个字符间无需线路空闲间隔
 两帧之间的线路空闲间隔最少33位
 无长度
 帧校验和是控制、地址的算术和(256模和)
 接收校验
 . 每个字符的启动位、停止位、偶检验位。
 . 校验启动字符、帧校验和、结束字符若无差错,则数据有效。若检出一个错误时,则校验线路空闲间隔。
 . 在校验中, 若检出一个差错, 则舍弃此帧数据。若无差错,则数据有效。

2.2链路传输规则:

在这里插入图片描述
控制域(C)、地址域(A):
在这里插入图片描述
DIR:物理传输方向,0 = 主站到子站,1 = 子站到主站
PRM:源发站标志,1 = message 来自主站,0 = message 来自子站
FCB: 帧计数位,取值0或1,避免帧丢失或重复接收,0,1 交替出现
通信开始或失败后用Reset0 来同步源发站和响应站的FCB位,使
双方FCB=1。
FCV: 帧计数位有效标志,1 = 帧计数位有效,0 =帧计数位无效
DFC: 数据流控制位,防止子站缓冲区溢出,再发送用户数据到子站将导致其缓冲区溢出时,子站在响应报文中应将DFC位置1。主站判断DFC=1时,应发REQUEST-RESPOND 报文请求链路状态,直到DFC=0 时继续发送用户数据。
RES:保留,取值0

功能码:
FUNCTION CODE:功能码,定义帧类型。
对于主站(PRM=1)
在这里插入图片描述
对于子站(PRM=0)
在这里插入图片描述
a) 主站召唤1级数据(遥信变位等)子站如有数据变化以响应帧回答。
b) 主站召唤2级数据(如事件顺序记录),子站以事件顺序记录得响应帧回答。
c) 主站召唤遥测、遥信全数据等, 子站以相应报文作为响应帧回答。

地址域(A)
在这里插入图片描述
地址域的值为0至255, 其中FFH=255为广播地址,即向所有站传送报文。
应用服务数据单元结构
在这里插入图片描述

2.3实现各种功能的链路规约数据单元

本规约完成配电网自动化系统子站和主站、子站和区域站之间完成数据交换。主要完成初始化、采集数据、时间同步、命令操作、参数操作、故障处理等

用户数据分类
1、 1级用户数据:遥信变位、子站状态变化
2、 2级用户数据:超过门限的遥测、SOE、带时标的遥测, 用召唤2级数据报文收集
3、 遥测、遥信、子站状态也属于2级用户数据, 但由主站总召唤命令收集。电度量由电度量的总召唤命令收集。

3.报文结构分析

从上面介绍可知如下:
1.IEC101/103的帧结构主要分为固定帧和可变帧。每种帧结构都含有控制域,并且每种帧控制域的结构如下:
在这里插入图片描述
可变帧比固定帧的结构多了一个帧头结构,和ASDPU。这样我们可以简单地理解得到如下公式:

可变帧 = 帧头+控制域+ASDU; 

2.控制域负责链路控制,控制的内容包括报文的方向;帧计数位是否有效。
3.APDU完全独立于报文的其它部分。
4.一定要搞清楚什么是一级数据什么事二级数据。这个概念在其它协议中好像没有定义过。

4.开发要点

通过以上简单的分析,在进行IEC101/103开发时,我们可以将这个任务分为以下几个部分:
在这里插入图片描述
第一部分协议的软件架构设计
“一个破协议还讲啥软件结构,就是设备端给另一个设备发送报文,另一个设备收到报文后又发个对应报文就OK了”。这是我当年面试时一个资深总监对通讯的评价。根据之前工作经验,在电力,电力电子行业出问题最多的就是“通讯”方向。通讯可以说是产品对外的眼睛。通信开发人员日常的主要工作就是 开发,测试,对接调试,背锅,甩锅的无限循环模式。因此这块的结构尽可能地做到灵活,考虑到各种工况。

常见的IEC101协议的软件实现方式模式三种:
一应答式,主站发一帧完整的报文,从站回一帧完整的报文。这种模式很难通过投标检测;
第二种模式就是控制域做成灵活回复模式,收到报文再回对应的帧结构。这种稍微能好一点,但是遇到灵活的检测平台和幕后操作时的刁难很难拿到合格标识;
第三种就是利用 可变帧 = 帧头+控制域+ASDU ,将控制域中的ADC、DFC作为状态机的触发源,把该协议作为一个状态机来处理。我接触过的远动协议栈Triangle 和libIEC都倾向第二种结构,有部分的状态机。第三种结构非常灵活,但这种模式必须熟悉规约细节,在开发时一定要熟读协议。

第二部分帧结构的灵活配置,这个问题主要是为了解决公共地址,链路地址和传送原因的字节数要做到单双字节可选。早期协议不规范导致各个主站厂家对这三个字节个数不一致;公共地址,链路地址可以单独设置,对于某个电网区域如果实时的线路大于256条,或者每条线路上所安装的设备大于256时,这时候公共地址和链路地址就分别起到了装置识别的能力。传送字节根据主站要求配置。

第三部分帧交互流程的开发。这块开发和IEC104协议一样,主要是针对各个交互流程进行验证。最为复杂的可能就是遥控。因为很多特殊功能可以通过遥控的虚拟控点操作来实现。

第四部分协议中数据源的提取。早期接触的开发大部分都是把采集的数据放到数组中,在利用关系查找。后来接触的都是把这些数据又放到了数据结构中。有的数据是通过MySQL对ram和Flash建模,通过脚本自动化生成对应关系表,有的则是通过组件思想生成配置,让所有开入开出都能灵活配置。总之协议点表中的点一定要与一个固定的数据表有所对应。

第五部分多现场情况涵盖。在前面讲过的灵活配置后,一定要实现版本的标识,这点异常重要。现场施工时,很可能有一两台设备就需要单独发布一个版本。

个人推荐的IEC101、103测试工具,应首选“青云规约测试软件”。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值