S7-200 PLC的存储器空间大致分为三个空间,即程序空间、数据空间和参数空间。
1.程序空间
该空间主要用于存放用户应用程序,程序空间容量在不同的CPU中是不同的。另外CPU中的RAM区与内置EEPROM上都有程序存储器,但它们互为映像,且空间大小一样。
2.数据空间
该空间的主要部分用于存放工作数据称为数据存储器,另外有一部分作寄存器使用称为数据对象。
(1)数据存储器 它包括变量存储器(V),输入信号缓存区(输入映象存储器I),输出信号缓冲区(输出映象存储区Q),内部标志位存储器(M)又称内部辅助继电器,特殊标志位存储器(SM)。除特殊标志位外,其他部分都能以位、字节、和双字的格式自由读取或写入。
变量存储器(V)是保存程序执行过程中控制逻辑操作的中间结果,所有的V存储器都可以存储在*存储器区内,其内容可在与EEPROM或编程设备双向传送。
输入映象存储器(I)是以字节为单位的寄存器,它的每一位对应于一个数字量输入结点。在每个扫描周期开始,PLC依次对各个输入结点采样,并把采样结果送入输入映象存储器。PLC在执行用户程序过程中,不再理会输入结点的状态,它所处理的数据为输入映象存储器中的值。
输出映象存储器(Q)是以字节为单位的寄存器,它的每一位对应于一个数字输出量结点。PLC在执行用户程序的过程中,并不把输出信号随时送到输出结点,而是送到输出映象存储器,只有到了每个扫描周期的末尾,才将输出映象寄存器的输出信号几乎同时送到各输出结点。使用映象寄存器优点:①同步地在扫描周期开始采样所有输入点,并在扫描的执行阶段冻结所有输入值;②在程序执行完后再从映象寄存器刷新所有输出点,使被控系统能获得更好稳定性;⑧存取映象寄存器的速度**存取I/O速度,使程序执行的更快;④I/O点只能以位为单位存取,但映象寄存器则能以位、字节、双字进行存取。因此,映象寄存器提供了更高的灵活性。另外对控制系统中个别I/O点要求实时性较高的情况下,可用直接I/O指令直接存取输入/输出点。
内部标志位(M)又称内部线圈(内部继电器等),它一般以位为单位使用,但也能以字、双字为单位使用。内部标志位容量根据CPU型号不同而不同。
特殊标志位(SM)用来存储系统的状态变量和有关控制信息,特殊标志位分为只读区和可写区,具体划分随CPU不同而不同。
(2)数据对象 数据对象包括定时器、计数器、高速计数器、累加器、模拟量输入/输出。
定时器类似于继电器电路中的时间继电器,但它的精度更高,定时精度分为lms,10ms和100ms三种,根据精度需要由编程者选用。定时器的数量根据CPU型号不同。
计数器的计数脉冲由外部输入,计数脉冲的有效沿是输入脉冲的上升沿或下降沿,计数的方式有累加1和累减1两种方式。计数器的个数同各CPU的定时器个数。
高速计数器与一般计数器不同之处在于,计数脉冲频率更高可达2kHz/7kHz,计数容量大,一般计数器为16位,而高速计数器为32位,一般计数器可读可写,而高速计数器一般只能作读操作。
在S7-200CPU中有4个32位累加器,即AC0~AC3,用它可把参数传给子程序或任何带参数的指令和指令块。此外,PLC在响应外部或内部的中断请求而调用中断服务程序时,累加器中的数据是不会丢失的,即PLC会将其中的内容压入堆栈。因此,用户在中断服务程序中仍可使用这些累加器,待中断程序执行完返回时,将自动从堆栈中弹出原先的内容,以恢复中断前累加器的内容。但应注意,不能利用累加器作主程序和中断服务子程序之间的参数传递。
模拟量输入/输出可实现模拟量的A/D和D/A转换,而PLC所处理的是其中的数字量。
3.参数空间
用于存放有关PLC组态参数的区域,如保护口令、PLC站地址、停电记忆保持区、软件滤波、强制操作的设定信息等,存贮器为EEPROM。
S7-200的程序有三种:主程序、子程序、中断程序。
主程序只有一个,名称为OB1。
子程序可以达到64个,名称分别为SBR0~SBR63。子程序可以由子程序或中断程序调用。
中断程序可以达到128个,名称分别为INT0~INT127。中断方式有输入中断、定时中断、高速计数中断、通信中断等中断事件引发,当CPU响应中断时,可以执行中断程序。
由这三种程序可以组成线性程序和分块程序两种结构。
一、线性程序结构
_线性程序是指一个工程的全部控制任务都按照工程控制的顺序写在一个程序中,比如写在OB1中。程序执行过程中,CPU不断地扫描OB1,按照事先准备好的顺序去执行工作,如图:
显然,线性程序结构简单,一目了然。但是,当控制工程大到一定程序之后,仅仅采用线性程序就会使整个程序变得庞大而难于编制、难于调试了。
二、分块程序结构
分块程序是指一个工程的全部控制任务被分成多个小的任务块,每个任务块的控制任务根据具体情况分别放到子程序中,或者放到中断程序中。程序执行过程中,CPU不断地调用这些子程序或者被中断程序中断,
分块程序虽然结构复杂一些,但是可以把一个复杂的过程分解成多个简单的过程。