6Step7的结构化程序设计课件

上传人:我*** 文档编号:144910055 上传时间:2020-09-14 格式:PPT 页数:34 大小:988.50KB
返回 下载 相关 举报
6Step7的结构化程序设计课件_第1页
第1页 / 共34页
6Step7的结构化程序设计课件_第2页
第2页 / 共34页
6Step7的结构化程序设计课件_第3页
第3页 / 共34页
6Step7的结构化程序设计课件_第4页
第4页 / 共34页
6Step7的结构化程序设计课件_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《6Step7的结构化程序设计课件》由会员分享,可在线阅读,更多相关《6Step7的结构化程序设计课件(34页珍藏版)》请在金锄头文库上搜索。

1、STEP7的结构化程序设计,参见提高篇第三章,S7-300概述,要 点 STEP7可以采用3重编程方法进行设计,要学习掌握其结构化编程方法。 了解掌握内容 掌握STEP7结构化的程序设计方法; 调用与参数传递,数据结构 数据块和背景数据块 利用PLCsim调试程序的方法 作业 作业:第三章,1,2,3,5,6 说明 ?学时,功能块的编程与调用 STEP 7用户程序通常由组织块(OB)、功能块(FB)或功能块(FC)等三种类型的逻辑块和数据块(DB)组成 组织块(OB)是系统操作程序与用户应用程序在各种条件下的接口界面,用于控制程序的运行 功能块(FB、FC)实际上是用户子程序 数据块(DB)是

2、用户定义的用于存取数据的存储区,可以被打开或关闭。DB可以是属于某个FB的情景数据块,也可以是通用的全局数据块,用于FB或FC。,功能块及其组成 功能块(FB、FC)实际上是用户子程序,分为带“记忆”的功能块FB和不带“记忆”的功能块FC。前者有一个数据结构与该功能块的参数表完全相同的数据块(DB)附属于该功能块,并随功能块的调用而打开,随功能块的结束而关闭。该附属数据块叫做背景数据块(Instance Data Block),存放在背景数据块中的数据在FB块结束时继续保持,即被“记忆”。功能块FC没有背景数据块,当FC完成操作后数据不能保持 功能块由两个主要部分组成:一部分是每个功能块的变量

3、声明表,变量声明表声明此块的局部数据;另一部分是逻辑指令组成的程序,程序要用到变量声明表中给出的局部数据。 当调用功能块时,需提供块执行时要用到的数据或变量,也就是将外部数据传递给功能块,这被称为参数传递。参数传递的方式使得功能块具有通用性,它可被其它的块调用,以完成多个类似的控制任务。,功能块的变量声明表 用 STEP 7进行程序设计时,在打开的每一个逻辑块(OBs、FBs、FCs、DBs)的前部,都有一个变量声明表,用于定义在当前逻辑块中使用的参数和局部变量 在局部变量声明表中,可以对局部变量的名称、类型、数据类型进行定义,还可以对局部变量设置初始值和加注释。,每个逻辑块前部都有一个变量声

4、明表,在变量声明表中定义逻辑块用到的局部数据。局部数据分为参数和局部变量两大类 局部变量又包括静态变量和临时变量(暂态变量)两种 静态变量和临时变量是仅供逻辑块本身使用的数据 参数是在调用块和被调用块间传递的数据 下表1给出了局部数据声明类型,表中内容的排列顺序也是在变量声明表中声明变量的顺序和变量在内存中的存储顺序 在逻辑块中不需使用的局部数据类型,可以不必在变量声明表中声明。,对于功能块FB,操作系统为参数及静态变量分配的存储空间是背景数据块。这样参数变量在背景数据块中留有运行结果备份。在调用FB时,若没有提供实参,则功能块使用背景数据块中的数值。操作系统在L堆栈中给FB的临时变量分配存储

5、空间。 对于功能块FC,操作系统在L堆栈中给FC的临时变量分配存储空间。由于没有背景数据块,因而FC不能使用静态变量。输入、输出、I/O参数以指向实参的指针形式存储在操作系统为参数传递而保留的额外空间中。 对于组织块OB来说,其调用是由操作系统管理的,用户不能参与。因此,OB只有定义在L堆栈中的临时变量。,形式参数与实际参数 形式参数是在块变量声明表中声明的变量(参数) 实际参数是块在被调用时,形式参数的实际值,该值由调用块指定传送到被调用块(或者由被调用块返回给调用块) 形参需在功能块的变量声明表中定义,实参在调用功能块时给出。在功能块的不同调用处,可为形参提供不同的实参,但实参的数据类型必

6、须与形参一致 参数的有效期 在PLC运行期间始终被存储。S7将静态变量定义在背景数据块中,当被调用块运行时,能读出或修改静态变量;被调用块运行结束后,静态变量保留在数据块中。由于只有功能块FB有关联的背景数据块,因此只能为FB定义静态变量。功能块FC不能有静态变量。 临时变量仅在逻辑块运行时有效,逻辑块结束时存储临时变量的内存被操作系统另行 分配。S7将临时变量定义在L堆栈中,L堆栈是为存储逻辑块的临时变量而专设的。当块程序运行时,在L堆栈中建立该块的临时变量,一旦块执行结束,堆栈重新分配,因而信息丢失。,参数(局部数据)的数据类型 在变量声明表中,要明确局部数据的数据类型,这样操作系统才能给

7、变量分配确定的存储空间。局部数据可以是基本数据类型或复式数据类型,也可以是专门用于参数传递的所谓的“参数类型”。,定时器或计数器参数类型 当在功能块中定义一个定时器或计数器的形参后,在功能块中就能使用定时器或计数器编程,而不需要指定定时器号或计数器号,等到调用该功能块时,再为形参分配实参,如T20或C26,从而确定具体的定时器号或计数器的号。 块参数类型 在定义一个块时,可通过参数类型确定块的类型(FB、FC、DB等)。 在为块参数形参分配实参时,可使用物理地址,如FB20,也可使用符号地址,如:Motor_On。 指针参数类型 一个指针给出的是变量的地址,而不是变量的数值。通过定义指针类型的

8、形参,就能在功能块中先使用一个虚设的指针,等调用功能块时,再为指针类型的形参分配实参,赋予确定的地址。如P#M10.0。 ANY参数类型: 如果不能确定实参的数据类型,或者在调用功能块时需要改变数据类型,可以把形参定义为ANY参数类型,这样就可以用任何数据类型的实参为形参赋值,而不必像其它参数类型那样要保证形参和实参的数据类型一致。当定义了ANY参数类型后,CPU自动为ANY参数分配80 Bit的内存单元用于存储实参的起始地址,数据类型和长度编码。例如:功能FC10有三个定义为ANY类型的输入参数In_data1,In_data2,In_data3,当功能块FB1调用FC10时,FB1可以向F

9、C10的3个形参传递的数据类型是整数(静态变量Speed)、字(MW100)和数据块DB2中的双字(DB2.DBD0)。而当功能块FB2调用FC10时,FB2向FC10的3个形参传递的数据类型可以是实数数组(Matrix),布尔值(M3.3)和定时器(T4)。在这两次调用FC10时,传送的实参类型却完全不同。,功能块的调用过程及内存分配(参数的作用域) 当发生块调用或者有来自更高优先级的中断时,CPU在块堆栈(B堆栈)存储或处理相关的块信息,并对部分内存和寄存器产生影响。,B堆栈与L堆栈,B堆栈与L堆栈 B堆栈是CPU系统内存中的一部分,它存储以下被中断块的数据: 块号、块类型、优先级、被中断

10、块的返回地址; 块寄存器DB、DI被中断前的内容; 临时变量的指针(被中断块的L堆栈地址)。 STEP 7中可使用的B堆栈大小是有限制的,对于S7-300 CPU,则可在B堆栈中存储8个块的信息。因此,块调用嵌套深度也是有限制的,最多可同时激活8个块。 L堆栈是CPU内存中的一部分,它在块调用时被重新分配。L堆栈用来存储逻辑块中定义的临时变量,也分配给临时本地数据使用。梯形图的方块指令与标准功能块也可能使用L堆栈存储运算的中间结果。,调用功能块FB 当调用功能块FB时,会发生以下事件: 将调用块的地址和返回位置存储在B堆栈中,将调用块的局部变量压入L堆栈。 交换数据块DB寄存器内容与DI寄存器

11、内容。 新的数据块地址装入DI寄存器。 被调用块的实参装入DB和L堆栈上部。 当调用功能块结束时,先前块的现场信息从B堆栈中弹出,临时变量从L堆栈弹出。 交换DB和DI寄存器内容。 当调用功能块FB时,STEP 7并不一定要求给FB形参赋予实参,除非参数是复式数据类型的I/O形参或参数类型形参。如果没有给FB形参赋予实参,则功能块FB就调用背景数据块内的数值。该数值是在功能块的变量声明表内或背景数据块内设置的形参初始数值。,调用功能FC 当调用功能块FC时会有以下事件发生: 功能块FC实参的指针存到调用块的L堆栈; 调用块的地址和返回位置存储在块堆栈,调用块的局部数据压入L堆栈; 功能块存储临

12、时变量的L堆栈区被推入L堆栈上部; 当被调用功能块FC结束时,先前块的信息存储在块堆栈中,临时变量弹出L堆栈。 因为功能块FC不用背景数据块,不能分配初始数值给功能块FC的局部数据,所以必须给功能块FC提供实参。 STEP 7为功能块FC提供了一个特殊的返回值输出参数(关键字:RET_VAL)。当在文本文件中创建功能块FC时,你可以在定义功能块FC命令后输入数据类型(如BOOL或INT)。对文本文件进行编译时,STEP 7会自动生成RET_VAL输出参数。当用STEP 7的程序编辑器(Program Editor)以增量模式创建功能块FC时,可在FC的变量声明表中声明一个输出参数RET_VAL

13、,并指明其数据类型。,功能块编程与调用 对功能块编程分两步进行:第一步是定义局部变量(填写局部变量表);第二步是编写要执行的程序,可以用梯形图或语句表两种形式编程,并在编程过程中使用定义了的局部变量(数据)。 定义局部变量 分别定义形参、静态变量和临时变量(FC块中不包括静态变量); 确定各变量的声明类型(Decl.)、变量名(Name)和数据类型(Data Type), 还要为变量设置初始值(Initial Value)(尽管对有些变量初始值不一定有意义)。 如果需要还可为变量注释(Comment)。 在增量编程模式下,STEP 7将自动产生局部变量地址(Address)。 编写功能块程序

14、写功能块程序时,可以用以下两种方式使用局部变量 使用变量名,此时变量名前加前缀“#”,以区别于在符号表中定义的符号地址。增量方式下,前缀会自动产生。 直接使用局部变量的地址,这种方式只对背景数据块和L堆栈有效。 调用功能块 调用时指定实际参数 在调用FB块时,要说明其背景数据块。背景数据块应在调用前生成,其顺序格式与变量声明表必须保持一致。在增量方式下,调用FB块时,STEP 7会自动提醒并生成背景数据块。此时也为背景数据块设置了初始值,该初始值与变量声明表中的相同。当然也可以为背景数据块设置当前值(Current Value),即存储在CPU中的数值。,设计一个单按钮启停的控制功能FC0:按

15、动次数为单数时启动,双数时停止。设有2电机采用单按钮控制启停,SB1控制电机1,SB2控制电机2,电机1和电机2不同时工作,通过选择开关SA进行控制 首先进行接线地址配置(确定点数、类型、地址、符号命名),FC0变量的声明 FC0的编程,编写OB1(FC0的调用),OB1: A I0.0 CALLFC0 SB:=I0.1 KM:=Q4.1 M1:=M0.0 M2:=M0.1,ANI0.0 CALLFC0 SB:=I0.2 KM:=Q4.2 M1:=M0.0 M2:=M0.1,数据块与数据结构,数据块 数据块定义在S7 CPU存储器中,用户可在存储器中建立一个或多个数据块。每个数据块可大可小,但

16、CPU对数据块数量及数据总量有限制,如对于CPU314,用作数据块的存储器最多为8 KB(8192 B),用户定义的数据总量不能超出这个限制。对数据块必须遵循先定义后使用的原则,否则,将造成系统错误 定义数据块 编程阶段和运行程序中都能定义数据块。大多数数据块是在编程阶段用STEP 7开发软件包定义的,定义内容包括数据块号及块中的变量(包括变量符号名、数据类型以及初始值等),定义完成后,数据块中变量的顺序及类型决定了数据块的数据结构,变量的数量决定了数据块的大小。数据块在使用前,必须作为用户程序的一部分下载到CPU中。 如果确实需要,还可以在程序运行中动态定义一个数据块。动态定义时,数据块号是自动产生的,数据块在存储器中的位置是动态分配的。由于要定义的数据块有可能大于CPU存储器(用于数据块的部分)的剩余空间,因此动态定义过程有可能失败。,访问数据块 在用户程序中可能定义了许多数据块,而每个数据块中又有许多不同类型的数据,因此,访问时需要明确数据块号和数据块中的数据类型与位置。根据明确数据块号的不同方法,可以用多种方法访问数据块中的数据。 直

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号