# 利用防禦型 PLC 程式防止設備意外啟動

**URL:** <https://forum.digikey.com/t/plc/70589>\
**Category:** 產品技術提示\
**Tags:** crouzet, plc, faqs, industrial-automation-and-controls\
**Created:** [July 17, 2026, 5:26am UTC](https://forum.digikey.com/t/plc/70589 "2026-07-17T05:26:53Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kevin\_6462](https://sea2.discourse-cdn.com/digikey/user_avatar/forum.digikey.com/kevin_6462/32/8856_2.png) [@Kevin\_6462](https://forum.digikey.com/u/Kevin_6462)\
**Post date:** [July 17, 2026, 5:26am UTC](https://forum.digikey.com/t/plc/70589/1 "2026-07-17T05:26:53Z")

</div>

在工業環境中，人身傷害是最大的威脅之一。在對可編程邏輯控制器 (PLC) 進行程式設計時，我們應該採取措施，將安全機制嵌入程式中，以預防事故發生。本文將簡要探討如何使用圖 1 所示的 [Crouzet-Soft](https://www.crouzet.com/products/automation-controllers/software/) 功能塊圖 (FBD) 程式碼來防止系統意外啟動。本文所使用的 PLC 型號為 [Millenium Slim](https://www.digikey.tw/zh/products/detail/crouzet/88983902/15646787)，配套設備如圖 2 所示的 [PLC 訓練器](https://forum.digikey.com/t/diy/70766)所示。

對於此設置，我們假設設備設計有三個控制裝置，如圖 2 所示。圖中可見：

- 選擇開關作為主控開關。

- 瞬時常閉 (N.C.)（紅色）按鈕，用於停止機器循環。

- 瞬時常開 (N.O.)（綠色）按鈕，用於啟動機器循環。

作為程式設計師，我們必須考慮使用者將如何與此系統互動。我們還必須考慮因使用者操作不耐煩和斷電而導致的異常操作。例如，考慮以下情況：

- 使用者在選擇開關打開的情況下按住循環啟動開關。

- 使用者用力卡住循環啟動開關。

- 機器啟動時，主電源中斷後又恢復。

- 使用者同時按住紅色重設按鈕和綠色循環按鈕。

- 在循環開關卡住的情況下，當機器啟動時，主電源中斷後又恢復。

稍加想像，我們便可知上述每種情況都可能意外啟動機器循環或導致短暫故障。這些意外啟動可能會損壞設備，並危及操作人員和維修人員的安全。

因此，我們應採取防禦性編程措施來預防此類情況的發生。

## FBD 測驗平台

圖 1 所示的 FBD 將用於說明問題和解決方案。此程式碼的核心是置位/重設區塊。當選擇開關 (I1) 接通且瞬時綠色循環按鈕 (I3) 被按下時，區塊置位。當紅色重設按鈕 (I2) 被按下或選擇開關 (I1) 關閉時，此區塊重設。雖然並非絕對必要，但當機器處於活動狀態時，綠色循環按鈕 (I3) 會透過一個與閘被停用。

## 模擬錯誤以說明複雜系統交互

為了突出意外啟動問題，我們故意錯誤配置了置位/重設區塊。此區塊配置為置位線優先權高於重設線，並且啟用了斷電保存功能。這樣做是為了說明在建構更複雜的狀態機時可能出現的問題。

直接後果是優先權顛倒，綠色「啟動」按鈕的優先權高於紅色「停止」按鈕。更危險的是斷電保存配置。斷電後恢復供電時，系統會立即重新啟動。

## 上升沿脈衝

第一道防線是確保瞬時啟動按鈕真正實現瞬時啟動。這可以透過將按鈕訊號送入上升沿偵測器來實現。在 Crouzet-Soft FBD 環境中，這可以透過使用 I3 線上的 BW（上升沿脈衝）功能塊來實現，如圖 1 所示。這項簡單的操作可以有效防止意外啟動。透過此修改，綠色常開循環啟動按鈕必須先進入斷開（關閉）狀態，下一個循環才能開始。換句話說，操作員或維護技術人員無需手動卡住循環啟動按鈕。

在某些情況下，我們必須重新配置設定/重設區塊，因為如果同時按下綠色和紅色按鈕，系統會發生故障。綠色啟動按鈕的上升沿脈衝會暫時啟動系統，但隨後會被紅色停止按鈕立即重設。這種故障持續時間剛好足以啟動 PLC 輸出，並導致相關馬達點動。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/b/7/b7b7c5e6b4548e2e55414701391268fb3cb99d27.png)

**圖 1** ：功能框圖，將瞬時常開開關按下訊號轉換為脈衝。

> **技術提示** ：請注意，圖 1 使用四個輸入或閘取代了三個輸入或閘。額外的輸入端接收來自其中一個輸入端的副本。布林代數結果為 F = A + A + B + C，這與 F = A + B + C 相同，因為根據冪等性，(A + A) = A。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/a/8/a82fd6000a43cd3ede94a18e538e09b43eb3d16e.jpeg)

**圖 2** ：設備設定示意圖，包括一個 ON 選擇開關和瞬時開關，紅色用於重設，綠色用於啟動機器循環。

> **技術提示** ：紅色重設/停止按鈕採用常閉 (N.C.) 接點。通常，停止機器的部件應使用常閉觸點，而啟動機器的部件應使用常開觸點。

## 首次掃描對於設備安全至關重要

請記住，PLC 使用重複的程式掃描方式來運作。對於典型的 PLC，循環如下所示：

- 執行維護操作

- 將螺絲端子輸入傳輸到記憶體

- 根據使用者程式執行記憶體到記憶體的操作

- 將記憶體中的資料傳輸到螺絲端子輸出

需要記住的重要一點是，使用者程式作為記憶體到記憶體的介面運作。因此，我們需要考慮 PLC 首次上電時的情況。請記住，置位/重設區塊被故意配置為斷電保存模式。這意味著，如果選擇開關處於運行位置，則機器會在通電後立即重新啟動。

圖 1 所示的首次掃描 (FSCAN) 巨集提供了一種解決方案，圖 3 對其進行了擴展。它由一個 TON 定時器和一個互斥或（XOR）門組成。在首次程序掃描時，定時器開始計數。互斥或（XOR）閘會接收到定時器輸出的固定邏輯 1 和邏輯 0，結果為邏輯高電位。在第二次程式掃描時，定時器的輸出仍為高電平，導致互斥或（XOR）閘輸出邏輯 0。因此，在第一次程序掃描時，最終結果實際上是一個脈衝。此宏可用於初始化 PLC 中的所有模組。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/0/d/0dfa4bef27ff344dfb1503d473e46481bff66606.png)

圖 3：首次掃描巨集的功能塊圖實作

回到圖 1，我們可以看到首次掃描的輸出與紅色按鈕和選擇開關進行位元或運算。因此，首次掃描用重置位元/重設區塊。

> **技術提示** ：巨集操作用於封裝程式碼。這非常理想，因為它簡化了頂層程式碼，並允許程式碼重複使用。另一方面，有一句古老的故障排除格言：所有程式設計問題都包含在巨集中，尤其是在宏很大或文件不完美的情況下。始終要編寫清晰易懂的程式碼。

## 結論

本文簡要介紹了防禦性編程，旨在防止設備意外啟動。需要注意的是，本文內容遠非全面，因為還有許多其他因素需要考慮。例如，狀態機以及物料在機器中的流轉都會顯著增加複雜性。舉例來說，考慮一下當操作員破壞光幕時，多功能機器應該如何回應。一種解決方案是在機器外殼外部添加一個雙按鈕安全啟動裝置，這樣操作員就無法在外殼內部按下按鈕。

這就引出了安全完整性等級 (SIL) 的概念以及冗餘和獨立安全裝置的應用——這些都是我們將在其他文章中討論的主題。

持續學習並採用防禦性編程，以防範意外狀況的發生。

## 附錄

### 更正

Crouzet-Soft 環境確實包含我之前說明中提到的「首次掃描」脈衝。它位於 PROG 選項卡中的“狀態”功能內。

此模組包含「冷啟動」和「熱啟動」兩種啟動方式。更多資訊請參閱 Crouzet 文件。最佳查找位置是幫助選單。

 ![image](https://global.discourse-cdn.com/digikey/original/3X/0/9/098bff84ecdc21338fe0df2bf35944806ad7d661.png)

### 後續說明

改進後的宏庫解決方案位於此處：

**[Crouzet PLC 的開機安全巨集](https://forum.digikey.com/t/crouzet-plc/61368)**

## **📚 繼續探索更多工業控制系統資訊**

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

### **🗺 DigiKey 導航**

- **完整目錄** ：[工業控制與自動化](https://www.digikey.tw/zh/products/category/%E5%B7%A5%E6%A5%AD%E8%87%AA%E5%8B%95%E5%8C%96%E5%92%8C%E6%8E%A7%E5%88%B6/34)
