西门子S7-300/400PLC的程序功能块
时间:2023-03-19来源:佚名
西门子S7-300/400的plc用户程序结构与S7-200有明显的不同,可以使用线性化结构以及功能调用式结构与结构化编程。 采用调用式结构与结构化编程时,程序以组织块(OB)、程序块(FC)、功能块(FB)、系统程序块( SFC)、系统功能块(SFB)、数据块(DB)等形式出现,其中,组织块(OB)、程序块(FC)、功能块(FB)统称为“逻辑块(Logic Block)”;系统程序块(SFC)、系统功能块(SFB)统称为“系统块”。 (1)组织块(OB) 组织块(Organization Blocks,简称OB)提供了PLC内部CPU操作系统与用户程序间的接口,它是由CPU操作系统直接进行调用的逻辑块,用来管理PLC程序中各组成部分的调用和执行中断。OB决定了PLC用户程序的结构与块的调用顺序,起到了“管理”用户程序的作用。 S7-300/400不同的CPU类型,可以选择、支持不同的OB块,但OB1是所有PLC用户程序的循环控制块,它是运行PLC用户程序的前提条件,因此,任何PLC程序、任何CPU都不可以缺少OB1。 OB块的调用条件被称为“触发事件”,根据“触发事件”的不同,OB块可以分为若干级别,各个级别有不同的优先级,高优先级的OB可以中断低优先级OB的执行。如果需要,S7系列PLC除OB1外,还可以使用多个OB块。 (2)程序块(FC) 程序块(Function,简称FC)是由用户编写的、不需要专门数据块的常用逻辑块。 FC块在程序中一般不可以重复调用,在大多数场合,FC块应直接使用PLC的“绝对地址”或“符号地址”进行编程,但根据需要,可以定义部分程序变量。 与S7-200 -样,FC块的“临时变量”同样存储在局部变量数据堆栈(L)中,这一区域为全部程序块所公用,只可以用于FC块内部使用的中间运算结果寄存(这些中间运算结果不可以用于FC块外部);程序块执行完成后,局部变量数据堆栈内的数据将被其他块所需要的内容所替代。如果需要保存可以用于其他逻辑块的状态,应使用PLC的内部标志寄存器M或使用“数据块DB”。 在程序块FC中,有部分为PLC生产厂家所提供的、集成在S7 CPU操作系统中的逻辑块,称为系统程序块(System Function,简称SFC)。系统程序块SFC属于PLC内部操作系统的一部分,用户不需要编写,也不可以对其进行编辑,但可以根据需要直接调用。 (3)功能块(FB) 功能块(Function Blocks,简称FB块)是由用户编写的、需要专用数据块(Instance Data Blocks,称为“即时数据块”或“背景数据块”,简称DI)支持的常用逻辑块。 FB块与FC块的作用基本相同,但FB中除可以使用“绝对地址”或“符号地址”进行编程外,在结构化编程时必须使用“程序变量”进行编程,因此,FB必须配套的、独立的数据存储区域——“即时数据块DI”。DI -方面可以为调用FB提供执行程序所需要的“程序变量”赋值与其他数据,另一方面,功能块FB也能通过DI给调用它的逻辑块返回所需要的数据。 与功能调用块FC -样,功能块FB中也有部分为PLC生产厂家所提供的、集成在S7 CPU操作系统中的功能块,称为系统功能块(System Function Blocks,简称SFB)。系统功能块SFB同样属于PLC内部操作系统的一部分,用户不需要编写,也不可以对其进行编辑,但可以根据需要直接调用。 (4)数据块(DB) 数据块(Data Blocks,简称DB)是用来存放执行用户程序时所需的数据与存储程序执行结果的数据存储区,其作用与标志寄存器类似,但数量更多。数据块DB按不同的用途可以分为即时数据块(Instance DataBlocks,又称背景数据块,简称DI)和通用数据块(Data Blocks,又称共享数据块,简称DB)两类。 即时数据块( DI)用于传递功能块的参数,只能被指定的功能块FB访问。调用功能块FB时,必须同时指定用于该功能块的即时数据块DI,即时数据块内的数据可以自动生成,它们可以是FB变量声明表中的数据(不含临时变量)。 通用数据块(DB)用于存储PLC的全局数据,所有的FB、FC或OB都可以对通用数据块进行读写操作,因此,又被称为共享数据块。通用数据块内的数据不会因用户程序的结束而删除。 |