軟PLC編譯系統(tǒng)的開發(fā)與仿真
push(Y1Y2?K);本文引用地址:http://www.ex-cimer.com/article/161172.htm
else
error();
else(X==$)
分析成功;
break;
其中,M[X,a]是指預(yù)測分析表中x行和a列相交處的產(chǎn)生式。
下面舉例子來說明PLC程序語法分析程序的工作過程。
將指令用小寫字母代替后,程序指令變?yōu)閍cababecdcf,將該字符串作為輸入,分析過程如表2所示。
表2 PLC程序語法分析表
5、軟PLC程序編譯的實現(xiàn)
PLC指令表程序的分析是通過對指令表程序的解釋而獲得程序的邏輯,并以對話框形式演示程序的邏輯狀態(tài)。在解釋過程中,構(gòu)造2個變量,1個用于存儲分支塊的邏輯值,另1個用于存儲分支塊前面語句的邏輯值。同時構(gòu)造1個堆棧用來存儲解釋過程中的結(jié)果,分支塊前面的值保存在堆棧中,整個分支塊的值保存在1個臨時變量中。
PLC指令表程序的解釋過程為:1)當(dāng)解釋程序發(fā)現(xiàn)LD或LDI指令時,將臨時變量值壓入堆棧,臨時變量賦值為1,臨時變量與指令后面的元素進行邏輯與操作,將結(jié)果保存在臨時變量中;2)當(dāng)解釋程序發(fā)現(xiàn)AND或ANI指令時,臨時變量與指令后的元素進行與操作,將結(jié)果保存到臨時變量中;3)當(dāng)解釋程序發(fā)現(xiàn)OR或ORI指令時,l臨時變量與指令后的元素進行或操作,將結(jié)果保存到臨時變量中;4)當(dāng)解釋程序發(fā)現(xiàn)ANB指令時,臨時變量與棧頂?shù)闹颠M行與操作,將結(jié)果保存到臨時變量中,同時堆棧將棧頂元素彈出;5)當(dāng)解釋程序發(fā)現(xiàn)ORB指令時,臨時變量與棧頂?shù)闹颠M行或操作,將結(jié)果保存到臨時變量中,同時堆棧將棧頂元素彈出;6)當(dāng)解釋程序發(fā)現(xiàn)OUT指令時,將臨時變量與棧頂?shù)闹颠M行與操作,將結(jié)果保存在臨時變量中。同時清空堆棧。
程序邏輯的仿真界面,如圖3所示。
圖3 程序邏輯仿真界面
程序中所包含的PLC元素會按類別以表格形式列出,元素的不同顏色表示元素的開關(guān)狀態(tài),紅色代表高電平,白色代表低電平。當(dāng)用鼠標(biāo)改變輸入元素的狀態(tài)時。輸出元素的狀態(tài)會按照程序邏輯進行改變,改變的結(jié)果可由顏色的變化來顯示。
6、結(jié)束語
軟PLC程序的邏輯仿真結(jié)果表明,開發(fā)的軟PLC編譯系統(tǒng)能實現(xiàn)軟PLC梯形圖與指令表程序的相互轉(zhuǎn)換,完成軟PLC程序的文法設(shè)計和語法分析,對軟PLC程序的運行指令作出正確解釋,并能按照PLC的工作原理運行,使PC機完成相應(yīng)的控制功能。開發(fā)的軟件系統(tǒng)能很容易地實現(xiàn)PLC程序的編輯和邏輯仿真,系統(tǒng)結(jié)構(gòu)簡單,使用方法簡便,為今后進~步研究和開發(fā)軟PLC的下位機系統(tǒng)、不斷完善軟PLC系統(tǒng)的功能和實現(xiàn)其良好的控制特性奠定了基礎(chǔ)。
評論