首页 理论教育 共享数据块与系统功能的调用实训二十五

共享数据块与系统功能的调用实训二十五

时间:2023-06-26 理论教育 版权反馈
【摘要】:共享数据块和符号表中的变量为全局变量,可供所有的逻辑块使用。图4-10 数据块的属性对话框2.生成数组数据块的大小与数据块中定义的变量的个数和数据类型有关。DB1.Press[2]是该数组中下标为2的元素。图4-12是声明视图显示方式,用于声明(定义)数据块中的变量。在PLCSIM中设置MW2为31524,令I0.4为1状态,OB1中的SFC21被执行。图4-14中各数组元素的实际值变为31524。由于OB1中SFC20的作用,它们的值均为31524。

共享数据块与系统功能的调用实训二十五

1.生成数据块

数据块(DB)用来分类储存设备或生产线中变量的值,数据块分为共享数据块(DB)和背景数据块(DI)。共享数据块和符号表中的变量为全局变量,可供所有的逻辑块使用。

CPU可以用OPN指令分别打开一个共享数据块和一个背景数据块。打开数据块DB1以后,DB1.DBW2可以简写为DBW2。打开新的数据块时,原来被打开的数据块自动关闭。

用新建项目向导生成一个名为“数组_SFC”的项目(见随书光盘中的同名例程),CPU为CPU 315-2DP。

在SIMATIC管理器中执行菜单命令“插入”→“S7块”→“数据块”,生成数据块DB1。默认的类型为共享数据块(见图4-10)。

978-7-111-53804-2-Chapter04-18.jpg

图4-10 数据块的属性对话框

2.生成数组

数据块的大小与数据块中定义的变量的个数和数据类型有关。数组由同一数据类型的数据组合而成,可以用数组快速定义数据块的大小。

双击打开生成的数据块,其中只有一个临时占位符变量DB_VAR。将变量的名称改为Press,用鼠标右键单击“类型”列,执行出现的快捷菜单中的“复杂类型”→“ARRAY”见图4-11),生成一个数组。

在出现的“ARRAY[]”的方括号中输入“1..4”(见图4-12)。ARRAY[1..4]中的1和4 分别是数组元素的下标的下限值和上限值,它们用两个小数点隔开,可以是-32768~32767之间任意的整数,上限值应大于下限值。选中注释列的单元后按计算机的回车键,ARRAY[1..4]下面出现空白单元,在其中输入数组元素的数据类型INT,结束了对数组的声明。

978-7-111-53804-2-Chapter04-19.jpg

图4-11 设置数据类型

978-7-111-53804-2-Chapter04-20.jpg

图4-12 数据块中的数组

图4-12中生成的是一维数组,该数组有4个数据类型为INT的元素。“初始值”列可以输入用英语的逗号分隔的各元素的初始值。其中的“2(0)”表示最后两个元素的初始值为0。未定义初始值的数组所有的元素的初始值均为0。此外DB1中还生成了一个INT变量Voltage。

图4-12的“地址”列中的“+0.0”表示数组的起始字节地址为0,“*2.0”表示数组元素的大小为2B,“+8.0”表示该行上面的数组的4个元素一共占用8B,地址列的内容是自动生成的。DB1.Press[2]是该数组中下标为2的元素。

用同样的方法生成共享数据块DB2,在DB2中生成有5个INT元素的数组Buffer1。

3.调用系统功能

打开OB1,执行菜单命令“视图”→“总览”,左边窗口出现指令列表。打开最下面的“\库\Standard Library\System Function Blocks”文件夹,可以看到系统功能块SFB和系统功能SFC(见图4-13)。将文件夹中的SFC21“FILL”拖放到程序区,调用SFC21来将MW2的值传送给DB1的数组Press的各单元。在执行SFC时如果出错,返回值RET_VAL中是错误代码。(www.xing528.com)

SFC21“FILL”用源存储区BVAL的数值初始化目标存储区BLK。选中SFC21,按计算机键盘的〈F1〉键,打开在线帮助,可以看到对SFC21的详细说明和应用实例。

SFC20“BLKMOV”(块传送)用于将源存储区SRCBLK的内容复制到目标存储区DSTBLK,两个存储区的地址不能重叠。上述两个SFC的参数BVAL、BLK、SRCBLK和DSTBLK的数据类型均为参数类型ANY。

978-7-111-53804-2-Chapter04-21.jpg

图4-13 调用SFC

ANY主要用来表示一片连续的数据区,例如P#M10.0 INT 4表示MW10~MW16这4个整数。输入图4-13中BLK的实参P#DB1.DBX0.0 INT 4(DB1中的DBW0~DBW6)后,因为该地址区与DB1中定义的数组Press的地址相同,输入后自动变为DB1.Press,当然也可以直接输入DB1.Press。ANY的实参也可以是一个任意的数据类型的地址,例如图4-13中的MW2。

图4-13中的SFC21将MW2的值传送给数组DB1.Press,SFC20将数组DB1.Press各元素的值分别传送给MW10~MW16。

下面是用语句表调用SFC20的程序:

978-7-111-53804-2-Chapter04-22.jpg

978-7-111-53804-2-Chapter04-23.jpg ”前面是SFC的形式参数(形参),“ 978-7-111-53804-2-Chapter04-24.jpg ”后面是各形参的实际参数(实参),“//”的右边是对该行语句的注释

4.仿真实验

打开PLCSIM,将逻辑块和数据块下载到仿真PLC,将它由STOP模式切换到RUN-P模式。打开DB1,执行菜单命令“视图”→“数据视图”。将数据块切换到数据视图显示方式(见图4-14),可以看到数组中的各元素。图4-12是声明视图显示方式,用于声明(定义)数据块中的变量。

单击工具栏上的“监视(开/关)”按钮 978-7-111-53804-2-Chapter04-25.jpg ,启动监控功能。如果数据块原来是声明视图显示方式,将会自动切换到数据视图显示方式。

图4-14中的“初始值”列是生成数组时设置的初始值。在PLCSIM中设置MW2为31524,令I0.4为1状态,OB1中的SFC21被执行。MW2中的数据31524被写入DB1中数组Press的各元素。图4-14中各数组元素的实际值变为31524。

用变量表监控MW10~MW16这4个整数,单击工具栏上的 978-7-111-53804-2-Chapter04-26.jpg 按钮,启动监控功能。由于OB1中SFC20的作用,它们的值均为31524。

978-7-111-53804-2-Chapter04-27.jpg

图4-14 数据视图显示方式的数组与PLCSIM

5.数据块应用练习

在符号名为Pump的数据块中生成一个由50个字节元素组成的一维数组(下标从1到50),数组的符号名为Press1。用数据视图方式观察数组中的各元素。

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

我要反馈