CoDeSys入门实战一起学习(二十六):功能块(FBD)运算块与EN/ENO指令精讲及计数控制案例

函数及功能块调用

如要实现函数或功能块的调用就要用到运算块,运算块可以代表所有的 POU ,包括功能块、函数甚至包括程序。功能块如计时器,计数器等。可以在FBD,LD的节中插入。运算块可以有任意的输入,任意输出。函数及功能块的图形符号。

与接点和线圈一起,用户也可以插入功能块和程序。在网络中,它们必须有带布尔值的一个输入和一个输出,并可在相同位置上像接点那样使用,也就是说在 LD 网络的左侧。

一、运算块与EN/ENO指令核心原理

功能块图(FBD)以运算块为核心,运算块可代表函数、功能块、程序等所有POU,EN/ENO为运算块的条件执行接口,用于实现功能块的启动控制和状态反馈,是FBD复杂逻辑控制的核心指令。

1. 运算块分类及基础规则

  • 标准运算块:无EN/ENO接口,前端能流满足条件时自动执行,执行结果直接传递至下游,适用于无需条件控制的基础运算(如普通定时器、计数器)。
  • 带EN/ENO的运算块 :含EN(执行使能)和ENO(执行反馈)两个接口,仅当EN为TRUE时,运算块执行运算;执行完成后ENO同步为TRUE,反馈执行状态;EN为FALSE时,运算块不执行,ENO同步为FALSE。
  • 空运算块:需手动输入功能块/函数名,适用于熟悉指令的用户,可快速调用自定义功能块,支持带EN/ENO和标准两种模式。

2. EN/ENO指令关键特性

EN与ENO为布尔型接口,遵循"执行-反馈"闭环逻辑:

  1. EN为执行前提,优先级高于运算块内部逻辑,即使内部参数满足,EN为FALSE时仍不执行。
  2. ENO为执行结果反馈,仅当运算块正常执行(无故障)时为TRUE,可用于触发下游逻辑(如联动其他功能块)。
  3. 若将EN接口接常数TRUE,带EN/ENO的运算块与标准运算块功能一致,可灵活切换控制模式。

二、实操案例:带使能的工件计数控制(包装生产线)

1. 控制需求

包装生产线中,需对 passing 工件计数:① 计数使能信号(bCountEnable)有效时,工件检测传感器(bPartDetect)每触发一次(上升沿),计数器加1;② 计数达到设定值(PV=100)时,触发报警信号(bCountAlarm);③ 通过ENO接口反馈计数器执行状态(bCountRunning)。

2. 变量声明

|----------------------------------------------------------------------------|
| |

3. FBD程序及指令应用解析

  1. 运算块选择:选用带EN/ENO的CTU加计数器功能块(fb_CTU),实例名fb_CTU作为唯一标识,块内标注功能块类型CTU,输入接口CU接bPartDetect,PV设为100。
  2. EN/ENO指令应用:EN接口接bCountEnable,当bCountEnable为TRUE时,计数器启动,检测bPartDetect的上升沿并计数;ENO接口接bCountRunning,计数器正常执行时bCountRunning为TRUE,反馈计数状态。
  3. 计数逻辑:每检测到一次bPartDetect上升沿,fb_CTU.CV(当前计数值)加1;当CV≥PV时,fb_CTU.Q变为TRUE,触发bCountAlarm线圈通电,发出报警信号。
  4. 停止逻辑:当bCountEnable为FALSE时,EN为FALSE,计数器停止计数,ENO变为FALSE,bCountRunning同步置FALSE,即使bPartDetect触发,CV也保持不变。
相关推荐
我的xiaodoujiao1 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 47--设置Selenium以无头模式运行代码
python·学习·selenium·测试工具·pytest
草莓熊Lotso2 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
历程里程碑2 小时前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法
执笔论英雄9 小时前
【大模型学习cuda】入们第一个例子-向量和
学习
wdfk_prog10 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
七夜zippoe10 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy64811 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满12 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠12 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio12 小时前
rk芯片驱动编写
linux·学习