程序结构与编程

上传人:油条 文档编号:1575198 上传时间:2017-06-26 格式:PPT 页数:38 大小:800KB
返回 下载 相关 举报
程序结构与编程_第1页
第1页 / 共38页
程序结构与编程_第2页
第2页 / 共38页
程序结构与编程_第3页
第3页 / 共38页
程序结构与编程_第4页
第4页 / 共38页
程序结构与编程_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《程序结构与编程》由会员分享,可在线阅读,更多相关《程序结构与编程(38页珍藏版)》请在金锄头文库上搜索。

1、1 S7 CPU中的程序,1.1 用户程序中的块结构1.2 用户程序结构1.3 I/O过程映像1.4 程序循环执行,返回本章,1.1 用户程序中的块结构,返回本节,1.2 用户程序结构,线性程序(线性编程)分部式程序(分部编程、分块编程) 结构化程序(结构化编程或模块化编程),返回本节,1. 线性程序(线性编程),所谓线性程序结构,就是将整个用户程序连续放置在一个循环程序块(OB1)中,块中的程序按顺序执行,CPU通过反复执行OB1来实现自动化控制任务。这种结构和PLC所代替的硬接线继电器控制类似,CPU逐条地处理指令。事实上所有的程序都可以用线性结构实现,不过,线性结构一般适用于相对简单的程

2、序编写。,返回上级,2.分部式程序(分部编程、分块编程),所谓分部程序,就是将整个程序按任务分成若干个部分,并分别放置在不同的功能(FC)、功能块(FB)及组织块中,在一个块中可以进一步分解成段。在组织块OB1中包含按顺序调用其他块的指令,并控制程序执行。 在分部程序中,既无数据交换,也不存在重复利用的程序代码。功能(FC)和功能块(FB)不传递也不接收参数,分部程序结构的编程效率比线性程序有所提高,程序测试也较方便,对程序员的要求也不太高。对不太复杂的控制程序可考虑采用这种程序结构。实际上就是编辑并调用无参功能(FC) 。,返回上级,3. 结构化程序(结构化编程或模块化编程),所谓结构化程序

3、,就是处理复杂自动化控制任务的过程中,为了使任务更易于控制,常把过程要求类似或相关的功能进行分类,分割为可用于几个任务的通用解决方案的小任务,这些小任务以相应的程序段表示,称为块(FC或FB)。OB1通过调用这些程序块来完成整个自动化控制任务。 结构化程序的特点是每个块(FC或FB)在OB1中可能会被多次调用,以完成具有相同过程工艺要求的不同控制对象。这种结构可简化程序设计过程、减小代码长度、提高编程效率,比较适合于较复杂自动化控制任务的设计。实际上就是编辑并调用有参功能(FC)。,返回上级,1.3 I/O过程映像,返回本节,1.4 程序循环执行,返回本节,功能(FC)、功能块(FB)和组织块

4、(OB)统称为逻辑块(或程序块)。功能块(FB)有一个数据结构与该功能块的参数完全相同的数据块,称为背景数据块,背景数据块依附于功能块,它随着功能块的调用而打开,随着功能块的结束而关闭。存放在背景数据块中的数据在功能块结束时继续保持。而功能(FC)则不需要背景数据块,功能调用结束后数据不能保持。组织块(OB)是由操作系统直接调用的逻辑块。 3.1 逻辑块(FC和FB)的结构 3.1 逻辑块(FC和FB)的编程,3 逻辑块(FC和FB)的结构及编程,返回本章,逻辑块(OB、FB、FC)由变量声明表、代码段及其属性等几部分组成。局部变量声明表(局部数据) 逻辑块局部变量的数据类型 逻辑块的调用过程

5、及内存分配,3.1 逻辑块(FC和FB)的结构,返回本节,每个逻辑块前部都有一个变量声明表,称为局部变量声明表。,1. 局部变量声明表,局部数据分为参数和局部变量两大类,局部变量又包括静态变量和临时变量(暂态变量)两种。,返回上级,对于功能块(FB),操作系统为参数及静态变量分配的存储空间是背景数据块。这样参数变量在背景数据块中留有运行结果备份。在调用FB时,若没有提供实参,则功能块使用背景数据块中的数值。操作系统在L堆栈中给FB的临时变量分配存储空间。 对于功能(FC),操作系统在L堆栈中给FC的临时变量分配存储空间。由于没有背景数据块,因而FC不能使用静态变量。输入、输出、I/O参数以指向

6、实参的指针形式存储在操作系统为参数传递而保留的额外空间中。 对于组织块(OB)来说,其调用是由操作系统管理的,用户不能参与。因此,OB只有定义在L堆栈中的临时变量。,返回上级,对逻辑块编程时必须编辑下列三个部分: 变量声明:分别定义形参、静态变量和临时变量(FC块中不包括静态变量);确定各变量的声明类型(Decl.)、变量名(Name)和数据类型(Data Type),还要为变量设置初始值(Initial Value)。如果需要还可为变量注释(Comment)。在增量编程模式下,STEP 7将自动产生局部变量地址(Address)。 代码段:对将要由PLC进行处理的块代码进行编程。 块属性:块

7、属性包含了其它附加的信息,例如由系统输入的时间标志或路径。此外,也可输入相关详细资料。,3.2 逻辑块(FC和FB)的编程,返回本节,1.临时变量的定义和使用,返回上级,4.定义形式参数,返回上级,编写逻辑块(FC和FB)程序时,可以用以下两种方式使用局部变量: 使用变量名,此时变量名前加前缀“#”,以区别于在符号表中定义的符号地址。增量方式下,前缀会自动产生。 直接使用局部变量的地址,这种方式只对背景数据块和L堆栈有效。 在调用FB块时,要说明其背景数据块。背景数据块应在调用前生成,其顺序格式与变量声明表必须保持一致。,5.编写控制程序,返回上级,所谓无参功能(FC),是指在编辑功能(FC)

8、时,在局部变量声明表不进行形式参数的定义,在功能(FC)中直接使用绝对地址完成控制程序的编程。这种方式一般应用于分部式结构的程序编写,每个功能(FC)实现整个控制任务的一部分,不重复调用。4.1 编辑无参功能(FC)4.2 在OB1中调用无参功能(FC),4 编辑并调用无参功能(FC)分部程序设计,返回本章,所谓有参功能(FC),是指编辑功能(FC)时,在局部变量声明表内定义了形式参数,在功能(FC)中使用了虚拟的符号地址完成控制程序的编程,以便在其他块中能重复调用有参功能(FC)。这种方式一般应用于结构化程序编写。5.5.1 编辑有参功能(FC) 5.5.2 在OB1中调用有参功能(FC),

9、5 编辑并调用有参功能(FC)结构化程序设计,返回本章,功能块(FB)在程序的体系结构中位于组织块之下。它包含程序的一部分,这部分程序在OB1中可以多次调用。功能块的所有形参和静态数据都存储在一个单独的、被指定给该功能块的数据块(DB)中,该数据块被称为背景数据块。当调用FB时,该背景数据块会自动打开,实际参数的值被存储在背景数据块中;当块退出时,背景数据块中的数据仍然保持。 5.6.1 编辑无静态参数的功能块(FB)5.6.2 在OB1中调用无静态参数的功能块(FB),6 编辑无静参的功能块(FB ),返回本章,5.7 编辑并调用有静态参数的功能块,在编辑功能块(FB)时,如果程序中需要特定

10、数据的参数,可以考虑将该特定数据定义为静态参数,并在FB的声明表内STAT处声明。 下面以交通信号灯控制系统的设计为例,介绍如何编辑和调用有静态参数的功能块。5.7.1 编辑有静态参数的功能块(FB)5.7.2 在OB1中调用有静态参数的功能块(FB),返回本章,5.8 使用多重背景结构化程序设计,使用多重背景可以有效地减少数据块的数量,其编程思想是创建一个比FB1级别更高的功能块,如FB10,将未作任何修改的FB1作为一个“局部背景”,在FB10中调用。对于FB1的每一个调用,都将数据存储在FB10的背景数据块DB10中。5.8.1 创建多重背景的S7项目5.8.2 编辑功能(FC)5.8.

11、3 编辑共享数据块 5.8.4 编辑功能块(FB)5.8.5 生成多重背景数据块DB105.8.6 在OB1中调用功能(FC)及上层功能块(FB),返回本章,5.8.1 创建多重背景的S7项目,【例5-8-1】 发动机组控制系统设计使用多重背景。 设某发动机组由1台汽油发动机和1台柴油发动机组成,现要求用PLC控制发动机组,使各台发动机的转速稳定在设定的速度上,并控制散热风扇的起动和延时关闭。每台发动机均设置一个起动按钮和一个停止按钮。创建S7项目硬件配置编写符号表 规划程序结构,返回本节,1. 创建S7项目 使用菜单【File】【“New Project”Wizard】创建发动机组控制系统的

12、S7项目,并命名为“多重背景”。CPU选择CPU 315-2DP,项目包含组织块OB1。2. 硬件配置 在“多重背景”项目内打开“SIMATIC 300 Station”文件夹,打开硬件配置窗口,并按下图所示完成硬件配置。,返回上级,3.编辑符号表,返回上级,I/O分配:I1.0汽油发动机启动 Q5.0汽油发动机启动命令I1.1汽油发动机停止 Q5.2汽油发动机风扇的启动命令I1.2汽油发动机故障 T1汽油发动机风扇延时关闭定时器I1.4柴油发动机启动 Q5.4柴油发动机启动命令I1.5柴油发动机停止 Q5.6柴油发动机风扇启动命令I1.6柴油发动机故障 T2柴油发动机风扇延时关闭定时器Fc1

13、风扇控制FB1发动机控制FB10发动机控制上层功能块DB3共享数据块DB10 FB10的实例数据块,4.规划程序结构,FB10为上层功能块,它把FB1作为其“局部实例”,通过二次调用本地实例,分别实现对汽油机和柴油机的控制。这种调用不占用数据块DB1和DB2,它将每次调用(对于每个调用实例)的数据存储到体系的上层功能块FB10的背景数据块DB10中。,返回上级,5.8.2 编辑功能(FC),1.定义局部变量声明表 FC1用来实现发动机(汽油机或柴油机)的风扇控制,按照控制要求,当发动机起动时,风扇应立即起动;当发动机停机后,风扇应延时关闭。因此FC1需要一个发动机起动信号、一个风扇控制信号和一

14、个延时定时器。,返回本节,2.编辑FC1的控制程序,FC1所实现的控制要求:发动机起动时风扇起动,当发动机再次关闭后,风扇继续运行4s,然后停止。定时器采用断电延时定时器,控制程序如下图所示。,返回上级,5.8.3 编辑共享数据块,共享数据块DB3可为FB10保存发动机(汽油机和柴油机)的实际转速,当发动机转速都达到预设速度时,还可以保存该状态的标志数据。,返回本节,5.8.4 编辑功能块(FB),在该系统的程序结构内,有2个功能块:FB1和FB10。FB1为底层功能块,所以应首先创建并编辑;FB10为上层功能块,可以调用FB1。编辑底层功能块FB1 编辑上层功能块FB10,返回本节,1.编辑

15、底层功能块FB1,在“多重背景”项目内创建FB1,符号名“Engine”。定义功能块FB1的变量声明表,返回上级,编写功能块FB1的控制程序,FB1主要实现发动机的起停控制及速度监视功能,其控制程序如下图所示。,返回上级,2. 编辑上层功能块FB10,在“多重背景”项目内创建FB10,符号名“Engines”。在FB10的属性对话框内激活“Multi-instance capable”选项。,返回上级,定义功能块FB10的变量声明表,要将FB1作为FB10的一个“局部背景”调用,需要在FB10的变量声明表中为FB1的调用声明不同名称的静态变量,数据类型为FB1(或使用符号名“Engine”)。

16、,返回上级,编写功能块FB10的控制程序,在变量声明表内完成FB1类型的局部实例:“Petrol_Engine”和“Diesel_Engine”的声明以后,在程序元素目录的“Multiple Instances”目录中就会出现所声明的多重实例,如图所示。接下来可在FB10的代码区,调用FB1的“局部实例”。,返回上级,编写功能块FB10的控制程序,调用FB1局部实例时,不再使用独立的背景数据块,FB1的实例数据位于FB10的实例数据块DB10中。发动机的实际转速可直接从共享数据块中得到,如DB3.DBW2 (符号地址为,S_Data.PE_Actual_Speed)。,返回上级,5.8.5 生成多重背景数据块DB10,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

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