『7x24小时有问必答』
调试现场翻遍程序找重复代码,改完一台忘了另一台——这是没用FB的工程师的日常。
三菱MELSEC iQ-R系列支持ST/FBD/LD全语言FB(Function Block,功能块),能把一个完整控制逻辑封装成黑盒子,反复调用。同一台R04CPU上,100台电机的启停程序不用复制100次,FB让你一次写完、终身受益。

一、FB到底是什么?和普通子程序有啥区别

FB是带"记忆"的可复用程序单元。和CALL调用的子程序比,FB最大的差异是实例化——同一个FB可以生成多个独立副本,每个副本有自己独立的内部变量(类似C++的类与对象)。
对比项普通子程序 (CALL)三菱iQ-R FB
内部变量全局共享,易冲突每个实例独立
多次调用需手工区分变量同一FB直接多次实例化
输入输出通过寄存器间接传参VAR_INPUT/VAR_OUTPUT直接映射
维护性改一处所有调用都变仅改FB定义即可
跨工程复用需复制粘贴库文件直接导入
真实FB定义代码
(GX Works3 ST语言,文件名
MtrCtrl.fbk
):
// ====================================
// FB名:MtrCtrl
// 功能:电机启停+过载保护逻辑
// ====================================
FUNCTION_BLOCK MtrCtrl
VAR_INPUT
i_Start      : BOOL;    // 启动按钮
i_Stop       : BOOL;    // 停止按钮
i_Overload   : BOOL;    // 过载触点
END_VAR
VAR_OUTPUT
o_Run        : BOOL;    // 运行输出
o_Fault      : BOOL;    // 故障输出
END_VAR
VAR
b_Keep       : BOOL;    // 自保持内部变量(每个实例独立)
END_VAR
// 自保持回路:启动+运行→保持;停止或过载→解除
b_Keep := (i_Start OR b_Keep) AND NOT i_Stop AND NOT i_Overload;
o_Run   := b_Keep;
o_Fault := i_Overload;
END_FUNCTION_BLOCK
关键点:b_Keep 在VAR段声明,是FB的"私有内存"。实例A的b_Keep和实例B的b_Keep互不干扰,这是FB能多实例化的根基。

二、为什么必须用FB——4个被验证过的工程价值

价值1:开发效率提升60%以上

某汽车焊装线,128个气缸+64个变频器+32个伺服轴。不用FB时,每个气缸的"两位三通阀+磁感应开关+延时控制"逻辑约30步梯形图,128个=3840步重复代码。用FB封装后,主程序调用128次 CylCtrl(实例名),工程文件体积减少70%。

价值2:现场故障定位从小时级降到分钟级

FB的实例名直接对应现场设备名(Mtr_Pump01Mtr_Fan03),GX Works3的"FB实例管理"能一键查看每个实例的当前输入输出值。某水处理项目,单台PLC控制40台水泵,检修某台泵故障时直接看 Mtr_Pump15 状态,不用全局搜索。

价值3:版本管理清晰

FB支持"库文件(.fbk)"形式导入导出。同一套电机控制FB,可以从R04CPU项目导出,直接导入R16CPU项目,逻辑零修改。设备厂家调试组和现场调试组用同一份FB库,杜绝"代码漂移"。

价值4:结构化标签自动同步

iQ-R的全局标签+FB本地标签,配合GX Works3的"标签批量替换",改一次设备编号,所有调用点同步更新。

三、3个实战案例:从单设备到产线级

案例1:单电机启停(基础)

主程序调用
Main.st
):
``st
PROGRAM Main
VAR
// 声明FB实例,每个实例独立内存
fb_Mtr_Pump01 : MtrCtrl;
fb_Mtr_Pump02 : MtrCtrl;
fb_Mtr_Fan01   : MtrCtrl;
END_VAR
// Pump01:X0启动,X1停止,X10过载 → Y0运行,Y20故障
fb_Mtr_Pump01(
i_Start      := X0,
i_Stop       := X1,
i_Overload := X10,
o_Run         => Y0,
o_Fault      => Y20
);
// Pump02:X2启动,X3停止,X11过载 → Y1运行,Y21故障
fb_Mtr_Pump02(
i_Start      := X2,
i_Stop       := X3,
i_Overload := X11,
o_Run         => Y1,
o_Fault      => Y21
);
// Fan01:X4启动,X5停止,X12过载 → Y2运行,Y22故障
fb_Mtr_Fan01(
i_Start      := X4,
i_Stop       := X5,
i_Overload := X12,
o_Run         => Y2,
o_Fault      => Y22
);
END_PROGRAM
3台不同设备,逻辑零重复。改过载保护逻辑?只改 MtrCtrl.fbk 一个文件,3处同步生效。

案例2:多段速变频器控制(中等复杂度)

FB定义
(VfdMs3.fbk
):
FUNCTION_BLOCK VfdMs3
VAR_INPUT
i_Run      : BOOL;    // 运行命令
i_SpeedSel : INT;     // 速度选择 0=停 1=低速 2=中速 3=高速
i_Fault    : BOOL;    // 外部故障
END_VAR
VAR_OUTPUT
o_Fwd      : BOOL;    // 正转
o_Rev      : BOOL;    // 反转
o_Ms1      : BOOL;    // 多段速端子1
o_Ms2      : BOOL;    // 多段速端子2
o_Rdy      : BOOL;    // 准备就绪
END_VAR
o_Fwd := i_Run AND (i_SpeedSel > 0) AND NOT i_Fault;
o_Rev := FALSE;  // 本项目不允许反转
o_Ms1 := (i_SpeedSel = 1) OR (i_SpeedSel = 3);
o_Ms2 := (i_SpeedSel = 2) OR (i_SpeedSel = 3);
o_Rdy := NOT i_Fault;
END_FUNCTION_BLOCK

案例3:PID温控FB(高级,含定时器+运算)

FUNCTION_BLOCK PidTemp
VAR_INPUT
i_Pv       : REAL;    // 过程温度(℃)
i_Sv       : REAL;    // 设定值(℃)
i_Enable   : BOOL;    // 启用
i_Kp       : REAL;    // 比例带
i_Ki       : REAL;    // 积分时间
END_VAR
VAR_OUTPUT
o_Mv       : REAL;    // 输出0-100%
o_At       : BOOL;    // 自动调谐中
END_VAR
VAR
r_Err      : REAL;
r_Integral : REAL;
fb_Ton     : TON;     // 嵌套定时器
END_VAR
fb_Ton(IN := i_Enable, PT := T#100ms);
r_Err := i_Sv - i_Pv;
r_Integral := r_Integral + r_Err * 0.1;
o_Mv := LIMIT(0.0, i_Kp r_Err + i_Ki r_Integral, 100.0);
o_At := fb_Ton.Q;
END_FUNCTION_BLOCK
FB支持嵌套调用(FB内调用另一个FB),
fb_Ton : TON` 即为定时器FB的实例。

四、iQ-R CPU选型表——FB越多,CPU越要挑对

FB实例化会消耗CPU的程序容量和软元件资源。100个简单FB约需15K步,100个含PID的复杂FB约需80K步。
型号程序容量FB推荐规模典型应用
R00CPU10K步≤20个简单FB小型单机
R01CPU15K步≤50个简单FB小型产线
R02CPU20K步≤80个简单FB中型设备
R04CPU40K步≤200个FB主流产线
R08CPU80K步≤500个FB大型工厂
R16CPU160K步≤1200个FB整厂控制
R32CPU320K步≤3000个FB过程控制
R120CPU1200K步万级FB超大规模
选型建议
10-50个设备的小项目 → R01CPU/R02CPU
50-200个设备的产线 → R04CPU(性价比主力,FB库容量够用)
200+设备或复杂过程控制 → R08CPU及以上
涉及C语言扩展 → 配R12CCPU-V
涉及安全功能 → 配R08SFCPU-R16SFCPU
推荐阅读
6步搞定三菱iQ-R FB封装+3套实战代码,PLC编程效率直接翻倍
发布于 2026-06-18
三菱伺服 04:伺服与 PLC 联动实战——从硬件接线、参数配置到 ST 编程,1 套模板搞定单轴定位
发布于 2026-06-13
三菱机械手轨迹规划与编程:从直线到复杂曲线
发布于 2026-06-12
KEYWORDS
PLC, GX Works, MELSEC, 三菱, 梯形图
如果你觉得这篇文章有帮助,请点个在看,分享给更多需要的人!
关注我,获取更多实用干货~
有问题欢迎评论区留言交流!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码