博圖SCL語言教程:靈活加、減計數制作自己的增減計數器(CTUD)

博圖SCL語言教程:使用SCL實現增減計數器(CTUD)

一、什么是增減計數器(CTUD)?

增減計數器(Up-Down Counter)是PLC編程中的基礎功能塊,具有以下特性:

  1. CU?(Count Up):上升沿觸發計數值增加

  2. CD?(Count Down):上升沿觸發計數值減少

  3. R?(Reset):復位計數值到0

  4. LD?(Load):裝載預設值到當前值

  5. PV?(Preset Value):目標設定值

  6. 當?CV >= PV?時,QU?輸出為True

  7. 當?CV <= 0?時,QD?輸出為True

二、SCL實現代碼(完整函數塊)

FUNCTION_BLOCK FB_CTUD
VAR_INPUTCU: BOOL;       // 加計數脈沖(上升沿有效)CD: BOOL;       // 減計數脈沖(上升沿有效)R: BOOL;        // 復位(優先級最高)LD: BOOL;       // 裝載預設值PV: INT;        // 預設值
END_VAR

VAR_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.CV7當前計數值
myCTUD.QUFALSE未達到預設值
myCTUD.QDFALSE計數值大于0

四、關鍵特性說明

  1. 信號優先級

    • 復位(R) > 裝載(LD) > 計數(CU/CD)

    • 復位時強制CV=0并清除輸出

  2. 邊沿檢測

    // 典型上升沿檢測結構
    IF currentSignal AND NOT lastSignal THEN// 執行動作
    END_IF;
  3. 輸出更新規則

    • QU = (CV >= PV)

    • QD = (CV <= 0)

    • Q = QU(兼容標準CTUD行為)

五、實際應用場景

  1. 生產線工件計數(進料+1/剔除-1)

  2. 倉庫庫存管理(入庫+1/出庫-1)

  3. 電梯樓層定位(上行+1/下行-1)

六、調試技巧

  1. 在博圖監控表中添加myCTUD的所有變量

  2. 使用強制表功能測試CU/CD信號

  3. 通過HMI顯示當前計數值CV

七、SCL實現優勢

  1. 代碼緊湊:比LAD/FBD節省70%屏幕空間

  2. 靈活擴展:可輕松添加計數限制、速率計算等功能

  3. 復用性強:封裝后的FB可在整個項目中調用

提示:在頻繁高速計數的場合(如編碼器脈沖),建議使用博圖原生的"高速計數器"模塊!


通過這個SCL實現的CTUD計數器,您可以獲得比傳統梯形圖更簡潔高效的代碼結構。根據實際需求,可擴展添加以下功能:

  • 計數范圍限制(MIN/MAX)

  • 計數速率計算

  • 掉電保持功能

  • 多重預設值支持

建議將此FB保存在項目庫中,方便后續工程復用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84634.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84634.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84634.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android 應用被kill問題排查和處理

一、背景 博主有一款應用市場應用,同樣的應用,在Android 10上開啟三個下載正常,在Android 14上開啟下載安裝,很頻繁被kill。首先想到的是,是不是應用內存太高,導致被kill,通過工具分析內存也不高,后面就想到是不是系統本身分配給應用的內存就不高,后來通過排查,確實是和系統的…

從代碼學習深度強化學習 - 多臂老虎機 PyTorch版

文章目錄 前言創建多臂老虎機環境多臂老虎機算法基本框架(基類)1. ε-貪心算法 (Epsilon-Greedy)2. 隨時間衰減的ε-貪婪算法 (Decaying ε-Greedy)3. 上置信界算法 (Upper Confidence Bound, UCB)4. 湯普森采樣算法 (Thompson Sampling)總結前言 歡迎來到“從代碼學習深度強化…

Android學習之Window窗口

Android Window機制學習筆記 在使用Window Flag實現界面全屏功能時&#xff0c;發現自身對Android Window機制缺乏系統認知&#xff0c;因此進行了專項學習與整理。 本文主要參考以下優質資料&#xff1a; Android的Window詳解Android官方Window文檔 Window基本概念 1. Win…

華為云 Flexus+DeepSeek 征文|搭建部署Dify-LLM推理引擎,賦能AI Agent智能體實現動態聯網搜索能力

華為云 Flexus 云服務器 X 實例專門為 AI 應用場景設計。它提供了強大的計算能力&#xff0c;能夠滿足 DeepSeek 模型以及后續搭建 AI Agent 智能體過程中對于數據處理和模型運行的高要求。在網絡方面&#xff0c;具備高速穩定的網絡帶寬&#xff0c;這對于需要頻繁聯網搜索信息…

Python 100個常用函數全面解析

Python 100個常用函數全面解析 1. 類型轉換函數 1.1 int() 將字符串或數字轉換為整數。 # 基本用法 int(123) # 123 int(3.14) # 3# 指定進制轉換 int(1010, 2) # 10 (二進制轉十進制) int(FF, 16) # 255 (十六進制轉十進制)# 臨界值處理 int() # ValueError: …

分享在日常開發中常用的ES6知識點【面試常考】

前言 在日常的業務開發中&#xff0c;可以熟悉運用掌握的知識點快速解決問題很重要。這篇分享JS相關的知識點&#xff0c;主要就是對數據的處理。 注意&#xff1a;本篇分享的知識點&#xff0c;只是起到一個拋磚引玉的作用&#xff0c;詳情的使用和更多的ES6知識點還請參考官…

CHI協議驗證中的異常及邊界驗證

CHI協議驗證中的異常及邊界驗證 針對 CHI 協議的錯誤注入工具、覆蓋率衡量方法及實際項目中的投入平衡 CHI 協議作為多核系統中復雜的緩存一致性協議,驗證其行為需要強大的工具和方法來執行錯誤注入和邊界條件測試,并衡量測試覆蓋率。以下詳細討論常用工具、覆蓋率評估方法及…

技術專欄|LLaMA家族——模型架構

LLaMA的模型架構與GPT相同&#xff0c;采用了Transformer中的因果解碼器結構&#xff0c;并在此基礎上進行了多項關鍵改進&#xff0c;以提升訓練穩定性和模型性能。LLaMA的核心架構如圖 3.14 所示&#xff0c;融合了后續提出的多種優化方法&#xff0c;這些方法也在其他模型&a…

電腦插入多塊移動硬盤后經常出現卡頓和藍屏

當電腦在插入多塊移動硬盤后頻繁出現卡頓和藍屏問題時&#xff0c;可能涉及硬件資源沖突、驅動兼容性、供電不足或系統設置等多方面原因。以下是逐步排查和解決方案&#xff1a; 1. 檢查電源供電問題 問題原因&#xff1a;多塊移動硬盤同時運行可能導致USB接口供電不足&#x…

Go 語言實現高性能 EventBus 事件總線系統(含網絡通信、微服務、并發異步實戰)

前言 在現代微服務與事件驅動架構&#xff08;EDA&#xff09;中&#xff0c;事件總線&#xff08;EventBus&#xff09; 是實現模塊解耦與系統異步處理的關鍵機制。 本文將以 Go 語言為基礎&#xff0c;從零構建一個高性能、可擴展的事件總線系統&#xff0c;深入講解&#…

npm ERR! @biomejs/biome@1.9.4 postinstall: `node scripts/postinstall.js`

npm install 報錯如下, npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! @biomejs/biome@1.9.4 postinstall: `node scripts/postinstall.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the @biomejs/biome@1.9.4 postinstall script. npm ERR! This is pro…

APMPlus × veFaaS 一鍵開啟函數服務性能監控,讓函數運行全程可觀測

資料來源&#xff1a;火山引擎-開發者社區 近年來&#xff0c;無服務器架構&#xff08;Serverless&#xff09;的崛起讓開發者得以從基礎設施的復雜性中解放&#xff0c;專注于業務邏輯創新。但隨著采用率提升&#xff0c;新的問題開始出現——函數實例的短暫生命周期、動態變…

瑪哈特零件矯平機:精密制造中的平整度守護者

在精密制造、模具、沖壓、鈑金加工、汽車零部件、航空航天以及電子設備等眾多工業領域&#xff0c;零件的平整度&#xff08;Flatness&#xff09;是一項至關重要的質量指標。微小的翹曲、扭曲或彎曲都可能導致裝配困難、功能失效、外觀缺陷甚至影響整機性能。為了消除零件在加…

std::make_shared簡化智能指針 `std::shared_ptr` 的創建過程,并提高性能(減少內存分配次數,提高緩存命中率)

std::make_shared 是 C 標準庫中的一個函數模板&#xff0c;用于簡化智能指針 std::shared_ptr 的創建過程。引入 std::make_shared 的主要原因是提高代碼的安全性、性能和可讀性。以下是詳細分析&#xff1a; 1. 安全性提升 避免顯式調用 new 導致的錯誤 在不使用 std::make…

JDK版本如何絲滑切換

一句話總結 》》》步驟分為&#xff1a; 下載對應JDK配置環境變量 下載JDK 如何下載JDK這里不必多提&#xff0c;提出一點&#xff0c;就是多個版本的JDK最好放在一個文件夾里&#xff08;忽略我的java文件夾&#xff0c;這里都是不同的jdk版本&#xff09;&#xff1a; 配置環…

Rust 通用代碼生成器:蓮花,紅蓮嘗鮮版三十六,啞數據模式圖片初始化功能介紹

Rust 通用代碼生成器&#xff1a;蓮花&#xff0c;紅蓮嘗鮮版三十六&#xff0c;啞數據模式圖片初始化功能介紹 Rust 通用代碼生成器蓮花&#xff0c;紅蓮嘗鮮版三十六。支持全線支持圖片預覽&#xff0c;可以直接輸出帶圖片的啞數據模式快速原型。啞數據模式和枚舉支持圖片。…

45. Jump Game II

目錄 題目描述 貪心 題目描述 45. Jump Game II 貪心 正向查找可到達的最大位置 時間復雜度O(n) class Solution { public:int jump(vector<int>& nums) {int n nums.size();if(n 1)return 0;int cur_cover 0;int cover 0;int res 0;for(int i 0;i < …

model.classifier 通常指模型的分類頭 是什么,詳細舉例說明在什么部位,發揮什么作用

model.classifier 通常指模型的分類頭 是什么,詳細舉例說明在什么部位,發揮什么作用 在深度學習模型中,分類頭(Classifier Head)是指模型末端用于完成分類任務的組件,通常是一個或多個全連接層(線性層)。它的作用是將模型提取的高層語義特征映射到具體的分類標簽空間。…

機器學習+城市規劃第十四期:利用半參數地理加權回歸來實現區域帶寬不同的規劃任務

機器學習城市規劃第十四期&#xff1a;利用半參數地理加權回歸來實現區域帶寬不同的規劃任務 引言 在城市規劃中&#xff0c;如何根據不同地區的地理特征來制定有效的規劃方案是一個關鍵問題。不同區域的需求和規律是不同的&#xff0c;因此我們必須考慮到地理空間的差異性。…

Kivy的ButtonBehavior學習

Kivy的ButtonBehavior學習 ButtonBehavior 簡介1、主要特點2、基本用法3、主要事件4、常用屬性5、方法代碼示例 文檔&#xff1a;https://kivy.org/doc/stable/api-kivy.uix.behaviors.button.html#kivy.uix.behaviors.button.ButtonBehavior ButtonBehavior 簡介 ButtonBeha…