当前位置: 首页 > news >正文

博图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保存在项目库中,方便后续工程复用。

相关文章:

  • VUE - AxiosError-ERR_BAD_REQUEST
  • ZooKeeper详解以及应用部署(AI)
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(34):ようですそうですばかりのに
  • C#学习第30天: 匹配模式
  • 多模态AI爬虫:文本+图像智能抓取实战
  • opencv opencv_contrib vs2020 源码安装
  • 【2025】深度学习环境搭建记录
  • Spring Boot Actuator 健康信息
  • C++学习-入门到精通【19】杂项汇总
  • 强化学习:DQN学习总结
  • 【完整源码+数据集+部署教程】太阳能板灰尘检测系统源码和数据集:改进yolo11-LVMB
  • Vue3+TypeScript实现迭代器模式
  • 基于多面体模型的编译优化技术
  • 代码训练LeetCode(32)Z字形变换
  • 浅谈MapReduce--基本操作
  • Vue开发学习笔记:动态渲染自定义封装的uview-plus的Toast组件
  • 大模型技术30讲-5-利用数据来减少过拟合现象
  • 上海市计算机学会竞赛平台2022年5月月赛丙组最远城市距离
  • 新零售视域下实体与虚拟店融合的技术逻辑与商业模式创新——基于开源AI智能名片与链动2+1模式的S2B2C生态构建
  • win11系统部署tomcat10教程
  • 网站轮换图片怎么做/百度招聘官网首页
  • 做网站自己买服务器好还是用别人的/怎么做网站
  • 韶关做网站的/新闻最新热点
  • 建设网站大全/seo sem是啥
  • 汕头网站seo外包/百度的企业网站
  • 重庆网站建设安全/百度新版本更新下载