PLC 程式語言是 IEC 61131-3 標準的一部分
讓我們共同慶祝國際電工委員會 (IEC) 61131-3 標準發布 30 週年。該標準的第三部分描述了五種可程式邏輯控制器 (PLC) 程式語言,包括:
- 梯形圖 (LD)
- 功能塊圖 (FBD)
- 結構化文字 (ST)
- 指令列表 (IL)
- 順序功能圖 (SFC)
每個 PLC 製造商都可以自由地使用一種或多種語言開發工具,以針對其細分市場和用戶群。 Crouzet 選擇了使用 FBD 和 SFC。由此產生的 IEC 61131-3 子集已很好地整合到 Crouzet Soft 應用程式中。這是一個精簡的介面,其中巧妙設計的 FBD 和 SFC 模組相互支援。
順序功能圖 (SFC) Crouzet 實作簡介
本文是一篇教育文章,描述了程式設計師的第一個 SFC 應用。目標是透過開發一個從 0 到 7 計數的基於狀態的二進位計數器來學習 SFC。圖 1 所示的基於 SFC 的程式體現了您在數位邏輯課程中所學的知識。該程式足夠複雜,可以幫助我們了解 SFC 的一些細微之處。它還展示了一種您可能在未來 SFC 程式設計中會用到的程式設計風格。請花點時間觀看這段 13s 的視頻,以了解計數器的模擬過程。
圖 1:二進位計數器的順序功能圖 (SFC) 實作。
影片 1:基於 SFC 的二進位計數器在 Crouzet-Soft 模擬器中的運作。
基於 SFC 的二進位計數器的狀態邏輯
圖 1 中的程式碼是一個 8 狀態的狀態機。每個狀態都由一個 SFC 步進區塊實現,因此在任何給定時間,只能有一個狀態處於活動狀態。我們可以將其想像成一個代幣環,其中每個 SFC 步進區塊持有代幣一個週期,然後將其傳遞給下一個。在本例中,步進時間由每秒脈衝 (PPS) 訊號決定。我們從 S0 持有代幣開始。一秒後,代幣傳遞給 S1,依此類推,直到到達 S7。在下一個 PPS 訊號下,S7 將代幣傳回 S0,完成代幣環的傳遞。
技術提示:仔細觀察圖 1 中的 SFC 步進塊。注意方框內的方框,它表示「可重設初始步進」區塊。該區塊透過控制所有其他 SFC 區塊來綁定所有其他區塊。系統重設後,初始代幣會在關鍵的可重設初始步進區塊中出現。該區塊在後續重置時也可能捕獲/移除所有其他區塊中的代幣。由於所有區塊都透過無形的連線連接到可重置的初始步驟主區塊,因此這項操作可能難以直觀理解。
為了更好地理解 SFC 步進區塊的工作原理,請參考圖 2 所示的情況。圖中,代幣處於狀態 #4。我們可以說代幣被放置在大符號框內的小方框中。代幣的存在會啟動 S4 訊號。
小方框下方是一個小門符號,它阻擋了代幣沿著導線的路徑。該門由左側的機械裝置控制。已啟動的 S4 訊號與 PPS 訊號進行邏輯與運算。在下一個 PPS 訊號到來時,門將被打開,代幣「落」到 S5 狀態。此過程對所有狀態重複進行,最終 S7 返回 S0。
圖 2:Crouzet 除錯窗口,系統停止在狀態 4。
技術提示:PPS 訊號代表 PLC 的最小脈衝寬度。我們使用自重設定時器 (TON) 產生一個寬度為一個 PLC 程式掃描週期的脈衝。這個窄脈衝對於計數器的運作至關重要,因為它能防止所有操作同時發生。換句話說,如果將 PPS 訊號替換為持續導通訊號,計數器就會中斷。雖然這個比喻並不完全準確,但這就像忘記在 C 語言的 case 結構中加入 break 語句一樣——即使致能訊號導通,代幣也會處於自由落體狀態。
8 至 3 編碼器的輸出邏輯
如前所述,任何給定時間只能有一個狀態處於活動狀態。帶有“小盒子裡的代幣”的狀態為活動狀態。左側的電路用於推進代幣。現在我們可以討論右邊的電路。換句話說,SFC步進區塊左側的電路構成了「狀態 - 下一個」電路。狀態「暫存器」封裝在 SFC 區塊中。最後,右側的電路構成了輸出邏輯。
回想一下,我們的目標是建立一個二進位計數器:000, 001, … 111, 000, … 循環。這需要一個 8 至 3 編碼器,該編碼器由三個 4 輸入或閘實現。輸出分別標示為 B0、B1 和 B2,對應於第 1、2和 4 位。最後一個部分是一個二進位到十進制轉換器,用於驅動顯示。
程式設計風格
任何程式討論都離不開對程式設計風格的探討。圖 1 展示了 Crouzet 的 接線(Wiring) 模式和 文字(Text) 模式的混合使用。在某些情況下,區塊之間的連接是透過連線實現的。而在其他情況下,連接則使用命名(文字)節點,例如 PPS。程式設計師可以自由選擇能夠使程式簡潔易讀的方法。
請注意,圖 1 的程序重點在於狀態機組件 (SFC)。因此,繪製連線以突出狀態機至關重要。最終呈現的是一個緊湊易懂的程序,其狀態機核心沿著頁面中心向下延伸。
與此形成對比的是輸出邏輯。頁面右側有超過 12 條連線。使用「文字」模式可以實現清晰簡潔的表示。而使用 Wiring 模式則會導致重疊的連線雜亂無章,難以理解。
最後,您可能已經注意到左側 TON 旁邊有一個 「Yes」區塊。這是一個獨特的 Crouzet 節點複製區塊。在內部,它就像一根導線,直接連接輸入和輸出。但是,它會將一個節點分成兩個,並賦予它們不同的名稱。在本例中,它允許左側顯示「接線模式」,右側顯示「文字模式」。這樣做是為了清晰地顯示 TON 的回饋(自重設)線路。這個簡單的「是」選項提供了一種簡潔的方式來顯示 PPS 訊號與下一狀態機制的連接。
結論
我們鼓勵您在自己的 PLC 中重現此程序。它為 Crouzet PLC 中的基於狀態的控制提供了一個恰當的入門介紹。這個練習還將幫助您熟悉相關工具以及程式碼風格的重要性。
此程式無需任何實體硬體。因此,這可能是測試 Crouzet 軟體和模擬器運作情況的好方法。作為一名教師,此程式設計練習可以作為很好的家庭作業或課堂練習。
歡迎您的評論和建議。同時,我們也鼓勵您提供 PLC 程式的螢幕截圖。
繼續探索更多工業控制系統資訊
如果您覺得本次討論對您有幫助,您可能還想了解以下內容:
DigiKey 導航
- 完整目錄:工業控制與自動化

