FirstScan (首次掃描位元)用於在 PLC 初次啟動或由 STOP 切換到 RUN 時,協調整體程式的初始化行為。本文說明如何在 TIA Portal 中啟用此功能,並以 Siemens S7-1200 PLC 為範例進行說明。
本文內容適合已具備 TIA Portal 基礎的工程師進行 PLC 工程應用。
FirstScan 是什麼?為什麼重要?
FirstScan(首次掃描位元) 是一個系統級的 Boolean 記憶體:
- 只會在 第一個程式掃描週期為 TRUE
- 並且 僅觸發一次
功能說明
FirstScan 可作為初始化觸發訊號(initializer flag),讓工程師在 PLC 啟動時進行有序的初始化,例如:
- 設定 state machine 狀態機為 Idle
- 初始化變數
- 重設計數器
// FirstScan prototype in structured text
IF "FirstScan" THEN
// Initialize my variables
END_IF;
作為系統級記憶體位置,我們可以預期每次 PLC 上電或從 Stop 停止狀態切換到 RUN 運行狀態時,FirstScan 都會被觸發。如果處理得當,FirstScan 將成為 PLC 啟動過程中不可或缺的一部分,從而實現一致且可預測的程式初始化。
如何在 Siemens TIA Portal 啟用 FirstScan?
需完成以下兩個步驟:
步驟 1:啟用 System Memory Bits
在 TIA Portal 中:
- 啟用「System memory bits」(如圖 2 所示)
步驟 2:編譯並下載硬體設定
- 執行硬體設定:Compile(編譯)並 Download(下載至 PLC)(如圖 3 所示)
重要提醒
請特別注意:
- 硬體設定(Hardware Configuration)與主程式(Ladder / ST)為不同機制
- 兩者需要各自編譯與下載
實務經驗指出:
即使主程式成功編譯,但與 FirstScan 相關的程式碼卻無法運作。令人驚訝的是,即使 System memory bits 系統記憶體位元被停用,TIA Portal 的程式碼也能編譯通過。
圖 2:TIA Portal 中 FirstScan 啟用複選框的位置
FirstScan 功能驗證範例
此範例使用一個簡單程式來驗證 FirstScan 的運作:
系統條件
- 三個輸入(包含 selector switch 與 on-off-on momentary switch)
- 兩個輸出(紅/綠雙色指示燈)
FirstScan 函數位於程式的第一行,用於根據 selector switch 的狀態初始化面板指示燈的顏色。這提供了一個清晰可見的指示器,表明 FirstScan 邏輯正在運作。
當 PLC 斷電重啟後,面板指示燈的顏色會根據 selector switch 的位置而變化,這樣可清楚觀察 FirstScan 初始化動作是否生效。
示範程式碼
// FirstScan Initialization Demonstration
IF "FirstScan" THEN
IF "gxSW1" THEN
"gxPLGreen" := FALSE;
"gxPLRed" := TRUE;
ELSE
"gxPLGreen" := TRUE;
"gxPLRed" := FALSE;
END_IF;
END_IF;
IF "gxSSLeft" THEN
"gxPLGreen" := FALSE;
"gxPLRed" := TRUE;
END_IF;
IF "gxSSRight" THEN
"gxPLGreen" := TRUE;
"gxPLRed" := FALSE;
END_IF;
技術提示:範例中採用 Hungarian notation:
gx= global Boolean 記憶體
常見問題(FAQ)
Q1:FirstScan 的作用是什麼?
FirstScan 是一個啟動觸發訊號:
- 在 PLC 上電或由 STOP → RUN 時觸發
- 用於通知程式進行初始化
Q2:為什麼 FirstScan 沒有作用?
若主程式正常編譯,常見原因如下:
- 沒有啟用 System memory bits
- 硬體設定沒有編譯
- 硬體設定沒有下載至 PLC
結語
FirstScan 就像 PLC 啟動時的「第一口氣」,它代表系統準備開始初始化,並為後續的運行做好準備。
透過正確使用 FirstScan,可以讓 PLC 程式的啟動行為:
- 更一致
- 更可預測
- 更容易維護


