1. 程式人生 > >PLC程式設計梯形圖實戰

PLC程式設計梯形圖實戰

在前一個教程PLC程式設計入門-梯形圖中,我們學習了梯形圖的基礎知識以及一些基本的指令。在今天這個教程裡,我們將學習如何採用梯形邏輯解決實際問題,以及如何進行PLC程式設計,同時我們還會學習一些新的梯形邏輯指令。

讓我們從上一個教程中的鎖存(latch)指令繼續。在PLC程式設計中,鎖存並不是保持線圈狀態的唯一方法。

要快速入門軟體開發,土建匯智網的線上互動程式設計課程

1、置位/復位指令

set/reset指令在AB的術語中被稱為latch/unlatch,其作用就是讓你不使用觸點就實現鎖存功能。因此你可以在梯形邏輯中只使用一個指令就設定輸出,然後在另一個地方復位線圈。

set或latch指令的符號如下:

set latch

reset或unlatch指令的符號如下:

unset unlatch

set/reset指令包含兩個線圈,但是控制同一個地址位。當你給set線圈一個脈衝時,該地址位將置位,與普通線圈的區別在於,set線圈將一直保持,直到使用reset線圈復位。

當你在構建包含上千點位的大型PLC程式時,或者連線到一個SCADA系統時,確保你瞭解在哪裡置位,又在哪裡復位。

1.1 置位或復位的優先順序

使用兩個線圈來實現set/reset功能帶來了一個新問題:

哪個線圈的優先順序高?

當set和reset的條件都是true時,線圈的狀態最終是什麼?

PLC最後執行的哪個,結果就是哪個

如果你在一個網路中置位/set了線圈,然後在下面的網路中復位/reset,那麼線圈將復位。記住,PLC是從上到下依次執行梯形邏輯指令的。

1.2 置位/復位函式塊

實現set/reset功能的另一種方式是使用函式塊,函式塊不僅可以用於梯形邏輯,也可以用於函式塊圖和結構化文字程式碼中。

  • SR函式塊

第一個函式塊被稱為set優先的單穩模組,或者SR或set/reset函式塊。set具有最高的優先順序,意思是當set和reset的條件同時為真時,輸出將置位。

SR函式塊的符號如下:

set reset function block

它有兩個輸入:一個用於置位/set,一個用於復位/reset。在另一側則有一個輸出。

  • RS函式塊

另一個函式塊被稱為RS或reset優先的單穩模組。基本上它和SR的工作原理一樣,區別在於reset的優先順序最高:

reset set function block

2、梯形圖邏輯實戰

我們已經學習了一些梯形圖的基礎知識和常用指令,是時候開始實現一些真正的任務了。

因為要成為一個優秀的PLC梯形圖程式設計師,只瞭解指令是不夠的,必須要能夠使用梯形邏輯來解決實際問題。現在讓我們看一下如何使用梯形圖開發PLC程式來解決現實世界的問題。

當我在使用梯形邏輯解決問題時,喜歡思考的一件事就是從條件的角度去思考,這通常被成為組合式邏輯,你可能也聽說過這個,或者至少了解邏輯閘吧 —— 與、或、非等等。

我要給出的第一個例項是互鎖邏輯的實現。因為使用簡單的指令你就可以實現互鎖功能。

在很多PLC程式中都會用到互鎖,因為它可以避免不相容的情況同時啟用。一個經典的案例就是star/delta電機的控制。如果你在用PLC控制一個star/delta電機,你必須保證當delta繼電器的輸出啟用時,star繼電器的輸出一定不能啟用。

2.1 start/stop邏輯示例

讓我們看一下兩個電機的互鎖示例,要求在同一時刻只有一個電機可以運轉。每個電機都有一個start按鈕和stop按鈕,分別用來啟動和停止電機。

start stop 2 motors

電機的啟動和停止可以使用前面介紹的set/reset指令實現。

每個電機的啟動和停止按鈕的第一個條件當然是電機啟動或停止的條件。由於電機可以處於兩種狀態之一,我們需要檢查這兩種狀態:

如果按下啟動按鈕 AND 沒有按下停止按鈕 那麼啟用電機

如果按下停止按鈕 那麼停止電機

由於電機只可能處於這兩種狀態,我們只需要檢查電機啟用的條件。因為如果這些條件都不滿足,那麼電機將不會啟用。

我們也可以新增鎖定功能:

如果按下啟動按鈕 OR 電機處於運轉狀態 AND 沒有按下停止按鈕 那麼啟用電機

需要注意的一點是,我們已經將功能分解為邏輯實現:

start stop ladder logic

你可以看到,這些邏輯關係可以使用梯形邏輯很輕鬆地實現。

2.2 使用梯形圖實現與/AND、或/OR邏輯

啟動按鈕和電機狀態的邏輯關係是或/OR,當啟動按鈕或電機狀態這兩個條件之一為真時,電機都將被啟用。

在梯形邏輯中,或/OR邏輯使用兩個並聯的指令來實現:

or-gate-ladder-logic-1.png

or gate ladder logic

另一方面,要讓電機保持啟用,就不能按下停止按鈕。但是啟動按鈕和電機狀態,和停止按鈕的 關係是與/AND,因為要保持電機啟用,就要求滿足啟動條件同時不能按下停止按鈕。

與/AND邏輯使用指令的串聯來實現:

and gate ladder logic

梯形圖邏輯的一個優勢就是你可以圖形化的實現邏輯。因為如果你在每個網路中沿著線從左向右看,就可以瞭解指令間的邏輯關係。

或/OR邏輯總是有兩個選項,因此會有兩條線,與/AND只有一個選項,因此只有一條線。

2.3 使用梯形圖實現非/NOT邏輯

上面示例中還有一種邏輯關係沒有介紹。要保持電機啟用,就不能按下停止按鈕,為此我們需要使用非/NOT邏輯。

非/NOT邏輯可以使用反觸點來實現:

not gate ladder logic

下面我們使用一個常規的閉合繼電器來表示停止按鈕,因此就實現了邏輯的翻轉:

start stop motor ld instructions

2.4 使用梯形圖實現互鎖邏輯

當然這部分梯形邏輯只是一個電機的控制邏輯。在我們的例項中包含了兩個電機,因此完整的 梯形圖邏輯看起來是這樣:

motor-control-2-motors-ladder-logic

現在我們至少還需要實現兩個電機的互鎖,互鎖也可以視為邏輯。

實際上,如果你把互鎖視為邏輯,那麼就很容易實現它,因為電機互鎖只需要一個額外的條件:另一個電機處於停止狀態。 因此如果電機1#要啟用,電機2#就不能啟用,反之亦然:

如果按下1#電機啟動按鈕 OR 1#電機執行中 AND 沒有按下1#電機的停止按鈕 AND 2#電機沒有執行 那麼啟用1#電機

如果按下2#電機啟動按鈕 OR 2#電機執行中 AND 沒有按下2#電機的停止按鈕 AND 1#電機沒有執行 那麼啟用2#電機

只需要在梯形圖中增加一個反向繼電器:

motor-control-interlocking-ladder-logic

這個簡單的示例展示瞭如何將一個現實的問題分解為邏輯步驟,然後用梯形圖編制PLC程式來解決這個問題。但是這些邏輯關係不僅僅 用於常規的開閉指令,它們也可以用於很多不同的PLC指令,例如計數器和定時器。

2.5 梯形圖邏輯實現練習題:互鎖的實現

這個教程的核心就在於,你可以學會如何實現梯形邏輯。現在是做練習的時候了:

  • 功能需求

3個電機的啟動/停止控制,最多隻有2個電機可以同時執行。例如如果2#電機和3#電機在執行,那麼就不能 啟動1#電機。

  • 輸入

ex 1 input

  • 輸出

ex 1 output

希望你喜歡這個練習,並從中學到一些東西。

這個練習引入了另一個問題,這將引導我們學習下一個梯形邏輯指令。問題不在於梯形邏輯本身, 而是由於連線到輸入的按鈕引起的。

3、訊號沿單觸發指令

通常你希望操作員只會按一下啟動按鈕或者停止按鈕 - 很短暫地按一下。但是現實情況是, 操作員會按住按鈕很長時間,另一種情況是按鈕按下後被卡住了,這種常見的硬體故障也會 影響PLC程式的執行。

如果某個電機的停止按鈕被卡住,那麼你就無法再啟動這個電機了。事實上,當你在PLC上使用 暫態按鈕時,這是一個經常遇到的問題。

不過別擔心,我們有辦法解決這個問題,幸運的是有針對這個問題的現成的梯形邏輯指令, 單觸發指令。

3.1 上升沿檢測

現在該學習新的指令了。我將介紹第一種型別的單觸發指令 - 上升沿檢測指令,R_TRIG, 在某些平臺上,例如AB,這個指令被稱為OSR - 上升沿單觸發

正如名稱所表達的,這些梯形邏輯指令檢查一個數字訊號的上升沿,這意味著他們將只檢查 數字訊號中從0到1的變化。

這是一個數字訊號上升沿的圖示:

positive-rising-edge

訊號的長度是無關緊要的,因為我們只檢查訊號狀態中發生的變化。因此,這些用來檢測上升沿的 梯形邏輯指令完美匹配啟動按鈕和停止按鈕的使用需求。

  • 上升沿觸點與線圈

上升沿檢測繼電器看起來與常開觸點類似,實際上它使用相同的符號,只是多了一個P在中間:

positive-transition-sensing-contact-ladder-diagram-symbol-300x300

上升沿觸點的功能也有所不同,因為這個指令不是檢查某個點位的狀態,而是檢查該點位狀態 的變化,或者更確切地說是一個正向的從0到1的變化。

現在,由於這個指令僅僅檢視點位的狀態變化,因此即使按鈕卡住,由於卡住後狀態不再變化, 也就不會在後續的掃描週期中持續啟用。這也是這些指令被成為單觸發指令的原因。

positive-edge-animation-plc-ladder-logic

正如你看到的,這個指令只會在正向變化發生時給出一個脈衝。

最後,你也會看到上升沿檢測線圈:

positive-transition-sensing-coil-ladder-diagram-symbol-300x300

它和上升沿觸點功能一樣,只是它是線圈而已。

  • R_TRIG函式塊

你也可以使用一個函式塊來實現上升沿檢測,這個函式塊被成為R_TRIG,是一個標準的PLC指令。

3.2 下降沿檢測

和上升沿一樣,也有用來檢測下降沿的指令,或者成為F_TRIG。AB稱之為下降沿單觸發或OSF指令。

類似的,下降沿單觸發檢查訊號狀態中從1到0的變化,如下圖所示:

negative-falling-edge

下降沿檢測非常有用,例如可以用來檢測裝置的關閉。

  • 下降沿觸點和線圈

下降沿指令包括下降沿觸點和下降沿線圈。它們被稱為單觸發指令是因為只有在狀態從1遷移到0時 才會啟用。

negative-transition-sensing-contact-ladder-diagram-symbol-300x300

取決於你要在梯形邏輯中檢測下降沿的位置,可以使用觸點或線圈:

negative-transition-sensing-coil-ladder-diagram-symbol-300x300

下降沿指令的一個典型應用場景就是,你需要檢測一個裝置的停止,以便啟動另一個裝置。例如一個加熱裝置和兩個風扇, 當一個加熱裝置執行時需要同時執行某個風扇,但是當加熱裝置關閉後,就需要立即執行第二個風扇以便加速冷卻。

你可以在梯形邏輯練習3中嘗試解決這個問題,看看是否需要使用下降沿指令。

  • F_TRIG函式塊

你也可以使用一個函式塊來實現下降沿檢測,這個函式塊被成為F_TRIG,是一個標準的PLC指令。

又學習了不少只是,是時候做練習了。在我的觀點中,學習最好的方法就是解決問題。在這些 練習中你將使用上升沿和下降沿檢測指令。但是首先要記住單觸發指令僅在一個掃描週期有效。 如果你希望用它來啟動需要長時間執行的東西,就需要鎖定或使用set/reset指令。 .

3.3 梯形圖邏輯實現練習題:上升沿檢測

  • 功能需求

使用一個啟動按鈕和停止按鈕來控制電機的啟停,但是要確保只在上升沿啟動或停止電機。

  • 輸入

ex 2 input

  • 輸出

ex 2 output

3.4 梯形圖邏輯實現練習題:下降沿檢測

  • 功能需求

使用一個啟動和停止按鈕來控制一個加熱裝置和一個風扇。當加熱裝置關閉後,啟動第二個風扇。 當加熱裝置和第一個風扇都開啟後,立刻關閉第二個風扇。

  • 輸入

ex 3 input

  • 輸出

ex 3 output


原文: 梯形圖邏輯