上傳時(shí)間:2012年2月10日 關(guān)鍵詞:PLC、編譯系統(tǒng)、仿真
  置指針ip指向輸入符號(hào)串的第1個(gè)字符  while(1)  令X是棧頂符號(hào)。a是ip所指的符號(hào);  if(X是終結(jié)符號(hào)或$)  if X==a  pop(X),更新ip;  else  error();  else(X是非終結(jié)符號(hào))  if M[X,a]:X—yly2K  pop(X);push(Y1Y2K);   else  error();  else(X==$)  分析成功;  break;  其中,M[X,a]是指預(yù)測(cè)分析表中x行和a列相交處的產(chǎn)生式。下面舉例子來(lái)說(shuō)明PLC程序語(yǔ)法分析程序的工作過(guò)程?! ⒅噶钣眯懽帜复婧?,程序指令變?yōu)閍cababecdcf,將該字符串作為輸入,分析過(guò)程如表2所示。
表2
表2 PLC程序語(yǔ)法分析表
  5、軟PLC程序編譯的實(shí)現(xiàn)  PLC指令表程序的分析是通過(guò)對(duì)指令表程序的解釋而獲得程序的邏輯,并以對(duì)話框形式演示程序的邏輯狀態(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í)變量中?! LC指令表程序的解釋過(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
圖3 程序邏輯仿真界面
    程序中所包含的PLC元素會(huì)按類別以表格形式列出,元素的不同顏色表示元素的開(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)行指令作出正確解釋,并能按照PLC的工作原理運(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ǔ)。
上一頁(yè) 1     2 下一頁(yè)