组态软件中的IEC60870-5-104规约实现
2015-05-10韩滨旭沈玉玲庞海亮
韩滨旭,沈玉玲,庞海亮
(上海电气集团股份有限公司中央研究院,上海 200070)
0 引言
组态软件作为现今中央监控系统的主要开发工具正运用于众多工业控制领域例如:石油、化工、制造业、污水处理、楼宇、轨道交通。在具体的监控系统工程实施中,所使用的设备例如终端信号采集设备和信号传输设备因行业需求的不同而有所区别。比如,在污水处理、轨道交通等环境监控系统中,大多使用PLC、智能仪表等信号采集和自动控制设备,这就导致了设备端到中央监控系统的数据传输通信协议也有所不同。另外,行业内的设备的通信协议尚无统一标准,因为传输介质的不同又衍生了众多不同的通信准则。例如基于串口的施耐德公司莫迪康Modbus-RTU协议和其基于网络TCP/IP的Modbus-TCP/IP协议,它们是基于两种传输接口与介质的不同协议。因此,组态软件作为可以适应于多行业的中央监控系统开发工具,需要多种通信协议驱动支持。
目前,在电力行业需求侧监控系统开发过程中,组态软件作为上位机系统开发的工具正广泛被使用。IEC60870-5-104规约是基于网络的对电力系统进行调度通信的通信标准,已经在上位中央监控系统与电力二级设备之间广泛的使用,比如电力远动终端单元RTU、通信管理机等等。如何在组态软件中实现IEC60870-5-104规约推动组态软件在电力行业应用的关键问题。本文将讨论IEC60870-5-104规约在组态软件中具体的驱动开发实现。
1 NetControl与其I/O
组态软件是针对监控系统开发的专业工具,可为用户提供针对数据采集以及过程控制的专业开发环境和系统运行环境。它们是在自动控制系统监控层一级的软件平台,通过用图像组态形式替代传统的编程方式,友好的开发环境为高效开发监控系统打下坚实的基础[1]。上海电气集团股份有限公司的NetControl是一款针对多行业监控系统应用的组态开发工具,此软件基于Windows操作系统与微软.NET的技术平台通过C#编程语言进行开发,即将推出的2.0版本可在Windows所有32位和64位操作系统环境下运行,其具有内涵丰富的动画图库、工程控件库以及具有良好的网络及数据管理能力。
由于组态软件的通信驱动是相对独立的,所以组态软件对于通信驱动的管理方式都有其独特性。NetControl的I/O采用的是基于接口与协议厂家的驱动管理方式,通信驱动的开发是基于不同的接口方式与软件I/O服务器进行数据交互,现在所有的接口方式分类为串口类、以太网类以及板卡类型,根据三种不同驱动开发类型提供与I/O服务器连接的不同接口。同时通信驱动的开发具有与软件开发界面的接口以及软件工程变量读写的接口。由于组态软件的通信驱动的开发与组态软件的开发环境与运行环境的高度相关,通信驱动首先要读取用户配置并根据用户配置与具体协议形成报文格式和解析方式。本文将以NetControl软件为例具体介绍IEC60870-5-104规约的软件通信驱动实现。
2 IEC60870-5-104规约
由于组态软件NetControl具体传输方式以及物理接口调用等与OSI七层模型中应用层之下层的处理均在I/O服务器完成,针对本文所探讨的问题即TCP/IP的网络服务处理均在I/O服务器中完成。通信驱动只需要考虑104规约如何与NetControl的结合,即具体实现组态软件中的报文组成和解析。
104规约中报文帧格式有两种,即变长帧与定长帧,而每一帧均是一个应用规约数据单元(APDU),变长帧由应用规约控制信息(APCI)与应用服务数据单元(ASDU)组成,应用规约数据单元(APDU)长度是指从控制域第一个八位位组开始到帧尾的长度,APDU的最大长度为253(减去启动字符与长度两个字节),启动字符68H十进制为104定义了数据流的起点,如图1所示。
图1 104规约变长帧格式[2]
定长帧仅由应用规约控制信息(APCI)构成,没有应用数据服务单元(ASDU),总长度为6个八位位组即6个字节,而应用规约数据单元(APDU)长度固定为4个字节,通常,定长帧用于通信的监视功能以及通信过程的控制如激活连接、激活停止连接等,如图2所示。
图2 104规约定长帧格式[2]
根据应用规约控制信息的不同组成,104规约应用数据单元可分成三种不同帧类型:编号的信息传输类型I格式帧、编号的监视功能类型S格式帧与未编号的控制功能类型U格式帧。
同时根据报文所包含的数据类型的不同,数据功能不同,传输类型的不同等,104规约规定了ASDU的帧组成结构,如图3所示。
图3 应用规约数据单元ASDU结构[2]
在组态软件的104规约通信驱动开发中正是结合用户开发环境接口与运行环境还有以上报文格式根据规约的通信过程以及功能描述进行程序开发。
3 IEC60870-5-104规约的开发环境实现
在组态软件中,用户进行I/O配置时首先需要选择与现场实际情况相符的通信协议。之后如果是基于以太网的协议需要配置TCP/IP的相关参数例如:IP地址、端口号(104规约中规定为2404)等。同时还要针对具体规约例如104规约的具体内容进行配置,因为不同设备厂家在104规约的报文组成格式上是有差异的。如果要适用于多数场合那么在驱动开发时就要开放104规约帧结构中数据长度可自定义的部分的接口供用户根据实际坏境设定,例如设备站号(即公共地址)、公共地址长度、信息体长度、传输原因长度[2],在驱动开发中通过开发环境开放的接口进行XAML语言设计,效果如图4所示。
图4 用户信息配置效果
而对于用户配置信息读写的后台逻辑则通过XAML的后台源代码与其他类进行绑定,
类IEC104ConfigData可为后续的在运行环境下的报文组成与报文解析提供用户信息配置的参数。
双Boost单相逆变器并网控制策略//黄松伟,唐芬,肖琦,刘京斗,辛振,PohChiang LOH//(16):167
4 IEC60870-5-104规约的运行环境实现
在运行环境的驱动开发中,首先需要读取用户在开发环境下的参数配置。通过新建一个104规约的模型类IEC104Protocol并生成一个类IEC104ConfigData在IEC104Protocol的实例可以获得用户在开发环境下的参数配置,之后在IEC104Protocol中根据参数配置定义104规约的帧结构。
在一般电力中央监控系统中,组态软件提供遥信(只读开关量)、遥测(只读模拟量)、遥控(只写开关量)、遥调(只写模拟量)等四个“四遥”的寄存器区间。NetControl运行环境中,因为通信方式的关系104规约通信过程的实现又分为两个部分:读指令与写指令。在只读部分中,104规约中在总召唤指令发出后,设备端即被控站会将遥信与遥测的信息主动陆续上发到控制站即中央监控系统所以这相当于是一个类似于“主动上传”的方式而写指令的步骤是“预置”、“预置确认”、“遥控执行”一直到“执行确认”,这个过程类似是“轮询”的机制[4]。组态软件的I/O服务器接口提供了选择通信工程收发报文方式的接口,104规约属于轮询与主动上传的联合模式。
104规约在运行环境中的过程首先是从本地初始化开始,一直到总召唤后进入数据采集阶段,过程如图5所示。
图5 104规约驱动流程
中间没有写指令的内容是因为在I/O服务器中写指令作为高优先级可中断通信过程直接执行而并不是周期性的执行,由于104规约对于初始化没有特殊要求则初始化选择默认的系统初始化,并将用户参数传递到新生成的IEC104Protocol实例中:
通过调用重载的方法Connect()完成链路连接,它需要生成一个新的TaskInfo实例,其中包含了驱动需要封装的下发报文CommandInfo(),以及需要返回的报文格式信息ResponseInfo(),之后通过I/O服务器执行发送CommandInfo()中需要下发的报文并按照ResponseInfo()中规定的格式筛选返回报文,建立连接的第一步就是首次握手,首次握手的报文获取是从类UFrame中获取:
在服务方法ServiceMethod中,重载ProcessServiceR esponse(ServiceProcessInfo info, byte[] data)依据功能具体定义的名字info.ServiceID对特定过程(例如首次握手“FirstHandshake”)返回结果data进行解析并通过SetServiceResult(serviceID,result)返回解析结果,并可以进行下一步对时和总召唤过程与首次握手一致。总召唤因为厂家的区别,有全程只做一次总召唤也有定时总召唤或事件触发下次总召唤,但进行下次总召唤前都需要设备端即被控端发送本次总召唤的结束桢。所以104规约在组态软件中的驱动可根据总召唤的结束桢来发下一次的总召唤,而判断是否发下一次总召唤是在重载主动上发的报文分析重载方法中进行的:如果收到的字节数组的传输原因即第九和第十个字节是0x0A和0x00那么就是总召唤结束桢[2]。而其他所有的遥信与遥测桢以及变位主动上传均是在此方法中进行解析,并通过Registers()的方法返回给组态软件中的寄存器组:b
当在传输过程中出现遥控或者遥调这些高优先级写指令时,如前所述的传输过程会出现中断并执行写指令的传输过程,如图6所示。
图6 遥控指令传输过程
而组态软件提供用户对组态软件中用户生成寄存器组(即通常工程中的点表)的读取,则使用CreateSampleGroup的方法建立数据下发的打包,最后根据具体遥控、遥调的报文属性(例如是单点或是双点)生成IFrame中的新实例并通过重载方法BuildWriteTaskInfo配置报文信息,再通过执行写指令重载方法ExecuteWriteCommand进行下发。
5 结束语
本文详细介绍了组态软件中IEC60870-5-104规约通信驱动的实现过程,解决了104规约与组态软件应如何结合以适应不同场合的应用,通过对用户配置信息的读取和104规约帧格式模式的建立,与软件各项接口配合开发出具体的104规约驱动。此方法适用于多种商用组态软件,并在之后的使用过程中不断改进,为相关组态软件产品在电力行业的推广应奠定基础。
[1] 欧金成,欧世乐,林德杰,彭备战.组态软件的现状与发展[J].自动化博览,2002,19(2):42-45.
[2] DL/T634.5104-2002.远动设备及系统第5-104部分:传输规约采用标准传输协议子集的IEC60870-5-101,网络访问[S].
[3] 马晓红,管荑,林祺蓉.104规约在调度自动化系统中的应用[J].山东电力技术,2011,(6):1-5,14.
[4] 赵渊,沈智健.基于TCP/IP的IEC60870-5-104远动规约在电力系统中的应用[J].电网技术,2003:27(10):56-60,71.