西門子PLC中央控制單元CPU412-1西門子PLC中央控制單元CPU412-1西門子PLC中央控制單元CPU412-1PLC編程入門之梯形圖梯形圖(LAD)是PLC編程的**可視化語言,它看起來非常類似于繼電器電路圖,因此如果 你對(duì)繼電器控制和電子電路有所了解的話,那么學(xué)起來會(huì)非常容易!在這個(gè)教程中,我們將學(xué)習(xí)關(guān)于使用梯形圖進(jìn)行PLC編程的有關(guān)知識(shí)。
現(xiàn)在,讓我們開始吧!什么是梯形圖?梯形圖是一種PLC編程語言,也被稱為梯形邏輯(Ladder Logic)。
之所以稱為梯形圖,是因?yàn)?這種程序由一條條水平線構(gòu)成,看起來很像梯子。
梯形圖是為電氣工程師發(fā)明的,它是一種圖形化的編程語言,這意味著編程的過程不是采用 文本,而是組合各種不同的圖形符號(hào),由于目標(biāo)用戶是電氣工程師,因此采用的符號(hào)非常類似于 電路符號(hào),以便于電氣工程師理解。
梯形圖主要用于位邏輯操作,其規(guī)范有PLCOpen負(fù)責(zé)制定,因此梯形圖是標(biāo)準(zhǔn)化的PLC編程語言, 該標(biāo)準(zhǔn)為IEC 61131-3。
如何閱讀梯形圖?梯形圖和電路圖的一個(gè)區(qū)別在于編制繪制方法不同。
梯形圖通常從左到右、從上到下編制, 原因在于:1.更容易讀圖我們的眼睛自然地從左向右讀圖,然后繼續(xù)到下一行,就像你閱讀的時(shí)候一樣。
2.易于在計(jì)算機(jī)上編制當(dāng)在計(jì)算機(jī)上編制梯形圖時(shí),你可以一次編制一行。
當(dāng)繪制出越來越多的行時(shí),它們將疊加在一起, 看起來就像一個(gè)梯子。
查看一個(gè)行數(shù)眾多的梯形圖的**方式,就是沿著屏幕上下滾動(dòng)。
3.執(zhí)行的順序*后一個(gè)原因在執(zhí)行的順序,也就是PLC運(yùn)行梯形圖的先后順序,更確切的說,就是梯形圖中 的指令如何依次執(zhí)行:PLC總是從梯形圖頂部開始,然后依次向下執(zhí)行。
梯形圖看起來非常像電路圖。
大多數(shù)人也是這樣開始學(xué)習(xí)編制梯形邏輯圖的。
但是還是有一些不同之處,主要的差異在于:PLC每次執(zhí)行梯形圖的一行,然后才繼續(xù)下一行電氣系統(tǒng)則是許多回路同時(shí)激活了解了這些關(guān)鍵的區(qū)別,現(xiàn)在讓我們開始學(xué)習(xí)梯形邏輯。
梯形圖基礎(chǔ)創(chuàng)建梯形圖時(shí),你首先看到的就是兩條豎線,就是在這兩條豎線之間進(jìn)行梯形圖的編制,其中 每一條水平線被稱為一個(gè)Rung(橫線):梯形邏輯符號(hào)就放置在這些水平線上,正如你在上圖中看到的,我在每一個(gè)水平線上標(biāo)記了數(shù)字, 以便于理解PLC是如何執(zhí)行梯形邏輯的。
你可能聽說過PLC掃描時(shí)間或掃描周期,簡(jiǎn)單地說,PLC首先 掃描其輸入,然后執(zhí)行程序,*后設(shè)置輸出。
但是PLC如何執(zhí)行我們的梯形邏輯?一次一條水平線。
這可能是梯形邏輯的*重要的一條規(guī)則:PLC一次只能執(zhí)行一條水平線,然后才是下一條。
實(shí)際上, PLC只能一次執(zhí)行一個(gè)邏輯符號(hào)。
編寫梯形邏輯梯形邏輯中的每個(gè)符號(hào)都是一個(gè)指令,初看起來這相當(dāng)令人困惑。
但是別擔(dān)心,我將用簡(jiǎn)單的例子 加以解釋。
讓我給你一個(gè)簡(jiǎn)單的實(shí)例,在這個(gè)例子當(dāng)中將引入兩個(gè)梯形邏輯符號(hào)。
那么,這些符號(hào)或指令到底是什么?它們是基本的邏輯指令,讓你可以創(chuàng)建一小段邏輯,也就是你的PLC程序。
如果你仔細(xì)看下面的 示例,可以看到兩個(gè)指令(符號(hào)):閉路檢查指令第一個(gè)指令被稱為閉路檢查,指令的符號(hào)看起來是這樣:這是一個(gè)條件指令,意思是說這個(gè)指令用來檢查某個(gè)條件是否滿足,例如檢查某個(gè)數(shù)據(jù)位是否 處于ON的狀態(tài)。
閉路檢查指令用來檢查某個(gè)地址的特定位,在上圖中指的是一個(gè)數(shù)字輸入的特定位,它也可以是 內(nèi)存位,甚至是輸出位。
閉路檢查指令也被稱為常開指令,基本上它類似于電路中的常開觸點(diǎn),因此可以對(duì)應(yīng)于一個(gè)點(diǎn)動(dòng)開關(guān)。
需要指出的是,每個(gè)閉路檢查指令必須要設(shè)置PLC中的一個(gè)地址。
輸入和輸出都是PLC中的內(nèi)存點(diǎn)位。
在上面的示例中,閉路判斷指令設(shè)置地址I0.0作為條件, 這個(gè)地址屬于PLC的第一個(gè)輸入。
其工作原理如下:當(dāng)PLC掃描周期開始,PLC將首先檢查所有輸入的狀態(tài),然后將輸入狀態(tài)(0或1)寫入內(nèi)存中, 如果輸入是LOW,那么對(duì)應(yīng)的內(nèi)存位置位0,如果輸入是HIGH,則對(duì)應(yīng)的內(nèi)存位置為1.輸出線圈指令每個(gè)指令本身在PLC內(nèi)存中也有個(gè)位置,PLC會(huì)將指令的結(jié)果存入。
要了解PLC使用結(jié)果做什么,讓我們 看下一個(gè)指令:輸出線圈指令用來打開或關(guān)閉一個(gè)數(shù)據(jù)位。
正如你看到的,該符號(hào)位于水平線的右側(cè),意思是(同一水平線上)之前的指令作為該指令的條件。
在我們的示例中,之前的指令就是閉路檢查指令。
讓我們檢查下該指令的*終結(jié)果,來了解其工作過程:PLC 掃描 | 輸入 -> I0 字節(jié)程序執(zhí)行 | I0.0 -> Xic結(jié)果在上面的動(dòng)畫中,你會(huì)看到PLC首先掃描所有的輸入,并將輸入狀態(tài)存入內(nèi)存。
一個(gè)內(nèi)存 字節(jié)是彼此相鄰的8位。
一旦PLC保存了所有輸入的狀態(tài),程序?qū)㈤_始運(yùn)行。
第一個(gè)要執(zhí)行的指令是閉路檢查指令, 該指令的結(jié)果與內(nèi)存位狀態(tài)一致 —— 這也是該指令被稱為常開指令的原因 —— 在正常狀態(tài) (內(nèi)存位為0),觸點(diǎn)將保持常開,結(jié)果將為0,但是如果內(nèi)存位為1,觸點(diǎn)將閉合,結(jié)果也 變?yōu)?。
*后,讓我們看這條線的輸出:XiC結(jié)果 -> 輸出線圈輸出線圈 -> 輸出字節(jié)現(xiàn)在,輸出線圈指令使用了前序指令的結(jié)果作為條件。
這被稱為RLO(邏輯操作結(jié)果)。
邏輯操作 結(jié)果保存在PLC內(nèi)存中的特定位置。
在西門子S7系列PLC中,這個(gè)位置被稱為狀態(tài)字。
在PLC術(shù)語中,一個(gè)WORD是16位,或2個(gè)字節(jié)。
輸出線圈指令很簡(jiǎn)單,它只是將其結(jié)果設(shè)置為與條件相同的值。
在PLC中所有的數(shù)字輸出也映射到內(nèi)存地址。
我們將其稱為輸出位,因此地址Q0對(duì)應(yīng)Q0.0 - Q0.7. 輸出線圈指令的結(jié)果將被寫入內(nèi)存位Q0.0。
當(dāng)PLC執(zhí)行完整個(gè)程序,它將設(shè)置輸出。
每個(gè)輸出被設(shè)置為與輸出內(nèi)存位一致的狀態(tài)。
掃描周期這個(gè)概念非常重要,當(dāng)你在編制梯形邏輯時(shí)一定要記住。
否則你的程序可能會(huì)有 奇怪的行為。
我們將在下一個(gè)示例中展示這一點(diǎn),同時(shí)引入3個(gè)新的梯形邏輯指令。
輸出鎖存在前面的示例中,我們學(xué)會(huì)了如何讀取數(shù)字輸入的狀態(tài),并將數(shù)字輸出設(shè)置為同樣的狀態(tài)。
需要指出數(shù)字輸入是一個(gè)暫態(tài)按鈕,因?yàn)樗鼉?nèi)部有個(gè)彈簧,這意味著按鈕只有在你一直按下 時(shí)才會(huì)保持激活。
上面的梯形圖可以正常工作,不過你可能注意到,只有輸入激活時(shí)輸出才會(huì)激活。
因此你不 得不用手指一直按住按鈕,才能讓輸出保持激活。
但是想一下,如果輸出控制的是一個(gè)通風(fēng)系統(tǒng) 里的風(fēng)機(jī),那么要求操作員一直按著按鈕就很不合理了。
我們需要一個(gè)辦法來保持輸出 激活,即使操作員已經(jīng)釋放了按鈕。
在梯形邏輯中,有兩種辦法實(shí)現(xiàn)這一點(diǎn):如果你熟悉電路,就會(huì)發(fā)現(xiàn)這很類似,這杯稱為鎖存(Latching)或者自我保持(self holding)。
這個(gè)名稱揭示了其工作原理:線圈簡(jiǎn)單的維持自己前一個(gè)掃描周期的狀態(tài)。
讓我們單步分析一下:當(dāng)PLC第一次運(yùn)行這個(gè)梯形邏輯程序時(shí)(按下按鈕時(shí)),輸出將被激活,就像前一個(gè)例子一樣。
有趣的事情發(fā)生在后續(xù)運(yùn)行邏輯的時(shí)候。
因?yàn)檫@是一個(gè)暫態(tài)按鈕,它不會(huì)一直激活。
依賴于 PLC程序的運(yùn)行總時(shí)長(zhǎng),按鈕可能在第二次、第三次或第四次運(yùn)行時(shí)不再激活。
讓我們進(jìn)入按鈕釋放之后的第一個(gè)掃描周期。
輸出還處于激活狀態(tài),因?yàn)樯弦粋€(gè)掃描周期按鈕被按下。
這時(shí)PLC將再次讀取輸入并存入對(duì)應(yīng) 的內(nèi)存位。
內(nèi)存位I0.0”這次將存入“0”。
因此I0.0的閉路判斷指令結(jié)果為false或“0”。
但是你可以看到,還有另一個(gè)并行的閉路判斷指令,不過該指令的條件是輸出內(nèi)存位,因此 其結(jié)果為true或“1”,因?yàn)檫@是輸出還處于激活狀態(tài)。
只要輸出內(nèi)存位是“1”,輸出就會(huì)激活, 它就像自己的條件一樣。
自保持指令與其他指令并聯(lián)的原因在于構(gòu)造一個(gè)OR條件,在這個(gè)示例當(dāng)中,I0.0或Q0.0中 的一個(gè)為true都會(huì)激活輸出。
開路檢查指令你剛學(xué)習(xí)了如何編制一個(gè)有用的PLC梯形圖程序。
一個(gè)激活輸出的按鈕。
在我們的示例中,這個(gè) 可能是連接到一個(gè)風(fēng)機(jī)的觸點(diǎn),輸出可以自保持。
但是這個(gè)程序有個(gè)問題,怎么關(guān)掉風(fēng)機(jī)?我們希望能夠再次關(guān)掉風(fēng)機(jī)。
*簡(jiǎn)單的方法是添加一個(gè)停機(jī)按鈕,該按鈕將連接到PLC的第二 個(gè)輸入,因此其內(nèi)存地址為I0.1。
問題是,我們?yōu)橥C(jī)按鈕使用什么指令?更重要的,我們應(yīng)當(dāng)將其放在梯形圖的哪里?第一個(gè)問題的答案是另一個(gè)梯形邏輯指令:開路檢查指令,它看起來如下:這個(gè)指令和閉路檢查指令的工作方式恰恰相反,其結(jié)果是條件的反轉(zhuǎn)。
這意味著,如果條件 為“0”,那么結(jié)果為“1”,反之亦然。
如果你考慮一下,就會(huì)發(fā)現(xiàn)這恰恰就是我們希望停機(jī)按鈕做的事情。
要關(guān)閉輸出線圈,我們 必須給出條件“0”。
現(xiàn)在是第二個(gè)問題,在哪里放置這個(gè)指令?我們需要將其放在自鎖指令之后,或者說,串聯(lián)起來。
否則當(dāng)停機(jī)按鈕按下時(shí),還是會(huì)輸出“1”。
現(xiàn)在,梯形邏輯如下:你可以看到開路檢查指令將其條件的反轉(zhuǎn)結(jié)果傳遞給輸出線圈。
要再次激活輸出,就需要 再次按下啟動(dòng)按鈕。
在上面的示例中,我使用了一個(gè)開路判斷指令作為停機(jī)按鈕。
這不是好的實(shí)踐!我們*終遵循**實(shí)踐,修改后的梯形圖如下:雖然我們修改了指令,梯形圖的運(yùn)行沒有變化,這是因?yàn)槲覀兺瑯有薷牧宋锢硗C(jī)按鈕的 工作方式。