可编程逻辑控制器的平行Petri网设计与实现方法
2021-01-08李大成罗继亮孙莎莎聂维余方慧娟
李大成,罗继亮,孙莎莎,聂维余,方慧娟
(华侨大学信息科学与工程学院,福建厦门 361021;福建省电机控制与系统优化调度工程技术研究中心,福建厦门 361021)
1 引言
随着集成在工业互联网内的设备数量快速增长,以及加工订单的客制化、小批量和多批次的动态特性日益增强,可编程逻辑控制器(programmable logic controllers,PLC)程序的设计和调试问题的复杂性急剧上升:一方面,程序的可靠性难以保证,比如英国希思罗机场行李分拣事故[1]和Therac--25放射性治疗仪事故[2];另一方面,现有的PLC编程语言可读性和移植性不理想,缺乏有力的数学分析支持[3],需要费时费力的调试和测试,难以满足现代制造对柔性和敏捷的要求[4].文献[5]提出了平行系统由实际系统和人工系统组成.从信息物理系统的角度,可以将被控对象看作物理实体,将PLC程序设计看作构造一个遵从控制规范的虚拟动态模型,两者通过传感器和执行器相融合,从而使得物理实体跟随虚拟模型的规范而演化.这意味着:借助信息物理系统的形式化语言自动化建模算法,可以灵活和快速的开发PLC程序.
文献[1]定义了组件式交互形式语言,将传感器、执行器和控制规范描述为单元自动机,经由事件同步的通信机制,将各单元自动机耦合为一个虚拟动态模型,通过模型验证等形式化方法,确保虚拟模型的正确性和可靠性,并给出了组件式交互形式语言转换为PLC程序的方法和工具.鉴于自动机之间的事件同步机制,组件式交互形式语言本质上是一种特殊结构的Petri网.文献[6]设计了啤酒厂管道系统Petri网控制器,并将其翻译成组件式交互形式语言.文献[7]提出了对象Petri网,将制造系统单元对象的详细活动封装起来,对象只能通过他们的接口进行信息传递,有助于厘清系统单元之间复杂的耦合关系.文献[8]利用彩色Petri网描述系统行为,有助于对大型复杂系统进行更深层次的抽象,限制Petri网模型的规模.文献[9]研究了Petri网的关联矩阵对离散事件系统建模,实质上用代数方法实现了离散事件系统逻辑的控制.文献[10]利用Petri网对加工系统模块化逻辑控制器进行建模和分析.文献[11]综述了Petri网与梯形图之间转换方法,指出Petri网更容易理解和修改.文献[12]提出了梯形图到普通Petri网的一般转换算法,用来检测程序中是否存在竞态.文献[13]给出了将Petri网转换为顺序功能图程序的方法.文献[14]介绍了Grafcet语言,用于建立离散时间系统的控制规范,而Grafcet语言是从Petri网演化而来的.文献[15]提出了Grafcet转化为PLC代码的方法,并且维持了Grafcet的分级结构,这种做法与组件式交互形式语言相类似.文献[16]用混杂Petri网具体描述了物理系统的建模规范,同时也给出了从扩展网到PLC程序的翻译方法.文献[17]在库所上关联执行动作,在变迁上关联传感器,使得Petri网向PLC工程应用更近一步.文献[18]给出了自动导航车辆的防止碰撞和死锁的Petri网方法.文献[19]利用赋时Petri网对化工系统建模来得到最优调度策略.文献[20]将部分可观Petri网应用于故障诊断.
本文定义了一种可以与物理系统交互的Petri网语言,称为平行Petri网,除了普通Petri网的结构,还定义了动作函数,用以封装传感和执行变量的计算和刷新,并将其映射到库所结点,还给出了平行Petri网的变迁激发规则;定义了合法行为,从而得到了平行Petri网的一般设计方法,通过C语言开发平行Petri网的运行程序,利用梯形图设计动作函数的PLC程序,借助TwinCAT平台,实现了平行Petri网对物理系统的感知和控制.平行Petri网的提出解决了Petri网无法与环境交互的问题,增加了系统运行的可靠性和应变能力,并为平行系统在PLC工程中的应用提供了现实可行的工具.相对于谓词Petri网方法[21],平行Petri网的动作函数不再只是通断的离散操作,还可以是连续操作,有效地拓展了Petri网的应用范围,而且避免了现有方法[22]中形式化语言与PLC语言的转换方法,降低了Petri网应用的难度.
2 基本概念
Petri网结构是一个四元组,记为
其中:P是库所集;T是变迁集;F ⊆(P×T)∪(T×P)是一个变迁和库所或库所和变迁组成的二元组的集合,表示库所与变迁的有向弧;W :F →Z+是一个正整数集,表示有向弧上与权重的映射关系.前置关联矩阵C-:P ×T →Z,后置关联矩阵C+:T×P →Z,C=C+-C-称为关联矩阵.
Petri网记作(N,m0),其中m0是初始标识.如果∀p ∈·t,m(p)>0,那么t在标识m下是状态使能的,记作m[t >.只有使能的变迁可以发生,当一个变迁t发生时,它的每个输入库所p减少W(p,t)个托肯,每个输出库p中增加W(t,p)个托肯.R(N,m)指N从m经过任意个变迁发生到达的标识的集合.
TwinCAT[23]是运行在Windows上的PLC系统,可以在Visual Studio平台上开发程序代码,而且提供了C/C++等程序交互的接口.
3 平行Petri网及其执行算法
普通Petri网可以描述制造系统中复杂的逻辑关系,但缺乏与环境的交互.通过引入动作函数,扩展了Petri网定义.
令ΣI和ΣO分别表示PLC的输入和输出变量集合,那么表示输入变量集合的集合.
定义1给定一个PLC系统,动作函数是从输入变量集合的集合到输出变量集合的映射,即→ΣO,动作函数的集合记作ΣA.
定义2给定一个PLC系统,激活函数是从输入变量和输出变量集合的集合到0或1的映射,即→{0,1},激活函数的集合记作ΣL.
定义3给定一个PLC系统的动作函数为α ∈ΣA和激活函数β ∈ΣL,如果α执行终止的判断条件是β,那么β称为α的终止条件,记作.
定义4平行Petri 网是一个八元组G=(N,m0,ΣI,ΣO,ΣA,ΣL,λA,λL),其中:N是Petri网结构;m0是初始标识;ΣI是输入字母表,其中每个元素是一个输入信号;ΣO为输出字母表,其中每个元素是一个输出信号;ΣL是从输入和输出到0或1的激活函数的集合;λA:P →ΣA是附在库所上的动作函数,根据输入变量计算并更新输出变量;λL:P →ΣL是附在库所上的激活函数,是用来终止动作函数执行和激活变迁执行的判断条件,并且∀p∈P :λA(p)=α→λL(p)=.
定义5给定任意库所p,如果λA(p)≠∅,则库所p称为动作库所;否则,p称为非动作库所.
定义6给定平行Petri网的任意库所p,如果p是动作库所,并且其激活函数表达式的值为1,即λL(p)=1,则它是活的;如果p是非动作库所,那么它总是活的.
定义7给定平行Petri网的任意变迁,如果它的每个输入动作库所是活的,那么它是同步使能的.
定义8给定一个PLC系统的平行Petri网,变迁激发按照如下规则执行:
1) 如果一个变迁既是状态使能,又是同步使能的,则该变迁是使能的;
2) 只有使能的变迁才可激发;
3) 一旦变迁使能,则该变迁立即激发;
4) 任意标识m下,变迁t激发后,产生新的标识为m′=m+C(·,t);
5) 当一个动作库所被标识时,则立即执行附加在该库所上的动作函数,并持续更新激活函数.
根据定义8,设计了平行Petri网(parallel Petri nets)的执行算法.
算法1是平行Petri网的执行算法,将其分为两个函数,分别为上层执行器(upper-executor)和下层执行器(lower-executor),两个函数的输出互为对方的输入,前者负责计算平行Petri网表示的逻辑规范,后者负责感知和干预物理实体的运行.根据定义6和算法1,IsLive由lower-executor计算,表示任何库所是否是活的;一旦获得IsLive,upper-executor激发平行Petri网中的任何使能变迁,然后将标识m传递给lower-executor;lower-executor找到所有被标识的动作库所,并立即执行它们的动作函数和激活函数.
4 平行Petri网设计方法
制造系统包含大量设备、传感器、执行器和原料等单元,单元行为的排列组合会产生指数增长的动作序列,其中大量行为违反工序工艺规范,因此本文将研究合法行为规范的平行Petri网设计方法,并借助算法1,利用平行Petri网控制物理制造过程,确保工序和工艺的逻辑规范.
定义9给定一个动作函数α ∈ΣA,如果它是制造系统启动时需要执行的动作,那么α称为初始动作.初始动作组成的集合称为初始动作集,记作
定义10给定两个动作函数的集合Σa,Σb∈ΣA,控制规范要求Σa中的动作执行完成后Σb中的动作需立即开始执行,那么有序对(Σa,Σb)称为一个合法行为.在一个控制规范中,合法行为的集合记作Γ.
根据定义9-10,算法2给出了平行Petri网设计方法.
算法2描述了平行Petri网的设计方法,对于每个动作α,为其设计与之相对应的动作库所pα,且该动作为初始动作时,与之对应的库所被标识.对于符合工艺规范的合法行为,将其对应的库所用有向弧连接,构成系统的平行Petri网模型.
为了实现本文方法,本文选择了倍福公司的Twin-CAT软PLC系统,它运行在Windows操作系统的PLC实时内核上,为平行Petri网提供了软硬件平台.
按照图1所示运行架构,以TwinCAT为计算平台,搭建平行Petri网运行系统.如图2所示,按照算法1,编制了Upper-executor的C语言程序,Upper-executor运行在TwinCAT的Windows系统上,而另一个函数Lower-executor是要开发的PLC程序,运行在TwinCAT的PLC实时内核上.两者之间的数据传输采用ADS通讯协议.
图1 平行Petri网执行架构图Fig.1 Execution architecture of parallel Petri nets
图2 基于TwinCAT平台的平行Petri网实现架构Fig.2 Implementation framework of parallel Petri nets based on TwinCAT
ADS通信协议是TwinCAT系统的传送层,运行在TCP/IP协议上,用于不同软件模块之间的数据交换.C程序执行Petri网的逻辑规范,将变量m通过ADS协议传给PLC程序,驱动动作函数和激活函数执行,动作函数负责更新PLC输出,激活函数用来判断动作函数执行状态.当动作函数满足执行终止的判断条件时,激活函数将其终止并通过ADS协议返回变量IsLive,激发可以使能的变迁,更新新的标识m.
5 实验验证
如图3所示,选取了自动化生产线为实验平台,该系统包括供料、加工、装配、分拣和输送单元.供料单元中的A型工件被放入输送单元,再运达到加工单元,被冲压成容器,并在装配单元把B型工件装配到A型工件,最后在分拣单元将装有不同材质工件的容器分流到不同的物料槽内.
图3 自动化生产实验系统Fig.3 Experiment system of automatic production
各工作站传感器和执行机构如表1所示.图4为自动化生产线平行Petri网,图5为系统的平行Petri网时间轴.
表1 各工作站传感器和执行机构Table 1 Sensors and actuators of each workstation
图4 自动化生产线平行Petri网Fig.4 Parallel Petri nets of automatic production line
图5 系统的平行Petri网时间轴Fig.5 Timeline of systematic parallel Petri nets
如表1所示,给出了每个单元的传感器和执行机构,由此确定了系统的生产行为包含45个动作,分别为α1,α2,···,α45,每个动作都有激活函数,同时根据定义10,确定了系统中存在34个合法行为.以供料单元为例,在该单元中有3个动作,α1,α2和α3.α1为料筒传感器检测是否存在工件的动作,α2为推杆推出的动作,α3为推杆收回的动作.存在2个合法行为,即(α1,α2)和(α2,α3).(α1,α2)为料筒传感器感知到工件和推杆把工件推出到工作台的过程.而(α2,α3)则是推杆到达限位传感器和收回去的过程.将其动作和合法行为输入到算法2中,可以得到图4中供料单元部分的平行Petri网,α1,α2和α3对应动作库所p1,p2和p3,(α1,α2)和(α2,α3)对应变迁t1和t2.以此类推,把系统中所有的动作及合法行为输入到算法2中,即可得到整个自动化生产线的平行Petri网.
如图4所示,库所p1被标识,料筒传感器开始检测工件是否存在,同时激活函数开始执行,不断读取料筒传感器信号,直至检测到工件,跳出循环,将更新的变量IsLive返回给库所p1,变迁t1激发. p2获得托肯,新的标识m驱动α2动作,α2为推杆推出的动作,而推杆限位传感器触发为α2的终止条件,即激活函数2. α2赋给推杆一个上升沿信号,推杆推出,待推杆完全推出,限位传感器接收到信号,返回给2一个上升沿信号,2跳出了循环,返回变量IsLive,变迁t2激发.
在由算法2得到的平行Petri网的基础上,根据算法1,为45个动作函数和激活函数分别设计了Lower-executor对应的PLC程序.为了验证平行Petri网的正确性,把图4中平行Petri网模型描述为矩阵的形式,将其输入到Windows平台的Upper-executor中运行,基于PLC内核的Lower-executor开始协同运行,通过采集每个库所获得托肯的时间节点,以及库所对应变迁激发的时间节点,绘制了图5所示的时间轴.图中表示了每个库所执行的起止时间,可以看出,系统完全按照图4所设计的平行Petri网执行,说明了平行Petri网与物理系统可以进行平行演化,该方法是可行的.
6 结论
本文提出了一种新型Petri网,即平行Petri网,并基于TwinCAT的软PLC系统,给出了平行Petri网控制和执行的实现方法.
未来将考虑加工任务的执行时间,将事件延时加入到平行Petri网模型中,在一个统一的模型上求解调度与控制问题.