西门子中国总代理
西门子中国总代理
西门子中国总代理
西门子300400PLC的程序与存储器结构
(1) S7-300/400 PLC的程序功能块。S7-300/400 PLC的用户程序结构与S7-200PLC有明显的不同,可以使用线性化结构及功能调用式结构与结构化编程。
采用调用式结构与结构化编程时,程序以组织块(OB)、程序块(FC)、功能块(FB)、系统程序块(SFC)、系统功能块(SFB)、数据块(DB)等形式出现。其中,组织块(OB)、程序块(FC)、功能块(FB)统称为"逻辑块"(LogicBlok);系统程序块(SFC)、系统功能块(SFB)统称为"系统块"。
1) 组织块(QB)。组织块(Organization Blocks,简称OB)提供了PLC内部CPU操作系统与用户程序间的接口,它是由CPU操作系统直接进行调用的逻辑块,用来管理PLC程序中各组成部分的调用和执行中断。OB决定了PLC用户程序的结构与块的调用顺序,起到了"管理"用户程序的作用。
S7-300/400 PLC不同的 CPU类型。可以选择、支持不同的 OB 块,但 OBI 是所有 PLC用户程序的循环控制块,它是运行PLC用户程序的前提条件,任何PLC程序、任何CPU都不可以缺少OBI。
OB块的调用条件被称为"触发事件",根据"触发事件"的不同,OB块可以分为若干级别,各个级别有不同的优先级,高优先级的OB可以中断低优先级OB的执行。如果需要,S7系列PLC除OB1外,还可以使用多个OB块。
2)程序块(FC)*。程序块(Function,FC)是由用户编写的、不需要专门数据块的常用逻辑块。FC块在程序中一般不可以重复调用,在大多数场合,FC块应直接使用PLC的"**地址"或"符号地址”进行编程,但根据需要可以定义部分程序变量。
与S7-200PLC一样,FC块的“临时变量”同样存储在局部变量数据堆栈(L)中,这一区域为全部程序块所公用,只可以用于FC块内部使用的中间运算结果寄存(这些中间运算结果不可以用于FC块外部);程序块执行完成后,局部变量数据堆栈内的数据将被其他块所需要的内容所替代。如果需要保存可以用于其他逻辑块的状态,应使用PLC的内部标志寄存器M或使用"数据块DB"。
在程序块FC中,有部分为PLC生产厂家所提供的、集成在S7PLC的CPU操作系统中的逻辑块,称为系统程序块(SystemFunction,SFC)。系统程序块SFC属于PLC内部操作系统的一部分,用户不需要编写,也不可以对其进行编辑,但可以根据需要直接调用。
3) 功能块(FB)。功能块(Function Blocks,FB块)是由用户编写的、需要专用数据块(Instance DataBlocks,称为"即时数据块"或"背景数据块",简称DI)支持的常用逻辑块。
FB与FC的作用基本相同,但FB中除可以使用"**地址"或"符号地址"进行编程外,在结构化编程时必须使用“程序变量”进行编程,FB必须配套独立的数据存储区域——“即时数据块DI”。DI一方面可以为调用FB提供执行程序所需要的“程序变量”赋值与其他数据,另一方面,功能块FB也能通过DI给调用它的逻辑块返回所需要的数据。
与功能调用块FC一样,功能块FB中也有部分为PLC生产厂家所提供的、集成在S7CPU操作系统中的功能块,称为系统功能块(SystemFunctionBlocks,SFB)。系统功能块SFB同样属于PLC内部操作系统的一部分,用户不需要编写,也不可以对其进行编辑,但可以根据需要直接调用。
4) 数据块(DB)。数据块(DmaBlocks,DB)是用来存放执行用户程序时所需的数据与存储程序执行结果的数据存储区,其作用与标志寄存器类似,但数量更多。数据块DB按不同的用途可以分为即时数据块(InstanceData Blocks,又称背景数据块,简称DI)和通用数据块(Data Blocks,又称共享数据块,简称DB)两类。
即时数据块(DI)用于传递功能块的参数,只能被指定的功能块FB访问。调用功能块FB时,必须指定用于该功能块的即时数据块DI,即时数据块内的数据可以自动生成,它们可以是FB变量声明表中的数据(不含临时变量)。
通用数据块(DB)用于存储PLC的全局数据,所有的FB、FC或OB都可以对通用数据块进行读写操作,它又被称为共享数据块。通用数据块内的数据不会因用户程序的结束而删除。
有关功能块、数据块的调用、编程以及程序变量、局部变量等概念,将在下面的实例中予以详细介绍。
(2) S7-300/400 PLC的程序结构。S7-300/400PLC的程序结构随着编程人员所采用的程序设计方法的不同而不同。一般而言,程序设计可以采用线性化编程、调用式编程、结构化编程的方法(见图5-32)。
采用线性化编程时,所有程序指令都编写在一个连续的程序块-组织块OB1中,无须编制程序块、功能块、数据块等。
采用调用式编程的程序由组织块OB、程序块(FC)、功能块(FB)、系统程序块(SFC)、系统功能块(SFB)、数据块(DB)等组成,由组织块OB1对各逻辑块与数据块进行组织与管理。
采用结构化编程的程序结构形式与调用式编程相同,程序同样由组织块OB、程序(FC)、功能块(FB)、系统程序块(SFC)、系统功能块(SFB)、数据块(DB)等组成,并通过组织块OB1对其进行组织与管理。功能块(FB)可以用于结构化编程,为了满足参数化编程的需要,功能块(FB)需要配套的即时数据块DI,组织块OBI在调用FB时,需要根据不同的控制要求,通过即时数据块DI对参数进行赋值。
*在Siemens早期的SS系列PLC中,只有组织块OB、功能块FB、数据块DB与程序块PB四类逻辑块。在S7系列PLC中,取消了程序块PB的名字,而是用英文的"Function"代替了原程序块PB。"Function"可以直译为功能,在许多书中称为"功能";在这里考虑到SS的继承性,便于读者与“功能块”区别,仍然将“Function”称为“程序块”。
图5-32为采用三种不同编程方式的程序结构示意图,在实际调用式编程、结构化编程时,被组织块OB1调用的逻辑块还可以调用其他逻辑块(程序嵌套)。
(3) S7-300/400 PLC的存储器结构。S7-300/400PLC的存储器结构可以分为基本存储区域与程序处理区两大部分。
1) 基本存储区域。S7-300/400PLC的基本存储区域又可以分为装载存储区、系统存储区、工作存储区3部分,具体如下。
● 装载存储区(Laad Memory):相当于S7-200 PLC的程序存储区,用于PLC用户程序逻辑块、数据块的存储。
● 系统存储区(System Memory):相当于S7-200PLC的数据存储区,用于存储PLC运算、处理的中间结果。如输入/输出映像,标志、变量的状态存储、计数器、定时器的中间值,模拟量输入/输出状态等,使用PLC内部RAW。
图5-32 S7-300/400PLC的程序结构与执行过程
(a)线性编程;(b)调用式编程;(c)结构化编程
图5-33 S7-300/400PLC存储器区域的作用及相互关系
● 工作存储区(WorkMemory):用于存储当前处理的可执行程序块、程序块所生成的局部变量L等。3个存储器区域的作用以及相互间的关系如图5-33所示。
2) 程序处理区域。S7-300/400PLC的程序处理区域又可以分为累加器、地址寄存器、数据块地址寄存器、状态寄存器4部分,具体如下。
●累加器:S7-300/400PLC共有2个32位累加器ACCU1、ACCU2,用来进行读人、传送、运算、移位等操作。
●地址寄存器:S7-300/400PLC共有2个32位地址寄存器AR1、AR2,用于存放寄存器间接寻址时的地址指针。
●数据块地址寄存器:S7-300/400PLC共有2个32位数据块地址寄存器DB、DI,用于存放程序中被打开的数据块地址。程序执行过程中允许被打开的数据块*大为2个,其中一个为共享数据块(DB),在程序中可以任意使用;另一个为瞬时数据块(DD),它是与功能块FB配套使用的数据块,在调用FB时打开。
●状态寄存器:S7-300/400PLC共有1个16位状态寄存器STW,状态寄存器用于存放程序的处理结果,如逻辑运算结果RLO、溢出标志OV、溢出记忆0S、条件码CC0与CC1、二进制值BR等,以显示指令的执行结果。