陳晨,仲崇權(quán)
大連理工大學(xué)電子信息與電氣工程學(xué)部,遼寧大連116023
大規(guī)模網(wǎng)絡(luò)化PLC控制系統(tǒng)的程序邏輯遠(yuǎn)比單個PLC結(jié)點復(fù)雜,設(shè)計針對多PLC控制系統(tǒng)的程序建模與編譯方法具有重要意義。目前分布式網(wǎng)絡(luò)化PLC系統(tǒng)編程需要開發(fā)人員了解設(shè)備拓?fù)浣Y(jié)構(gòu),并針對每一個PLC控制器進(jìn)行單獨開發(fā)。K.Thramboulidis提出了以分布式功能塊為基礎(chǔ)的網(wǎng)絡(luò)化監(jiān)控以及批處理流程控制系統(tǒng)的實現(xiàn)方法,通過在控制節(jié)點的網(wǎng)絡(luò)層之上擴(kuò)展各種總線的適配層,實現(xiàn)同種或異種總線設(shè)備間功能塊的互操作,從而進(jìn)行分布式應(yīng)用[1-2]。M ohamed Khalgui等通過UM L語言對控制邏輯進(jìn)行建模,并自動生成分布式控制程序框架,輔助開發(fā)人員進(jìn)行程序開發(fā)[3]。在現(xiàn)有控制程序編譯方法中,Liu提出狀態(tài)空間編譯法對控制程序進(jìn)行化簡[4],Xu通過線性矩陣不等式對程序中的混雜變量進(jìn)行分離[5],尚無一種面向網(wǎng)絡(luò)的控制程序編輯與編譯方法。對于大規(guī)模網(wǎng)絡(luò)化PLC控制系統(tǒng),應(yīng)以網(wǎng)絡(luò)中的設(shè)備為整體進(jìn)行編程編輯,通過程序建模與編譯方法對控制邏輯的依賴關(guān)系進(jìn)行分析,將指令與變量分散下載到各控制器中,并自動協(xié)調(diào)設(shè)備間的數(shù)據(jù)同步,實現(xiàn)控制任務(wù)的并行處理。
離散事件系統(tǒng)是分析事件依賴關(guān)系的常用工具,廣泛應(yīng)用于各類工程領(lǐng)域之中[6]。M a X和Xie J使用離散事件系統(tǒng)分析網(wǎng)絡(luò)化控制系統(tǒng)中控制器與執(zhí)行器的動作特點,并推導(dǎo)網(wǎng)絡(luò)延時對控制精度的影響[7]。Kwong和Yonge-M allo通過離散事件系統(tǒng)建模進(jìn)行故障分析與診斷[8]。Tord A lenljung介紹了一種適用于含有如RFID等二進(jìn)制識別傳感器的控制系統(tǒng)的離散事件建模語言[9]。Li等提出了模糊離散事件系統(tǒng)控制方法,并將其在大規(guī)模分布式空調(diào)控制中進(jìn)行應(yīng)用[10]。通過將控制程序映射為離散事件系統(tǒng),能夠有效分析變量、指令的依賴關(guān)系,進(jìn)而將串行控制程序轉(zhuǎn)換為并行離散事件,分配給不同設(shè)備執(zhí)行。目前離散事件系統(tǒng)的主要分析工具主要包括自動機(jī)(Automata)、定時Petri網(wǎng)(Timed Petri-Net)、事件圖(Event Graph)等[6]。自動機(jī)、定時Petri網(wǎng)的分析難度會隨著系統(tǒng)復(fù)雜度升高,難以應(yīng)用于復(fù)雜控制系統(tǒng)。事件圖是一種圖形化的分析工具,具有精簡的表達(dá)方式與強(qiáng)大的建模能力,近年來在離散事件系統(tǒng)領(lǐng)域逐漸成為研究熱點[11]。Luisella Balbis給出了離散事件系統(tǒng)以及混雜系統(tǒng)的建模與控制方法概述[12],Siamak Nazari提出了事件圖中網(wǎng)絡(luò)阻塞與結(jié)點阻塞的判定依據(jù)[13],Philippe Declerck進(jìn)行了事件圖極值曲線與令牌終止條件分析方法[14],Abir Benabid-Najjar給出了定時加權(quán)事件圖的最大處理能力計算方法[15]等。
本文提出了一種針對網(wǎng)絡(luò)化PLC控制系統(tǒng)的程序建模與編譯方法。將控制系統(tǒng)描述為離散事件系統(tǒng),為統(tǒng)一編寫的控制程序建立了事件圖模型。應(yīng)用改進(jìn)的深度優(yōu)先算法識別模型中可并行執(zhí)行的事件序列。通過優(yōu)化分組,將其對應(yīng)的控制程序與變量分散下載至不同的PLC控制器中。在程序中自動插入網(wǎng)絡(luò)通信指令,以實現(xiàn)控制器間的變量同步。最后,通過智能樓宇控制系統(tǒng)對建模與編譯方法的有效性進(jìn)行評估。
離散事件系統(tǒng)是指受事件驅(qū)動、系統(tǒng)狀態(tài)跳躍式變化的動態(tài)系統(tǒng)。離散事件系統(tǒng)的系統(tǒng)狀態(tài)僅在離散的時間點上發(fā)生變化。這類系統(tǒng)中引起狀態(tài)變化的原因是事件,通常狀態(tài)變化與事件的發(fā)生是一一對應(yīng)的,事件的發(fā)生沒有持續(xù)性,在一個時間點瞬間完成[16]。下面給出離散事件系統(tǒng)有關(guān)概念。
定義1 (實體)構(gòu)成系統(tǒng)的各種物理對象稱為實體。控制系統(tǒng)中,PLC為構(gòu)成系統(tǒng)的基本物理對象,因而PLC為實體。
定義2 (屬性)反映實體某些性質(zhì)的參數(shù)稱為屬性,如PLC中的變量值、配置參數(shù)等。
定義3 (狀態(tài))在某一確定時刻,實體的狀態(tài)是實體所有屬性的集合,而系統(tǒng)狀態(tài)是實體狀態(tài)的集合。PLC是實體,PLC的狀態(tài)是參數(shù)、指令的集合,控制系統(tǒng)的狀態(tài)是所有PLC狀態(tài)的集合。
定義4 (事件)事件是引起系統(tǒng)狀態(tài)發(fā)生變化的行為,它是在某一時間點上的瞬時行為。PLC中變量值的改變造成控制系統(tǒng)狀態(tài)的改變,因而變量值的改變是事件。
PLC的系統(tǒng)狀態(tài)僅在指令執(zhí)行時發(fā)生變化,且在一個時間點立即完成,因而一段完整的PLC程序即為一個離散事件系統(tǒng)[17]。
事件圖是Schruben于1983年首先提出的一種圖形化的離散事件建模方法[18],它通過事件以及事件之間的邏輯、時序關(guān)系來刻畫離散事件系統(tǒng)的動態(tài)特性。圖1是事件圖示例,其中結(jié)點代表事件對象,弧代表調(diào)度活動,i為事件調(diào)度條件,t為事件調(diào)度延時,j為事件調(diào)度標(biāo)識。圖1中模型行為解釋如下:對于任意調(diào)度活動,當(dāng)事件A發(fā)生,系統(tǒng)狀態(tài)改變?yōu)镾A,如果條件i為真,則事件B將在t時間延遲后發(fā)生,系統(tǒng)狀態(tài)改變?yōu)镾B;當(dāng)B發(fā)生時,參數(shù)k將被設(shè)置為表達(dá)式j(luò)的值。事件圖的優(yōu)勢在于能夠直觀地表達(dá)事件間的調(diào)度關(guān)系,并能支持基于圖理論的事件調(diào)度分析和優(yōu)化[16]。
圖1 事件圖示例
可以將事件圖表示為一個二元組G=(V,E),這里V={v1,v2,…,vi,…}表示圖中結(jié)點v的集合,結(jié)點v在事件圖中代表單個事件對象,vi表示第i個事件。E={e1,e2,…,ei,…}表示圖中有向弧e的集合,ei表示第i條弧,e=(vn,vm)在事件圖中表示vn對vm的調(diào)度關(guān)系,f(vn,vm)=(t,j,i)是定義在事件圖中vn與vm間弧上的一個三元組,t表示事件調(diào)度延時,i為事件調(diào)度條件,j為事件調(diào)度標(biāo)識,表示一輪任務(wù)執(zhí)行過程中,在第j個時刻vn對vm產(chǎn)生影響[19]。
控制程序是描述PLC資源分配與執(zhí)行邏輯的控制語句,由存儲信息的變量與處理信息的指令組成。設(shè)PV={pv1,pv2,…,pvi,…}為變量集,pvi代表PLC程序中的唯一變量,PV中包含輸入變量與輸出變量,輸入變量的值由設(shè)備物理IO讀取,輸出變量的值寫入設(shè)備物理IO。記輸入變量集合為PVI?PV;輸出變量集合為PVO?PV;狀態(tài)變量為PVM?PV。設(shè)EV={ev1,ev2,…,evi,…}為指令集,evi=(T,k,m)是代表PLC程序中唯一指令的三元組,T代表指令執(zhí)行時間,k代表指令執(zhí)行順序,m代表指令EN引腳參數(shù)。稱P=(PV,EV)為一個PLC程序,它是變量與指令組成的集合。
在一段PLC程序中,若確定變量α的值之前,變量β的值必須確定,則稱α依賴于β,稱這種關(guān)系為依賴關(guān)系,依賴關(guān)系是分析控制程序邏輯的基礎(chǔ)。設(shè)控制系統(tǒng)包含A、B、C三個設(shè)備,控制程序如圖2所示,PV={pv1,pv2,…,pv10},EV={ev1,ev2,…,ev5},其中,pv1、pv6為A的輸入變量,pv5為A輸出變量;pv2為B的輸入變量,pv7為B輸出變量;pv10、pv11為C輸出變量。ev1={t1,1,1}為指令“==W”在集合中對應(yīng)的元素,執(zhí)行時間為t1,在程序中第1個執(zhí)行,不存在“EN”引腳,輸入為pv1和pv2,輸出為pv3,依賴關(guān)系記為pv1→pv3,pv2→pv3。其他指令對應(yīng)依賴關(guān)系同理,記為:pv3→pv5,pv4→pv5;pv2→pv7,pv6→pv7;pv8→pv10,pv7→pv10;pv2→pv11,pv9→pv11。
圖2 控制程序示例
事件圖模型是對PLC程序進(jìn)行分析優(yōu)化的基礎(chǔ),它描述了程序中變量間的依賴關(guān)系,通過遍歷事件圖可以有效提取相互獨立的事件序列。對PLC程序中的變量、指令進(jìn)行分析,逐步完成事件圖建模過程,進(jìn)而通過改進(jìn)的深度優(yōu)先搜索算法分析建立好的模型,提取并行離散事件序列。
指令對變量的每次改變均為事件,將程序中每個變量映射為一個事件結(jié)點,每遍歷一次該結(jié)點,即發(fā)生一次變量改變事件。變量集合映射關(guān)系如式(1)所示,輸入輸出映射關(guān)系如式(2)所示:
其中VI為輸入事件,VO為輸出事件,VM為狀態(tài)事件。PLC指令包含多個輸入、輸出變量,若指令存在N個輸入變量,M個輸出變量,則存在N×M組依賴關(guān)系,每組依賴關(guān)系將對應(yīng)事件圖中一個調(diào)度活動,即一條連接兩個事件結(jié)點的有向弧,弧起始結(jié)點為前一時刻發(fā)生事件,弧終止結(jié)點為后一時刻發(fā)生事件。
PLC指令包含多個輸入、輸出變量,存在多組依賴關(guān)系,因此一條PLC指令對應(yīng)事件圖中多個調(diào)度弧,弧起始結(jié)點為前一時刻發(fā)生事件,弧終止結(jié)點為后一時刻發(fā)生事件。指令執(zhí)行時間T對應(yīng)調(diào)度時間t,執(zhí)行順序k對應(yīng)調(diào)度標(biāo)識j,EN引腳參數(shù)對應(yīng)調(diào)度條件i。映射關(guān)系如式(3)所示:
設(shè)eva指令輸入變量個數(shù)為N,輸出變量個數(shù)為M,則ea1~eak為指令eva對應(yīng)調(diào)度弧,且k=N×M。每條指令對應(yīng)的調(diào)度弧個數(shù)不同,因此式(3)中每行包含的元素個數(shù)存在差別,即a、b及k的值彼此獨立,僅與各自對應(yīng)的指令有關(guān)。
f(vn,vm)=(t,j,i)為調(diào)度弧eai=(vn,vm)的屬性,t為指令eva執(zhí)行時間,j為eva執(zhí)行順序,i為eva的“EN”引腳對應(yīng)變量,若eva指令不存在“EN”引腳,則恒有i=1。生成事件圖具體流程如圖3所示。
式(4)為圖2所示程序的指令映射,5條原始指令均映射為事件圖中的調(diào)度弧。由于每個指令均包含2個輸入變量,1個輸出變量,存在兩組依賴關(guān)系,因而1條指令映射為2條調(diào)度弧。
圖3 事件圖構(gòu)造流程圖
圖4顯示了構(gòu)造事件圖模型的過程,原始PLC程序如圖2所示。首先遍歷“==W”指令,添加結(jié)點v1、v2、v3,添加v1指向v3的弧,f(v1,v3)=(t1,1,1),再添加v2指向v3的弧,f()v1,v3=(t1,1,1)。然后遍歷“AND”指令,添加結(jié)點v4、v5,添加v3指向v5的弧,f(v3,v5)=(t2,2,1),再添加v4指向v5的弧,f(v4,v5)=(t2,2,1)。同理,遍歷剩余指令,逐步構(gòu)造事件圖模型。
圖4 事件圖構(gòu)造示例
事件圖模型描述了PLC程序中變量的依賴關(guān)系,為進(jìn)一步分析這種關(guān)系,需要對事件圖進(jìn)行遍歷。以改進(jìn)的深度優(yōu)先搜索算法(Depth First Search,DFS)[19]為基礎(chǔ),將f(vn,vm)=(t,j,i)中的j項作為弧的權(quán)值,通過分析模型中結(jié)點的依賴關(guān)系,將事件圖分解為相互間無依賴關(guān)系的若干事件序列,從而將PLC程序解耦,稱這些事件序列為事件樹。
定義5 (事件樹)用結(jié)點表示事件,用結(jié)點間的路徑表示調(diào)度活動,用路徑的權(quán)值表示調(diào)度順序的樹型數(shù)據(jù)結(jié)構(gòu)。一顆完整的事件樹是通過改進(jìn)的DFS算法遍歷得到的一條路徑,根結(jié)點為調(diào)度活動開始的源事件。
調(diào)度活動描述了事件躍遷條件,影響遍歷方向,因而需要對傳統(tǒng)DFS算法進(jìn)行一定改進(jìn)。通過改進(jìn)的DFS算法得出一條最短路徑,該路徑即為一棵事件樹,它包含經(jīng)過的所有結(jié)點與弧的信息——事件與調(diào)度活動的信息,描述了起始變量經(jīng)過若干指令處理后會對哪些變量產(chǎn)生影響,生成事件樹是將PLC程序分解為并行離散事件的中間過程。事件樹生成流程如圖5所示。
依據(jù)結(jié)點入度、出度,將結(jié)點劃分為單入單出、單入多出、多入單出、多入多出、單入0出、多入0出,共6種類型,改進(jìn)的DFS算法在處理這些結(jié)點時的遍歷規(guī)則不同。
V={v1,v2,…,vk}表示事件圖結(jié)點集合,k為事件圖中的結(jié)點數(shù)量。OUT={outi1,outi2,…,outin}。表示以vi為弧尾的弧的集合,集合中元素為弧對應(yīng)的事件調(diào)度標(biāo)識,n為以vi為弧尾的弧的個數(shù)。IN(vi)={ini1,ini2,…,inim}表示以vi為弧頭的弧的集合,集合中元素為弧對應(yīng)的事件調(diào)度標(biāo)識,m為以vi為弧頭的弧的個數(shù)。innow為當(dāng)前遍歷路徑結(jié)點輸入弧對應(yīng)的事件調(diào)度標(biāo)識。F(inab)表示弧對應(yīng)的事件調(diào)度條件,若F(inab)=1,則va對vb的調(diào)度一定生效。
記事件樹中弧的權(quán)值為事件調(diào)度標(biāo)識,改進(jìn)的DFS算法處理結(jié)點規(guī)則如下:
(1)單入單出結(jié)點。訪問下個鄰接點,同時將當(dāng)前結(jié)點及連接兩個結(jié)點的弧加入事件樹。
(2)單入多出結(jié)點。先遍歷權(quán)值小的弧對應(yīng)的鄰接點,同時將當(dāng)前結(jié)點及連接兩個結(jié)點的弧加入事件樹。
(3)多入單出結(jié)點。首先判斷當(dāng)前結(jié)點是否已經(jīng)遍歷過,若尚未被遍歷,則依據(jù)結(jié)點輸入、輸出弧權(quán)值確定遍歷路徑,并將經(jīng)過的結(jié)點與弧加入事件樹。記唯一的輸出弧權(quán)值為out,用inx表示任意輸入弧的權(quán)值,則多入單出結(jié)點的處理流程如圖6所示。
圖6 多入單出結(jié)點處理流程圖
(4)多入多出結(jié)點。依次隨機(jī)選擇某個輸出弧,將當(dāng)前結(jié)點視為多入單出結(jié)點,按照多入單出的判斷依據(jù)進(jìn)行操作,然后選擇下一個輸出弧,重復(fù)進(jìn)行以上操作,以此類推。
(5)單/多入0出結(jié)點。添加當(dāng)前結(jié)點到事件樹,停止遍歷該路徑。
自動控制系統(tǒng)的IO點可能存在于不同設(shè)備之中,由于工業(yè)現(xiàn)場總線傳輸效率低,PLC設(shè)備無法共享內(nèi)存,因而對大規(guī)模數(shù)據(jù)處理的瓶頸不在于設(shè)備性能,而在于網(wǎng)絡(luò)帶寬。通過對并行事件序列進(jìn)行優(yōu)化,使計算自動更加靠近IO源,將計算盡可能“本地化”,能夠節(jié)約網(wǎng)絡(luò)帶寬而獲得高效率的計算性能。業(yè)界對此評價為“移動計算比移動數(shù)據(jù)更經(jīng)濟(jì)”[20]。
事件樹描述了變量通過指令相互影響的關(guān)系,但同一條指令可能存在于多個事件樹之中,不同變量可能通過相同的指令對同一個變量產(chǎn)生影響,因而需要對包含相同指令的事件樹進(jìn)行優(yōu)化分組,保證每組事件樹中各個變量不受其他組中事件樹的影響。事件樹優(yōu)化分組步驟如下:
(1)優(yōu)化開始時,將每棵事件樹劃分為獨立的一組。
(2)檢查兩組事件樹中是否包含權(quán)值相同的弧。
(3)若包含權(quán)值相同的弧,且弧上箭頭指向的結(jié)點相同,則將其合并為一組事件樹。
(4)重復(fù)第(2)步,直到任意兩組事件樹均不滿足步驟(3)的條件為止。
經(jīng)過優(yōu)化分組,各組事件樹中包含的事件與活動不存在耦合,可以分配給不同處理結(jié)點執(zhí)行。
并行事件的優(yōu)化涉及事件在不同設(shè)備間的合理分配,既要保證設(shè)備間的正常通訊,又要避免單個設(shè)備負(fù)載過大,因而為各組事件樹劃分設(shè)備存在兩種基本模式:
(1)同步最優(yōu)。減少設(shè)備間的通訊延時,將指令盡量下載給通訊開銷小的設(shè)備。
(2)負(fù)載均衡。在保證IO變量能夠正常傳遞的前提下,通過對調(diào)度延時t求和,獲得各組事件樹預(yù)期調(diào)度時間,從而將指令均勻地下載給不同設(shè)備,減少單個設(shè)備的執(zhí)行周期[21]。
優(yōu)化后的每組事件樹彼此獨立,可以劃分給不同設(shè)備,同一組事件樹可以劃分給多個設(shè)備。設(shè)存在N組事件樹的集合L={l1,l2,…,lN},li中包含變量集合Vi={vi1,vi2,…,vik},其中1≤i≤N,ξi為li的預(yù)期調(diào)度時間,是li中調(diào)度弧的調(diào)度時間之和,單位為ms。優(yōu)化設(shè)備歸屬的依據(jù)是物理IO所在位置,設(shè)存在設(shè)備集合D={d1,d2,…,dM},di為具有實際物理IO的設(shè)備,di中包含變量集合VDi={vi1,vi2,…,vik},VDi中元素為該設(shè)備的物理IO,其中1≤i≤M。設(shè)Ψa為da當(dāng)前的預(yù)期執(zhí)行時間,通過公式(5)對Ψa的值進(jìn)行求解:
其中,num為da當(dāng)前包含的控制指令數(shù)量,Ti為第i條指令的執(zhí)行時間。設(shè)?ab為da與db間傳遞一個變量所需時間,單位為ms,ρia為Vi∩VDa包含的元素數(shù)量,Wi={wi1,wi2,…,wiM}為li分配給各個設(shè)備后產(chǎn)生的通訊開銷,將li分配給設(shè)備da的通訊開銷如式(6)所示:
將li分配給產(chǎn)生通訊開銷最小的設(shè)備。若存在wia=wib,且Ψa<Ψb,則將li分配給da。
圖7顯示了為事件樹劃分設(shè)備的結(jié)果,以圖2所示程序進(jìn)行說明。存在設(shè)備集合D={dA,dB,dC},存在事件樹集合L={la,lb,lc},設(shè)?AB=50,?BC=20,?AC=80??疾焓录鋋,得出waA=50,waB=100,waC=180,waA最小,因此將事件樹a劃分給設(shè)備A。同理,考察事件樹b,得出wbA=180,wbB=70,wbC=120,wbB最小,因此將事件樹b劃分給設(shè)備B;考察事件樹c,得出wcA=130,wcB=20,wcC=20,wcB與wcC同為最小值,又有ψb>0,ψc=0,ψc<ψb,因此將事件樹c劃分給設(shè)備C。
不同事件樹可能包含相同事件,即包含同一個變量,為事件樹劃分設(shè)備后,相同變量可能存在于不同設(shè)備中。為保證程序正常執(zhí)行,當(dāng)前設(shè)備應(yīng)實時讀取其他設(shè)備中的變量信息,經(jīng)過處理后同步到本地對應(yīng)變量[22],變量同步基本原則如下:
(1)若變量V被分配到兩個及兩個以上設(shè)備中,則V被復(fù)制為多個副本運行于各個設(shè)備中。
(2)為每個設(shè)備開辟一塊緩存區(qū),存儲從不同設(shè)備讀取的V的副本的值。
(3)插入通訊指令,從其他設(shè)備讀取V值到本地輸入緩存,或?qū)值寫入其他設(shè)備輸出緩存。
內(nèi)部變量不用于物理輸入、輸出,且不受其他設(shè)備影響,因而不需要進(jìn)行設(shè)備間同步,僅需要同步輸入、輸出變量即可。
圖7 確定事件樹歸屬設(shè)備
輸入變量不會被程序的運行邏輯改變,僅受設(shè)備的物理輸入影響,且僅在每輪程序執(zhí)行之前讀取一次。因而在程序開頭插入通訊指令,讀取變量值到本地輸入緩存,再插入指令讀取輸入緩存中的數(shù)據(jù),從而實現(xiàn)輸入變量同步。輸出變量僅在每輪程序結(jié)束后寫入物理輸出端口。若V為設(shè)備B輸出變量,而V的值由設(shè)備A計算得出,則在A程序結(jié)尾插入通訊指令,將V的值寫入設(shè)備B輸出緩存。設(shè)備B在程序結(jié)尾插入指令讀取輸出緩存中的數(shù)據(jù),從而實現(xiàn)輸出變量同步。
圖8顯示了變量同步的方法,以圖2所示程序為例進(jìn)行具體說明。A中指令用到B的輸入變量pv2,因而在A程序開頭插入通訊指令,定時讀取B中pv2的值到輸入緩存,然后插入讀取緩存指令,在每輪程序開始執(zhí)行前刷新本地pv2,從而實現(xiàn)B對pv2的遠(yuǎn)程讀取。C的輸出變量pv10是B的運算結(jié)果,因而在B程序末尾插入通訊指令,將B中pv10的值寫到C的輸出緩存,在C的程序末尾插入讀取輸出緩存指令,刷新本地pv10,從而實現(xiàn)B對pv10的遠(yuǎn)程寫入。其他I/O變量的遠(yuǎn)程刷新方法同理。
圖8 同步變量示例
圖9 樓宇監(jiān)控系統(tǒng)圖
圖9為樓宇監(jiān)控系統(tǒng)拓?fù)浣Y(jié)構(gòu)圖。樓宇綜合監(jiān)控系統(tǒng)由5個主要控制模塊組成,分別為云臺控制模塊、照明電控制模塊、操作臺控制模塊、電梯監(jiān)測模塊與電力監(jiān)控模塊,控制模塊之間通過工業(yè)以太網(wǎng)互聯(lián)。監(jiān)控工作站是一臺高性能計算機(jī),充當(dāng)樓宇監(jiān)控系統(tǒng)的服務(wù)器使用。電視墻受工作站的控制,用于顯示樓宇系統(tǒng)各個模塊的運行狀態(tài)。LED顯示屏直接連入樓宇監(jiān)控網(wǎng)絡(luò),用于顯示通知等信息,可以由連入控制網(wǎng)絡(luò)的計算機(jī)直接操作。監(jiān)控終端可以是任意連入控制網(wǎng)絡(luò)的計算機(jī),通過訪問監(jiān)控工作站對系統(tǒng)進(jìn)行監(jiān)視與控制。
以照明控制為例,部分控制程序如圖10所示。
圖10 照明控制部分程序
網(wǎng)絡(luò)1、網(wǎng)絡(luò)2實現(xiàn)物理開關(guān)控制,網(wǎng)絡(luò)3、網(wǎng)絡(luò)4實現(xiàn)定時開關(guān)燈控制。Q0.0與Q0.1分別為控制電燈的物理開關(guān),在編寫程序時已經(jīng)指定所屬設(shè)備,Q0.0歸屬于
功能塊網(wǎng)絡(luò)中包含多條邏輯連線,建模之前需要將邏輯連線轉(zhuǎn)換為臨時變量,建立控制程序到離散事件系統(tǒng)的映射,進(jìn)而完成建模過程,建立好的事件圖模型如圖11所示。
模型中V1~V10為動態(tài)添加的臨時變量,分別對應(yīng)程序中的10條邏輯連線。事件圖共包含23個事件結(jié)點,26個調(diào)度弧,描述了電燈控制設(shè)備的執(zhí)行邏輯。通過對事件圖進(jìn)行分析與遍歷,優(yōu)化事件樹分組,并確定指令的設(shè)備歸屬,完成分散下載工作。
對樓宇綜合監(jiān)控系統(tǒng)的控制程序進(jìn)行編譯優(yōu)化,下載到各個控制模塊中執(zhí)行,如表1所示。比較統(tǒng)一編寫的原始程序與具體下載到各個控制模塊中的程序,統(tǒng)計功能1~3樓的電燈控制設(shè)備,Q0.1歸屬于4~6樓的電燈控制設(shè)備。VW 101~VW 104為用戶指定的開關(guān)燈時間,SMW 55、SMW 56為控制器時鐘,通過比較兩者的值實現(xiàn)電燈的定時開關(guān)。塊網(wǎng)絡(luò)數(shù)量、指令數(shù)量、動態(tài)插入的通訊指令數(shù)量,進(jìn)而對控制系統(tǒng)的負(fù)載、執(zhí)行效率進(jìn)行分析,評估分散下載的效果,驗證本文提出的控制程序編譯算法的有效性。
表1 控制程序分散下載效果
圖11 控制程序建模
原始程序被分散下載到9臺PLC控制器中,除了操作臺控制模塊,剩余模塊中均自動添加網(wǎng)絡(luò)通訊指令。這是由于其他設(shè)備需要從操作臺讀取控制信息,而操作臺的輸入、輸出變量及相關(guān)指令均被下載給本地設(shè)備,不需要從其他設(shè)備讀取輸入數(shù)據(jù)或向其他設(shè)備寫入輸出數(shù)據(jù)。云臺控制主設(shè)備與照明電控制主設(shè)備中添加的通訊指令數(shù)量較多,這是由于它們的從設(shè)備與操作臺控制設(shè)備進(jìn)行通訊時,需要以其對應(yīng)的主設(shè)備作為中轉(zhuǎn),因而需要在主設(shè)備中額外建立通訊通道,添加通訊指令。對比各組結(jié)果,設(shè)備負(fù)載較為均衡,云臺與操作臺控制設(shè)備由于的運算邏輯復(fù)雜,且存在大量與I/O變量有耦合關(guān)系的指令,負(fù)載稍大。編程人員可以通過模塊化的程序設(shè)計,減少控制程序耦合關(guān)系,使設(shè)備負(fù)載更為均衡。
提出了一種針對網(wǎng)絡(luò)化PLC控制系統(tǒng)的程序建模與編譯方法。通過將控制系統(tǒng)映射為離散事件系統(tǒng),建立了控制程序的事件圖模型;通過改進(jìn)的深度優(yōu)先搜索算法,實現(xiàn)了事件圖解耦,提取并行事件序列;通過優(yōu)化分組以及變量同步方法,實現(xiàn)了控制程序的分散下載與同步。實驗結(jié)果表明,本文方法可以有效地將統(tǒng)一編寫的控制程序分散下載給不同設(shè)備,并保持系統(tǒng)控制邏輯正確。研究成果已應(yīng)用于國內(nèi)某公司智能樓宇監(jiān)控系統(tǒng),有效平衡了系統(tǒng)各個部分的負(fù)載,同時降低了系統(tǒng)開發(fā)周期與維護(hù)成本。同時提出的以網(wǎng)絡(luò)中的設(shè)備為整體進(jìn)行程序編輯與編譯的方法,也為大規(guī)模PLC控制系統(tǒng)的程序開發(fā)與分析提供了新的思路。
[1]Thramboulidis K.Development of distributed industrial control applications:the CORFU framework[C]//Proceedings of the 4th IEEE International Workshop on Factory Communication Systems Vasteris,Sw eden,2002:39-46.
[2]Thramboulidis K,Sierla S,Papakonstantinou N,et al.An IEC 61499 based approach for distributed batch process control[C]//Proceedings of the IEEE International Conference on Industrial Informatics,Vienna,2007:177-182.
[3]Khalgui M,H ramboulidis K.An IEC61499-based development approach for distributed industrial control applications[J].Int J Modelling,Identification and Control,2008,4(2):186-204.
[4]劉潔.FBD程序建模優(yōu)化技術(shù)研究及實現(xiàn)[D].遼寧大連:大連理工大學(xué),2009.
[5]許文靚.基于LM I的PLC功能塊圖和順序功能圖的相互轉(zhuǎn)換技術(shù)[D].遼寧大連:大連理工大學(xué),2010.
[6]羅繼亮,吳維敏,蘇宏業(yè),等.事件圖的混合控制器設(shè)計[J].自動化學(xué)報,2007,33(2):218-221.
[7]M a X H,Xie J Y.An observer-based compensator for networked control systems[J].Int J Modelling,Identification and Control,2007,2(2):169-175.
[8]Kwong R H,Yonge-Mallo.Fault diagnosis in discrete-event system s:incomplete models and learning[J].IEEE Transactions on System s,M an,and Cybernetics:Part B Cybernetics,2011,41(1):118-130.
[9]A lenljung T,Lennartson B,Hosseini M N.Sensor graphs for discrete event modeling applied to formal verification of PLCs[J].IEEE Transactions on Control Systems Technology,2012,20(6):1506-1521.
[10]Li D,Lan W,Zhou H,et al.Control of fuzzy discrete event systems and its application to air conditioning system[J].Int J Modelling,Identification and Control,2009,8(2):122-129.
[11]夏薇,姚益平,慕曉冬,等.基于事件圖的離散事件仿真模型并行檢驗方法[J].軟件學(xué)報,2012,23(6):1429-1443.
[12]Balbis L,Ordys A W,Grimble M J,et al.Tutorial introduction to the modelling and control of hybrid systems[J].Int J modelling,Identification and Control,2007,2(4):259-272.
[13]Nazari S,John G.Blocking in fully connected networks of arbitrary size[J].IEEE Transactions on Automatic control,2012,57(5):1233-1242.
[14]Declerck P.From extremal trajectories to token deaths in P-time event graphs[J].IEEE Transactions on Automatic Control,2011,56(2):463-467.
[15]Benabid-Najjar A,Hanen C,Marchetti O,et al.Periodic schedules for bounded timed weighted event graphs[J].IEEE Transactions on Automatic Control,2012,57(5):1222-1232.
[16]劉剛.并行離散事件仿真可視化組件建模技術(shù)研究[D].長沙:國防科學(xué)技術(shù)大學(xué),2009.
[17]陳宜濱,席寧,李洪誼.基于事件的控制理論研究及其應(yīng)用[J].機(jī)械工程學(xué)報,2012,48(17):152-158.
[18]Savage E L,Schruben L W,Yücesan E.On the generality of event-graph models[J].INFORMS Journal on Computing,2005,17(1):3-9.
[19]Cordes D,Marwedel P,Mallik A.Automatic parallelization of embedded software using hierarchical task graphs and integer linear programming[C]//Proceedings of the Conference on Parallel Architectures and Compilation Techniques,Scottsdale,2010:267-276.
[20]胡彧,封俊.Hadoop下的分布式搜索引擎[J].計算機(jī)系統(tǒng)應(yīng)用,2010,19(7):224-228.
[21]Yao Yong,Wang Yingfeng,Liu Zhijing.An algorithm used to improve task parallelization for directed acyclic graphs[C]//In Advances in the Dempster-Shafer Theory of Evidence,Hong Kong,China,2010:238-240.
[22]廖育武,胡家勤.多PLC的分布式控制系統(tǒng)的通訊方法[J].礦山機(jī)械,2009,37(14):38-41.