博途多重背景、参数实例
1:我们在博途中先新建一个工程,并且建立一个FB块名字为motor_fb,同样建立一个FC块名字为MOTOR_FC,里面写上我们电机程序里常用的逻辑控制。二者程序内容。下面是motor_fb块的程序截图:
2:我们再新建一个FB块,名字为"多重背景MOTOR",我们在本块中调用motor_fb块,将会出现以下选项,单个实例,多重实例和参数实例。
如果我们选择单个实例,将会在每调用一次motor_fb时生成一个数据块,
如果我们选择多重实例,.在左边的项目树下面,没有出现我们刚才所建立的数据块名,但是出现在-多重背景MOTOR块中的Static(静态类型中),这样就不会出现很多的DB块了,方便管理
如果我们选择参数实例,
背景参数出现在“多重背景MOTOR”块中的(InOut中),每次调用较高级别函数块时(本示例中为“多重背景MOTOR”),将为被调用函数块传送一个实例(本示例为“motor_fb”)。
至此在以上的截图中我们在 “多重背景MOTOR”块中调用了5次“motor_fb”,以单个实例调用两次,以多重实例调用两次,以参数实例调用一次。编译成功。
如果我们在 “多重背景MOTOR”块中调用了“MOTOR_FC”块,再编译报错,调用fc块必须为其管脚赋对应类型数据 。
撤销调用报错的“MOTOR_FC”块。使编译正常,进入下一步,
在主程序中调用 “多重背景MOTOR”块
3.添加新块-----DB数据块------类型为“motor_fb[FB1]”----名称改为“参数实例_DB”
2
4.当在MAIN程序里调用——“多重背景MOTOR”块时,就产生多重背景实例“多重背景MOTOR_DB”数据块。把“参数实例_DB”拖到motor_fb_Instance_2。将待使用的DB块实例作为 in-out 参数 (InOut) 传送到调用块中。
循环迭代处理多个实例
场景:批量处理相似设备(如电机、阀门)。
示例:
使用数组存储多个DB实例,通过循环调用同一FB:
scl
// 定义实例数组
StationDBs : ARRAY[1..3] OF PointerToDB := ["Station1", "Station2", "Station3"];
// 循环调用
FOR i := 1 TO 3 DO
CALL "ProcessStation"(InstanceDB := StationDBs[i]^);
END_FOR;