plc梯形圖編譯原理

plc梯形圖編譯原理

ID:8821538

大小:121.50 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2018-04-08

plc梯形圖編譯原理_第1頁(yè)
plc梯形圖編譯原理_第2頁(yè)
plc梯形圖編譯原理_第3頁(yè)
plc梯形圖編譯原理_第4頁(yè)
plc梯形圖編譯原理_第5頁(yè)
資源描述:

《plc梯形圖編譯原理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)

1、PLC梯形圖編譯原理IL語(yǔ)言非常接近匯編語(yǔ)言,編碼后,PLC處理器能很容易識(shí)別,但是梯形圖是圖形元素,CPU不容易識(shí)別,所以要將梯形圖先編譯為IL語(yǔ)言。本文提供了一種遞歸編譯的方式,不完善的地方,還請(qǐng)見諒。轉(zhuǎn)換思路:將梯形圖以網(wǎng)絡(luò)為單位進(jìn)行遍歷,選擇一個(gè)網(wǎng)絡(luò)進(jìn)行分析,梯形圖本質(zhì)是塊和塊之間的串聯(lián),串聯(lián)的塊中又可能包含了并聯(lián)關(guān)系,但是并聯(lián)關(guān)系中,其實(shí)也是串聯(lián)塊的并聯(lián)。如圖1:??在整個(gè)梯形圖編譯的過程中,主要使用2個(gè)步驟(或者叫函數(shù)),一個(gè)步驟分析塊之間的串聯(lián)關(guān)系,一個(gè)步驟分析塊之間的并聯(lián)關(guān)系。?步驟0:先初始化開始行為網(wǎng)絡(luò)的第一行,開始列為

2、第一列,結(jié)束列為最后一列。然后進(jìn)去步驟1。步驟1、??????(1)建立一個(gè)塊堆棧BlockStack,輸出堆棧OutputStack。(2)首先將圖進(jìn)行串聯(lián)塊的分析。將分析到的塊壓入BlockStack,輸出塊壓入OutputStack.(3)遍歷BlockStack,對(duì)每一個(gè)塊進(jìn)行分析,1)如果塊的行數(shù)大于1,表示塊中有并聯(lián)關(guān)系,到步驟2分析該塊。?????????????如果塊不是第一個(gè)塊,則要在并聯(lián)關(guān)系解釋完后,加入ANB指令。2)如果塊的行數(shù)等于1,表示塊已經(jīng)是最簡(jiǎn)串聯(lián)塊,直接輸出塊的語(yǔ)句。?????????????如果塊是第一個(gè)

3、塊,使用LD加載第一個(gè)元素,依次往后使用AND。(至于使用LDI,還是ANI,請(qǐng)判斷元素的類型。)?????????????如果塊不是第一個(gè)塊,使用AND加載第一個(gè)元素,依次往后使用AND。(3)遍歷輸出塊。????????????如果輸出塊是多行,使用步驟2分析輸出塊。????????????如果輸出塊是單行,則直接輸出塊中元素:OUT、SET、RST。步驟2、??????(1)首先判斷傳入的塊是輸出塊還是普通塊。如果是輸出塊,建立一個(gè)記錄標(biāo)志。建立一個(gè)或堆棧.OrBlockStack.分析塊Blcok中由哪幾個(gè)串聯(lián)塊并聯(lián)而成,將塊壓入O

4、rBlockStack中.A、遍歷OrBlockStack,每一個(gè)串聯(lián)塊進(jìn)行步驟1串聯(lián)分析。B、為每一個(gè)串聯(lián)塊加上并聯(lián)關(guān)系。1)如果是輸出:如果一共有2個(gè)分支,則第一個(gè)分支加入MPS,第二個(gè)分支加入MPP。????????????如果分支大于2個(gè),則第一個(gè)分支加入MPS,最后一個(gè)分支加入MPP,其他分支加入MPR。2)如果不是輸出:如果串聯(lián)塊中橫線方向元素個(gè)數(shù)大于1個(gè),加入ORB,(來源:http://www.dqjsw.com.cn/)如果只有一個(gè)元素,加入OR,進(jìn)入步驟3檢查代碼。如果沒有元素,就是短路。報(bào)錯(cuò)。步驟3:全部完成后,對(duì)指令

5、進(jìn)行分析,如果有LDXnOR這樣的指令,要合并為:ORXn.舉例說明:梯形圖程序如圖1,可以劃分為3個(gè)塊:塊1,塊2,輸出塊。3個(gè)之間是串聯(lián)的關(guān)系。圖1(現(xiàn)在是在步驟1中)依次將塊1,塊2,輸出塊傳入步驟2,根據(jù)步驟1可知,塊2后面需要加入ANB指令。塊1傳入步驟2后,可以分析到塊1是由2個(gè)串聯(lián)塊A、B并聯(lián)組成的。如圖2:圖2(現(xiàn)在是在步驟2中)依次將A、B傳入步驟1,根據(jù)步驟2可知,B傳入步驟1后,要加上ORB指令。塊A傳入步驟1后,可以分析到塊A是由3個(gè)塊a,b,c串聯(lián)組成的,如圖3:(現(xiàn)在是在步驟1中)然后依次將a,b,c傳入到步驟2

6、中進(jìn)行分析,根據(jù)步驟1可知,b進(jìn)入步驟2后,要加入ANB指令,C進(jìn)入步驟2后,也要加入ANB指令。塊a可以分析得到是由3個(gè)單行的串聯(lián)a1,a2,a3塊并聯(lián)組成的。(現(xiàn)在是在步驟2中)再依次把a(bǔ)1,a2,a3傳入步驟1進(jìn)行串聯(lián)分析,根據(jù)步驟2可知,X2傳入步驟1后,要加入OR指令,X3傳入步驟1后,也要加入OR指令。a1進(jìn)入步驟1,可以得到a1只有一行,所以直接輸出a1為L(zhǎng)DX1a2傳入步驟1,可以得到LDX2ORa3傳入步驟1可以得到LDX3OR最后對(duì)指令進(jìn)行分析,只要有LDXnOr這樣的,都合并為ORXn.整理后得到指令為:??????L

7、DX1??????ORX2??????ORX3。依次往后遍歷,最后能得到所有的指令為:LDX1ORX2ORX3LDX4ORX5ANBLDX6ORX7ANBLDX9ORX10LDX11LDX12ANBORBLDX13ORX14LDX15ORX16ANBORX17ANBOUTY1在這個(gè)算法中,將梯形圖元素分塊,是最關(guān)鍵的,所以要處理好梯形圖元素的分塊,至于怎么分塊,就需要自己想了喲~

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。