了解S7-200的操作模式和工作过程,能够加深对PLC的理解,为PLC编写出更好的程序。下面具体介绍S7-200的操作模式和工作过程。
S7-200 CPU有两种工作模式:STOP模式和RUN模式。其操作模式可通过CPU右侧的模式转换开关进行切换,同时在CPU面板上以工作状态指示灯来显示CPU当前的操作模式。
S7-200 CPU的工作模式选择开关有3个位置:RUN、TERM和STOP。将模式开关切换到STOP位置时,CPU时入STOP模式;将模式开关切换到RUN位置时,CPU时入RUN模式;将模式开关切换到TERM模式时,保持当前的工作模式不变。
●RUN模式:CPU在RUN模式下执行完整的扫描过程,通过执行反映控制要求的用户程序来实现控制功能。此时,在CPU模式的LED显示面板上用“RUN”显示当前的工作模式。在RUN模式下,允许STEP 7-Micro/WIN软件控制PLC的运行模式。如果PLC检测到致命错误,会强制从RUN模式更改为STOP模式。
●STOP模式:PLC处于停止方式,CPU不执行用户程序,但仍然扫描PLC RAM和I/O状态。此模式可与安装了STEP 7-Micro/WIN编程软件的计算机通信,创建和编辑用户程序,组态PLC的硬件功能,向PLC装入用户程序和组态信息。在STOP模式下,不允许STEP 7-Micro/WIN软件控制PLC的运行模式。如果 PLC 检测到致命错误,在致命错误条件依然存在时不允许从 STOP模式更改为 RUN模式。
将模式开关从RUN位置切换至TERM位置时,CPU仍处于RUN模式。但如果电源状态发生变化,当电源恢复时,CPU会自动进入STOP模式。将模式开关从STOP位置切换至TERM位置时,CPU仍处于STOP模式。当模式开关处于TERM位置时,允许STEP 7-Micro/WIN软件控制PLC的运行模式。TERM状态还和机器的特殊状态位SM0.7有关,可用于自由口通信的控制,在现场调试程序时很有用处。
S7-200采用周期性循环处理的顺序扫描工作方式。整个扫描工作过程包括读取输入、执行用户程序、处理通信请求、执行诊断程序和写入输出5个阶段,如图1-3所示。但在STOP模式下,会跳过执行用户程序阶段。整个扫描过程执行一遍所需的时间称为扫描周期。扫描周期与CPU运行速度、PLC硬件配置及用户程序大小有关,典型值为1~100ms。
图1-3 S7-200工作过程
1.读取输入
S7-200 PLC在每次扫描周期开始时先读取数字量输入点状态,并将这些状态值写入到输入映像寄存器。无相应的实际物理输入点的数字量输入位,在每次更新时,PLC将相应的映像寄存器清零,除非它被强制。在工作过程的其他阶段,过程映像输入寄存器与外界隔离,无论输入信号如何变化,其内容始终保持不变,直到下一个扫描周期的读取输入阶段。
对于模拟量输入,除非启用了模拟量输入过滤,否则S7-200在正常扫描周期中不更新来自扩展模块的模拟量输入。当启用了模拟量输入滤波功能后,S7-200会在每一个扫描周期刷新模拟量、执行滤波功能并且在内部存储滤波值。当程序中访问模拟量输入时使用滤波值。如果没有启用模拟量输入滤波,则当程序访问模拟量输入时,S7-200会直接从扩展模块读取模拟值。
在每次扫描期间,CPU224XP的AIW0和AIW2模拟量输入都会读取模数转换器生成的最新值,从而完成刷新。该转换器求取的是均值,因此通常无须软件滤波。
2.执行用户程序
在扫描周期的执行用户程序阶段,CPU从头至尾执行用户程序,直至遇到结束指令。遇到结束指令时,PLC 检查系统的智能模块是否需要服务。如果需要,信息将被读取并缓存,以用于循环周期的下一阶段。
在程序或中断程序的执行过程中,当指令中涉及数字量输入、输出状态时,PLC从输入映像寄存器和输出映像寄存器中读出,根据用户程序进行运算,将数字量输出的运算结果再存入输出映像寄存器,但立即I/O指令允许直接访问物理输入与输出。
如果在程序中使用子程序,则子程序作为程序的一部分存储,当由主程序、另一个子程序或中断程序调用时,则执行子程序。如果在程序中使用了中断,与中断事件相关的中断程序就作为程序的一部分被存储。中断程序并不作为正常扫描周期的一部分来执行,而是当中断事件发生时才执行(可能在扫描周期的任意点)。
3.处理通信请求
在处理通信请求阶段,S7-200 PLC处理从通信端口或智能I/O模块接收到的任何信息。
4.执行诊断程序
在执行诊断程序阶段,S7-200 PLC检查CPU的操作、操作系统 EEPROM 、用户程序存储区及I/O扩展模块状态等是否正常。
5.写入输出
在每个扫描周期的结尾,CPU的执行进入输出阶段,把存储在输出映像寄存器中的数据写到数字输出点(模拟量输出直接刷新,与扫描周期无关)。
因此,PLC在一个扫描周期内,对数字量输入状态的采样只在读取输入阶段进行,当PLC开始执行用户程序后,输入端将被封锁,直到下一个扫描周期的读取输入阶段才对输入状态重新采样。在用户程序中如果对数字量输出结果多次赋值,只有最后一次有效。在一个扫描周期内,只在写入输出阶段才将输出状态从输出映像寄存器中输出,在其他阶段,输出状态一直保存在输出映像寄存器中。对于没有启用滤波功能的模拟量输入和模拟量输出,则直接刷新到模块的物理输入和输出,与扫描周期无关。