首页 理论教育 功能与功能块的生成和调用

功能与功能块的生成和调用

时间:2023-06-29 理论教育 版权反馈
【摘要】:图4.6添加不同类型的DB块4.2.l 生成与调用功能1.功能的特点功能和功能块是用户编写的程序,它们包含完成特定任务的程序。功能没有固定的存储区,功能执行结束后,其局部变量中的临时数据就丢失了。图4.12用监视表测试程序7.为块提供密码保护在离线状态中,选中生成的FC1,执行菜单命令“编辑→专有技术保护→启用专有技术保护”,在打开的对话框中输入

功能与功能块的生成和调用

图4.6 添加不同类型的DB块

4.2.l 生成与调用功能

1.功能的特点

功能(Function,FC)和功能块(Function block,FB)是用户编写的程序,它们包含完成特定任务的程序。FC和FB有与调用它的块共享的输入、输出参数,执行完FC和FB后,将执行结果返回给调用它的代码块。

功能没有固定的存储区,功能执行结束后,其局部变量中的临时数据就丢失了。可以用全局变量来存储那些在功能执行结束后需要保存的数据。

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

用功能FC1实现上述运算,在OB1中调用FC1。

2.生成功能

打开STEP7 V13的项目视图,生成一个名为“FB_FC”的新项目。双击项目树中的“添加设备”,添加一个新设备。CPU的型号为CPU 1214C DC/DC/DC,如图4.7 CPU选型。

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

3.生成功能的局部数据

图4.7 CPU选型

将鼠标的光标放在FCl的程序区最上面的分隔条上,按住鼠标的左键,往下拉动分隔条,分隔条上面是功能的界面(Interface)区,下面是程序区。将水平分隔条拉至程序编辑器视窗的顶部,这时不再显示接口,但它仍然存在。在界面区中生成局部变量,后者只能在它所在的块中使用。块的局部变量的名称由字符(包括汉字)和数字组成。由图4.8可知,功能有以下5种局部变量:

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

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

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

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

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

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

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

图4.8中的返回值Pressure属于输出参数,默认的数据类型为Void,该数据类型不保存数值,用于功能不需要返回值的情况。在调用 FC1 时,看不到 Pressure。如果将它设置为Void之外的数据类型,在FC1内部编程时可以使用该变量,在调用FC1时可以在方框的右边看到作为输出参数的Pressure。

图4.8 FC1的局部变量

4.FC1的程序设计

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

图4.9 FC1中的压力测量值计算程序

5.在OB1中调用FC1

在变量表中生成调用FC1时需要的3个变量如图4.10所示,IW64是CPU集成的AI点的通道0的地址。将项目树中的FC1拖放到右边的程序区的水平“导线”上(见图4.11)。FC1的方框中左边的“输入数据”等是在FC1的界面区定义的输入参数,右边的“压力值”是输出参数。它们被称为FC的形式参数,简称为形参。形参在FC内部的程序中使用,在别的逻辑块调用FC时,需要为每个形参指定实际的参数,简称为实参。实参与它对应的形参应具有相同的数据类型。定实参时,可以使用变量表和全局数据块中定义的符号地址或绝对地址,也可以是调用FC1的块(如OB1)的局部变量。

STEP 7 V13自动地在全局变量的符号地址两边添加双引号。块的Output(输出)和InOut(输入/输出)参数不能用常数来作实参,因为它们用来保存变量值,如计算结果,应设置为地址。只有Input(输入参数)的实参能设置为常数。

图4.10 PLC变量表

图4.11 0B1调用FC1的程序

6.调用功能的实验

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

如果输入模拟量电压不太方便,可以将输入参数“输入数据”的实参“压力转换值”(IW64)临时改为一个其他存储区中的字,如MW14。打开项目树中的“监视表格”文件夹,双击其中的“添加新监视表格”,生成一个新的监视表,并在工作区自动打开它。在监视表中生成需要监视的FC1的输入参数MW14和输出参数MDl8(见图4.12),点击工具栏上的按钮,启动监视功能,“监视值”列显示的是CPU中变量的实际值。在MW14的“修改值”列输入修改值后,点击工具栏上的按钮,将修改值送入CPU。接通I0.6对应的外接的小开关,使FC1的EN输入变为l状态,开始执行FC1。分别将27648和0写入MW14,MD18输出的压力计算值应为10.0 MPa和0.0 MPa,将某个中间值写入MW14,FC1通过MD18输出的压力计算值应与计算器计算出的值相同。

图4.12 用监视表测试程序

7.为块提供密码保护

在离线状态中,选中生成的FC1,执行菜单命令“编辑→专有技术保护→启用专有技术保护”,在打开的对话框中输入密码和密码的确认值。点击“确认”按钮后,项目树中FC1的图标上出现一把锁的符号,表示FC1受到保护。双击打开FCl,可以看到界面区的变量,但是看不到程序区的程序。

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

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

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

我要反馈