西门子北京授权一级供货商
西门子北京授权一级供货商
S7-200 PLC的程序结构与执行过程
(a)自动编译的程序结构;(b)早期的程序结构;(c)程序的执行过程
(2) S7-200PLC的存储器结构。编制完成的PLC用户程序以及PLC执行程序所需要的数据、执行过程中产生的中间状态等都需要通过存储器进行存储、为了使读者了解CPU的内部管理情况。理将S7-200的存储器结构介绍如下。
1) S7-200 PLC存储器类型。S7-200PLC可以采用多种形式的存储器来进行PLC程序与数据的存储,以防止数据的丢失。S7-200PLC可以使用的存储器主要有如下类型。
● RAM:CPU模块本身带有动态数据存储器(RAM)。RAM用于存储PLC的运算、处理结果等数据。根据需要,RAM的数据可以通过电容器或电池盒(选件)进行保持,但其存储时间较短,一般只能保持几天。
● EEPROM(或Flash ROM):除RAM外,CPU模块本身带有的保持型存储器(EEPROM或FlashROM),可以进行数据的*性存储。保持型存储器用于存储PLC用户程序、PLC参数等重要数据;根据需要,也可以将PLC程序执行过程中所产生的局部变量Y、内部标志M、定时器T、计数器C等保存在保持型存储器中。
●存储器卡:存储器卡在S7-200PLC中为可选件,用户可以根据需要选用。存储器卡为保持型存储器可以作为PLC保持型存储器的扩展与后备,用于保存PLC用户程序、PLC参数、变量V、内部标志M、定时器T、计数器C等。西门子北京授权一级供货商
2)存储器分区。S7-200PLC的内部存储器分为程序存储区、数据存储区、参数存储区。其中、程序存储区用于存储PLC用户程序;数据存储区用于存储PLC运算、处理的中间(如输入输出映像,标志、变量的状态,计数器、定时器的中间值等);参数存储区用于存储PLC配置参数(包括程序保护密码、地址分配设定、停电保持区域的设定等)。西门子北京授权一级供货商
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”称为“程序块”。西门子北京授权一级供货商
采用三种不同编程方式的程序结构示意图,在实际调用式编程、结构化编程时,被组织块OB1调用的逻辑块还可以调用其他逻辑块(程序嵌套)。
(3) S7-300/400 PLC的存储器结构。S7-300/400PLC的存储器结构可以分为基本存储区域与程序处理区两大部分。
1)基本存储区域。S7-300/400PLC的基本存储区域又可以分为装载存储区、系统存储区、工作存储区3部分,具体如下。
● 装载存储区(Laad Memory):相当于S7-200PLC的程序存储区,用于PLC用户程序逻辑块、数据块的存储。
● 系统存储区(System Memory):相当于S7-200PLC的数据存储区,用于存储PLC运算、处理的中间。如输入/输出映像,标志、变量的状态存储、计数器、定时器的中间值,模拟量输入/输出状态等,使用PLC内部RAW。
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等,以显示指令的执行结果。