李大成,羅繼亮,孫莎莎,聶維余,方慧娟
(華僑大學(xué)信息科學(xué)與工程學(xué)院,福建廈門 361021;福建省電機(jī)控制與系統(tǒng)優(yōu)化調(diào)度工程技術(shù)研究中心,福建廈門 361021)
隨著集成在工業(yè)互聯(lián)網(wǎng)內(nèi)的設(shè)備數(shù)量快速增長(zhǎng),以及加工訂單的客制化、小批量和多批次的動(dòng)態(tài)特性日益增強(qiáng),可編程邏輯控制器(programmable logic controllers,PLC)程序的設(shè)計(jì)和調(diào)試問題的復(fù)雜性急劇上升:一方面,程序的可靠性難以保證,比如英國(guó)希思羅機(jī)場(chǎng)行李分揀事故[1]和Therac--25放射性治療儀事故[2];另一方面,現(xiàn)有的PLC編程語言可讀性和移植性不理想,缺乏有力的數(shù)學(xué)分析支持[3],需要費(fèi)時(shí)費(fèi)力的調(diào)試和測(cè)試,難以滿足現(xiàn)代制造對(duì)柔性和敏捷的要求[4].文獻(xiàn)[5]提出了平行系統(tǒng)由實(shí)際系統(tǒng)和人工系統(tǒng)組成.從信息物理系統(tǒng)的角度,可以將被控對(duì)象看作物理實(shí)體,將PLC程序設(shè)計(jì)看作構(gòu)造一個(gè)遵從控制規(guī)范的虛擬動(dòng)態(tài)模型,兩者通過傳感器和執(zhí)行器相融合,從而使得物理實(shí)體跟隨虛擬模型的規(guī)范而演化.這意味著:借助信息物理系統(tǒng)的形式化語言自動(dòng)化建模算法,可以靈活和快速的開發(fā)PLC程序.
文獻(xiàn)[1]定義了組件式交互形式語言,將傳感器、執(zhí)行器和控制規(guī)范描述為單元自動(dòng)機(jī),經(jīng)由事件同步的通信機(jī)制,將各單元自動(dòng)機(jī)耦合為一個(gè)虛擬動(dòng)態(tài)模型,通過模型驗(yàn)證等形式化方法,確保虛擬模型的正確性和可靠性,并給出了組件式交互形式語言轉(zhuǎn)換為PLC程序的方法和工具.鑒于自動(dòng)機(jī)之間的事件同步機(jī)制,組件式交互形式語言本質(zhì)上是一種特殊結(jié)構(gòu)的Petri網(wǎng).文獻(xiàn)[6]設(shè)計(jì)了啤酒廠管道系統(tǒng)Petri網(wǎng)控制器,并將其翻譯成組件式交互形式語言.文獻(xiàn)[7]提出了對(duì)象Petri網(wǎng),將制造系統(tǒng)單元對(duì)象的詳細(xì)活動(dòng)封裝起來,對(duì)象只能通過他們的接口進(jìn)行信息傳遞,有助于厘清系統(tǒng)單元之間復(fù)雜的耦合關(guān)系.文獻(xiàn)[8]利用彩色Petri網(wǎng)描述系統(tǒng)行為,有助于對(duì)大型復(fù)雜系統(tǒng)進(jìn)行更深層次的抽象,限制Petri網(wǎng)模型的規(guī)模.文獻(xiàn)[9]研究了Petri網(wǎng)的關(guān)聯(lián)矩陣對(duì)離散事件系統(tǒng)建模,實(shí)質(zhì)上用代數(shù)方法實(shí)現(xiàn)了離散事件系統(tǒng)邏輯的控制.文獻(xiàn)[10]利用Petri網(wǎng)對(duì)加工系統(tǒng)模塊化邏輯控制器進(jìn)行建模和分析.文獻(xiàn)[11]綜述了Petri網(wǎng)與梯形圖之間轉(zhuǎn)換方法,指出Petri網(wǎng)更容易理解和修改.文獻(xiàn)[12]提出了梯形圖到普通Petri網(wǎng)的一般轉(zhuǎn)換算法,用來檢測(cè)程序中是否存在競(jìng)態(tài).文獻(xiàn)[13]給出了將Petri網(wǎng)轉(zhuǎn)換為順序功能圖程序的方法.文獻(xiàn)[14]介紹了Grafcet語言,用于建立離散時(shí)間系統(tǒng)的控制規(guī)范,而Grafcet語言是從Petri網(wǎng)演化而來的.文獻(xiàn)[15]提出了Grafcet轉(zhuǎn)化為PLC代碼的方法,并且維持了Grafcet的分級(jí)結(jié)構(gòu),這種做法與組件式交互形式語言相類似.文獻(xiàn)[16]用混雜Petri網(wǎng)具體描述了物理系統(tǒng)的建模規(guī)范,同時(shí)也給出了從擴(kuò)展網(wǎng)到PLC程序的翻譯方法.文獻(xiàn)[17]在庫(kù)所上關(guān)聯(lián)執(zhí)行動(dòng)作,在變遷上關(guān)聯(lián)傳感器,使得Petri網(wǎng)向PLC工程應(yīng)用更近一步.文獻(xiàn)[18]給出了自動(dòng)導(dǎo)航車輛的防止碰撞和死鎖的Petri網(wǎng)方法.文獻(xiàn)[19]利用賦時(shí)Petri網(wǎng)對(duì)化工系統(tǒng)建模來得到最優(yōu)調(diào)度策略.文獻(xiàn)[20]將部分可觀Petri網(wǎng)應(yīng)用于故障診斷.
本文定義了一種可以與物理系統(tǒng)交互的Petri網(wǎng)語言,稱為平行Petri網(wǎng),除了普通Petri網(wǎng)的結(jié)構(gòu),還定義了動(dòng)作函數(shù),用以封裝傳感和執(zhí)行變量的計(jì)算和刷新,并將其映射到庫(kù)所結(jié)點(diǎn),還給出了平行Petri網(wǎng)的變遷激發(fā)規(guī)則;定義了合法行為,從而得到了平行Petri網(wǎng)的一般設(shè)計(jì)方法,通過C語言開發(fā)平行Petri網(wǎng)的運(yùn)行程序,利用梯形圖設(shè)計(jì)動(dòng)作函數(shù)的PLC程序,借助TwinCAT平臺(tái),實(shí)現(xiàn)了平行Petri網(wǎng)對(duì)物理系統(tǒng)的感知和控制.平行Petri網(wǎng)的提出解決了Petri網(wǎng)無法與環(huán)境交互的問題,增加了系統(tǒng)運(yùn)行的可靠性和應(yīng)變能力,并為平行系統(tǒng)在PLC工程中的應(yīng)用提供了現(xiàn)實(shí)可行的工具.相對(duì)于謂詞Petri網(wǎng)方法[21],平行Petri網(wǎng)的動(dòng)作函數(shù)不再只是通斷的離散操作,還可以是連續(xù)操作,有效地拓展了Petri網(wǎng)的應(yīng)用范圍,而且避免了現(xiàn)有方法[22]中形式化語言與PLC語言的轉(zhuǎn)換方法,降低了Petri網(wǎng)應(yīng)用的難度.
Petri網(wǎng)結(jié)構(gòu)是一個(gè)四元組,記為
其中:P是庫(kù)所集;T是變遷集;F ?(P×T)∪(T×P)是一個(gè)變遷和庫(kù)所或庫(kù)所和變遷組成的二元組的集合,表示庫(kù)所與變遷的有向弧;W :F →Z+是一個(gè)正整數(shù)集,表示有向弧上與權(quán)重的映射關(guān)系.前置關(guān)聯(lián)矩陣C-:P ×T →Z,后置關(guān)聯(lián)矩陣C+:T×P →Z,C=C+-C-稱為關(guān)聯(lián)矩陣.
Petri網(wǎng)記作(N,m0),其中m0是初始標(biāo)識(shí).如果?p ∈·t,m(p)>0,那么t在標(biāo)識(shí)m下是狀態(tài)使能的,記作m[t >.只有使能的變遷可以發(fā)生,當(dāng)一個(gè)變遷t發(fā)生時(shí),它的每個(gè)輸入庫(kù)所p減少W(p,t)個(gè)托肯,每個(gè)輸出庫(kù)p中增加W(t,p)個(gè)托肯.R(N,m)指N從m經(jīng)過任意個(gè)變遷發(fā)生到達(dá)的標(biāo)識(shí)的集合.
TwinCAT[23]是運(yùn)行在Windows上的PLC系統(tǒng),可以在Visual Studio平臺(tái)上開發(fā)程序代碼,而且提供了C/C++等程序交互的接口.
普通Petri網(wǎng)可以描述制造系統(tǒng)中復(fù)雜的邏輯關(guān)系,但缺乏與環(huán)境的交互.通過引入動(dòng)作函數(shù),擴(kuò)展了Petri網(wǎng)定義.
令ΣI和ΣO分別表示PLC的輸入和輸出變量集合,那么表示輸入變量集合的集合.
定義1給定一個(gè)PLC系統(tǒng),動(dòng)作函數(shù)是從輸入變量集合的集合到輸出變量集合的映射,即→ΣO,動(dòng)作函數(shù)的集合記作ΣA.
定義2給定一個(gè)PLC系統(tǒng),激活函數(shù)是從輸入變量和輸出變量集合的集合到0或1的映射,即→{0,1},激活函數(shù)的集合記作ΣL.
定義3給定一個(gè)PLC系統(tǒng)的動(dòng)作函數(shù)為α ∈ΣA和激活函數(shù)β ∈ΣL,如果α執(zhí)行終止的判斷條件是β,那么β稱為α的終止條件,記作.
定義4平行Petri 網(wǎng)是一個(gè)八元組G=(N,m0,ΣI,ΣO,ΣA,ΣL,λA,λL),其中:N是Petri網(wǎng)結(jié)構(gòu);m0是初始標(biāo)識(shí);ΣI是輸入字母表,其中每個(gè)元素是一個(gè)輸入信號(hào);ΣO為輸出字母表,其中每個(gè)元素是一個(gè)輸出信號(hào);ΣL是從輸入和輸出到0或1的激活函數(shù)的集合;λA:P →ΣA是附在庫(kù)所上的動(dòng)作函數(shù),根據(jù)輸入變量計(jì)算并更新輸出變量;λL:P →ΣL是附在庫(kù)所上的激活函數(shù),是用來終止動(dòng)作函數(shù)執(zhí)行和激活變遷執(zhí)行的判斷條件,并且?p∈P :λA(p)=α→λL(p)=.
定義5給定任意庫(kù)所p,如果λA(p)≠?,則庫(kù)所p稱為動(dòng)作庫(kù)所;否則,p稱為非動(dòng)作庫(kù)所.
定義6給定平行Petri網(wǎng)的任意庫(kù)所p,如果p是動(dòng)作庫(kù)所,并且其激活函數(shù)表達(dá)式的值為1,即λL(p)=1,則它是活的;如果p是非動(dòng)作庫(kù)所,那么它總是活的.
定義7給定平行Petri網(wǎng)的任意變遷,如果它的每個(gè)輸入動(dòng)作庫(kù)所是活的,那么它是同步使能的.
定義8給定一個(gè)PLC系統(tǒng)的平行Petri網(wǎng),變遷激發(fā)按照如下規(guī)則執(zhí)行:
1) 如果一個(gè)變遷既是狀態(tài)使能,又是同步使能的,則該變遷是使能的;
2) 只有使能的變遷才可激發(fā);
3) 一旦變遷使能,則該變遷立即激發(fā);
4) 任意標(biāo)識(shí)m下,變遷t激發(fā)后,產(chǎn)生新的標(biāo)識(shí)為m′=m+C(·,t);
5) 當(dāng)一個(gè)動(dòng)作庫(kù)所被標(biāo)識(shí)時(shí),則立即執(zhí)行附加在該庫(kù)所上的動(dòng)作函數(shù),并持續(xù)更新激活函數(shù).
根據(jù)定義8,設(shè)計(jì)了平行Petri網(wǎng)(parallel Petri nets)的執(zhí)行算法.
算法1是平行Petri網(wǎng)的執(zhí)行算法,將其分為兩個(gè)函數(shù),分別為上層執(zhí)行器(upper-executor)和下層執(zhí)行器(lower-executor),兩個(gè)函數(shù)的輸出互為對(duì)方的輸入,前者負(fù)責(zé)計(jì)算平行Petri網(wǎng)表示的邏輯規(guī)范,后者負(fù)責(zé)感知和干預(yù)物理實(shí)體的運(yùn)行.根據(jù)定義6和算法1,IsLive由lower-executor計(jì)算,表示任何庫(kù)所是否是活的;一旦獲得IsLive,upper-executor激發(fā)平行Petri網(wǎng)中的任何使能變遷,然后將標(biāo)識(shí)m傳遞給lower-executor;lower-executor找到所有被標(biāo)識(shí)的動(dòng)作庫(kù)所,并立即執(zhí)行它們的動(dòng)作函數(shù)和激活函數(shù).
制造系統(tǒng)包含大量設(shè)備、傳感器、執(zhí)行器和原料等單元,單元行為的排列組合會(huì)產(chǎn)生指數(shù)增長(zhǎng)的動(dòng)作序列,其中大量行為違反工序工藝規(guī)范,因此本文將研究合法行為規(guī)范的平行Petri網(wǎng)設(shè)計(jì)方法,并借助算法1,利用平行Petri網(wǎng)控制物理制造過程,確保工序和工藝的邏輯規(guī)范.
定義9給定一個(gè)動(dòng)作函數(shù)α ∈ΣA,如果它是制造系統(tǒng)啟動(dòng)時(shí)需要執(zhí)行的動(dòng)作,那么α稱為初始動(dòng)作.初始動(dòng)作組成的集合稱為初始動(dòng)作集,記作
定義10給定兩個(gè)動(dòng)作函數(shù)的集合Σa,Σb∈ΣA,控制規(guī)范要求Σa中的動(dòng)作執(zhí)行完成后Σb中的動(dòng)作需立即開始執(zhí)行,那么有序?qū)?Σa,Σb)稱為一個(gè)合法行為.在一個(gè)控制規(guī)范中,合法行為的集合記作Γ.
根據(jù)定義9-10,算法2給出了平行Petri網(wǎng)設(shè)計(jì)方法.
算法2描述了平行Petri網(wǎng)的設(shè)計(jì)方法,對(duì)于每個(gè)動(dòng)作α,為其設(shè)計(jì)與之相對(duì)應(yīng)的動(dòng)作庫(kù)所pα,且該動(dòng)作為初始動(dòng)作時(shí),與之對(duì)應(yīng)的庫(kù)所被標(biāo)識(shí).對(duì)于符合工藝規(guī)范的合法行為,將其對(duì)應(yīng)的庫(kù)所用有向弧連接,構(gòu)成系統(tǒng)的平行Petri網(wǎng)模型.
為了實(shí)現(xiàn)本文方法,本文選擇了倍福公司的Twin-CAT軟PLC系統(tǒng),它運(yùn)行在Windows操作系統(tǒng)的PLC實(shí)時(shí)內(nèi)核上,為平行Petri網(wǎng)提供了軟硬件平臺(tái).
按照?qǐng)D1所示運(yùn)行架構(gòu),以TwinCAT為計(jì)算平臺(tái),搭建平行Petri網(wǎng)運(yùn)行系統(tǒng).如圖2所示,按照算法1,編制了Upper-executor的C語言程序,Upper-executor運(yùn)行在TwinCAT的Windows系統(tǒng)上,而另一個(gè)函數(shù)Lower-executor是要開發(fā)的PLC程序,運(yùn)行在TwinCAT的PLC實(shí)時(shí)內(nèi)核上.兩者之間的數(shù)據(jù)傳輸采用ADS通訊協(xié)議.
圖1 平行Petri網(wǎng)執(zhí)行架構(gòu)圖Fig.1 Execution architecture of parallel Petri nets
圖2 基于TwinCAT平臺(tái)的平行Petri網(wǎng)實(shí)現(xiàn)架構(gòu)Fig.2 Implementation framework of parallel Petri nets based on TwinCAT
ADS通信協(xié)議是TwinCAT系統(tǒng)的傳送層,運(yùn)行在TCP/IP協(xié)議上,用于不同軟件模塊之間的數(shù)據(jù)交換.C程序執(zhí)行Petri網(wǎng)的邏輯規(guī)范,將變量m通過ADS協(xié)議傳給PLC程序,驅(qū)動(dòng)動(dòng)作函數(shù)和激活函數(shù)執(zhí)行,動(dòng)作函數(shù)負(fù)責(zé)更新PLC輸出,激活函數(shù)用來判斷動(dòng)作函數(shù)執(zhí)行狀態(tài).當(dāng)動(dòng)作函數(shù)滿足執(zhí)行終止的判斷條件時(shí),激活函數(shù)將其終止并通過ADS協(xié)議返回變量IsLive,激發(fā)可以使能的變遷,更新新的標(biāo)識(shí)m.
如圖3所示,選取了自動(dòng)化生產(chǎn)線為實(shí)驗(yàn)平臺(tái),該系統(tǒng)包括供料、加工、裝配、分揀和輸送單元.供料單元中的A型工件被放入輸送單元,再運(yùn)達(dá)到加工單元,被沖壓成容器,并在裝配單元把B型工件裝配到A型工件,最后在分揀單元將裝有不同材質(zhì)工件的容器分流到不同的物料槽內(nèi).
圖3 自動(dòng)化生產(chǎn)實(shí)驗(yàn)系統(tǒng)Fig.3 Experiment system of automatic production
各工作站傳感器和執(zhí)行機(jī)構(gòu)如表1所示.圖4為自動(dòng)化生產(chǎn)線平行Petri網(wǎng),圖5為系統(tǒng)的平行Petri網(wǎng)時(shí)間軸.
表1 各工作站傳感器和執(zhí)行機(jī)構(gòu)Table 1 Sensors and actuators of each workstation
圖4 自動(dòng)化生產(chǎn)線平行Petri網(wǎng)Fig.4 Parallel Petri nets of automatic production line
圖5 系統(tǒng)的平行Petri網(wǎng)時(shí)間軸Fig.5 Timeline of systematic parallel Petri nets
如表1所示,給出了每個(gè)單元的傳感器和執(zhí)行機(jī)構(gòu),由此確定了系統(tǒng)的生產(chǎn)行為包含45個(gè)動(dòng)作,分別為α1,α2,···,α45,每個(gè)動(dòng)作都有激活函數(shù),同時(shí)根據(jù)定義10,確定了系統(tǒng)中存在34個(gè)合法行為.以供料單元為例,在該單元中有3個(gè)動(dòng)作,α1,α2和α3.α1為料筒傳感器檢測(cè)是否存在工件的動(dòng)作,α2為推桿推出的動(dòng)作,α3為推桿收回的動(dòng)作.存在2個(gè)合法行為,即(α1,α2)和(α2,α3).(α1,α2)為料筒傳感器感知到工件和推桿把工件推出到工作臺(tái)的過程.而(α2,α3)則是推桿到達(dá)限位傳感器和收回去的過程.將其動(dòng)作和合法行為輸入到算法2中,可以得到圖4中供料單元部分的平行Petri網(wǎng),α1,α2和α3對(duì)應(yīng)動(dòng)作庫(kù)所p1,p2和p3,(α1,α2)和(α2,α3)對(duì)應(yīng)變遷t1和t2.以此類推,把系統(tǒng)中所有的動(dòng)作及合法行為輸入到算法2中,即可得到整個(gè)自動(dòng)化生產(chǎn)線的平行Petri網(wǎng).
如圖4所示,庫(kù)所p1被標(biāo)識(shí),料筒傳感器開始檢測(cè)工件是否存在,同時(shí)激活函數(shù)開始執(zhí)行,不斷讀取料筒傳感器信號(hào),直至檢測(cè)到工件,跳出循環(huán),將更新的變量IsLive返回給庫(kù)所p1,變遷t1激發(fā). p2獲得托肯,新的標(biāo)識(shí)m驅(qū)動(dòng)α2動(dòng)作,α2為推桿推出的動(dòng)作,而推桿限位傳感器觸發(fā)為α2的終止條件,即激活函數(shù)2. α2賦給推桿一個(gè)上升沿信號(hào),推桿推出,待推桿完全推出,限位傳感器接收到信號(hào),返回給2一個(gè)上升沿信號(hào),2跳出了循環(huán),返回變量IsLive,變遷t2激發(fā).
在由算法2得到的平行Petri網(wǎng)的基礎(chǔ)上,根據(jù)算法1,為45個(gè)動(dòng)作函數(shù)和激活函數(shù)分別設(shè)計(jì)了Lower-executor對(duì)應(yīng)的PLC程序.為了驗(yàn)證平行Petri網(wǎng)的正確性,把圖4中平行Petri網(wǎng)模型描述為矩陣的形式,將其輸入到Windows平臺(tái)的Upper-executor中運(yùn)行,基于PLC內(nèi)核的Lower-executor開始協(xié)同運(yùn)行,通過采集每個(gè)庫(kù)所獲得托肯的時(shí)間節(jié)點(diǎn),以及庫(kù)所對(duì)應(yīng)變遷激發(fā)的時(shí)間節(jié)點(diǎn),繪制了圖5所示的時(shí)間軸.圖中表示了每個(gè)庫(kù)所執(zhí)行的起止時(shí)間,可以看出,系統(tǒng)完全按照?qǐng)D4所設(shè)計(jì)的平行Petri網(wǎng)執(zhí)行,說明了平行Petri網(wǎng)與物理系統(tǒng)可以進(jìn)行平行演化,該方法是可行的.
本文提出了一種新型Petri網(wǎng),即平行Petri網(wǎng),并基于TwinCAT的軟PLC系統(tǒng),給出了平行Petri網(wǎng)控制和執(zhí)行的實(shí)現(xiàn)方法.
未來將考慮加工任務(wù)的執(zhí)行時(shí)間,將事件延時(shí)加入到平行Petri網(wǎng)模型中,在一個(gè)統(tǒng)一的模型上求解調(diào)度與控制問題.