Modicon PLC 中的單按鈕開關控制(包括梯形邏輯演示)

返回工業控制與自動化指南

單瞬時按鈕開關控制是一種便捷的機器啟動和停止方式,尤其是在使用帶燈按鈕的情況下。結果是一個簡化的控制面板,並帶有清晰的開關指示燈。這種帶燈按鈕的最大優點或許在於,它完全由軟體控制機器。如果發生故障,機器將停止運行,相關指示燈也會熄滅。

我們將使用梯形邏輯在 Schneider Electric Modicon TM221CE24T PLC 中實現控制模式。本演示本質上是學術性的,建議的解決方案可能並非最簡單的實作。相反,它試圖基於您已知的資訊,並指出 PLC 特有的編程功能。例如,我們將使用狀態變數和跳越指令。這兩項功能並非強制要求,但對於高階 PLC 程式設計來說,它們都是必備的知識。

技術提示:機器的「軟體控制」是重要的安全因素。為了更好地理解其含義,請考慮另一種情況。假設您的機器透過撥動開關或選擇開關來控制。在正常運作條件下,當開關置於開啟位置時,機器處於開啟狀態並運作。這種情況一直正常,直到機器發生故障並關閉。現在,機器的前面板顯示設定與內部狀態之間存在差異。更好的方法是使用帶燈的瞬時按鈕,機器的運作狀態會透過指示燈點亮來顯示。故障時指示燈熄滅。因此,機器的前面板始終能夠真實地反映機器的狀態。

安全:切勿 100% 信賴電子控制。務必進行風險評估,並將安全關鍵操作置於獨立的控制系統中。例如,緊急停止、光幕、油箱溢流或機器超速等控制應始終獨立於 PLC。我們應該將這些關鍵感測器輸入的副本傳送給 PLC,但切勿依賴 PLC 來處理所有情況。

圖 1:PLC 訓練器上的 Modicon TM221 PLC 和按鈕的圖片。

單按鈕控制的梯形邏輯實現

圖 2 展示了單一按鈕控制的梯形邏輯。首先,我們來了解它的一些程式設計特性:

  • 符號的使用:Modicon PLC 的記憶體位置是固定的。例如,輸出以 %Q 開頭,輸入以 %I 開頭,位元記憶體位置以 %M 開頭。我們不會使用這些難以記憶的名稱,而是使用描述性符號。這樣做的目的是使程式碼具有自文檔性。

  • 上升沿觸點:梯級 1 和梯級 2 具有上升沿觸點。這些觸點顯示為常開觸點,中間帶有「P」。在此程式碼中,L_PB1_Switch(帶燈按鈕 1 號開關元件)將在按鈕按下的上升沿對應的一個程式週期內評估為真。

  • 梯級 0 包含一個跳越至標籤的指令。它看起來像一個帶有 %L0 標籤的雙箭頭。如果梯級 0 的計算結果為真,我們將跳過梯級 1。此功能必須格外小心使用,因為該技術容易導致程式錯誤。到目前為止,我還沒能找到為該名稱添加別名的方法。因此,我們只能使用 %L 標識符。在我看來,這可能會引入一個非常難以排除的 bug。或許最好避免使用該功能,我們將在本文後面討論替代方案。

  • 輸入和輸出對應的使用:本項目包含三個程式組織單元(POU),包括 prgInMap、prgCtrl 和 prgOutMap(圖中未顯示)。輸入和輸出對應用於防止從主控制 POU 內部呼叫螺絲端子 I/O(%I 和 %Q)。雖然並非絕對必要,但這種程序風格可以簡化故障排除。它還能確保每個 I/O 點在專案中僅出現一次。這使得將來更改物理 I/O 變得非常容易,並且您確信不會錯過任何 %I 或 %Q。

技術提示觸點跳動對 PLC 程式設計師來說可能是一個問題,尤其是圖 2 所示的觸發系統。值得慶幸的是,大多數 PLC 都配備了濾波器,可以消除這種困擾。Modicon 數位輸入預設了 3ms 的濾波器。這應該可以減輕大多數輸入的觸點跳動。在 Modicon TM221 中,我們關閉了濾波器或將其延長至 12ms。

圖 2:單按鈕啟動停止控制的梯形圖邏輯。

梯形圖邏輯程式的基本概念是尋找按鈕按下的上升沿。偵測到按鈕按下後,狀態變數就會切換。

  • 如果以語言表達,與梯形圖 0 相關的主要思想是:「如果狀態變數已設置,並且按鈕按下了上升沿,則清除狀態變數。」

  • 梯形圖 1 的意思是:「如果狀態變數已清除,並且按鈕按下了,則設定狀態變數。」

  • 梯形圖 2 對於本對話來說並不特別重要。它是眾多可能與狀態變數相關的梯形圖之一。例如,如果狀態變數已設置,我們可以啟動馬達以及點亮的按鈕燈。

這兩個語句似乎足以解決這種情況,但存在一個問題。

無需進一步關注,梯級 1 總是會撤銷梯級 0。

考慮發生按鈕按下的程式掃描。按鈕按下事件在梯級 0 和梯級 1 中都將評估為真。假設狀態變數已設置,梯級 0 將透過重設線圈將 0 放入狀態變數的記憶體位置。

這就是我們遇到麻煩的地方。

對於與按鈕按下上升沿相關的程序掃描,梯級 1 將狀態變數視為清零,然後透過置位線圈將 1 放入狀態儲存單元。這會撤銷梯級 0 中的所有操作。這兩個梯級合在一起什麼也不做,狀態變數永遠保持在置位狀態。

解決這種情況的一種方法是添加跳越指令。如果 Rung 0 的計算結果為真,則跳過 Rung 1。因此,Rung 1 永遠沒有機會撤銷 Rung 0。如前所述,跳轉至標籤操作有效,但如果我們不小心使用了錯誤的標籤,可能導致程式碼難以排除故障。

在本文的開頭,我提到了軟體控制機器的概念。這項重要考慮包含在 Rung 0 中。請注意,GLOBAL_FAULT 變數用於強制狀態變數進入重設狀態。由於跳過 Rung 1,操作員將無法在故障存在時重新啟動機器。在發生故障時,任何情況下都不會重新斷言狀態變數。這可以防止意外啟動,即使啟動按鈕被物理卡住也是如此。

技術提示:按鈕使用上升沿檢測可以提高安全性。在本範例程式碼中,它可以防止不耐煩的操作員和技術人員物理卡住啟動開關。要啟動機器,按鈕必須完成從關閉到開啟的整個循環。這比電平敏感的使用者介面更受歡迎,因為電平敏感的使用者介面會導致旁路,例如當牙籤卡到啟動按鈕時。

本例中最後一個,或許也是最重要的接點是 SB_FIRSTRUN。此系統變數在第一次(且僅在第一次)程式掃描時為真。此操作會強制狀態變數進入清除狀態。因此,每次 PLC 重新啟動或在電源故障後啟動時,系統都會以重設(關閉)狀態啟動。這可以防止設備意外啟動,從而保護機器操作員、維修機器的技術人員以及機器本身。

記住安全提示,不要依賴此機制。務必添加冗餘且獨立的系統,以防止設備意外啟動。

影片 1 示範了系統的運作。您可以觀察到,點亮的綠色面板指示燈會透過按鍵激活,然後關閉。同時,您也可以觀察到,按下紅色按鈕會停止系統。在本例中,它模擬了 GLOBAL_FAULT 情況。您可以聽到背景中大型三相馬達啟動器和介入繼電器的聲音。

影片 1:綠色發光按鈕的單按鈕控制示範。

修改程式碼以在不使用跳躍指令的情況下運行

我們可以修改程式碼以消除梯級 1 上的跳轉指令。一種方案是新增圖 3 所示的 L_PB1_LOCKOUT 變數。此變數的作用與跳躍指令相同,即每當梯級 0 的計算結果為真時,停用梯級 1。在這兩種方案中,圖 3 列出的方案可能更安全,因為它消除了跳躍指令。它也更容易閱讀。用英語來說,我們會說:“如果梯級未處於鎖定狀態,狀態變數已清除,並且發光按鈕出現上升沿,則將狀態更改為活動狀態。

圖 3:程式碼清單中包含一個用於防止啟動梯級 1 的帶燈按鈕 1 鎖定變數。

最後的想法

現在,我們應該考慮將這段程式碼封裝到使用者定義功能區塊 (UDFB) 中。這似乎對我們的程式碼庫來說是一個有用的補充。

您覺得怎麼樣?這是處理單按鈕開關控制的好方法嗎?我們遺漏了什麼嗎?請在下方留下您的評論和建議。

附註:此組件基於先前文章中介紹的 PLC 訓練器建構。點擊連結查看零件清單。

返回工業控制與自動化指南