- 西门子S7-200/300系列PLC入门
- 赵嵬 汤嘉立 郎文林
- 4692字
- 2020-08-27 09:57:30
2.3 SIMATIC S7-200系列PLC的内部资源
S7-200 CPU连续执行用户程序,控制某项任务或工艺流程,程序由STEP 7 -Micro/WIN 32生成并装入CPU中执行。用户利用STEP 7所提供的编程语言,遵循其规定的数据类型、寻址方式、程序结构进行编程。
2.3.1 控制逻辑的执行方式
在前面的章节中已经介绍了PLC是依靠周期性顺序扫描来实现控制功能的,任务循环执行一次称为一个扫描周期。同样,S7 -200工作过程中也是在周而复始地执行程序中的控制逻辑和读写数据。
1. 输入/输出控制方式
为了说明S7-200是如何与外部电路相互关联工作的,这里给出了一个简图,如图2.26所示,该图简单地说明了S7-200和外部电路间的工作关系。
图2.26 输入/输出控制结构图
结构图解析
本例中,电动机启动开关的状态和其他输入点的状态结合在一起,通过S7-200进行运算。运算结果最终决定了控制执行机构(电动机启动器)的输出点状态,最终达到控制电动机运行状态的目的。
2. 扫描周期
如图2.27所示,S7-200 PLC在一个扫描周期内将完成读输入、执行逻辑控制程序、处理通信请求、执行CPU自诊断、写输出的部分或全部操作过程。
图2.27 S7-200扫描周期结构图
结构图解析
(1)读输入:S7-200将物理输入点上的状态复制到输入状态寄存器中。
(2)执行逻辑控制程序:S7-200执行程序指令并将数据存储在各种存储区中。
(3)处理通信请求:S7-200执行通信任务。
(4)执行CPU自诊断:S7-200检查固件、程序存储器和扩展模块是否工作正常。
(5)写输出:在输出过程映像寄存器中存储的数据被复制到物理输出点。
2.3.2 数据类型和数值表示
1. 数据类型及范围
S7-200将信息存于不同的存储器单元,每个单元都只有唯一的地址,只要程序明确地指出要存取的存储器地址,S7-200就允许程序直接存取这个信息。S7-200系列在存储单元所存放的数据类型有布尔型(BOOL,0或1)、整数型(INT)和实数型(REAL或浮点数,为32位单精度数,没有16位的精度表示,只能以双字长度来存取)3种。表2.3给出了数据类型及其长度和范围。
表2.3 数据类型及其长度和范围
2. 常数
在S7 -200的许多指令中使用常数,常数的长度可以是位、字节(B,8位)、字(W, 16位)和双字(D,32位)。
S7 -200的CPU以二进制方式存储常数,但常数的书写可以采用十进制、十六进制或ASCII字符。一般来说,在没有特别说明的情况下,PLC将输入的常数看成是十进制的。如果要以二进制或十六进制形式输入常数,则应先输入进制代码和分割符,例如:16#7AB4表示输入十六进制数7AB4。如果要输入ASCII码,则应加单引号,例如:‘SIMATIC’,其中,单引号用于指定ASCII码及其范围,单引号之中的内容即为输入的ASCII字符。
2.3.3 寻址方式
PLC内部元器件的功能是相互独立的,在数据存储区为每一种元器件分配一个存储区域。每一种元器件用一组字母表示器件类型,字母加数字表示数据的存储地址。如I表示输入状态寄存器(又称输入继电器);Q表示输出状态寄存器(输出继电器);M表示内部标志位存储器;SM表示特殊标志位寄存器;S表示顺序控制存储器(又称状态继电器);V表示变量存储器;L表示局部变量存储器;T表示定时器;C表示计数器;AI表示模拟量输入状态寄存器;AQ表示模拟量输出状态寄存器;AC表示累加器;HC表示高速计数器等。掌握这些内部器件定义、范围、功能和使用方法是PLC程序设计的基础。
S7 -200将信息存于不同的存储单元,每个单元都有一个唯一的地址,系统允许用户以字节、字、双字为单位存取信息。提供参与操作的数据地址的方法称为寻址方式。S7 -200数据寻址方式有立即数寻址、直接寻址和间接寻址三大类。立即数寻址的数据在指令中以常数形式出现,直接寻址和间接寻址方式有位、字节、字和双字4种寻址格式。
1. 直接寻址方式
直接寻址方式是指在指令中直接使用存储器或寄存器的元件名称和地址编号,直接查找数据。数据直接寻址指的是,在指令中明确指出了存取数据的存储器地址,允许用户程序直接存取信息。数据直接地址表示方法如图2.28所示。
图2.28 数据直接地址表示方法示意图
示意图解析
数据的直接地址包括内存区域标志符,数据大小及该字节的地址或字、双字的起始地址,以及分隔符和位,其中有些参数可以省略,详见图中说明。
而位寻址方式则如图2.29所示。
图2.29 位寻址方式示意图
示意图解析
图中I3.4表示数据地址为输入状态寄存器的第3字节第4位的位寻址。可以根据I3.4地址对该位进行读/写操作。
(1)可以进行位操作的元器件有:输入状态寄存器(I),输出状态寄存器(Q),内部标志位(M),特殊标志位(SM),局部变量存储器(L),变量存储器(V),状态元件(S)等。
(2)字节、字、双字操作:直接访问字节(8位)、字(16位)、双字(32位)数据时,必须指明数据存储区域、数据长度及起始地址。当数据长度为字或双字时,最高有效字节为起始地址字节。
对变量存储器V的数据操作如图2.30所示(即字节、字、双字寻址方式)。
图2.30 字节、字、双字寻址方式示意图
示意图解析
(1)可按字节(Byte)操作的元器件有:I、Q、M、SM、S、V、L、AC、常数。
(2)可按字(Word)操作的元器件有:I、Q、M、SM、S、T、C、L、AC常数。
(3)可按双字(Double Word)操作的元器件有:I、Q、M、S、MS、V、L、AC、HC、常数。
2. 间接寻址方式
间接寻址是指使用地址指针来存取存储器中的数据。使用前,首先将数据所在单元的内存地址放入地址指针寄存器中,然后根据此地址存取数据。S7-200 CPU中允许使用指针进行间接寻址的元器件有I、Q、V、M、S、T、C。使用指针间接寻址如图2.31所示。
图2.31 使用指针间接寻址示意图
示意图解析
(1)建立内存地址的指针为双字长度(32位),故可以使用V、L、AC作为地址指针。必须采用双字传送指令(MOVD)将内存的某个地址移入到指针中,以生成地址指针。指令中的操作数(内存地址)必须使用“&”符号表示内存某一位置的地址(长度为32位)。例如:MOVD&VB200,AC1//将VB200在存储器中32位物理地址值送AC1。VB200是直接地址编号,&为地址符号。将本指令中&VB200改为&VW200或VD200,指令功能不变。
(2)间接寻址(用指针存取数据):使用AC1作为内存地址指针,把以AC1中内容为起始地址的内存单元的16位数据送到累加器AC0中。
2.3.4 数据存储及元件
S7-200提供了多种保存数据的方法,用户在编程和应用PLC时可以灵活选用不同元件来保存不同的数据。
1. 输入/输出状态寄存器
输入/输出状态寄存器包括输入状态寄存器和输出状态寄存器两种。
输入状态寄存器I(又称输入继电器)。在输入状态寄存器中,输入继电器线圈只能由外部信号驱动,不能用程序指令驱动,常开触点和常闭触点供用户编程使用。外部信号传感器(如按钮、行程开关、现场设备、热电偶等)用来检测外部信号的变化。它们与PLC或输入模块的输入端相连。
输出状态寄存器Q(又称输出继电器)。在输出状态寄存器等效电路中,输出继电器是用来将PLC的输出信号传递给负载,只能用程序指令驱动。
负载又称执行器(如接触器、电磁阀、LED显示器等),连接到PLC输出模块的输出接线端子由PLC控制执行器的启动和关闭。
I/O映像寄存器可以按位、字节、字或双字等方式编址。例如:I0.1、Q0.1(位寻址)、IB1、QB5(字节寻址)。
S7-200 CPU输入状态寄存器区域共有I0 ~ I15等16字节存储单元,能存储128点信息。CPU 224主机有I0.0 ~ I0.7、I1.0 ~ I1.5共14个数字量输入接点,其余输入状态寄存器可用于扩展或其他。
S7 -200 CPU输出状态寄存器区域共有Q0 ~ Q15等16字节存储单元,能存储128点信息。CPU 224主机有Q0.0 ~ Q0.7、Q1.0、Q1.1共10个数字量输出端点,其余输出映像寄存器可用于扩展或其他。
2. 变量存储器(V)
变量存储器(V)用以存储运算的中间结果,也可以用来保存与工序或任务相关的其他数据,如模拟量控制、数据运算、设置参数等。变量存储器可按位使用,也可按字节、字或双字使用。变量存储器有较大的存储空间,如CPU 224有VB0.0 ~ VB5 119.7的5 KB存储容量。
3. 位存储器(M)
内部存储器标志位(M0.0 ~ M31.7)可以按位使用,作为控制继电器(又称中间继电器),用来存储中间操作数或其他控制信息。也可以按字节、字或双字来存取存储区的数据。
4. 特殊存储器(SM)
特殊存储器(SM)用于CPU与用户之间交换信息,例如:SM0.0一直为“1”状态, SM0.1仅在执行用户程序的第一个扫描周期为“1”状态。SM0.4和SM0.5分别提供周期为1 min和1 s的时钟脉冲。SM1.0、SM1.1和SM1.2分别为零标志位、溢出标志和负数标志。各特殊存储器的功能由于篇幅关系,在此不予详细介绍,读者使用时可以参见西门子S7 -200 PLC系统手册。
5. 顺序控制继电器(S)
顺序控制继电器(S)又称状态元件,用来组织机器操作或进入等效程序段工步,以实现顺序控制和步进控制。可以按位、字节、字或双字来取S位,编址范围为S0.0 ~ S31.7。
6. 局部存储器(L)
S7 -200有64字节的局部存储器,编址范围为LB0.0 ~ LB63.7。
其中60字节可以用做暂时存储器或者给子程序传递参数。如果用梯形图编程,编程软件保留这些局部存储器的后4字节。如果用语句表编程,可以使用所有的64字节,但建议不要使用最后4字节,最后4字节为系统保留字节。
S7 -200 PLC根据需要分配局部存储器。当主程序执行时,64字节的局部存储器分配给主程序;当中断或调用子程序时,将局部存储器重新分配给相应程序。局部存储器在分配时, PLC不进行初始化,初始值是任意的。
可以用直接寻址方式按字节、字或双字来访问局部存储器,也可以把局部存储器作为间
接寻址的指针,但不能作为间接寻址的存储区域。
局部存储器(L)和变量存储器(V)很相似,主要区别在于局部存储器(L)是局部有效的,变量存储器(V)则是全局有效。全局有效是指同一个存储器可以被任何程序(如主程序、中断程序或子程序)存取,局部有效是指存储区和特定的程序相关联。
7. 定时器(T)
PLC中定时器相当于继电器系统中的时间继电器,用于延时控制。S7 -200有3种定时器,它们的时基增量分别为1 ms、10 ms和100 ms,定时器的当前值寄存器是16位有符号的整数,用于存储定时器累计的时基增量值(1 ~32767)。
定时器的当前值大于等于设定值时,定时器位被置为1,梯形图中对应的定时器的常开触点闭合,常闭触点断开。用定时器地址(如T5)来存取当前值和定时器位,带位操作数的指令存取定时器位,带字操作数的指令存取当前值。
8. 计数器
计数器主要用来累计输入脉冲个数。其结构与定时器相似,其设定值在程序中赋予, CPU提供了3种类型的计数器,各为加计数器、减计数器和加减计数器。计数器的当前值为16位有符号整数,用来存放累计的脉冲数(1 ~32767)。当计数器的当前值大于等于设定值时,计数器位被置为1。用计数器地址(如C20)来存取当前值和计数器位,带位操作数的指令存取计数器位,带字操作数的指令存取当前值。
9. 模拟量输入/输出状态寄存器(AI/AQ)
S7 -200的模拟量输入电路将外部输入的模拟量(如温度、电压)等转换成1个字长(16位)的数字量,存入模拟量输入状态寄存器区域,可以用区域标志符(AI)、数据长度(W)及字节的起始地址来存取这些值。因为模拟量为1个字长,起始地址定义为偶数字节地址,如AIW0,AIW2,…,AIW62,共有32个模拟量输入点。模拟量输入值为只读数据。
S7 -200模拟量输出电路将模拟量输出状态寄存器区域的1个字长(16位)数字值转换为模拟电流或电压输出。可以用标识符(AQ)、数据长度(W)及起始字节地址来设置。
因为模拟量输出数据长度为16位,起始地址也采用偶数字节地址,AQW0,AQW2,…, AQW62,共有32个模拟量输出点。用户程序只能给输出状态寄存器区域置数,而不能读取。
10. 累加器(AC)
累加器是用来暂存数据的寄存器,可以与子程序传递参数,以及存储计算结果的中间值。S7 -200CPU中提供了4个32位累加器AC0 ~AC3。累加器支持以字节(B)、字(W)和双字(DW)的存取。按字节或字为单位存取时,累加器只使用低8位或低16位,数据存储长度由所用指令决定。
11. 高速计数器(HC)
CPU224 PLC提供了6个高速计数器(每个计数器最高频率为30 kHz)用来累计比CPU扫描速率更快的事件。高速计数器的当前值为双字长的符号整数,且为只读值。高速计数器的地址由符号HC和编号组成,如HC0,HC1,…,HC5。