|
5.1 工业控制网络研究现状与趋势 |
近年来,集散控制系统DCS、可编程控制器PLC、可编程序自动化控制器PAC、数控系统CNC和嵌入式控制单元ECU等成为控制系统的主流形式,其融合了自动化、计算机以及网络通信等技术,成为各种机械装备和生产过程控制中最重要、最普及、应用场合最多的工业控制装置,与机器人、CAD/CAM并称现代工业自动化的三大支柱。国际电工委员会将PLC定义为一种专为工业环境应用而设计的数字运算装置,由可编程的存储器、控制器和IO接口构成;通过顺序循环执行的输入信号采集、控制指令执行与运算结果输出等操作实现对目标装备与生产过程的监视、控制和管理。
在PLC的多年发展过程中,逐步在逻辑控制、流程控制以及运动控制领域中形成了IEC61131-3、IEC61499以及PLCOPEN编程标准,同时监控管理组态软件的流行以及标准网络接口的加入分别解决了PLC控制系统的编程开发,监控管理与网络通信问题,推动了其在冶金、汽车、市政、交通、纺织、机器人等各领域的应用。目前各大PLC生产厂商均面向不同行业推出了各具特点的设备管理与编程开发工具:如西门子TIA portal平台中的Step7软件支持梯形图、功能块、结构化文本等编程语言,通过数据块DataBlock对变量与设备参数进行封装,提供了基于面向对象与集中数据管理的编程方式;罗克韦尔的RSLogix5000软件提供了系统配置以及支持梯形图、结构化文本的程序编辑与调试环境,同时特别针对运动控制提供在线和离线编程工具,包括图形化位置和凸轮运动曲线编辑与监控、线性与圆弧插补、传动参数自整定与诊断等功能;施耐德针对不同行业提供整合工艺设计功能的开发环境,如利用CoDeSys编程平台针对机械切割行业提供卷径计算、力矩给定、惯量补偿、摩擦补偿等功能;欧姆龙的CX-Programmer软件则在通用开发模板、编程与调试便利性和易用性上进行了优化设计,使其在中小型PLC市场中得到快速普及。这些软件解决了控制网络中单个PLC设备在不同应用场合下的编程开发与管理维护等问题。
随着PLC在各领域应用的深入,其自身也在不断发展,不断体现出新的特点。在生产规模、生产效率以及生产工艺要求的不断推动下,控制系统的规模逐渐增大,控制逻辑日益复杂。PLC控制系统已经由传统的单机控制加上网络通信等功能,朝着向网络化大规模PLC控制系统的发展,随之而来也产生了一些新的问题。
首先在各类工业现场中受布线条件、应用环境与成本等因素影响,多种不同类型的总线并存。如大多数制造企业使用的现场总线包括FF、HART、Modbus、Profibus PA、DeviceNet等;使用的控制网络有Control Net、Profibus DP、EPA、ModBUS TCP和EtherCAT等,而在生产管理和经营管理层,使用的又是以太网或者Internet。不同类型的总线由不同厂商的PLC设备提供支持。但对控制系统而言,这些互不兼容的网络相互孤立,不同总线内部的数据无法自由流动和共享,系统集成困难。目前主流的设备集成技术如EDDL电子设备描述语言 [ 2 ] 、FDT现场设备工具以及基于OPC-UA的FDI现场设备集成规范 [ 3 ] ,它们目的都是把不同总线设备集成在一起。但其本质上都需要为各种总线单独开发符合各自技术要求的软件,如与协议对应的EDD解释程序、FDT驱动组件以及OPC-UA设备服务器软件等。在实际使用过程中,一方面需要购买新的软件来兼容新的总线;另一方面,不同总线的设备需要通过不同的软件进行操作,用户难以从系统的角度对网络内的设备进行统一管理。
PLC控制系统由设备、变量与网络组成。PLC设备以事件触发、循环扫描的方式执行控制程序,完成各自的控制功能;变量记录控制指令的执行结果与控制程序的运行状态;通过网络进行设备间程序运行级别的程序同步与数据共享,实现控制程序的分布式执行。随着系统规模的增长,网络结构愈发复杂,在控制能力得到提高的同时,系统的开发与维护难度也急剧增大。现有的设备管理与编程开发工具,如Step7、RSLogix5000以及CX-Programmer提供的都是着眼于单一PLC控制器的程序开发,面向单个设备的编程方式。用户局限于网络内单个设备的功能实现。网络化控制系统需要的控制任务的分解、分配、实施以及设备间的数据映射与变量同步等操作,无法从系统的角度考虑网络环境下的整体功能实现,开发效率与维护难度逐渐难以满足现场应用的要求。
因此,在多种网络构成的PLC控制系统中,如何对网络内不同总线不同类型设备进行统一的操作、管理与监控;如何提高统一操作与管理过程中的通信效率与服务质量;以及如何将控制网络视为一个整体进行统一的编程开发,通过编译将控制程序分散下载至最佳设备,是PLC控制网络发展过程中必须要解决的问题。这将改变现有的系统开发与管理方式,使用户不再局限于网络内的单个设备,而以系统的角度对在线设备进行统一管理与整体编程。对提高网络化大规模PLC控制系统的开发效率,降低系统维护与管理的难度具有积极的影响。
近年来,在美国提出的CPS物理信息系统,欧盟通过其第7个科研框架计划提出的网络化嵌入式控制系统,以及我国的中国制造2025规划中,也都强调了异种网络构成的控制系统,以及分布式的感知与控制对实现生产制造过程的信息化与智能化的重要意义。在德国提出的工业4.0中,也将上述技术作为其核心的CPPS(Cyber Physical Production System)信息物理制造系统要解决的关键问题之一。而目前网络化控制系统的相关研究则主要集中于网络延时对系统控制性能的影响与鲁棒性分析 [ 4 , 5 ] ,较少涉及对控制网络整体的管理与编程方法的研究。因此如何在多种总线构成的PLC控制系统中实现以控制网络为整体的统一的设备操作与管理,编程开发和优化编译下载具有重要的研究意义和应用价值。
要对工业现场中不同总线和网络的设备进行统一编程、操作与管理,应使各个设备的系统参数、变量与指令能够进行统一理解和处理。其中系统参数记录了设备生产厂商、序列号、生产日期等静态信息,以及包括设备运行、通信、接口等在内的设备配置与运行状态信息。变量则反映了设备的输入输出以及程序的计算结果,记录了生产过程中产生的各类数据,与设备的寄存器和存储区对应。指令提供了可被用户使用的具有逻辑运算、算术运算、定时计数、程序控制等功能的编程语句,是控制程序的基本组成元素。不同类型的设备具有不同的参数,不同的工程应用对应不同的变量定义与控制程序,而不同总线则需要不同的参数与变量获取方法。在IEC61158第四版标准中,定义了包括11种工业以太网在内的19种现场总线标准。不同的总线对应于不同的物理层接口,链路层MAC(Media Access Control)介质访问控制机制,以及通信方式、通信命令与通信报文格式。控制系统可通过各总线对应的网络接口卡,适配器,网桥等硬件设备实现物理层与数据链路层接入,而控制软件应分别支持不同总线的通信方式、通信命令与报文,以实现对不同总线设备的访问。目前主流的EDDL、FDT以及OPC-UA技术分别从不同的角度实现了多总线的设备集成。
(1)EDDL电子设备描述语言
EDDL是一种基于结构化文本的描述性语言,其通过一套可裁剪的标签元素,定义了现场设备中的参数、变量、通信乃至软件所需的图形界面,实现设备资源的通用理解;通过解释程序与不同总线的设备通信,为用户层提供数据访问与设备管理等服务,实现设备资源的统一获取与访问。EDD设备描述文件主要包括设备厂商、设备类型与版本等识别信息,菜单、趋势图等可视化界面元素,设备参数与功能信息,以及通信协议相关的通信映射信息四部分主要内容,如图5-1所示。
图5-1 电子设备描述文件的主要内容
EDDL解释程序与现场设备通信取得相应参数。EDD为解释程序指明了设备使用的协议类型(目前兼容FF、HART以及Profibus三种总线),并对每条通信映射指定应使用的通信命令号、应执行的功能块或参数被分配的设备槽位与索引号,同时给出参数在请求或响应报文数据段中的位置,以便解释程序进行报文的封装与解析,如图5-2所示。
图5-2 EDDL设备集成原理
如图5-2所示,EDDL解释程序为每种总线单独编写,支持各种协议的通信命令、可调用设备中符合标准的功能块,以及读写指定槽位特定索引下的变量。解释程序根据通信映射描述选择上述操作,并根据参数与报文数据段的对应关系获取目标参数,实现对各自总线设备的操作与管理。
(2)FDT/DTM技术
与EDDL基于描述的方法不同,FDT技术采用微软的组件对象模型COM,将设备厂商开发的设备驱动程序作为一个软件组件嵌入到应用程序。在FDT技术中,驱动程序称为DTM(Device Type Management)设备类型管理组件,分为设备DTM与通信DTM两类。框架程序通过设备DTM实现对现场设备参数与状态的管理,通过通信DTM来实现对现场设备的访问与控制。FDT的核心思想是通过定义一系列标准的组件接口,解决框架程序与设备驱动组件的集成问题,实现在同一现场中不同厂商设备的集成与互操作。DTM组件与框架应用程序需要由设备制造商以及HMI、MES等软件开发商分别开发,FDT/DTM逻辑结构如图5-3所示。
图5-3 FDT/DTM逻辑结构
如图5-3所示,系统主要包括FDT框架应用,设备DTM以及通信DTM三部分。设备DTM组件由设备厂商提供,封装了设备支持的参数、功能与管理方法,实现设备的配置校准、维护和可视化显示等功能;通信DTM组件封装了对应总线的协议栈,为设备DTM提供现场数据;FDT框架应用程序是DTM的运行环境,支持FDT规范,可以通过标准接口调用设备DTM提供的功能。根据应用环境与功能不同,框架应用程序可以是组态软件、设备管理工具和人机界面等。FDT技术则定义了规范的DTM组件与FDT应用的接口,如表5-1所示。
表5-1 DTM组件常用接口
如表5-1所示,DTM组件通过IDtmInformation与IDtmHardwareIdentification接口提供组件与现场设备的版本、厂商等静态识别信息;通过IDtmOnlineParamater、IDtmParameter、IDtmOnlineDiagnosis、IDtmdiagnosis接口提供设备参数与状态的访问和管理,通过IDtmChannel、IFdtCommunicationEvent、IFdtEvent接口实现与设备和框架应用程序的通信管理。而FDT框架程序通过IFdtContainer接口管理DTM组件,通过IFdtDialog接口为DTM组件提供界面窗体调用功能,通过IFdtCommunication接口与通信DTM交互。
(3)OPC UA技术
OPC UA由EDDL合作组织与FDT集团共同开发,基于WebService的客户机与服务器方式运行。服务器与设备通信实现设备管理与数据管理,客户机从服务器取得现场数据,进行监控与运算等应用。OPC UA技术的核心思想是通过制定客户机与服务器程序的标准实现架构及其通信规范,解决现场客户端软件与不同设备厂商提供的服务器程序的集成问题。
OPC UA客户端模型主要包括客户端应用程序、中间接口以及协议栈三部分,如图5-4所示。客户端程序即为用户使用的组态、监控与管理软件,其通过OPC UA中间接口与服务器交互,主要包括发送与接收各类数据的服务请求。
如图5-4所示,在OPC UA客户端中,中间接口层将客户端程序的功能实现与OPC UA协议栈分离出来,通过API或事件与回调函数在二者间传递数据。OPC UA协议栈将客户端程序的请求转化为报文发送给服务器,同时也接收服务器传来的响应与通知,并通过中间接口传递给客户端程序。
图5-4 OPC UA客户端模型
OPC UA服务器模型由服务器应用程序、中间接口以及协议栈三部分组成,如图5-5所示。服务器应用程序通过中间接口层向客户端发送和接收消息,协议栈将消息转换为报文与客户端交互。
如图5-5所示,OPC UA服务器应用程序由实体、地址空间、监控项与订阅模块四部分组成。其中,实体是OPC UA服务器可以直接访问的物理设备或者软件程序,是系统的数据来源,不同协议的现场设备可以通过定制的OPC UA服务器实现数据采集;地址空间是一块虚拟出来的用于存放数据的存储区,由一系列相互关联的节点构成。其中可以被客户端访问的节点组成视点;监控项与服务器中的部分节点对应,当监控项检测到节点数据发生变化或者出现报警等信息时,将通知订阅模块;订阅模块通过中间接口向客户端发布通知。OPC UA允许多个服务器之间进行关联,即一个服务器作为另一服务器的客户端,以适应大型网络的数据管理与传输需求。
图5-5 OPC UA服务器模型
综上,三种技术分别从不同角度实现了多种总线的设备集成:EDDL基于描述技术,通过解释程序与设备交互,实现参数的统一获取与访问;FDT与OPC UA对传统的驱动程序进行了统一,FDT技术提出了驱动组件与框架程序的软件接口规范,OPC UA规定了设备服务器程序与客户端软件的实现结构与交互接口,从而实现第三方软件与不同厂商驱动程序的集成。
本质上,以上三种技术均需要针对不同总线开发专用软件与设备通信,如果设备非标或设备厂商没有提供上述软件产品,现场工程师几乎很难开发出满足标准的EDDL解释程序、设备与通信DTM组件或OPC UA服务器程序,这也成为工业现场开展设备集成工作所面临的主要问题。
目前国内外已有学者开始尝试使用XML语言对通信协议的内容开展描述研究,如Baroncelli等提出了XMPL(XML-based Multi-Protocol Language)基于XML的协议描述语言的概念。虽然其没有给出该语言的实现细节,但是指出了协议中应被描述的对象:协议状态、报文集合与协议数据结构,同时给出了该语言解析软件的实现架构 [ 7 ] 。Michael A.and Gordon B.提出了一种用于识别以太网协议类型的描述语言PP(Packet Parsing),其通过结构体对目标协议报文头的格式进行定义,形成识别规则库。在FPGA中对识别规则库进行解析,实现高效可扩展的报文识别与转发处理等操作 [ 8 ] 。刘喆等研究了EtherCAT工业以太网的报文结构与解析方法,通过XML语言对报文的构成进行了描述。在此基础上实现了一种开放的可扩展的EtherCAT协议解析器,使用者可以根据解析对象的格式自定义解析规则,以获得清晰直观的解析结果。Gatan N.C.提出了DCON ASCII协议的设备描述方法,该方法基于电子设备表单EDS文件,并扩展了对通信命令的请求与响应格式的描述,以便于软件对设备信息的获取与解析。上述方法通过描述语言对通信协议的报文封装方式开展了描述研究,虽然最终目标并非设备集成,但为弥补EDDL以及现有设备描述技术在通信协议方面存在的局限提供了新的思路。可对通信协议中的通信命令、协议数据结构以及通信报文封装与解析方法进行描述,应用软件解析描述文件以统一的方式与不同总线设备通信。
2012年开始,由斯坦福大学主导提出的软件定义网络SDN技术受到了越来越多的学者与研发人员的关注。SDN是一种新型网络结构。它将原来紧密耦合在网络设备中的转发控制功能独立出来,交由计算设备编程实现。从而将整个网络虚拟成为一个独立的可编程控制的交换机,用户可以通过一个节点控制整个网络功能。另外,SDN也极大简化了网络设备自身的实现,其不再需要理解并支持上千种类型协议,而仅是接收并执行SDN控制器的指令,实现用户要求的转发控制。这一特性同时也引起了工业控制领域学者们的注意,目前在现场总线控制系统中,设备的运行逻辑支持基于IEC61131或者IEC61499标准的可编程控制功能。但在通信协议上,绝大部分设备依靠自身固有的协议栈进行报文的封装与解析。如果控制系统中设备的协议栈可以支持类似SDN功能,同时稍加扩展,则可编程序控制器就可以通过软件对设备的报文进行封装与解析,实现与各类通信协议设备的互联。目前部分厂商的控制器,如西门子S7,三菱FX2N,大工计控PEC等系列的PLC控制器已经支持了自由通信指令,可通过编程实现对任意协议的支持。但是编写的通信程序与控制程序关联在一起,并共同下载至控制器中执行,两者互相耦合,没有实现通信与控制的分离。如果可以参考SDN网络的特点,将通信程序从控制程序中分离出来,就可以在不影响设备正常运行的情况下,对通信网络进行动态的控制与管理,将为工业现场不同总线设备的集成以及系统维护、升级与改造提供更大的便利。
目前可编程控制系统的程序开发需要针对每个控制器单独编程,相关研究主要侧重于编译算法、程序优化方法以及针对各自硬件平台的程序并行执行算法,下面分别给出各部分研究现状。
PLC控制程序的编译方法主要分为编译型和解释型两种类型。编译型编译将源程序转换成可执行的二进制目标文件,由目标机直接执行;解释型编译将源程序转换为可被解释程序识别的中间代码,通过逐条解释实现控制程序的执行。两者各有利弊,编译型程序执行效率高,但是通用性差,针对不同的硬件平台需要设计不同编译器。解释型通用性较好,但是逐条解释执行中间代码,效率稍低。
编译型编译方法中,张礼兵等分析了IBM PC机器码的结构,以及运算、传送、移位、跳转等指令的执行周期,提出了将数控编程使用的SIPROM与梯形图语言转换成IBM PC机器码的方法,并通过VC++实现编译程序的开发。KIM H.S.等使用二叉树将梯形图程序转换成指令表,并通过映像查表的方法将指令表翻译成可执行的汇编指令,实现PLC梯形图程序的编译。程晓红针对RISC精简指令集的指令结构与功能,通过词法、语法与语义分析实现梯形图语言的语法检查,通过逆波兰表达式实现中间代码生成,并将其转换为AVR单片机支持的130条指令,实现控制程序的执行。陆林等针对信捷XC系列PLC,通过模板文件描述不同硬件平台所支持的不同指令,解决编译过程中不同硬件平台的目标代码生成问题。黄仁杰等研究并实现了基于ARM单片机机器码的PLC编译系统,通过梯形图编译器、代码解析生成器、汇编编译器将用户开发的梯形图逻辑直接编译成能够在ARM中执行的机器码,并给出了代码执行效率测试结果。在解释型编译方法研究中,Tang提出了一种梯形图指令节点编译方法,将程序编译为自定义的中间指令代码,在基于PC的软PLC控制器上运行。Chmiel提出了一种指令运行时的解释执行方法,以适用于处理能力较弱的小型便携式PLC控制器。伍抗逆针对7轴联动机床控制要求,通过词法分析构造工具LEX和语法分析自动构造工具YACC,参考FANUC公司FS系列PMC的指令系统实现了运动准备以及运动执行相关NC指令的解释执行。高进、郭书杰等分析了IEC61131标准中IL指令表语言的结构,提出了一种将指令表转换为操作码和操作数的中间代码的方法。张航伟等以固高公司的GT-400-SV-PCI型运动控制器为对象,分析了数控程序开发中可能出现的8类问题,并提出了利用数据库存取数控代码的方法,为程序的执行与优化提供服务。刘思胜等通过查表法实现了G代码到GALIL运动控卡指令的转换,并通过OPENGL技术对输入的加工代码进行图形验证,实现了刀具运动轨迹仿真和材料去除过程仿真。
在控制程序分析与优化研究中,Deveza提出了一种将PLC控制程序转换为MATLAB仿真语言的方法,以便于对控制程序的运行结果进行仿真。王新华等提出了一种梯形图与指令表程序的遍历与互转算法。卓保特等为了兼顾存储空间、执行速度和可移植性,重新设计了SIPROM语言的指令编码格式,减少了存储空间,并在PLC解释执行算法的基础之上,利用逻辑运算的性质,提出了改进的PLC解释执行算法,减少了逻辑运算的步数从而提高了PLC系统运行的速度 [ 9 ] 。Yan Y.和章航平等分析了指令的依赖关系与运行原理,根据梯形图程序结构结合常开常闭输入节点的取值期望,给出了程序运行时冗余指令产生的原因,通过插入跳转指令提出了一种避免冗余指令、提高CPU工作效率的优化编译方法 [ 10 , 11 ] 。刘洁提出状态空间编译法对控制程序进行化简,许文亮通过线性矩阵不等式对程序中的混杂变量进行分离 [ 12 ] 。
上述方法针对不同的目标平台与编程语言开展了PLC控制程序的编译、优化与仿真研究,针对单台设备,没有涉及网络化多PLC控制系统设备间程序并行分析、任务分配与变量同步等问题的研究。随着PLC应用的日益广泛,其执行的控制逻辑变得越来越复杂。PLC控制程序顺序扫描执行,其执行效率受限制于PLC设备的扫描周期,随着控制程序的增长,执行速度也变得越来越慢。近年来越来越多的研究学者开展利用FPGA特有的硬件并发特性来提高PLC控制程序执行速度的研究,成为PLC控制领域新的热点。
Miyazawa等首次在FPGA上实现了梯形图的简单逻辑功能,如常开、常闭、上升/下降沿触发、线圈输出、置位/复位以及与、或、异或等操作,并利用VHDL语言的定时时钟模拟PLC程序的周期扫描执行过程。Makoto Ikeshita等提出了将串行执行的SFC程序转化为可并行执行的Verilog程序,在FPGA上实现高速可编程控制器。通过将SFC程序的基本组成元素“步、动作”翻译为寄存器,“转换条件”翻译为门控检测电路,在FPGA中实现PLC的控制功能 [ 13 ] 。为了提高将梯形图转换为VHDL的效率,Welch、Zulfakar提出了PLC控制器直接生成FPGA架构的方法 [ 14 , 15 ] 。上述研究提出了PLC控制指令以及控制程序在FPGA中的实现方法,从指令转换的角度利用了FPGA的硬件处理特性,提升程序执行效率。
D.Du等提出了通过FPGA实现PLC的方案,提出了将梯形图转换成VHDL的方法,并给出程序转换的实现方法:首先将梯形图转换成VHDL语言,并通过状态机来模拟PLC的控制程序的循环扫描执行方式;然后通过并行触发信号控制状态机切换,实现梯形图语言在FPGA芯片中的执行。Shuichi Ichikawa等学者分析了PLC控制程序在FPGA上运行的三种方式:流依赖模式(Flat)、顺序依赖模式(Sequential)及进行依赖分解后的层次运行模式(Levelized),并对每种模式的特点进行了分析 [ 16 ] 。D.Alons等人提出梯图到VHDL的自动转化方法,并在Eclipse软件平台上开发了转换工具,实现了基于FPGA的PLC控制系统 [ 17 ] 。Shaila S.,Manis M.P.等在Visual Studio2008上开发了能初步实现梯形图向VHDL转换的集成环境,将梯形图转换为HDL代码,编译后下载至FPGA芯片 [ 18 , 19 ] 。赵营、万真龙等在对梯形图语言进行了语义分析的基础上,提出了控制程序的控制依赖与数据依赖模型,并通过依赖关系分解算法,确定控制程序的执行层次以及在FPGA中的执行方法。上述方法在指令转换的基础上,开始对控制程序的依赖关系与执行逻辑进行分析,并尝试将控制程序并行化。虽然上述研究仍然是针对单个PLC设备,但是其利用了FPGA芯片内部的并发特性提高了程序执行速度。