第16讲用户程序的结构与执行一、用户程序中用到的块二、用户程序结构三、I/O过程映象四、程序执行一、用户程序中用到的块一、用户程序中用到的块1.组织块(OB)组织块是操作系统与用户程序的接口,由操作系统调用,用于控制扫描循环和中断程序的执行,PLC的起动和错误处理等,有的CPU只能使用部分组织块。一、用户程序中用到的块(1)组织块的起动事件及对应优先级一、用户程序中用到的块一、用户程序中用到的块(2)OB1OB1是循环扫描的主程序块,它的优先级最低。其循环时间被监控。即除OB90以外,其它所有OB均可中断OB1的执行。以下二个事件可导致操作系统调用OB1:*CPU启动完毕。*OB1执行到上一个循环周期结束。一、用户程序中用到的块(3)起动组织块OB100~OB102当PLC接通电源以后,CPU有三种起动方式,可以在STEP7中设置CPU的属性时选择其一:暖起动(Warmrestart)、热起动(Hotrestart)和冷起动(Coldrestart)。OB为暖起动组织块,OB101为热起动组织块,OB102为冷起动组织块。对于OB100~OB102,CPU只在起动运行时对其进行一次扫描,其他时间只对OB1进行循环扫描。S7-300CPU(不包含CPU318)只有暖起动,用STEP7可以指定存储器位、定时器、计数器和数据块在电源掉电后的保持范围。一、用户程序中用到的块2.功能(FC)功能是用户编的没有固定存储区的块,其临时变量存储在局域数据堆栈中,功能执行结束后,这些数据就丢失了。可以用共享数据区来存储那些在功能执行结束后需要保存的数据,不能为功能的局域数据分配初始值。调用功能时可用实际参数代替形式参数。形参是实参在逻辑块中的名称,功能不需要背景数据块。功能被调用后,可以为调用它的块提供一个数据类型为RETRUN的返回值。一、用户程序中用到的块3.功能块(FB)功能块是用户编写的有自己存储区(背景数据块)的块,每次调用功能时需要提供各种类型的数据给功能块,功能块也要返回变量给调用它的块。这些数据静态变量(STAT)的形式存放在指定的背景数据块(DI)中,临时变量存储在局部数据堆栈中。功能块执行完后,背景数据块中的数据不会丢失,但是不会保存局域数据堆栈中的数据。在编写调用FB程序时,必须指定DI的编号,谳用时DI被自动打开。在编译FB时自动生成背景数据块中的数据。一、用户程序中用到的块4、数据块(DB)(1)共享数据块共享数据块存储的是全局数据,所有的FB、FC或OB都可以从共享数据块中读取数据,或将某个数据写入共享数据块。如果某个逻辑块被调用,它可以使用它的临时局域数据区(即L堆栈)。逻辑块执行结束后,其局域数据区中的数据丢失,但共享数据块中的数据不会删除。(2)背景数据块背景数据块中的数据是伴随FB或SFB自动生成的,是FB或SFB的变量声明表中的数据(不含临时变量TEMP)。它用于传递参数,FB的实参和静态数据存储在背景数据块中。调用功能块时,应同时指定背景数据块的编号,它只能被指定的功能块访问。一、用户程序中用到的块5、系统功能(SFC)和系统功能块(SFB)系统功能是集成在S7CPU的操作系统中预先编好程序的逻辑块,如时间功能和块传送功能等。SFC属于操作系统的一部分,可以在用户程序中调用。与SFB相比,SFC没有存储功能。系统功能块是为用户提供的已经编好的块,可以在用户程序中调用这些块,但是用户不能修改。它们是操作系统的一部分,不占用程序空间。SFB有存储功能,其变量保存在指定给它的背景数据块中。6、系统数据块(SDB)系统数据块是由STEP7产生的程序存储区,包含系统组态数据,如硬件模块参数和通信连接参灵敏等用于CPU操作系统的数据。一、用户程序中用到的块二、用户程序结构线性程序(线性编程)分部式程序(分部编程、分块编程)结构化程序(结构化编程或模块化编程)返回本节1.线性程序(线性编程)所谓线性程序结构,就是将整个用户程序连续放置在一个循环程序块(OB1)中,块中的程序按顺序执行,CPU通过反复执行OB1来实现自动化控制任务。这种结构和PLC所代替的硬接线继电器控制类似,CPU逐条地处理指令。事实上所有的程序都可以用线性结构实现,不过,线性结构一般适用于相对简单的程序编写。2.分部式程序(分部编程、分块编程)所谓分部程序,就是将整个程序按任务分成若干个部分,并分别放置在不同的功能(FC)、功能块(FB)及组织块中,在一个块中可以进一步分解成段。在组织块OB1中包含按顺序调用其他块的指令,并控制程序执行。在分部程序中,既无数据交换,也不存在重复利用的程序代码。功能(FC)和功能块(FB)不传递也不接收参数,分部程序结构的编程效率比线性程序有所提高,程序测试也较方便,对程序员的要求也不太高。对不太复杂的控制程序可考虑采用这种程序结构。3.结构化程序(结构化编程或模块化编程)所谓结构化程序,就是处理复杂自动化控制任务的过程中,为了使任务更易于控制,常把过程要求类似或相关的功能进行分类,分割为可用于几个任务的通用解决方案的小任务,这些小任务以相应的程序段表示,称为块(FC或FB)。OB1通过调用这些程序块来完成整个自动化控制任务。结构化程序的特点是每个块(FC或FB)在OB1中可能会被多次调用,以完成具有相同过程工艺要求的不同控制对象。这种结构可简化程序设计过程、减小代码长度、提高编程效率,比较适合于较复杂自动化控制任务的设计。三、I/O过程映像四、程序循环执行END