在前一個教程PLC編程入門-梯形圖中,咱們學習了梯形圖的基礎知識以及一些基本的指令。在今天這個教程裏,咱們將學習如何採用梯形邏輯解決實際問題,以及如何進行PLC編程,同時咱們還會學習一些新的梯形邏輯指令。程序員
讓咱們從上一個教程中的鎖存(latch)指令繼續。在PLC編程中,鎖存並非保持線圈狀態的惟一方法。編程
要快速入門軟件開發,土建匯智網的在線互動編程課程。網絡
set/reset指令在AB的術語中被稱爲latch/unlatch,其做用就是讓你不使用觸點就實現鎖存功能。所以你能夠在梯形邏輯中只使用一個指令就設置輸出,而後在另外一個地方復位線圈。函數
set或latch指令的符號以下:學習
reset或unlatch指令的符號以下:3d
set/reset指令包含兩個線圈,可是控制同一個地址位。當你給set線圈一個脈衝時,該地址位將置位,與普通線圈的區別在於,set線圈將一直保持,直到使用reset線圈復位。blog
當你在構建包含上千點位的大型PLC程序時,或者鏈接到一個SCADA系統時,確保你瞭解在哪裏置位,又在哪裏復位。教程
使用兩個線圈來實現set/reset功能帶來了一個新問題:開發
哪一個線圈的優先級高?get
當set和reset的條件都是true時,線圈的狀態最終是什麼?
PLC最後執行的哪一個,結果就是哪一個
若是你在一個網絡中置位/set了線圈,而後在下面的網絡中復位/reset,那麼線圈將復位。記住,PLC是從上到下依次執行梯形邏輯指令的。
實現set/reset功能的另外一種方式是使用函數塊,函數塊不只能夠用於梯形邏輯,也能夠用於函數塊圖和結構化文本代碼中。
第一個函數塊被稱爲set優先的單穩模塊,或者SR或set/reset函數塊。set具備最高的優先級,意思是當set和reset的條件同時爲真時,輸出將置位。
SR函數塊的符號以下:
它有兩個輸入:一個用於置位/set,一個用於復位/reset。在另外一側則有一個輸出。
另外一個函數塊被稱爲RS或reset優先的單穩模塊。基本上它和SR的工做原理同樣,區別在於reset的優先級最高:
咱們已經學習了一些梯形圖的基礎知識和經常使用指令,是時候開始實現一些真正的任務了。
由於要成爲一個優秀的PLC梯形圖程序員,只瞭解指令是不夠的,必需要可以使用梯形邏輯來解決實際問題。如今讓咱們看一下如何使用梯形圖開發PLC程序來解決現實世界的問題。
當我在使用梯形邏輯解決問題時,喜歡思考的一件事就是從條件的角度去思考,這一般被成爲組合式邏輯,你可能也據說過這個,或者至少了解邏輯門吧 —— 與、或、非等等。
我要給出的第一個實例是互鎖邏輯的實現。由於使用簡單的指令你就能夠實現互鎖功能。
在不少PLC程序中都會用到互鎖,由於它能夠避免不相容的狀況同時激活。一個經典的案例就是star/delta電機的控制。若是你在用PLC控制一個star/delta電機,你必須保證當delta繼電器的輸出激活時,star繼電器的輸出必定不能激活。
讓咱們看一下兩個電機的互鎖示例,要求在同一時刻只有一個電機能夠運轉。每一個電機都有一個start按鈕和stop按鈕,分別用來啓動和中止電機。
電機的啓動和中止可使用前面介紹的set/reset指令實現。
每一個電機的啓動和中止按鈕的第一個條件固然是電機啓動或中止的條件。因爲電機能夠處於兩種狀態之一,咱們須要檢查這兩種狀態:
若是按下啓動按鈕 AND 沒有按下中止按鈕 那麼激活電機
若是按下中止按鈕 那麼中止電機
因爲電機只可能處於這兩種狀態,咱們只須要檢查電機激活的條件。由於若是這些條件都不知足,那麼電機將不會激活。
咱們也能夠添加鎖定功能:
若是按下啓動按鈕 OR 電機處於運轉狀態 AND 沒有按下中止按鈕 那麼激活電機
須要注意的一點是,咱們已經將功能分解爲邏輯實現:
你能夠看到,這些邏輯關係可使用梯形邏輯很輕鬆地實現。
啓動按鈕和電機狀態的邏輯關係是或/OR,當啓動按鈕或電機狀態這兩個條件之一爲真時,電機都將被激活。
在梯形邏輯中,或/OR邏輯使用兩個並聯的指令來實現:
or-gate-ladder-logic-1.png
另外一方面,要讓電機保持激活,就不能按下中止按鈕。可是啓動按鈕和電機狀態,和中止按鈕的 關係是與/AND,由於要保持電機激活,就要求知足啓動條件同時不能按下中止按鈕。
與/AND邏輯使用指令的串聯來實現:
梯形圖邏輯的一個優點就是你能夠圖形化的實現邏輯。由於若是你在每一個網絡中沿着線從左向右看,就能夠了解指令間的邏輯關係。
或/OR邏輯老是有兩個選項,所以會有兩條線,與/AND只有一個選項,所以只有一條線。
上面示例中還有一種邏輯關係沒有介紹。要保持電機激活,就不能按下中止按鈕,爲此咱們須要使用非/NOT邏輯。
非/NOT邏輯可使用反觸點來實現:
下面咱們使用一個常規的閉合繼電器來表示中止按鈕,所以就實現了邏輯的翻轉:
固然這部分梯形邏輯只是一個電機的控制邏輯。在咱們的實例中包含了兩個電機,所以完整的 梯形圖邏輯看起來是這樣:
如今咱們至少還須要實現兩個電機的互鎖,互鎖也能夠視爲邏輯。
實際上,若是你把互鎖視爲邏輯,那麼就很容易實現它,由於電機互鎖只須要一個額外的條件:另外一個電機處於中止狀態。 所以若是電機1#要激活,電機2#就不能激活,反之亦然:
若是按下1#電機啓動按鈕 OR 1#電機運行中 AND 沒有按下1#電機的中止按鈕 AND 2#電機沒有運行 那麼激活1#電機
若是按下2#電機啓動按鈕 OR 2#電機運行中 AND 沒有按下2#電機的中止按鈕 AND 1#電機沒有運行 那麼激活2#電機
只須要在梯形圖中增長一個反向繼電器:
這個簡單的示例展現瞭如何將一個現實的問題分解爲邏輯步驟,而後用梯形圖編制PLC程序來解決這個問題。可是這些邏輯關係不只僅 用於常規的開閉指令,它們也能夠用於不少不一樣的PLC指令,例如計數器和定時器。
這個教程的核心就在於,你能夠學會如何實現梯形邏輯。如今是作練習的時候了:
3個電機的啓動/中止控制,最多隻有2個電機能夠同時運行。例如若是2#電機和3#電機在運行,那麼就不能 啓動1#電機。
但願你喜歡這個練習,並從中學到一些東西。
這個練習引入了另外一個問題,這將引導咱們學習下一個梯形邏輯指令。問題不在於梯形邏輯自己, 而是因爲鏈接到輸入的按鈕引發的。
一般你但願操做員只會按一下啓動按鈕或者中止按鈕 - 很短暫地按一下。可是現實狀況是, 操做員會按住按鈕很長時間,另外一種狀況是按鈕按下後被卡住了,這種常見的硬件故障也會 影響PLC程序的運行。
若是某個電機的中止按鈕被卡住,那麼你就沒法再啓動這個電機了。事實上,當你在PLC上使用 暫態按鈕時,這是一個常常遇到的問題。
不過別擔憂,咱們有辦法解決這個問題,幸運的是有針對這個問題的現成的梯形邏輯指令, 單觸發指令。
如今該學習新的指令了。我將介紹第一種類型的單觸發指令 - 上升沿檢測指令,R_TRIG, 在某些平臺上,例如AB,這個指令被稱爲OSR - 上升沿單觸發
正如名稱所表達的,這些梯形邏輯指令檢查一個數字信號的上升沿,這意味着他們將只檢查 數字信號中從0到1的變化。
這是一個數字信號上升沿的圖示:
信號的長度是可有可無的,由於咱們只檢查信號狀態中發生的變化。所以,這些用來檢測上升沿的 梯形邏輯指令完美匹配啓動按鈕和中止按鈕的使用需求。
上升沿檢測繼電器看起來與常開觸點相似,實際上它使用相同的符號,只是多了一個P在中間:
上升沿觸點的功能也有所不一樣,由於這個指令不是檢查某個點位的狀態,而是檢查該點位狀態 的變化,或者更確切地說是一個正向的從0到1的變化。
如今,因爲這個指令僅僅查看點位的狀態變化,所以即便按鈕卡住,因爲卡住後狀態再也不變化, 也就不會在後續的掃描週期中持續激活。這也是這些指令被成爲單觸發指令的緣由。
正如你看到的,這個指令只會在正向變化發生時給出一個脈衝。
最後,你也會看到上升沿檢測線圈:
它和上升沿觸點功能同樣,只是它是線圈而已。
你也可使用一個函數塊來實現上升沿檢測,這個函數塊被成爲R_TRIG,是一個標準的PLC指令。
和上升沿同樣,也有用來檢測降低沿的指令,或者成爲F_TRIG。AB稱之爲降低沿單觸發或OSF指令。
相似的,降低沿單觸發檢查信號狀態中從1到0的變化,以下圖所示:
降低沿檢測很是有用,例如能夠用來檢測設備的關閉。
降低沿指令包括降低沿觸點和降低沿線圈。它們被稱爲單觸發指令是由於只有在狀態從1遷移到0時 纔會激活。
取決於你要在梯形邏輯中檢測降低沿的位置,可使用觸點或線圈:
降低沿指令的一個典型應用場景就是,你須要檢測一個設備的中止,以便啓動另外一個設備。例如一個加熱設備和兩個風扇, 當一個加熱設備運行時須要同時運行某個風扇,可是當加熱設備關閉後,就須要當即運行第二個風扇以便加速冷卻。
你能夠在梯形邏輯練習3中嘗試解決這個問題,看看是否須要使用降低沿指令。
你也可使用一個函數塊來實現降低沿檢測,這個函數塊被成爲F_TRIG,是一個標準的PLC指令。
又學習了很多隻是,是時候作練習了。在個人觀點中,學習最好的方法就是解決問題。在這些 練習中你將使用上升沿和降低沿檢測指令。可是首先要記住單觸發指令僅在一個掃描週期有效。 若是你但願用它來啓動須要長時間運行的東西,就須要鎖定或使用set/reset指令。 .
使用一個啓動按鈕和中止按鈕來控制電機的啓停,可是要確保只在上升沿啓動或中止電機。
使用一個啓動和中止按鈕來控制一個加熱裝置和一個風扇。當加熱裝置關閉後,啓動第二個風扇。 當加熱裝置和第一個風扇都打開後,馬上關閉第二個風扇。
原文: 梯形圖邏輯實戰 - 匯智網