基於順序凸輪塊的 PLC 有限狀態機控制

凸輪定序器是一種常見的可程式邏輯控制器 (PLC) 功能。此定序器是有益的,因為可以以表格形式描述複雜的操作。也許該表的最佳用途是維護有限狀態機 (FSM) 的狀態變數。這解決了一個具有挑戰性的問題,特別是如果您嘗試使用梯形圖邏輯程式設計。

本文將探討 Crouzet Millenium Slim PLC 中所實現的凸輪功能。這款 PLC 是 DigiKey 提供的最小巧的 PLC 之一。如本文所示,在該 PLC 中實作一個中等複雜程度的狀態機非常容易。對於更進階的 Crouzet 編程,我們建議您使用順序功能圖 (SFC)。無論採用哪種方法,最佳實踐都是使用能夠產生最易讀程式碼的方法。這可以確保程式易於他人理解,對於快速恢復機器運作尤其重要。

測試裝置如圖 1 及圖 2 所示。圖中可見一台安裝在 PLC 訓練器上的 88983902 型 Millenium Slim PLC。PLC 由一個選擇開關控制,透過一個按鈕啟動循環,另一個按鈕中止循環。此凸輪控制序列的主要輸出和焦點為大型三相馬達啟動器。

裝置配置簡單,控制元件的連接均依照 Crouzet 規格書進行。馬達啟動器的連接方式與先前一篇關於中間繼電器的文章中所述相同。請注意,為了安全安裝高功率三相繫統,需要考慮額外的佈線和程式設計問題。

警報方式較為特殊,我們使用了一個串聯了 220ohm 電阻的揚聲器。警報音由一個 400Hz、佔空比 50% 的 PWM 訊號產生。雖然這在實際應用中可能並非良好做法,但它提供了一個很好的學習機會,可以了解 PLC 的操作和功能及其脈衝寬度調變 (PWM) 輸出。

安全提示:圖 1 和圖 2 所示的裝置僅用於演示目的。這是一個由桌上型電源(圖中未顯示)驅動的 24VDC 系統。對於高功率三相系統,必須遵循正確的安裝規範。此外,必須進行適當的控制和監控,以防止系統故障並及時通知操作人員故障狀況。您可以先搜尋關鍵字「UL 508A」來了解更多。

圖 1:Crouzet Millenium Slim PLC 安裝在兩個中間繼電器旁的圖片。

圖 2:Crouzet PLC 安裝在 PLC 訓練器上,帶有按鈕控制以及大型三相換向馬達接觸器。

安全性:需要額外的程式步驟來控制和監控三相反轉馬達啟動器。輔助觸點和聯鎖等主題超出了本文的範圍。

使用七步驟循環演示有限狀態機 (FSM)

此設定的目的是示範基於表格的有限狀態機的運作。在本練習中,我們將機器循環定義為:

  1. 空閒等待按鈕按下
  2. 透過三次短促的警報聲發出系統啟動訊號
  3. 正轉 5 秒
  4. 等待 3 秒
  5. 透過三次短促的警報聲發出系統啟動訊號
  6. 反轉 5 秒
  7. 返回空閒狀態

當選擇開關處於開啟位置且按下循環啟動按鈕時,循環開始。此序列的狀態圖如圖 3 所示。該圖是對六步驟列表的重述。每個氣泡包含狀態名稱以及稍後將要描述的期望輸出。如果你有興趣,這裡有一篇文章介紹如何使用 \LaTeX 建構該圖。值得一提的是,本技術論壇支援 \LaTeX 。它最適合用於展示數學方程式。

圖 3:編碼為 Crouzet CAM 函數的有限狀態機狀態序列

程式碼說明

現在我們已經了解了機器循環,可以繼續進行程式碼實作。圖 4 展示了功能塊圖 (FBD) 的實現。左側是 6 狀態機循環的代碼,右側是三警報系統的代碼。請注意,我們實作了兩個狀態機,它們都基於 CAM 函數。本文將聚焦在機器循環的有限狀態機。您可以下載本文末尾的附件來查看警報部分。

要理解 FBD 程式碼,我們需要先了解凸輪的工作原理。此時,您可以閱讀關於機械棘輪凸輪的側邊欄文章。這篇文章將幫助您建立一個與 Crouzet 功能塊直接類比的金屬模型。

圖 4:Crouzet 功能塊圖實現的機器循環,其中包含凸輪塊。

凸輪功能以查找表的形式運作。該塊有八個輸出。對於任何給定的狀態,我們可以自由選擇輸出的邏輯電平。圖 5 展示了「程式設計」表。六個狀態以行表示,輸出由列表示。對於任何給定的狀態,我們可以選擇 1 或 0。請注意,這些數字(僅使用了 7 個)與圖 3 狀態機中表示的數字相同。

此時,我們可以回到圖 4 的功能塊圖,看看機器是如何運作的:

  • 訊號 S1 被路由到輸出 O1,以驅動馬達正向線圈。
  • 訊號 S2 被送到輸出 O2,以驅動反向線圈。
  • 訊號 S3 被傳送到上升沿觸發 (R_TRIG) 區塊,該區塊用於啟動三警報循環。
  • 訊號 S4 和 S5 用於啟動延時定時器 (TON),以設定相應的延時。
  • 訊號 S6 發送至 PLC 輸出 O4,用於驅動前面板指示燈。
  • 訊號 S7 用於啟用或停用循環啟動按鈕(輸入 I3)。

選擇這些訊號是為了簡化 FBD 訊號路由。凸輪訊號的分配是為了清晰明了並儘量減少線路交叉。或許使用「文字」模式會更好,就像青色重設訊號一樣。

圖 5:凸輪功能以查找表的形式運行,狀態為行,各個輸出為列。

用於推進有限狀態機的脈衝訊號

機械棘輪凸輪體現了使用軟體凸輪模組的一大挑戰。具體來說,必須先使線圈失效,才能捕捉棘輪齒,為下一個狀態的推進做好準備。在軟體應用中,這意味著凸輪模組的「前進」輸入是邊緣觸發的。

請注意,凸輪模組由一個四輸入或門驅動。嚴格來說,當我們加上收集 3s 和 5s TON 定時器輸出的二輸入或閘時,它由五個不同的輸出驅動。這五個訊號都用於推進凸輪:

  1. 在狀態 0 時:凸輪 S7 處於啟動狀態。按下循環按鈕 (I3) 時,將產生脈衝。如果選擇開關 (I1) 處於開啟狀態,脈衝訊號會將凸輪推進到位置 2。

  2. 在狀態 1 下:凸輪 S7 指示燈點亮面板燈 (Q4)。同時啟動三警報機制。三警報凸輪系統完成後,其 S3 輸出訊號將返回,使主凸輪推進到狀態 2。

  3. 在狀態 2 下:凸輪 S7 輸出訊號保持面板燈亮起。同時,它也會透過輸出 S5 啟動 5s TON 定時器。 TON 定時器完成後,它會向主凸輪發送脈衝訊號,使其推進到狀態 3。

  4. 狀態 3 至 5 重複上述過程,分別用於發出訊號和反轉馬達。

以下是一個展示系統運作情況的簡短影片:

結論

CAM 模組提供了一種簡單的方法來編碼簡單的狀態機。這裡所說的「簡單」指的是連續的狀態 - 一個循環 - 如圖 3 所示。對於 Crouzet 應用中更複雜的狀態機,我們應該使用 SFC 語言。

如果您在使用 CAM 模組時遇到問題,請務必檢查您是否已對輸入進行寬鬆處理。使用脈衝訊號產生器(例如 R_TRIG)和自重設定時器會有所幫助。

CAM_Example.pcs (50.2 KB)

:books: 繼續探索更多工業控制系統資訊

如果您覺得本次討論對您有幫助,您可能還想了解以下內容:

:world_map: DigiKey 導航