專利名稱:一種將PLC指令表程序轉(zhuǎn)換成普通Petri網(wǎng)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種將PLC指令表程序轉(zhuǎn)換成普通Petri網(wǎng)的方法。
背景技術(shù):
可編程邏輯控制器(PLC)是工業(yè)控制系統(tǒng)中典型的控制器,廣泛地應(yīng)用于鋼鐵、石油、化工、電力和交通系統(tǒng)的監(jiān)控等領(lǐng)域。然而PLC程序的開發(fā)卻面臨著高復(fù)雜性難題:在現(xiàn)場總線技術(shù)的支持下,工業(yè)控制系統(tǒng)規(guī)模和結(jié)構(gòu)復(fù)雜性增長迅速,比如地鐵交通控制系統(tǒng)和核電控制系統(tǒng)等等,而系統(tǒng)的狀態(tài)個數(shù)隨傳感器和執(zhí)行機(jī)構(gòu)的數(shù)目呈指數(shù)級增長,僅由5輛自動導(dǎo)航車輛組成的物流系統(tǒng)的狀態(tài)就達(dá)數(shù)百萬之巨,因此PLC程序設(shè)計面臨與生俱來的高計算復(fù)雜性。而高計算復(fù)雜性帶來兩大工程問題:(1)程序設(shè)計和調(diào)試工作量繁瑣和巨大,程序開發(fā)周期和開發(fā)成本難于控制;(2)傳統(tǒng)程序調(diào)試無法驗證每個狀態(tài)(狀態(tài)數(shù)呈指數(shù)級增長),無法保證程序的正確性和可靠性,而程序出錯可能造成嚴(yán)重事故,比如列車相撞、歐洲亞利安娜5號火箭爆炸和美國Threc-5放射性醫(yī)療事故等。為了克服上述工程問題,需要開發(fā)PLC程序仿真和軟件驗證方法,利用計算機(jī)來完成程序仿真和驗證工作,降低程序開發(fā)成本,保證程序的正確性和可靠性。因此,需要將PLC程序模擬為計算機(jī)數(shù)學(xué)模型,即將PLC程序指令轉(zhuǎn)換為一種計算機(jī)數(shù)學(xué)模型一Petri網(wǎng),以Petri網(wǎng)為工具對PLC程序進(jìn)行仿真和驗證。該P(yáng)etri網(wǎng)是1960年代德國科學(xué)家卡爾.Α.佩特里發(fā)明的,適合于模擬異步的、并發(fā)的動態(tài)系統(tǒng),既有嚴(yán)格的數(shù)學(xué)表述方式,又有直觀的圖形表達(dá)方式。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種將PLC指令表程序轉(zhuǎn)換成普通Petri網(wǎng)的方法,將PLC指令表程序轉(zhuǎn)換為一種計算機(jī)數(shù)學(xué)模型一Petri網(wǎng),從而能以Petri網(wǎng)為工具對PLC程序進(jìn)行仿真和驗證。一種將PLC指令表程序轉(zhuǎn)換成普通Petri網(wǎng)的方法,包括如下步驟:步驟1、將PLC指令表程序轉(zhuǎn)換成二值邏輯函數(shù):根據(jù)轉(zhuǎn)載指令“LD”或“LDN”的個數(shù)將給定的PLC指令表程序劃分為多個程序網(wǎng)絡(luò)塊,對于每一個程序網(wǎng)絡(luò)塊,將其對應(yīng)的變量存儲器V中的變量值置1,步驟11、對于當(dāng)前程序網(wǎng)絡(luò)塊中的STL程序進(jìn)行從上到下的逐條搜索;步驟12、如果遇到指令LD,將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的初始輸入量,與變量存儲器V中變量值作“與”運(yùn)算,將結(jié)果代入公式Y(jié) = F(A,B,0..)中等號右面,并重新存入存儲器V中,跳轉(zhuǎn)到下一條指令;步驟13、如果遇到指令LDN,將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的初始輸入量,先對該輸入量取非,然后與變量存儲器V中變量值作“與”運(yùn)算,將結(jié)果代入公式Y(jié) =F(A,B,0..)中等號右面,并重新存入存儲器V中,跳轉(zhuǎn)到下一條指令;
步驟14、如果遇到指令A(yù),將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的輸入變量,與變量存儲器V中變量值作“與”運(yùn)算,用符號連接,代入公式Y(jié) = F(A,B,0..)中等號右面,運(yùn)算后將其結(jié)果用符號“”括起,一并存入存儲器V中,跳轉(zhuǎn)到下一條指令;步驟15、如果遇到AN,將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的輸入變量,先對該變量取非,用符號“一”表示;然后與變量存儲器V中變量值作“與”運(yùn)算,用符號連接,代入公式Y(jié) = Hk, B, 0..)中等號右面,運(yùn)算后用符號“O”括起,一并存入存儲器V中,跳轉(zhuǎn)到下一條指令;步驟16、如果遇到指令0,將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的輸入變量,與變量存儲器V中變量值作“或”運(yùn)算,用符號“ + ”連接,代入公式Y(jié) = F(A,B,0..)中等號右面,運(yùn)算后用符號“”括起,一并存入存儲器V中,跳轉(zhuǎn)到下一條指令;步驟17、如果遇到指令0N,將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的輸入變量,先對該變量取非,用符號“一”表示;然后與變量存儲器V中變量值作“與”運(yùn)算,用符號連接,代入公式Y(jié) = F(A,B, 0..)中等號右面,運(yùn)算后用符號“O”括起,一并存入變量存儲器V中,跳轉(zhuǎn)到下一條指令;步驟18、如果遇到指令Ν0Τ,先將當(dāng)前存儲器中的變量值取非,然后重新存入存儲器V中;步驟19、如果遇到指令=,將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的輸出變量,將當(dāng)前寄存器中的變量值賦給輸出變量,代入公式Y(jié) = F(A,B,0..)中等號左面,跳轉(zhuǎn)到下一條指令;步驟110、直到當(dāng)前程序網(wǎng)絡(luò)塊中所有STL程序被搜索完為止;步驟2、將步驟I獲得的二值邏輯函數(shù)轉(zhuǎn)換為普通Petri網(wǎng):步驟21、確定二值邏輯函數(shù)中輸入量和輸出量個數(shù),得到輸入量集合I=Q1, i2,…。,輸出量集合。=、,^…心;步驟22、將二值邏輯函數(shù)中所有運(yùn)算量模擬為2 (m+n)個庫所,其中,每個運(yùn)算量Iffl或On分別對應(yīng)兩個庫所(Pm,Pon),表示im或On的斷開狀態(tài)和閉合狀態(tài),這些庫所組成普
通Petri網(wǎng)中庫所的集合
權(quán)利要求
1.種將PLC指令表程序轉(zhuǎn)換成普通Petri網(wǎng)的方法,其特征在于包括如下步驟: 步驟1、將PLC指令表程序轉(zhuǎn)換成二值邏輯函數(shù): 根據(jù)轉(zhuǎn)載指令“LD”或“LDN”的個數(shù)將給定的PLC指令表程序劃分為多個程序網(wǎng)絡(luò)塊,對于每一個程序網(wǎng)絡(luò)塊,將其對應(yīng)的變量存儲器V中的變量值置1, 步驟11、對于當(dāng)前程序網(wǎng)絡(luò)塊中的STL程序進(jìn)行從上到下的逐條搜索; 步驟12、如果遇到指令LD,將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的初始輸入量,與變量存儲器V中變量值作“與”運(yùn)算,將結(jié)果代入公式Y(jié) = F(A,B,0..)中等號右面,并重新存入存儲器V中,跳轉(zhuǎn)到下一條指令; 步驟13、如果遇到指令LDN,將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的初始輸入量,先對該輸入量取非,然后與變量存儲器V中變量值作“與”運(yùn)算,將結(jié)果代入公式Y(jié) = F(A,B, C-)中等號右面,并重新存入存儲器V中,跳轉(zhuǎn)到下一條指令; 步驟14、如果遇到指令A(yù),將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的輸入變量,與變量存儲器V中變量值作“與”運(yùn)算,用符號連接,代入公式Y(jié) = F(A,B,C...)中等號右面,運(yùn)算后將其結(jié)果用符號“O”括起,一并存入存儲器V中,跳轉(zhuǎn)到下一條指令; 步驟15、如果遇到AN,將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的輸入變量,先對該變量取非,用符號“一”表示;然后與變量存儲器V中變量值作“與”運(yùn)算,用符號連接,代入公式Y(jié) = Hk, B, 0..)中等號右面,運(yùn)算后用符號“O”括起,一并存入存儲器V中,跳轉(zhuǎn)到下一條指令; 步驟16、如果遇到指令O,將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的輸入變量,與變量存儲器V中變量值作“或”運(yùn)算,用符號“ + ”連接,代入公式Y(jié) = Hk, B, 0..)中等號右面,運(yùn)算后用符號“”括起, 一并存入存儲器V中,跳轉(zhuǎn)到下一條指令; 步驟17、如果遇到指令0N,將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的輸入變量,先對該變量取非,用符號“一”表示;然后與變量存儲器V中變量值作“與”運(yùn)算,用符號連接,代入公式Y(jié) = F(A,B,0..)中等號右面,運(yùn)算后用符號“O”括起,一并存入變量存儲器V中,跳轉(zhuǎn)到下一條指令; 步驟18、如果遇到指令NOT,先將當(dāng)前存儲器中的變量值取非,然后重新存入存儲器V中; 步驟19、如果遇到指令=,將其對應(yīng)的操作數(shù)作為二值邏輯函數(shù)的輸出變量,將當(dāng)前寄存器中的變量值賦給輸出變量,代入公式Y(jié) = F(A,B,0..)中等號左面,跳轉(zhuǎn)到下一條指令; 步驟110、直到當(dāng)前程序網(wǎng)絡(luò)塊中所有STL程序被搜索完為止; 步驟2、將步驟I獲得的二值邏輯函數(shù)轉(zhuǎn)換為普通Petri網(wǎng): 步驟21、確定二值邏輯函數(shù)中輸入量和輸出量個數(shù),得到輸入量集合I=Q1, i2,…im),輸出量集合0=(Ol,o2,-on); 步驟22、將二值邏輯函數(shù)中所有運(yùn)算量模擬為2 (m+n)個庫所,其中,每個運(yùn)算量im或Qn分別對應(yīng)兩個庫所(P()ff,Pon),表示im或On的斷開狀態(tài)和閉合狀態(tài),這些庫所組成普通Petri網(wǎng)中庫所的集合
全文摘要
本發(fā)明一種將PLC指令表程序轉(zhuǎn)換成普通Petri網(wǎng)的方法,實(shí)現(xiàn)了從PLC指令表程序到普通Petri網(wǎng)的自動轉(zhuǎn)換,由于普通Petri網(wǎng)激發(fā)條件簡潔,邏輯思維方式簡單,更直觀易懂,而且所得Petri網(wǎng)能夠完全模擬PLC控制系統(tǒng)的動態(tài)行為,便于對PLC程序分析、糾錯,提高其可靠性。
文檔編號G06F11/36GK103092753SQ20121058980
公開日2013年5月8日 申請日期2012年12月29日 優(yōu)先權(quán)日2012年12月29日
發(fā)明者齊鵬飛, 羅繼亮, 陳雪琨 申請人:華僑大學(xué)