首页 理论教育 功能块FB1的局部变量和使用方法详解

功能块FB1的局部变量和使用方法详解

时间:2023-06-27 理论教育 版权反馈
【摘要】:单击“确定”按钮返回SIMATIC管理器,可以看到新生成的功能块FB1。图4-7 功能块FB1在变量声明表中声明(即定义)局部变量,局部变量只能在它所在的块中使用。由图4-7可知,功能块有5种局部变量:1)输入参数。图4-8 背景数据块功能块执行完以后,背景数据块中的数据不会丢失,以供下一次执行功能块时使用。

功能块FB1的局部变量和使用方法详解

1.生成功能块

用鼠标右键单击SIMATIC管理器左边窗口中的“块”,执行出现的快捷菜单中的“插入新对象”→“功能块”,生成一个新的功能块。在出现的功能块属性对话框中,采用系统自动生成的功能块的名称FB1,设置编程语言梯形图(LAD)。采用默认的设置,“多重背景功能”多选框被激活。单击“确定”按钮返回SIMATIC管理器,可以看到新生成的功能块FB1。

2.局部变量

双击生成的FB1,打开程序编辑器。将鼠标的光标放在右边的程序区最上面的分隔条上(见图4-7),按住鼠标的左键,往下拉动分隔条,分隔条上面是功能块的变量声明表,下面是程序区,左边是指令列表和库。将水平分隔条拉至程序编辑器视窗的顶部,不再显示变量声明表,但是它仍然存在。

978-7-111-54209-4-Chapter04-8.jpg

图4-7 功能块FB1

在变量声明表中声明(即定义)局部变量,局部变量只能在它所在的块中使用。

变量声明表的左边窗口给出了该表的总体结构,选中某一变量类型,例如“IN”,在表的右边显示的是输入参数Start等的详细情况。

由图4-7可知,功能块有5种局部变量:

1)输入参数(IN)。用于将数据从主调块传递到被调用块。

2)输出参数(OUT)。用于将块的执行结果从被调用块返回给主调块。

3)输入L输出参数(IN_OUT)。用于双向数据传递。其初始值由主调块提供,用同一个参数将块的执行结果返回给主调块。

4)静态数据(STAT)。从功能块执行完,到下一次重新调用它,背景数据块中的静态数据的值保持不变。

5)临时数据(TEMP)。它是暂时保存在局部数据堆栈(L堆栈)中的数据。同一优先级的OB及其调用的块的临时数据使用局部数据堆栈中的同一片物理存储区,它类似于公用的布告栏,大家都可以往上面贴布告,后贴的布告将原来的布告覆盖掉。只是在执行块时使用临时数据,每次调用块之后,不再保存它的临时数据的值,它可能在同一扫描周期被同一优先级中后面调用的块的临时数据覆盖。调用FC和FB时,首先应初始化它们的临时数据(写入数值),然后再使用它,简称为“先赋值后使用”。

选中变量声明表左边窗口中的输入参数“IN”,在右边窗口中生成两个BOOL变量和一个INT变量(见图4-7)。用类似的方法生成其他局部变量。(www.xing528.com)

块的局部变量名必须以字母开始,只能由英语字母、数字和下划线组成,不能使用汉字,但是在符号表中定义的共享数据的符号名可以使用其他字符(包括汉字)。

生成局部变量时,不需要指定存储器地址;根据各变量的数据类型,程序编辑器自动地为所有的局部变量指定存储器地址。

块的输入、输出参数的数据类型可以是基本数据类型、复杂数据类型和参数类型。某些参数类型不能用于输出参数。

3.生成梯形图程序

图4-7的下面是功能块FB1的梯形图程序。用起保停电路来控制发动机的运行,功能块的输入参数Start和Stop分别用来接收起动命令和停止命令。输出参数Engine_On用来控制发动机的运行。用比较指令来监视转速,检查实际转速Actual_Speed是否大于等于预置转速Preset_Speed。如果满足比较条件,BOOL输出参数Overspeed(超速)为1状态。

STEP 7自动地在程序中的局部变量前面加上“#”号,符号表中定义的共享符号被自动加上双引号

4.背景数据块

背景数据块是调用功能块时指定给被控对象的专用的数据块。背景数据块用来保存FB和SFB的输入参数IN、输出参数OUT、输入L输出参数IN_OUT和静态数据STAT(见图4-8),背景数据块中的变量是自动生成的。它们是功能块的变量声明表中的变量(不包括临时变量,见图4-7),临时数据(TEMP)存储在局部数据堆栈中。每次调用功能块时应指定不同的背景数据块,后者随功能块的调用而打开,在调用结束时自动关闭。背景数据块相当于每次调用功能块时指定的被控对象专用的私人数据仓库

978-7-111-54209-4-Chapter04-9.jpg

图4-8 背景数据块

功能块执行完以后,背景数据块中的数据不会丢失,以供下一次执行功能块时使用。其他逻辑块可以访问背景数据块中的变量。图4-8是在线监控时FB1的背景数据块DB1,功能块的变量声明表决定了它的背景数据块中的变量。不能在背景数据块中直接删除和修改它们,只能在它对应的功能块的变量申明表中删除和修改这些变量。

生成功能块的输入参数、输出参数和静态变量时,它们被自动指定一个初始值,用户可以修改这些初始值。它们被传送给FB的背景数据块,作为同一个变量的初始值。图4-8中BOOL变量的初始值FALSE为二进制数0。静态变量Preset_Speed(预置转速)的初始值为1500,是在FB1的变量声明表中设置的。“@实际值”列是CPU中的数值。在监控时修改“实际值”列的值之后,需要将数据块下载到PLC修改才起作用。

调用FB时没有指定实参的形参使用背景数据块中的初始值。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈