首页 理论教育 案例分析:函数块FC1的程序设计与仿真

案例分析:函数块FC1的程序设计与仿真

时间:2023-06-24 理论教育 版权反馈
【摘要】:图6-2函数的局部变量3.程序设计与仿真在函数FC1 的程序编辑窗口输入程序,如图6-3所示。图6-3函数FC1 的程序将项目树中的函数FC1 直接拖至OB1 程序区的水平“导线”上,这里就出现

案例分析:函数块FC1的程序设计与仿真

用函数FC 实现计算压力值的运算,具体如下:

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

1.建立项目与添加新块

在博途软件里新建立一个项目,并添加设备PLC 后,在项目树的程序块单击,出现添加新块的界面,单击左边方框的“FC 函数”按钮,默认的编号为1,在名称栏输入“计算压力”,单击“确定”按钮,生成函数FC1,如图6-1所示。

图6-1 添加FC 函数

2.生成函数的局部变量

添加新块后,在项目视图中的项目树里单击程序块“计算压力FC1”,右边出现程序编辑界面,将鼠标的光标放在FC1 的程序区上方的“块接口”水平分隔条上,按住鼠标左键,往下拉动分隔条,分隔条上面出现该函数的接口区,也就是定义函数局部变量的地方。

输入参数Input 用于接收调用它的主调块提供的输入数据;输出参数Output 用于将块的程序执行结果返回给主调块;输入输出参数InOut 的初值由主调块提供,块执行完后用同一个参数将它的值返回给主调块;临时数据Temp 是暂时保存在局部数据堆栈中的数据,每次调用块之后,临时数据可能被同一优先级中后面调用的块的临时数据覆盖,调用FC 和FB时,首先应初始化它的临时数据(写入数值),然后再使用;常量Constant 是块中使用并带有符号名的常量。函数的局部变量的类型及说明如表6-1所示。

表6-1 函数的局部变量的类型及说明

在块接口列表里输入函数各个局部变量的名称,单击“数据类型”列的按钮,用下拉式列表设置各个变量的数据类型,如图6-2所示。在接口区生成的局部变量只能在它所在的块中使用。用鼠标右键单击项目树中的FC1,单击快捷菜单的“属性”,选中打开的对话框左边的“属性”,用属性去掉复选框“块的优化访问”选项中的钩。单击工具栏上的“编译”按钮,成功编译后在FC1 的接口区会出现“偏移量”列,只有临时数据才有偏移量,一般都使用优化的块访问,不需要去掉。

(www.xing528.com)

图6-2 函数的局部变量

3.程序设计与仿真

在函数FC1 的程序编辑窗口输入程序,如图6-3所示。程序中用CONV 指令将参数“输入数据”接收的A~D 转换后的整数值(0 ~27 648)转换为实数(Real),再用实数乘法指令和实数除法指令完成运算,运算的中间结果用临时局部变量“中间变量”保存。STEP 软件在局部变量的前面会自动添加“#”,比如“#输入数据”。

图6-3 函数FC1 的程序

将项目树中的函数FC1 直接拖至OB1 程序区的水平“导线”上,这里就出现了一个带接口参数的FC1 函数,如图6-4 (a)所示。FC1 的方框中左边的参数有输入Input 类型的参数,也有输入/输出InOut 类型的参数,右边的参数有输出Output 类型的参数,它们都被称为FC 的形式参数,简称形参,形参在FC 内部的程序中使用。别的代码块要调用FC 时,需要为每个形参指定实际的参数,简称实参。实参和形参应具有相同的数据类型,比如这里的实参“压力转换值”和可以对应的形参“输入数据”有相同的数据类型。在PLC 变量表中可以定义实际参数,也可以在全局数据块中定义实际参数。这里是在PLC 变量表中定义实际参数,如图6-5所示。

变量定义完成后,在OB1 程序区,在带“???”的参数里输入对应的变量,如图6-4 (b)所示。PLC 变量表里的数据为全局变量,全局变量的符号地址两边添加双引号,与局部变量的数据有区别。

将程序下载到仿真CPU 后,令IW64 为13 824,执行FC1 程序后,输出压力值5.0 MPa被传送给它的实参压力计算值MD18,仿真结果如图6-6所示。

图6-4 FC1 函数

图6-5 PLC 变量表

图6-6 仿真结果

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

我要反馈