在一个功能块程序之内使用另一个功能块(FB)叫做“嵌套功能块”。功能块最多允许16级嵌套。但不能使用递归调用(在功能块之内将功能块本身作为指令使用)。
*1. 递归调用首个FB_0000
*2. 第17级(最多允许16级嵌套)
将嵌套的功能块注册为包时,可选择是否将作为指令使用的功能块一同注册到包。
将嵌套的功能块拖放到包时,将弹出一个对话框,其中包含一个列表,表中列出了用作指令的功能块。选择拟注册到同一个包的功能块,然后点击[确定]。
例如,将FB_0注册到包,FB_1在FB_0中被用作一条指令。
如果同时注册FB_1:
作为指令使用的FB_1,其程序也被同时注册到包中。解包FB_0时,FB_0和FB_1均被添加到画面列表。解包FB_0后,其逻辑程序不需要修改就能使用。
如果不同时注册FB_1:
在FB_0中,调用FB_1的指令部分仍然存在,但FB_1本身(逻辑程序)并不存在。解包FB_0后,FB_0被加入画面列表,但程序中调用的FB_1不存在。为使FB_0正常运行,需要重新创建FB_1。
逻辑程序中仅有指令而无内容的功能块保留了操作数的数量。但是D操作数减少到1,所有其他操作数显示为S操作数。
如需调用功能块(FB_1)并替换由功能块执行的处理时,这一点非常有用。例如,功能块FB_1的输出位按功能块FB_0中指定的秒数闪烁。此种情况可将多个闪烁单位不同的FB_1注册到包。根据需要解包适当的FB_0就能轻松修改FB_0。