您现在的位置是:首页 > PLC技术 > PLC技术

使用带形参的FB参数化程序设计实例

来源:艾特贸易2017-10-24

简介FB 与 FC 不同的是它拥有属于自己的背景数据块,背景数据块的格式与 FB 块接口的格式相同(但不包括临时变量 Temp 和局部常量 Constant );块接口中没有 Return 类型但增加了 Static 类型;

    FBFC不同的是它拥有属于自己的背景数据块,背景数据块的格式与FB块接口的格式相同(但不包括临时变量Temp和局部常量Constant);块接口中没有Return类型但增加了Static类型;对于优化的FB块接口中的变量可设置为“保持”,保持性变量在CPU掉电时其当前数据仍被保留,不会丢失。

    由于FB块可拥有自己的背景数据块,块接口中定义的形参(InputOutputInOut)和静态变量( Static)的当前值保存在背景数据块中,故FB块参数的值可以使用背景数据块中的数据,而不必在调用时给每一个形参赋值,对于静态变量也无需分配地址。

    以自动灌装生产线为例,将进行参数化程序设计的“报警”程序块FC7改成“报警2”程序块FB7,实现当设备发生故障时,操作面板上相应的报警指示灯会根据故障类型以不同频率闪亮(传感器故障0.5 Hz,液位超限故障1 Hz);按下应答按钮后,如果故障已经排除则相应报警灯灭,如果故障依然存在则相应报警灯常亮。

    打开新建的“报警2”程序块FB7,在块接口中添加块参数变量元素如图5-169所示,故障信号源“Fault_Signal”、故障应答按钮“Acknowledge”和闪烁频率“Frequent”为“Input”,故障报警指示灯“Alarm_Light”为“Output”,将故障记录“Stored_Fault”和上升沿记录“Edge_Memory”定义为静态变量“Static”。

“报警2”程序块FB7的块接口

    5-169    “报警2”程序块FB7的块接口

    FB7程序块的代码区中对FB7进行编程并编译,程序如图5-170所示。由于所使用的变量名称与FC7相同,故程序也与FC7相同。

    新建“故障处理2”程序块FC14,将FC4的程序内容复制至FC14,并将调用FC7的语句删除,改成对FB7的调用。调用FB时,会弹出“调用选项”窗口(如图5-171所示),以便于指定背景数据块。在“调用选项”窗口中可以直接输入新的数据块名称并指定数据块编号,则系统将自动生成该FB块的背景数据块;也可以通过单击“调用选项”窗口中名称文本框右侧的“”,在其下拉列表中选择之前已创建的该FB块的背景数据块。为了使每次调用的参数都能保存下来,多次调用同一个FB时需要指定不同的背景数据块。

“报警2”程序块FB7

    5-170    “报警2”程序块FB7

调用FB的“调用选项”窗口

    5-171    调用FB的“调用选项”窗口

    FC14中对调用的FB7的形参赋值,程序如图5-172所示。

    由于使用了静态变量存储故障闪烁状态“Stored_Fault”和故障上升沿“Edge_Memory”,调用FB时背景数据块对应的位地址用来保存相应变量数据,而不需要赋实参占用M存储器的地址,故节省了内存空间。从图5-172还可以看出,与FC相比,使用FB进行参数化程序设计,减少了参数个数,简化了块的调用。另外,调用带形参的FB时,不必对所有形参进行赋值,对于没有赋值的形参,将使用背景数据块中存储的值。

FC14调用“报警2”程序块FB7

    5-172    FC14调用“报警2”程序块FB7