;;1函数(FC);1函数(FC);2生成与调用函数;FC在应用时有两个层次
1.程序中所有指令使用全局数据块中的地址;简单的理解为程序分割。
示例:控制多台电动机的起停
2.程序中所有指令使用局部变量;可以做成具有特定功能的块。
示例:控制多台电动机的起停;FC在应用时有两个层次;2生成与调用函数;2生成与调用函数;(2)定义FC的局部变量;在接口区可以生成局部变量,但是这些变量只能在它所在的块中使用,且均为符号访问寻址。
块的局部变量的名称由字符(可为汉字)、下划线和数字组成
在编程时引用这些变量,系统自动的为变量名前面加上#标识符(全局变量使用双引号,绝对地址前加%)。;2生成与调用函数;块参数
调用块为被调用块提供将使用的值。这些值将作为块参数进行引用。
输入参数为被调用块提供需处理的值。该块将通过输出参数返回结果。因此,块参数可作为调用块和被调用块之间的接口。(以食堂打饭为例,你是OB,食堂工作人员或者操作间是FC,OB和FC之间有一个接口);函数各种类型的局部变量的作用如下:
①Input(输入参数):用于接收调用它的代码块提供输入数据。(只能读)
②Output(输出参数):用于将块的程序执行结果返回给主调块。(只能写)
③InOut(输入_输出参数):初值由调用它的块提供,块执行完后用同一个参数将它的值返回给调用它的块。(可读/可写)
④Return(返回值):Return中自动生成的返回值“电动机控制”与函数的名称相同,属于输出参数,其值返回给调用它的块。返回值默认的数据类型为Void,表示函数没有返回值。(只能写);函数还有两种局部数据:
①Temp(临时变量):临时变量可以用于所有块(OB、FC、FB)中。当块执行的时候它们被用来临时存储数据,当退出该块时这些数据将丢失。这些临时数据存储在Lstack(局部数据堆栈)中。在“Temp”项下输入将要用到的临时变量名和数据类型,注意临时变量不能赋予初始值。
②Constant(常量):是在块中使用并且带有声明的符号名的常量。
本实例中在函数FC1中实现圆柱体体积的计算:输入“圆柱体直径”和“圆柱体高度”会计??出“圆柱体体积”。;如果仅需查询或读取值,则可使用输入参数;
如果要设置或写入这些值,则需使用输出参数。
如果要读写块参数,则需将这些块参数创建为in-out参数。
在块内使用块参数时,应遵循以下规则:
Input参数只能读取。Out参数只可写入。In/out参数可读取和写入。;生成上述圆柱体体积计算的FC局部变量。
①在Input列表中生成变量“圆柱体直径”、“圆柱体高度”,数据类型选择Real。
②在Output列表中生成变量“圆柱体体积”,数据类型选择Real。
③在Temp列表中生成变量“圆柱体半径”和“圆柱体底面积”,数据类型选择Real。
④在Constant列表中生成变量“Π”默认值为3.14,数据类型选择Real。
生成局部变量时,不需要指定存储器地址,根据各变量的类型,程序编辑器自动地为所有变量指定存储器地址。;(3)编写FC程序;此外在FC中也可以使用绝对地址或符号地址进行编程,即在FC中不使用局部变量,这样程序将无法重复使用。通常使用形参编程比较灵活,使用方便,特别对于重复功能的编程来说,仅需要在调用时改变实参即可,便于用户阅读及程序维护。;(4)在OB1中调用FC1;在OB1中调用FC1的方法:
双击打开Main[OB1]程序编辑视窗→将项目树中的FC1用鼠标拖拽至程序段1的水平线上→形成一个FC1的功能框。
参数说明:
FC1方框中;其他代码块调用FC时,需要为每个形参指定实际的参数,简称为实参。
(实参,具有存储器的数据)
实参在方框的外面,实参与它对应的形参应具有相同的数据类型。
提示:
赋值给形参时,可以采用变量表和全局数据块中定义的符号地址或绝对地址,也可以是调用FC1的块的局部变量。
STEP7自动地在程序中的全局变量的符号地址两边添加双引号。
给形参赋值时,对于开关量输入既可以采用触点形式,也可以直接输入地址。;(5)程序调试;程序运行状态监控;练习1临时变量Temp的应用
(1)在函数(FC)的接口区中定义变量;(2)在函数(FC)中编写程序;当MW200.0中的值为1时,Temp中的值保持;例1:顺序启动
(1)函数(FC)中定义变量;(3)在OB1中调用FC2,填写相关实参;