开放式工业自动化控制系统的软件框架
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开放式工业自动化控制系统的软件框架
2282007,43(13)ComputerEngineeringandApplications计算机工程与应用
开放式工业自动化控制系统的软件框架
易凡,徐华,王家廒,贾培发
YIFan1,2XUHua1,2WANGJia—xin1,2JIAPei—fa,
1.清华大学智能技术与系统国家重点实验室.北京100084
2.清华大学计算机科学与技术系,北京100084
1.StateKeyLabofIntelligentTechnologyandSystems,TsinghuaUniversity,Beijing10008 4,China
2.DepartmentofComputerScienceandTechnology,TsinghuaUniversity,Beijing100084, China
E-mail:yi-f04@.an
YIFan,XUHua,WANGJia—xin,etal?Softwareframeworkofopencontrolsystemsforindustrialautomation?Computer EngineeringandApplications,2007,43(13):228-232.
Abstract:Thispaperproposesasoftwareframeworkofopencontrolsystemsforindustrialaut omation,OCSIAsoftwareframework
forshort,whichhashierarchicalarchitectureandcomprisesbasedrivelayer,corecontrollaye randsupervisoryapplicationlayer
frombottomtotop.Basedrivelayerisresponsiblefordirectdrivingphysicaldevicesofvariou skindsofinterfacetypesincluding
serialport,parallelportandfieldbus,and,providestoptwolayerswithHardwareIndependent Interfaceintheformofchannels
asadataserver.Corecontrollayerachievesindirectcontrolofphysicaldevicesbycommunica tingwithbasedriverlayerthrough
channels,monitorssystemstatusesinread—timemodeandpostsalarminform~iontosupervisoryapplicationlayerwhenan
exceptionalstatusOCCUrs.Supervisoryapplicationlayerprovidesinteractiveinterfacesbe tweensystemsupervisorandsystem, facilitatessystemsupervisortosuperviseandcontrolthewholesysteminreal-timemode.The correctnessandfeasibilityofOCSIA softwareframeworkisvalidatedbydesigningandimplementinganinstancemodelofatransf ercontrolsystem.
Keywords:opencontrolsystems;softwareframework;industrialautomation
摘要:提出了一种用于工业自动化领域的开放式控制系统软件框架.简称OCSIA 软件框架.OCSIA软件框架具有层次化结构,
从低到高依次是基础驱动层,核心控制层和监管应用层.基础驱动层负责直接驱动包括串口,并口,现场总线等各种接口类型的物
理设备.并作为数据服务器.以通道的形式向上层提供硬件无关接口.核心控制层通过通道与基础驱动层通信,实现对物理设备的
间接控制:并实时监测系统状态,在系统状态发生异常时,向监管应用层发送报警信息.监管应用层提供系统监管人员与系统的交
互接口.方便系统监管人员对系统运行环境的实时监视和控制.通过设计和实现一个传输控制系统的实例模型验证了OCSIA软
件框架的正确性和可行性.
关键词:开放式控制系统;软件框架;工业自动化
文章编号:1002—8331(2007)13—0228—05文献标识码:A中图分类号:TP3l1
1引言
我国正在走一条"以工业化带动信息化.以信息化促进工
业化"的新型工业化道路.快速发展的信息技术在工业中的广
泛应用能够显着提高工业生产的效率和效益.更快,更好地促
进工业的现代化建设.
工业自动化是工业信息化建设中的一个重要方面,自动化
控制系统是自动化硬件设备和自动化软件系统的总称.由于世
界上不同设备供应商提供的硬件设备纷繁复杂.有些甚至不相
兼容.如何构建一个软件系统来有效集成工业自动化系统中所
需的各种硬件设备成为一个关键问题.开放式控制系统l1_,包
括四个特性:可扩展性,互操作性,可移植性和可伸缩性,能够
较好解决上述问题.
在开放式控制系统的研究中,影响较大的包括美国的O.
MAC,日本的OSEC和欧洲的OSACA.其中,欧洲OSACAm是
用于FA系统的一种参考平台.PC—ORC[1是基于OSACA参考
模型提出的一种开放式机器人控制系统参考平台,包括硬件平
台,操作系统模块和应用软件模块三个层次,并在应用软件模
块中根据功能不同,进一步细分出管理模块,应用编程接口模
块和网络模块三个子组件.RT0CH是基于OSACA参考平台和
PC—ORC参考模型提出的一种基于RTLinux的开放式控制系
统.整个系统采用层次化,模块化设计,结构清晰,便于二次开
发.具有开放式控制系统的多种特性.
随着信息技术的快速革新,一些标准化技术已经应用到开
放式工厂自动化系统的构建中.其中包括Linux开放源码操作
系统,面向对象软件工程,平台无关的Java编程语言,基于
Web的信息发布等,以及其他一些规范和标准,如SQL语言方
便了数据的存储,查询和管理,OPC(OLEforProcessContro1)
和XML语言使得系统中不同应用程序间可以正确地交互,现
场总线技术方便了智能现场设备间的快速互联和通信.Mi.
和C#语言也为这一领域带来了新的机遇[61.
易凡,徐华,王家廒,等:开放式工业自动化控制系统的软件框架2007,43(13)229 以RTOC~为参考.本文提出了一种具有层次化结构的开
放式工业自动化控制系统OCSIA(OpenControlSystemsfor IndustrialAutomation)的软件框架.这个软件框架具有基础驱
动层,核心控制层和监管应用层三个层次,能够为工业自动化
控制系统的开发提供一个良好的框架支持.本文第2部分简要
介绍面向对象方法学,设计模式和框架,第3部分概述这一层
次化软件框架的结构特点和各层次的功能,第4部分详述这一软件框架各层次构设计思想,第5部分通过一个简单的实例模型验证这一软件框架的可行性,第6部分给出本文的总结和对未来工作的展望.
2面向对象,设计模式和框架
本部分简要介绍系统软件开发中经常用到的面向对象方
法学,设计模式和框架技术.
面向对象(Object—Oriented,O0)方法学17]是软件开发方法
的一个重要里程碑,是一种新颖的,更符合人类思维习惯的思维解题方法.面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(问题域)与实现解法的解空间(求解域)在结构上尽可能一致.
面向对象程序设计方法把程序分解为许多对象,不同对象
之间通过发送消息向对方提出服务要求,接受消息的对象主动完成指定功能.程序中的所有对象分工协作,共同完成整个程序的功能.面向对象方法的主要优点是,接近人类习惯的思维方法,稳定性好,复用性好和可维护性好.
设计模式(DesignPatterns)is]是对面向对象程序设计实践
中优秀设计经验的精炼总结,提供较面向对象方法学更高层次的复用性.设计模式针对面向对象系统中一类重要的和重复出现的设计问题,提出一个通用的设计方案,并予以系统化的命名和解释,描述了问题,解决方案,在什么条件下使用该解决方案及其效果.设计模式使面向对象设计更加灵活,典雅,最终复用性更好.
框架(Framework)[81是针对一个特定的应用领域,构建的具
有一组相互协作的类的可复用软件设计.它定义了软件整体结构,类和对象的划分,各部分的主要职责,对象之间怎么协作,
以及相应的控制流程.框架预定了这些设计元素,以便于特定应用开发人员能够集中精力于应用本身的特定细节和逻辑,通过继承框架中的类和组合其实例来定制该框架以生成特定的应用.框架的设计经常使用多种设计模式,以获得高层次的设计复用和代码复用.框架是某一应用领域的共同设计决策,能够使该领域中多种不同应用复用同一个框架,具有面向对象方法学中最高层次的复用性.
3OCSIA软件框架概述
参考RTOC~,提出了一种层次化OCSIA软件框架.本部分
将概述OCSIA软件框架的层次结构特点,以及各层次的功能. 图1虚线以上部分为OCSIA软件框架的层次图.由图可
以看出,OCSIA软件框架包括基础驱动层,核心控制层和监管应用层j=个层次
基础驱动层处于OCSIA软件框架的最底层,封装物理设
备驱动程序,向下与物理设备层进行通信,实现对不同物理设ocsIA
软件框架
图1OCSIA总体层次图
备的直接I/O控制功能,包括读取设备状态(各种传感器信息),发送数据给执行器(Actuator),以产生相应的硬件动作.基础驱动层向上提供一个硬件无关接口(HardwareIndependent Interface,HII),接收来自核心控制层的请求,向其返回设备状
态信息,或发送数据到执行器.
核心控制层处于OCSIA软件框架的中间层,是整个软件
控制系统的核心部分,其主要功能是保证整个系统安全,可靠地运行.它通过基础驱动层为其屏蔽底层各式各样的硬件设备,并通过基础驱动层提供的硬件无关接口实现对底层物理设备的一致,间接I/O控制.核心控制层向上接收来自监管应用层的高层命令,必要时在内部进行适当分割,经过调度后与基
础驱动层进行通信,进而实现对物理设备的控制.核心控制层
还负责对系统状态进行实时监测,一旦发现系统处于不安全状
态或控制命令不具备执行条件,则自动执行校正动作,把系统
重新恢复到安全状态,或立即向上层发送报警信息,等待使用
监管应用层软件的系统监管人员对系统进行干预,并在接收监
管人员的命令后执行相应的动作.以防止人员的伤亡或设备的
损坏.同时,核心控制层过滤系统状态信息,向监管应用层反馈
必要的系统状态信息.
监管应用层处于OCSIA软件框架的最高层,提供系统监
管人员与系统之间的交互接口,方便系统监管人员对系统运行
环境的实时监视和控制,以及其他一些相关操作,如完成先进
过程控制(AdvancedProcessControl,APC)的功能.监管应用层
接收来自核心控制层的运行状态数据和报警信息,动态更新交
互界面.同时向核心控制层发送系统监管人员的控制命令.
在图1所示的OCSIA软件框架层次图中,监管应用层和
基础驱动层之间有一条虚线连接.实现监管应用层和基础驱动
层之间的直接通信.这样监管应用层不必经过核心控制层.可
以直接对系统中各种过程数据或工艺参数进行高效采集,实现
运行时过程控制优化.
在各层次软件中,将监管应用层程序配置在工厂主机中,
核心控制层程序和基础驱动层程序配置在工控机中,基础驱动
层程序所在的工控机通过串口,并口,现场总线等通信接口与受
控设备进行物理连接,工厂主机和工控机通过高速以太网互联,
实现各层次程序的相互通信,具体硬件连接关系如图2所示.
l监管应用层{l核心控制层{
l程序il程序i
图2OCSIA硬件连接关系图
2302007,43(13)ComputerEngineeringandApplications计算机工程与应用
图2所示的核心控制层程序和基础驱动层程序配置在不
同的工控机中,为了进一步提高系统的性能,加快系统响应速度,完全可以将核心控制层程序和一个或多个基础驱动层程序配置在同一台工控机中,以避免核心控制层和基础驱动层之间的网络通信,通过直接在同一台工控机内部相互通信.有效减少通信时间
4OCSIA软件框架设计思想
本部分将详述OCSIA软件框架各层次的设计思想.
4.1基础驱动层
基础驱动层负责与各种不同类型受控设备进行直接I/0
控制,并向上层提供一个硬件无关接口,如何实现这个硬件无关接口就成为一个关键问题.
控制软件最根本的功能是实现对各种不同类型受控设备
进行控制和监测,尽管各种类型受控设备控制方式不尽相同. 但它们都可以看成由多个能够进行输人和输出操作的I/0单元组成,这些I/O单元称为I/O点.I/O点提供了一个很好的抽象方式,在基础驱动层以上使用通道(Channe1)对物理设备I/O 点进行抽象.根据I/O单元数据承载方式的不同,可以大致分为离散型通道(例如开关),连续型通道(例如压力传感器)和字符串型通道(如可以接收字符串的智能设备):根据I/O单元的I/0特性,可以分为只读型通道(如各种传感器),只写型通道(如各种执行器),读写型通道(如具有一个传感器和一个执行器的阀门).这样通过建立各种不同数据承载方式和不同I/O 特性的通道,就可以对各种不同类型的设备进行抽象.得到一个称为通道的硬件无关接口.基础驱动层以上的核心控制层和监管应用层看到的是一个经过抽象的通道,它们可以根据通道的特性读取或设置对应物理设备的I/O点,实现对物理设备的一
致,间接的控制方式.在OCSIA软件框架中,基础驱动层相
当于一个具有各种通道的数据服务器,而核心控制层和监管应用层则相当于一个数据客户端.它们请求数据服务器的服务. 其服务可以看成读取或设置其所拥有的通道.
基础驱动层需要处理各种接口类型的受控设备,包括串口(RS一232/422/485),并口,现场总线(如CAN,DeviceNet,Sercos 等),或者对受控设备进行DirectIO.基础驱动层设计为一个
10驱动库,使驱动开发人员能够使用10驱动库方便,快捷地开发出与工控机相连接的各种特定受控设备的驱动程序.这就需要驱动库支持串口,并口,现场总线等不同通信协议,以便支持对连接的各种类型设备的控制.
通道的概念实际上已经超出了其用于抽象受控设备I/0
点的范围,可以用来表示实际受控设备中并不存在的虚拟I/0 点.这种表示虚拟I/O点的通道不妨称之为高级通道.而表示受控设备实际I/0点的通道称为初级通道.高级通道可以通过初级通道运算而来,例如一个设备只能给出速度信号,那么可以定义一个Velocity初级通道.如果在具体应用中需要获取一个加速度信息,那么可以在基础驱动层再定义一个Accelera. tion高级通道,它通过Velocity通道信息经过运算得来.同时, 为了充分利用一些硬件资源,核心控制层可以向基础驱动层传递一个字符串类型的高级通道表示的非初级控制命令.基础驱动层收到这一非初级命令后调用相应的硬件资源完成控制任务.通过这一方式,使得各层次的硬件,软件资源得到充分利用,性能配置达到最优.
在图3所示的基础驱动层软件结构图中.圆角方框为10
驱动库的软件部分,直角方框为驱动开发用户在10驱动库之上开发的软件部分.10驱动库部分包括通信接口,调度模块, 各种类型受控设备的标准驱动模块(包括串口标准驱动,并口标准驱动和各种现场总线标准驱动等).以及其他特定驱动库. 为便于驱动非串口,并口或现场总线的特定受控设备,可以从
设备供应商那里取得相应的驱动程序库,并将其添加到10驱
动库中,以便可以被用户创建的驱动例程调用完成I/O操作.
通信接口
设备无关接El(通道)
用户驱动例程
调度模块
用户驱动例程
/\用户驱动例程
/\——————一
—
L,\————i——一
串El标准驱动)…r并El标准驱动
现场总线标准驱动其他特定驱动库
图3基础驱动层软件结构图
驱动开发用户在10驱动库之上开发的软件包括:建立基
础驱动层程序所包含的所有通道.并根据每个通道的I/O特
性,调用10驱动库中标准驱动模块或设备供应商提供的特定
设备驱动库,编写通道驱动例程实现通道的读或写.
4.2核心控制层
核心控制层的主要功能是接收来自监管应用层的高层控
制命令.与基础驱动层通信完成对目标设备的控制,在控制命
令不满足执行条件时向监管应用层发送报警,等待系统监管人
员的操作,并根据监管人员的操作执行相应的动作;同时实时
监测系统的运行环境状态.如果系统处于不安全状态.自动执
行相应的系统校正动作.或向监管应用层发送报警.等待监管
人员对系统的控制.
在OSACAI】参考模型中,控制任务分解成通过通信子系统
相互协作的体系结构对象(ArchitectureObject,AO),每个AO
作为应用模块完成独立的控制功能.在PC—ORO33参考模型中,
控制对象(ControlObject,CO)代表软件中控制实际制造设备
的组件.它应该与硬件无关,可以通过对COs属性指定新值来
构建适应于新的制造环境的整个控制系统.由此可见,在OS—
CAR和PC—ORC参考模型中.均抽象出一个用于完成独立控
制功能的对象.在核心控制层软件中,也抽象出一个Con.
trolObject(CO)抽象类,每个从CO派生的具体CO类包含1个
或多个相关的控制服务,每个控制服务可以完成一个特定的控
制功能.监测任务的实现,我们抽象出一个MonitorObject(MO)
抽象类,每个从MO类派生的具体MO类实时监测一个特定的
系统状态,这个系统状态出现异常,则自动执行相应的校正动
作,或向监管应用层发送报警信息.核心控制层抛出的报警可
以分为两类,阻塞报警和非阻塞报警:阻塞报警用于异常状态
较为严重的情形,抛出报警的CO的一个控制服务必须阻塞运
行,等待系统监管人员的干预,并根据系统监管人员的干预结
果执行相应的动作:非阻塞报警用于异常状态不会引起负面结
果的情形,这种情况下抛出报警的CO的一个控制服务或MO
的监测任务不需阻塞运行,仅仅发送一个报警提醒系统监管人
易凡,徐华,王家废,等:开放式工业自动化控制系统的软件框架2007,43(13)231 员发生了一个状况.为实现报警功能,抽象出了一个Alarm抽
象类,从Alarm抽象类派生出BlockingAlama和Un.
blockingAlarm两个具体类,分别表示阻塞报警和非阻塞报警.
在图4所示的核心控制层软件结构图中,包括核心控制类
库和在核心控制类库之上开发的特定核心控制层程序.图4
中,上层通信接口负责与监管应用层进行通信,下层通信接口
负责和基础驱动层进行通信.核心控制层操作的基础对象是通
道,包括控制子系统,监测子系统,报警子系统,日志子系统,以
及标准算法库.控制子系统的组成元素是控制对象,每个控制
对象包含多个控制服务.控制对象作为一个服务器,向其他作
为客户端的控制对象提供服务.这些控制对象在逻辑上具有层次结构:最下层的控制对象用来抽象一个实际物理设备,并提供操作相应物理设备的控制服务,这些服务通过读/写与此设备相关联的通道来实现;中间层的控制对象用来实现一个完整的控制功能.如对物理真空系统的控制,这些控制对象调用下层对象的控制服务来实现自己的服务;最上层的控制对象.调用功能层的服务来为上层用户提供服务接口监测子系统的基本组成元素是监测对象,它们通过检测通道值对系统状态进行实时监视,在遇到异常情况时将会发出报警.报警子系统定义了许多报警对象,用于表示系统中可能出现的异常情况.并提供相应的恢复选项.日志子系统有选择地提取通道值生成日志记录,并记录核心控制层程序运行时的系统信息,方便程序的调试.标准算法库包含经常使用的路径规划,动力学计算,PID 控制,模糊控制等标准算法,供控制对象在需要时调用
核心控制类库
图4核心控制层软件结构图
特定的核心控制层程序在核心控制类库的基础上进行开
发,主要的软件开发工作包括:创建具有逻辑层次结构的控制对象,创建监测对象和报警对象.建立控制对象,监控对象所需要访问的通道;实现控制对象所支持的控制服务,实现监测对象的监测任务,设定日志记录时提取的通道
4_3监管应用层
监管应用层是系统监管人员和整个系统的接口.通过提供
图形化界面,方便系统监管人员启动,中止各种控制任务,实时监视系统运行情况,对系统发出的报警做出干预,并在系统发生故障时通过GUI对系统进行维修,对从系统中收集上来的各种数据进行分析,优化参数配置,实现运行时的过程控制
优化.
由于不同的工业自动化应用具有不同的监管需求.因而监
管应用层需要提供开发人员根据需求定制监管GUI的功能:
同时在运行时,能够动态显示定制的监管GUI,支持与系统监
管人员之间的交互,完成相关监管功能.因而监管应用层应该
具有开发和运行时两个紧密相关的功能.
在如图5所示监管应用层软件功能结构图中,监管应用层
软件具有两个软件实体:GUI图形化开发工具和运行时支撑环境. 监管应用层:
囹
一
标准及定制模板文件f
界面模板库tJ∥———一
l图形化
I开发工具I
图5监管应用层软件功能结构图
在开发阶段.GUI图形化开发工具需要用到一些标准界面
元素和模板来定制满足特定需求的监管GUI,同时GUI开发人
员也可以使用数据库中的标准界面元素进一步定制复合界面
元素,并存储在数据库中对标准界面模板库进行扩充,从而形
成一个标准及定制界面模版库.GUI开发人员在定制监管GUI 时,需要实现GUI界面元素和核心控制层通道以及控制对象
中控制服务的绑定,同时指定需要采集的来自基础驱动层的通
道数据,将定制的GUI及绑定关系保存在一个模版文件中.以
便运行时动态加载到内存中.
当整个控制系统启动时,运行时支撑环境根据数据库中存
储的工艺参数通过与基础驱动层通信实现对相关设备参数的
配置,动态加载定制的GUI模版文件并在屏幕上显示出来在
系统启动完成后,运行时支撑环境获取监管GUI显示的来自
核心控制层的通道数据以及可能产生的报警信息,使用这些数
据信息动态刷新GUI;通过响应系统监管人员的交互事件.向
核心控制层发送控制命令:同时采集来自基础驱动层的各种通
道数据,存储在数据库中,用于运行时的数据变化趋势显示.通
过数据分析进行运行时过程控制优化.
监管应用层开发人员需要的开发工作包括:使用图形化工
具设计监管GUI,实现界面元素和通道的绑定.设定界面元素
的动态显示逻辑,以及实现界面元素和核心控制层控制对象中
控制服务的绑定在开发阶段定制的监管GUI的运行,由运行
时支撑系统负责解释,按照定制的GUI模版文件,用运行时系
统状态的实时信息动态刷新监管GUI.
5一个实例模型
为了验证OCSIA软件框架的可行性,设计了一个简单的
实例模型.
5.11实例模型简介
这个实例模型是一个简单的工件传输系统.模型中有两个
单元,分别是传输单元和加工单元,传输单元内有一个用于传
输工件的传输机械手.每个单元都有一个压力传感器和温度传
感器,用于感知单元内的温度和压力条件.两个单元之间有一
个门阀,用于工件加工时隔离两个单元.
主要操作流程是:传输单元的传输机械手取得未加工工
件,打开门阀,机械手伸展将工件传输到加工单元,机械手收
缩,关闭门阀;加工单元加工完毕工件后,打开门阀,传输机械
手伸展将加工完毕的工件从加工单元中取出,机械手收缩,关
闭门阀
2322007,43(13)ComputerEngineeringandApplw~ions计算机工程与应用在工件加工和传输过程中,需要保持两个单元始终处于低
真空状态.另外,模型系统需要满足一些互锁条件.如当两个单
元压力不相同时.不能打开门阀等.
5.2实例模型实现
用软件仿真这些设备.在系统运行时可以通过软件控制台
对系统的各状态信息进行设置,如压力,温度等.
选用C#.NET来创建提出的OCSIA软件框架.并在软件框
架之上实现这个传输控制系统.由于不对实际硬件设备进行I,
O操作.只通过软件仿真这些设备,因而OCSIA软件框架的基
础驱动层通过调用设备仿真软件的API.完成对虚拟设备的控制.OCSIA软件框架的应用监管层,我们使用WindowsAppli—cation来设计交互界面,并实现界面控件元素与通道以及中间
层控制对象中控制服务的绑定.编写界面元素的动态显示逻
辑.在OCSIA软件框架的核心控制层.我们创建C#类库项目
来实现核心控制类库.然后,基于核心控制类库,实现上述传输
控制系统的核心控制层软件.
在图6所示的核心控制层软件UML类图中.灰色框内是
核心控制层类库(主要部分),灰色框之外是为实现传输控制系
统所派生的类(部分).
图6核心控制层软件UML类图
在核心控制类库中.抽象类ControlObject是对执行多个相
关控制任务的对象的抽象.抽象类MonitorObject是对执行监
测任务的对象的抽象.控制任务和监测任务的执行都依赖于ControlThread类,ControlThread类是控制任务和监测任务执行的线程(Thread).单体(Singleton)模式对象ControlThreadPool
包含多个ContmlThread对象,对它们进行管理.ControlObject
对象和MonitorObject对象向ContmlThreadPool对象请求Con—trolThread,以便在其中执行控制任务或监测任务.抽象类Channel是对通道概念的抽象,其派生出的两个抽象类Discrete Channel和ContinuousChannel是对离散型通道和连续型通道
的抽象.DiscreteChannel的两个具体派生类DiscIeteReadonlv—Channel和DiscreteReadWriteChanne1分别是对具有只读和读, 写特性的离散型通道的抽象.抽象类Alarm是对报警的抽象.。