首页 理论教育 实训二十三:功能的生成与调用

实训二十三:功能的生成与调用

时间:2023-06-26 理论教育 版权反馈
【摘要】:功能主要用来执行调用一次就可以完成的操作。图4-1 生成功能2.局部数据的类型双击生成的FC1,打开程序编辑器。由图4-2可知,功能有5种局部变量:1)输入参数用于将数据从主调块传递到被调用块。调用块时应保证实参与形参的数据类型一致。TMP1是FC2中的双字临时局部变量。打开OB1,单击工具栏上的 按钮,启动程序状态监控功能。

实训二十三:功能的生成与调用

1.生成功能

功能简称为FC,是用户编写的没有自己的存储区的逻辑块。功能主要用来执行调用一次就可以完成的操作。

用新建项目向导生成名为“FC例程”的项目(见随书光盘中的同名例程),CPU为CPU 315-2DP。执行SIMATIC管理器的菜单命令“插入”→“S7块”→“功能”,在出现的“属性–功能”对话框中(见图4-1),采用默认的名称FC1,设置“创建语言”为LAD梯形图)。单击“OK”键后,在SIMATIC管理器右边窗口出现FC1。

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

图4-1 生成功能

2.局部数据的类型

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

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

变量声明表的左边窗口给出了该表的总体结构,选中某一变量类型,例如“IN”,在表的右边显示的是输入参数的详细情况。块的局部变量名必须以英语字母开始,只能由字母、数字和下划线组成,不能使用汉字。

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

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

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

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

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

5)RETURN中的RET_VAL(返回值)属于输出参数。RET_VAL是自动生成的,它没有初始的数据类型。在调用FC1时,方框内没有RET_VAL。如果在变量声明表中将它设置为任意的数据类型,在调用FC1时,可以看到FC1方框内右边出现了RET_VAL。由此可知RET_VAL属于FC的输出参数。

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

图4-2 FC1的变量声明表与程序

3.生成局部变量(www.xing528.com)

选中变量声明表左边窗口中的“IN”,在变量声明表的右边窗口输入参数的名称AIdata AI模块的输出值),单击“数据类型”列,再单击该单元左边出现的 978-7-111-53804-2-Chapter04-4.jpg 按钮,选用打开的数据类型列表中的Int(16位整数)。块的输入、输出参数的数据类型可以是基本数据类型、复杂数据类型和参数类型Pointer(指针)、ANY等。输入参数还可以使用参数类型Timer定时器)、Counter(计数器)和块(FB、FC、DB、SDB)。

用同样的方法,输入数据类型为实数的输入参数Factor(系数)和Offset(偏移量)。

选中变量声明表左边窗口中的“OUT”,生成数据类型为实数的输出参数OUTdata(以工程量为单位的输出值)。

选中变量声明表左边窗口中的“TEMP”,生成数据类型为双整数的临时变量TMPDI和数据类型为实数的TMPR。临时变量的地址是程序编辑器根据各变量的数据类型自动指定的。

4.生成功能中的程序

在变量声明表下面的程序区生成梯形图程序(见图4-2),输入参数AIdata首先被转换为双整数,然后转换为实数,转换结果乘以系数Factor,加上偏移量Offset,得到输出参数OUTdata。STEP 7自动地在局部变量的前面添加#号,例如“#AIdata”。

5.调用功能

双击打开SIMATIC管理器中的OB1,打开程序编辑器左边指令列表窗口中的文件夹“FC块”(见图4-2),将其中的FC1拖放到右边的程序区的“导线”上。FC1的方框中左边的AIdata等是在FC1的变量声明表中定义的输入参数和IN_OUT参数(见图4-3),右边的OUTdata是输出参数。它们被称为FC的形式参数,简称为形参,形参在FC内部的程序中使用。别的逻辑块调用FC时,需要为每个形参指定实际的参数(简称为实参),例如为形参AIdata指定的实参为PIW320。形参是局部变量在逻辑块中的名称,实参是调用块时指定的输入、输出参数具体的地址或数值。调用块时应保证实参与形参的数据类型一致。

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

图4-3 在OB1中调用功能

输入参数(IN)的实参可以是绝对地址、符号地址或常数,输出参数(OUT)或输入_输出参数(IN_OUT)的实参必须是绝对地址或符号地址。

FC1的使能输入端EN直接连接到左侧“电源线”上,这种调用为无条件调用。如果用触点或电路来控制使能输入端,这种调用为条件调用。

6.仿真实验

打开PLCSIM,将所有的逻辑块下载到仿真PLC,将仿真PLC切换到RUN-P模式。生成PIW320的视图对象,设置它的值为21536。打开OB1,单击工具栏上的 978-7-111-53804-2-Chapter04-6.jpg 按钮,启动程序状态监控功能(见图4-3)。可以用计算器检查MD20中FC1的运算结果是否正确。

7.功能的仿真练习

设计求圆周长的功能FC2,FC2的输入参数为直径Diameter(INT整数),圆周率为3.1416,用整型数学运算指令计算圆的周长,存放在双字输出参数Perimeter中。TMP1是FC2中的双字临时局部变量。在OB1中调用FC2,直径的输入值为常数10000,存放圆周长的地址为MD8。

打开PLCSIM,将所有的逻辑块下载到仿真PLC,将仿真PLC切换到RUN-P模式。打开OB1,单击工具栏上的 978-7-111-53804-2-Chapter04-7.jpg 按钮,启动程序状态监控功能。观察MD8中的运算结果是否正确。

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

我要反馈