EasyBuilder Pro 元件 與 Schneider EcoStruxure Machine Expert - Basic PLC ( PLC 100範例 -14 )
圖片說明
圖片展示了「產品生產計數(一)」控制邏輯:
控制要求:利用光電傳感器進行產品計數,每當檢測到生產達 500 個產品時,指示燈(
Y0)點亮。控制原理:
第一階梯:光電傳感器
X0觸發上升沿脈衝(PLS),加法計數器C140計數一次(設定值 PV = 500)。第二階梯:當計數達到 500 時,計數器觸點
C140閉合使指示燈Y0導通;同時Y0的觸點會觸發計數器的清除端(CLR),將計數器復位重置,實現循環計數。
Schneider PLC 程式與 EasyBuilder Pro HMI 對應設計
按需求將點位規劃如下:
按鈕/開關(%M0 ~ %M99):
%M0(模擬光電傳感器 / 計數觸發)、%M1(手動復位按鈕)指示燈/輸出(%M100 ~ %M199):
%M100(達標指示燈)計數器數值:
%C0(Schneider 計數器區塊)
Schneider PLC(EcoStruxure Machine Expert - Basic)程式
在 Schneider Basic 中,計數器區塊(%C0)擁有加計數端(CU)、復位端(R)與完成觸點(%C0.D):
Schneider EcoStruxure Machine Expert - Basic 階梯圖文字與指令表 (IL)
階梯圖文字表示 (Ladder Logic View)
(* Rung 0: 每秒更新計數器預設值 Preset Value *)
|--[ %S6 ]-------------------------------------------[ %C0.P := %MW0 ]--|
(* Rung 1: 計數器 %C0 控制 (復位端 R 與加計數端 CU) *)
|--[ %M1 ]--------------------------------------------------| R %C0 E |
| Preset: |
|--[ %M0:P ]------------------------------------------------| CU 9999 |
| CD D |
(* Rung 2: 計數完成(達標)輸出指示燈 *)
|--[ %C0.D ]----------------------------------------------------( %M100 )--|
(* Rung 3: 每秒將當前計數值當前值複製到 %MW2 *)
|--[ %S6 ]-------------------------------------------[ %MW2 := %C0.V ]--|
(* Rung 4: 自動復位比較 (當計數當前值 >= 預設值時觸發復位位元 %M1) *)
|--[ %S6 ]-----[ %C0.V >= %C0.P ]---------------------------------( %M1 )--|
指令表 (Instruction List / IL)
BLK Rung0
LD %S6
[%C0.P := %MW0]
END_BLK
BLK Rung1
LD %M1
R %C0
LD %M0:P
CU %C0
END_BLK
BLK Rung2
LD %C0.D
ST %M100
END_BLK
BLK Rung3
LD %S6
[%MW2 := %C0.V]
END_BLK
BLK Rung4
LD %S6
AND [%C0.V >= %C0.P]
ST %M1
END_BLK
註:%S6 為系統內部 1 秒脈衝時基(Time base 1s)。
EasyBuilder Pro 元件設定
1. 模擬計數按鈕(位元按鈕)
讀寫位址:
%M0按鈕型態:復歸型 (Momentary)
標籤文字:
模擬通過 (X0)
2. 手動復位按鈕(位元按鈕)
讀寫位址:
%M1按鈕型態:復歸型 (Momentary)
標籤文字:
計數清零
3. 計數達標指示燈(位元燈)
讀取位址:
%M100狀態顯示:State 0 (OFF) 灰色 /
未達標;State 1 (ON) 亮黃色 /已達500個
4. 當前計數值顯示(數值顯示元件 - 補充)
讀取位址:
%C0.V(16位無符號整數)格式設定:顯示當前已累計的產品數量
在 Schneider EcoStruxure Machine Expert - Basic(SoMachine Basic)中,%C0 是第一個加/減計數器區塊(Counter Function Block)。
其標準的輸入與輸出端子名稱及功能說明如下:
| 端子名稱 | 類型 | 資料型態 | 名稱 / 說明 |
| R | 輸入 (Input) | BOOL (位元) | 復歸端 (Reset) 當條件為 |
| S | 輸入 (Input) | BOOL (位元) | 預設值加載端 (Set) 當條件為 |
| CU | 輸入 (Input) | BOOL (位元) | 加計數端 (Count Up) 當此端的輸入信號出現**上升沿(OFF → ON)**時,當前值 |
| CD | 輸入 (Input) | BOOL (位元) | 減計數端 (Count Down) 當此端的輸入信號出現**上升沿(OFF → ON)**時,當前值 |
| E | 輸出 (Output) | BOOL (位元) | 下溢位元 (Underflow Flag / %C0.E) 當當前值從 0 繼續往下減(減計數溢位)時,狀態變為 |
| D | 輸出 (Output) | BOOL (位元) | 完成位元 (Done Flag / %C0.D) 當當前值 |
| F | 輸出 (Output) | BOOL (位元) | 上溢位元 (Overflow Flag / %C0.F) 當計數值達到上限(9999)繼續累加(加計數溢位)時,狀態變為 |
| %C0.P | 參數 (Parameter) | WORD (16位數值) | 預設值 (Preset Value) 設定目標計數數值(範圍通常為 |
| %C0.V | 輸出 (Output) | WORD (16位數值) | 當前計數值 (Current Value) 即時顯示目前已累計的計數數值。 |
常態使用補充
一般單向加計數:只需要連接 CU(加計數)與 R(清零),並在程式中調用 %C0.D(完成觸點)來控制後續動作或指示燈。
清零方式:除了接線至
R端外,亦能在運算區塊(Operate Block)中使用指令%C0.V := 0將當前數值清空。





沒有留言:
張貼留言