您现在的位置是:首页 > PLC技术 > PLC技术

S7-300/400PLC 用户程序中的块

来源:艾特贸易2017-10-30

简介STEP7 编程软件允许用户将编写的程序和程序所需的数据放置在块中,使用户程序结构化,易于程序的修改、查错和调试。块结构显著地增加了 PLC 程序的组织透明性、可理解性和易维护


   STEP7编程软件允许用户将编写的程序和程序所需的数据放置在块中,使用户程序结构化,易于程序的修改、查错和调试。块结构显著地增加了PLC程序的组织透明性、可理解性和易维护性。各种块的简要介绍如表4-1所示。

4-1  用户程序中的块

 表4-1 用户程序中的块

    1.组织块(OB)

OB1是主程序循环块,用于循环处理,操作系统在每一次循环中调用一次组织块OB1。一个循环周期分为输入、程序的执行、输出和其他任务。例如下载、删除块、接收和发送全局数据等。根据过程控制的复杂程度,可将所有程序放入OB1中进行线性编程,或者将程序用不同的逻辑块加以结构化,通过OB1调用这些逻辑块,并允许块间的相互调用。这样可以把一个复杂的自动化任务分解为能够反映过程的工艺、功能或可以反复使用的小任务,使控制变得更加容易。S7-300 PLC的程序调用结构如图4-1所示。

    从图4-1中可以看出,操作系统自动循环扫描OB1OB1安排其他程序块的调用条件和调用顺序。FCFB可以相互调用。FB后面的阴影图案表示伴随FB的背景数据块。

    块的调用指令中止当前块的运行调用,然后执行被调用块的所有指令,当前正在执行的块在当前语句执行完后被停止执行(被中断),操作系统将会调用一个分配给该事件的组织块。该组织块执行完后,被中断的块将从断点处继续执行。

生成逻辑块(OBFCFB)时可以声明临时局域数据。这些数据是临时的,退出逻辑块时不保留临时局域数据。CPU按优先级划分局域数据区,同一优先级的块共用一片局域数据区。可以用STEP 7改变S7-400每个优先级的局域数据的数量。

 图4-1 S7-300 PLC的程序调用结构

4-1  S7-300 PLC的程序调用结构

    2.功能(FC)与功能块(FB)

    功能(FC)是用户编写的没有固定存储区的块,其临时变量存储在局域数据堆栈中,功能执行结束后,这些数据就丢失了。利用共享数据区可以存储那些在功能执行结束后需要保存的数据,由于FC没有自己的数据存储区,所以不能为功能的局域数据分配初始值。

    调用功能和功能块时用实参(实际参数)代替形参(形式参数)。形参是实参在逻辑块中的名称,功能不需要背景数据块。功能和功能块用输入(IN)参数、输出(OUT)参数和I/O(IN/OUT)参数做指针,指向调用它的逻辑块提供的实参。另外,功能可以为调用它的块提供数据类型为RETURN的返回值。

    功能块(FB)是用户编写的具有自己存储区域(背景数据块)的块,每次调用功能块时需要提供各种类型的数据给功能块,功能块也要返回变量给调用它的块。这些数据以静态变量(STAT)的形式存放在指定的背景数据块(DI)中,临时变量(IEMP)存储在局域数据堆栈中。

    调用功能块或系统功能块时,必须指定背景数据块的编号,调用时背景数据块被自动打开。在编译功能块系统或功能块时,系统会自动生成背景数据块中的数据。用户可以在用户程序中或通过HMI(人机接口)来访问这些背景数据。

可以在功能块的变量声明表中给形参赋初值,它们被自动写入相应的背景数据块中。在调用块时,CPU将实参分配给形参的值存储在背景数据块中。如果调用块时没有提供实参,将使用上一次存储在背景数据块中的参数。

    3.数据块

    数据块(DB)是用于存放执行用户程序时所需的变量数据的数据区。与逻辑块不同,在数据块中没有STEP7的指令,STEP 7按数据生成的顺序自动地为数据块中的变量分配地址。数据块分为共享数据块和背景数据块,其最大容量与CPU型号有关。

   (1)共享数据块

    共享数据块存储的是全局数据,所有的功能块、功能或组织块(统称为逻辑块)都可以从共享数据块中读取数据,或将数据写入共享数据块。CPU可以同时打开一个共享数据块和一个背景数据块。如果某个逻辑块被调用,可以使用它的临时局域数据区(L堆栈)。逻辑块执行结束后,其局域数据区中的数据丢失,但是共享数据块中的数据不会被删除。

   (2)背景数据块

    背景数据块中的数据是自动生成的,它们是功能块变量声明表中的数据(不包括临时变量TEMP)。背景数据块用于传递参数,功能块的实参和静态数据存储在背景数据块中,调用功能块时,应同时指定背景数据块的编号和符号,背景数据块只能被指定的功能块访问。

操作时应首先生成功能块,然后生成它的背景数据块。在生成背景数据块时指明它的类型为背景数据块(Instance),并指明功能块的编号。在调用功能块时使用不同的背景数据块,可以控制多个同类的对象。例如,一个用于电动机控制的功能块,可以通过对每个不同的电动机,使用不同的背景数据块来控制多台电动机,如图4-2所示。

 图4-2用于不同对象的背景数据块

4-2用于不同对象的背景数据块

   (3)系统功能块(SFB)和系统功能(SFC)

    系统功能块和系统功能是S7系列CPU提供的标准的已经为用户编制好程序的块,用户可以直接调用它们,以便高效地编制自己的程序,但用户不能修改这些功能块。它们是操作系统固有的一部分,不占用用户的程序空间。其中系统功能块有存储功能,其变量保存在指定的背景数据块中。

   (4)系统数据块(SDB)

    系统数据块是由STEP 7产生的程序存储区,包含系统组态数据。例如,硬件模块参数和通信连接参数等用于CPU操作系统的数据。

   (5)块的调用

在程序编制过程中,可以用CALLCU(无条件调用)和CCRLO=1时调用)指令调用没有参数的功能和功能块。这里需要注意用CALL指令调用功能块和系统功能块时,必须指定背景数据块,而且静态变量和临时变量不能出现在调用指令中。