博圖SCL語言教程:使用SCL實現增減計數器(CTUD)
一、什么是增減計數器(CTUD)?
增減計數器(Up-Down Counter)是PLC編程中的基礎功能塊,具有以下特性:
-
CU?(Count Up):上升沿觸發計數值增加
-
CD?(Count Down):上升沿觸發計數值減少
-
R?(Reset):復位計數值到0
-
LD?(Load):裝載預設值到當前值
-
PV?(Preset Value):目標設定值
-
當?
CV >= PV
?時,QU?輸出為True -
當?
CV <= 0
?時,QD?輸出為True
二、SCL實現代碼(完整函數塊)
FUNCTION_BLOCK FB_CTUD VAR_INPUTCU: BOOL; // 加計數脈沖(上升沿有效)CD: BOOL; // 減計數脈沖(上升沿有效)R: BOOL; // 復位(優先級最高)LD: BOOL; // 裝載預設值PV: INT; // 預設值 END_VARVAR_OUTPUTQ: BOOL; // 達到預設值(CV >= PV)QU: BOOL; // 上溢輸出(CV >= PV)QD: BOOL; // 下溢輸出(CV <= 0)CV: INT; // 當前計數值 END_VAR
VARbLastCU: BOOL; // 記錄CU上次狀態bLastCD: BOOL; // 記錄CD上次狀態 END_VAR
// 主邏輯 BEGIN// 優先級1:復位信號IF R THENCV := 0;Q := FALSE;QU := FALSE;QD := TRUE;// 優先級2:裝載預設值ELSIF LD THENCV := PV;QU := (CV >= PV);QD := (CV <= 0);Q := QU;// 正常計數邏輯ELSE// 檢測CU上升沿IF CU AND NOT bLastCU THENCV := CV + 1;END_IF;// 檢測CD上升沿IF CD AND NOT bLastCD THENCV := CV - 1;END_IF;// 更新輸出狀態QU := (CV >= PV);QD := (CV <= 0);Q := QU;END_IF;// 保存當前狀態供下次掃描使用bLastCU := CU;bLastCD := CD; END_FUNCTION_BLOCK
三、使用示例
1. 在OB1中調用計數器
PROGRAM MAIN VARmyCTUD: FB_CTUD; // 實例化計數器bStartCount: BOOL; // 啟動計數信號bResetCount: BOOL; // 復位信號iSetValue: INT := 6; // 預設值 END_VAR// 主程序 BEGINmyCTUD(CU := bStartCount, // 連接計數脈沖CD := FALSE, // 本例只使用加計數R := bResetCount, // 復位信號LD := FALSE, // 本例不使用裝載PV := iSetValue // 設置目標值);// 當計數值達到10時觸發動作IF myCTUD.Q THEN// 執行目標動作...END_IF; END_PROGRAM
2. 監控關鍵值
變量名 | 值 | 說明 |
---|---|---|
myCTUD.CV | 7 | 當前計數值 |
myCTUD.QU | FALSE | 未達到預設值 |
myCTUD.QD | FALSE | 計數值大于0 |
四、關鍵特性說明
-
信號優先級:
-
復位(R) > 裝載(LD) > 計數(CU/CD)
-
復位時強制CV=0并清除輸出
-
-
邊沿檢測:
// 典型上升沿檢測結構 IF currentSignal AND NOT lastSignal THEN// 執行動作 END_IF;
-
輸出更新規則:
-
QU = (CV >= PV)
-
QD = (CV <= 0)
-
Q = QU
(兼容標準CTUD行為)
-
五、實際應用場景
-
生產線工件計數(進料+1/剔除-1)
-
倉庫庫存管理(入庫+1/出庫-1)
-
電梯樓層定位(上行+1/下行-1)
六、調試技巧
-
在博圖監控表中添加
myCTUD
的所有變量 -
使用強制表功能測試CU/CD信號
-
通過HMI顯示當前計數值CV
七、SCL實現優勢
-
代碼緊湊:比LAD/FBD節省70%屏幕空間
-
靈活擴展:可輕松添加計數限制、速率計算等功能
-
復用性強:封裝后的FB可在整個項目中調用
提示:在頻繁高速計數的場合(如編碼器脈沖),建議使用博圖原生的"高速計數器"模塊!
通過這個SCL實現的CTUD計數器,您可以獲得比傳統梯形圖更簡潔高效的代碼結構。根據實際需求,可擴展添加以下功能:
-
計數范圍限制(MIN/MAX)
-
計數速率計算
-
掉電保持功能
-
多重預設值支持
建議將此FB保存在項目庫中,方便后續工程復用。