您现在的位置是:首页 > PLC技术 > PLC技术
STEP 7中功能与功能块变量声明表的建立
来源:艾特贸易2017-06-04
简介FC 没有固定的存储区的块,其临时变量存储在局域数据堆栈中,功能执行结束后,这些数据就丢失了。用共享数据区来存储那些在功能执行结束后需要保存的数据。调用功能和功能块时
FC没有固定的存储区的块,其临时变量存储在局域数据堆栈中,功能执行结束后,这些数据就丢失了。用共享数据区来存储那些在功能执行结束后需要保存的数据。调用功能和功能块时用实参(实际参数)代替形参(形式参数)。形参是实参在逻辑块中的名称,功能不需要背景数据块。功能和功能块用IN、OUT和IN_OUT参数做指针,指向调用它的逻辑块提供的实参。功能可以为调用它的块提供数据类型为RETURN的返回值。 FB是用户编写的有自己的存储区(背景数据块)的块,每次调用功能块时需要提供各种类型的数据给功能块,功能块也要返回数据给调用它的块。这些数据以静态变量( STAT)的形式存放在指定的背景数据块(DI)中,临时变量TEMP存储在局域数据堆栈中。调用FB时,必须指定DI的编号。在编译FB时,自动生成背景数据块中的数据。一个功能块可以有多个背景数据块,用于不同的被控对象。可以在FB的变量声明表中给形参赋初值。如果调用块时没有提供实参,将使用上一次存储在DI中的参数。 要为通用程序(FC或FB)建立输入变量、输出变量和内部变量,首先创建FC或FB程序块(本节以创建FC1程序块为例),首先创建FC1,在Blocks窗口中单击右键选择In-sen New Object> Function,如图6-1所示,创建功能FC并取名FC1。 图6-1 插入功能界面 在Blocks窗口中双击FC1图标,FC1程序梯形图编辑器界面如图6-2,图中的梯形图编辑器的右上半部分是变量声明表,右下半部分是程序指令部分,左边是指令列表。
图6-2 FC1梯形图程序编辑器界面 用户在变量声明表中创建本块中专用的变量(即局域变量)。局域变量分为IN(输入变量)、OUT(输出变量)、IN-OUT(输入/输出变量)、TEMP(临时变量)和STAT(静态变量)五种类型。 ·IN(输入变量):为调用它的块提供的输人参数。 ·OUT(输出变量):返回给调用它的块的输出参数。 ·IN-OUT(输入-输出变量):初值由调用它的块提供,被子程序修改后返回给调用 它的块。 ·TEMP(临时变量):暂时保存在局域数据区中的变量。只是在执行块时使用临时变 量,执行完后,在主程序中不能再使用该变量。 ·STAT(静态变量):在功能块的背景数据块中使用。关闭功能块后,其静态数据保 持不变。功能( FC)没有静态变量。 IN(输入变量)、OUT(输出变量)和IN-OUT(输入/输出变量)属于程序块的形式参数。TEMP(临时变量)属于程序块的局域变量,只在它所在的块中有效。STAT(静态变量)只在FB程序块中存在,也属于程序块的局域变量,在它所在的块中有效,而且PLC掉电后STAT变量仍然保持。 每一种类型的变量都包括变量名、变量类型和变量注释。在图6-2中,变量声明表的左边给出了该变量表的总体结构,点击某一变量类型,例如“OUT”,在表的右边将显示出该类型局域变量的详细情况。块中的局域变量名必须以字母开始,只能由英语字母、数字、下划线组成,不能使用汉字,但是在符号表中定义的共享数据的符号名可以使用其他字符(包括汉字)。在程序中,操作系统在局域变量前面自动加上“#”号。如果在块中只使用局域变量,不使用绝对地址或全局符号,易于形成通用子程序块实现结构化编程,并且易于将程序块移植到别的项目中去。 变量声明后在局域数据块中为临时变量( TEMP)保存有效的存储空间。对于功能块FB,还要为配合使用背景数据块为静态变量(STAT)保存空间。通过设置IN(输入)、OUT(输出)和IN-OUT(输入/输出)类型变量,声明块调用软件接口(即形式参数)。 将图6-2中变量声明表与程序指令部分的水平分隔条拉至程序编辑器视窗的顶部,不再显示变量声明表,但它仍然存在。将分隔条下拉,将再次显示变量声明表。 用户在功能块中声明变量时,除了临时变量外,它们将自动出现在功能块对应的背景数据块中。 在变量声明表中赋值时,不需要指定存储器地址;根据各变量的数据类型,程序编辑器自动地为所有局域变量指定存储器地址。 在变量声明表中选择ARRAY(数组)时,用鼠标单击相应行的地址单元。 如果想选中一个结构( Structure),用鼠标选中结构的第一行或最后一行的地址单元,即有关键字STRUCTURE或END-STRUCT那一行。若要选择结构中的某一参数,用鼠标点击该行的地址单元。
点击排行
