首页 理论教育 生成与调用功能优化方法

生成与调用功能优化方法

时间:2023-06-21 理论教育 版权反馈
【摘要】:在界面区中生成局部变量,后者只能在它所在的块中使用。在功能中有5种局部变量:1)Input:由调用它的块提供的输入数据。图5-3 创建新块对话框3.生成功能的局部数据将鼠标的光标放在FC1的程序区最上面的分隔条上,按住鼠标的左键往下拉动分隔条,分隔条上面是功能的界面区,下面是程序区。图5-4 FC1中的压力测量值计算程序5.在OB1中调用FC1在变量表中生成调用FC1时需要的3个变量,如图5-5所示。

生成与调用功能优化方法

1.功能的基础

功能(Function,FC)和功能块(Function Block,FB)是用户编写的子程序,它们包含完成特定任务的程序。

FC和FB有与调用它的块共享的输入、输出参数,执行完FC和FB后,将执行结果返回给调用它的代码块。功能没有固定的存储区,功能执行结束后,其局部变量中的临时数据就丢失了。可以用全局变量来存储那些在功能执行结束后需要保存的数据。接下来以计算压力为实例,介绍功能的生成与调用。

【例5-1】设计计算压力程序。

压力变送器量程的下限为0 MPa,上限为High MPa,经A-D转换后得到0~27648的整数。下式是转换后的数字N和压力P(MPa)之间的计算公式:

P=(High×N)/27648 (5-1)

需要用功能FC1利用式(5-1)实现上述运算,在OB1中调用FC1。

2.生成功能

1)打开STEP 7 Basic的项目视图,新建一个名为“FB FC实例”的新项目,如图5-1

978-7-111-47789-1-Chapter05-1.jpg

图5-1 新建项目

所示,双击项目树中的“添加新设备”,添加一个新设备,CPU的型号为CPU 1214C。

2)打开项目视图中的文件夹“程序块”,双击其中的“添加新块”,如图5-2所示。

3)打开“添加新块”对话框,如图5-3所示,单击其中的“功能”按钮,FC默认的编号为1,语言为LAD(梯形图)。设置功能的名称为“Pressure”。单击“确定”按钮,自动生成FC1,可以在项目树的文件夹“\PLC_1\程序块”中看到新生成的FC1。

978-7-111-47789-1-Chapter05-2.jpg

图5-2 新建程序

978-7-111-47789-1-Chapter05-3.jpg

图5-3 创建新块对话框

3.生成功能的局部数据

将鼠标的光标放在FC1的程序区最上面的分隔条上,按住鼠标的左键往下拉动分隔条,分隔条上面是功能的界面(Interface)区,下面是程序区。将水平分隔条拉至程序编辑器视窗的顶部,不再显示界面区,但是它仍然存在。

在界面区中生成局部变量,后者只能在它所在的块中使用。块的局部变量的名称由字符(包括汉字)和数字组成。在功能中有5种局部变量:

1)Input(输入参数):由调用它的块提供的输入数据。

2)Output(输出参数):返回给调用它的块的程序执行结果。

3)InOut(输入输出参数):初值由调用它的块提供,块执行后将它的值返回给调用它的块。

4)Temp(临时数据):暂时保存在局部数据堆栈中的数据。只是在执行块时使用临时数据执行完后,不再保存临时数据的数值,它可能被别的块的临时数据覆盖。

5)Return中的Ret_Val(返回值),属于输出参数。

在Input下面的“名称”列生成参数“输入数据”,单击“数据类型”列的按钮,用下拉式列表设置其数据类型为Int(16位整数)。用同样的方法生成输入参数“量程上限”、输出参数“压力值”和临时变量“中间变量”,它们的数据类型均为Real。

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

4.FC1的程序设计

首先用CONV指令将参数“输入数据”接收的A-D转换后的整数值(0~27648)转换为实数(Real),再用实数乘法指令和除法指令完成式(5-1)的运算,生成如图5-4所示程序。运算的中间结果用临时局部变量“中间变量”保存。STEP 7 Basic自动地在局部变量的前面添加#号,例如“#压力值”。

978-7-111-47789-1-Chapter05-4.jpg

图5-4 FC1中的压力测量值计算程序

5.在OB1中调用FC1

在变量表中生成调用FC1时需要的3个变量,如图5-5所示。

978-7-111-47789-1-Chapter05-5.jpg

图5-5 PLC变量表

978-7-111-47789-1-Chapter05-6.jpg

图5-6 OB1设备FC1的程序

%IW64是CPU集成的AI点的通道0的地址。将项目树中的FC1拖放到右边的程序区的水平“导线”上,如图5-6所示。FC1的方框中左边的“输入数据”等是在FC1的界面区中定义的输入参数,右边的“压力值”是输出参数。它们被称为FC的形式参数,简称为形参。形参在FC内部的程序中使用,在别的逻辑块调用FC时,需要为每个形参指定实际的参数,简称为实参。实参与它对应的形参应具有相同的数据类型。

指定实参时,可以使用变量表和全局数据块中定义的符号地址或绝对地址,也可以是调用FC1的块(例如OB1)的局部变量。需要注意的是,在STEP 7 Basic自动地在全局变量的符号地址两边添加双引号

块的Output(输出)和InOut(输入/输出)参数不能用常数来作实参,它们用来保存变量值,例如计算结果,因此应设置为地址。只有Input(输入参数)的实参能设置为常数。

6.调用功能

选中项目树中的PLC_1,将组态数据和用户程序下载到CPU,将CPU切换到RUN模式。在CPU集成的模拟量输入的通道0的输入端输入一个DC 0~10V的电压,用程序状态功能监视FC1或OB1中的程序。调节该通道的输入电压,观察MD18中的压力计算值是否与理论计算值相同。

如果输入模拟量电压不太方便,可以将输入参数“输入数据”的实参“压力转换值”(IW64)临时改为一个其他存储区中的字,例如MW14。打开项目树中的“监视表格”文件夹,双击其中的“添加新监视表格”,生成一个新的监视表,并在工作区自动打开它。在监视表中生成需要监视的FC1的输入参数MW14和输出参数MD18,如图5-7所示。

978-7-111-47789-1-Chapter05-7.jpg

图5-7 用监视表测试程序

单击工具栏上的978-7-111-47789-1-Chapter05-8.jpg按钮,启动监视功能,“监视值”列显示的是CPU中变量的实际值。在MW14的“修改值”列输入修改值后,单击工具栏上的978-7-111-47789-1-Chapter05-9.jpg按钮,将修改值送入CPU。接通I0.6对应的外接的小开关,使FC1的EN输入变为1状态,开始执行FC1。分别将27648和0写入MW14,MD18。

输出的压力计算值应为10.01MPa和0.0MPa,将某个中间值写入MW14,FC1通过MD18输出的压力计算值应与计算器计算出的值相同。

7.为块提供密码保护

选中生成的FC1,执行菜单命令“编辑”→“专有技术保护”→“启用专有技术保护”,在打开的对话框中输入密码和密码的确认值,如图5-8所示。单击“确定”按钮后,项目树中FC1的图标上出现一把锁978-7-111-47789-1-Chapter05-10.jpg的符号,表示FC1受到保护。双击打开FC1,可以看到界面区的变量,但是看不到程序区的程序。

选中生成的FC1,执行菜单命令“编辑”→“专有技术保护”→“更改密码”,在出现的对话框中输入原有的密码后,可以修改密码。

选中生成的FC1,执行菜单命令“编辑”→“专有技术保护”→“禁用专有技术保护”,在出现的对话框中输入正确的密码,单击“确认”按钮后,项目树中FC1的图标上的锁符号消失,FC1的保护被取消。双击打开FC1,又可以看到程序区中的程序。

978-7-111-47789-1-Chapter05-11.jpg

图5-8 专用技术保护

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

我要反馈