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