
函数及功能块调用
如要实现函数或功能块的调用就要用到运算块,运算块可以代表所有的 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为布尔型接口,遵循"执行-反馈"闭环逻辑:
- EN为执行前提,优先级高于运算块内部逻辑,即使内部参数满足,EN为FALSE时仍不执行。
- ENO为执行结果反馈,仅当运算块正常执行(无故障)时为TRUE,可用于触发下游逻辑(如联动其他功能块)。
- 若将EN接口接常数TRUE,带EN/ENO的运算块与标准运算块功能一致,可灵活切换控制模式。

二、实操案例:带使能的工件计数控制(包装生产线)
1. 控制需求
包装生产线中,需对 passing 工件计数:① 计数使能信号(bCountEnable)有效时,工件检测传感器(bPartDetect)每触发一次(上升沿),计数器加1;② 计数达到设定值(PV=100)时,触发报警信号(bCountAlarm);③ 通过ENO接口反馈计数器执行状态(bCountRunning)。
2. 变量声明
|----------------------------------------------------------------------------|
|
|
3. FBD程序及指令应用解析

- 运算块选择:选用带EN/ENO的CTU加计数器功能块(fb_CTU),实例名fb_CTU作为唯一标识,块内标注功能块类型CTU,输入接口CU接bPartDetect,PV设为100。
- EN/ENO指令应用:EN接口接bCountEnable,当bCountEnable为TRUE时,计数器启动,检测bPartDetect的上升沿并计数;ENO接口接bCountRunning,计数器正常执行时bCountRunning为TRUE,反馈计数状态。

- 计数逻辑:每检测到一次bPartDetect上升沿,fb_CTU.CV(当前计数值)加1;当CV≥PV时,fb_CTU.Q变为TRUE,触发bCountAlarm线圈通电,发出报警信号。
- 停止逻辑:当bCountEnable为FALSE时,EN为FALSE,计数器停止计数,ENO变为FALSE,bCountRunning同步置FALSE,即使bPartDetect触发,CV也保持不变。
