1、西门子做为工业 PLC 这一块它的 200 系列可以说是一个“人小鬼大的”的产品,特点是指令丰富使用灵活。PLC 是怎样来执行我们的所编的程序的呢,简单的理解就是周而复始的执行程序的逻辑控制与读写数据,可看作以下三点1: CPU 读输入状态 2: CPU 中存储的程序利用输入执行控制逻辑。当程序运行时,CPU 刷新有关数据3: CPU 将数据写到输出下图给出了一个简图,说明一个继电器图如何与 S7-200 联系起来。在本例中,电机启动开关的状态和其它输入点的状态结合在一起。它们计算的结果,最终决定了控制执行机构启动电机的输出点状态。在周而复始的执行程序过程中不断完成它的任务在执行时它将执行下行
2、部分或全部内容1:读输入:S7-200 将物理输入点上的状态复制到输入过程映象寄存器中2:执行逻辑控制程序:S7-200 执行程序指令并将数据存储在各种存储区中3:处理通讯请求:S7-200 执行通讯任务4:执行 CPU 自诊断: S7-200 检查固件、程序存储器和扩展模块是否工作正常5:写输出:在输出过程映象寄存器中存储的数据被6:复制到物理输出点如图所示它形象的表示出了 PLC 循环的工作状态用户程序的执行取决于 S7-200 是处于停止模式还是运行模式。当 S7-200 处于运行模式时,CPU 执行程序;当 S7-200 处于停止模式时,CPU 不执行程序PLC 的读输入数字量输入:
3、在每个扫描周期的开始,CPU 会读取数字量输入的当前值,并将这些值写入过程映象输入寄存器。模拟量输入: 除非使能模拟量滤波,否则 S7-200 在扫描周期中不会刷新模拟量输入值。模拟量滤波会使您得到较稳定的信号。您可以使能每个模拟量输入通道的滤波功能当您使能了模拟量输入滤波功能后,S7-200 会在每一个扫描周期刷新模拟量、执行滤波功能并且在内部存储滤波值。当程序中访问模拟量输入时使用滤波值如果没有使能模拟量输入滤波,则当程序访问模拟量输入时,S7-200 都会直接从扩展模块读取模拟值在每次扫描期间,CPU224XP 的 AIW0 和 AIW2 模拟量输入都会读取模 -数转换器生成的最新值,从
4、而完成刷新。该转换器求取的是均值(sigma-delta ),因此通常无需软件滤波PLC 的写数字输出在每个扫描周期的结尾,CPU 把存储在输出映象寄存器中的数据写到数字输出点。(模拟量输出直接刷新,与扫描周期无关)S7-200 数据的存取S7-200 将信息存于不同的存储器单元,每个单元都有唯一的地址。您可以明确指出要存取的存储器地址。这就允许用户程序直接存取这个信息。表 4-1 列出了不同长度的数据所能表示的数值范围若要存取存储区的某一位,则必须指定地址,包括存储器标识符、字节地址和位号。图 4-3 是一个位寻址的例子(也称为“字节.位” 寻址)。在这个例子中,存储器区、字节地址(I 代表
5、输入,3 代表字节 3)和位地址(第 4 位) 之间用点号(“.”)相隔开使用这种字节寻址方式,可以按照字节、字或双字来存取许多存储区(V、I、Q 、M 、S 、L 及 SM)中的数据。若要存取 CPU 中的一个字节、字或双字数据,则必须以类似位寻址的方式给出地址,包括存储器标识符、数据大小以及该字节、字或双字的起始字节地址,如下图所示。其它 CPU 存储区(如 T,C,HC 和累加器)中存取数据使用的地址格式包括区域标识符和设备号存储区数据的存取输入过程映象寄存器:I在每次扫描周期的开始,CPU 对物理输入点进行采样,并将采样值写入输入过程映象寄存器中。可以按位、字节、字或双字来存取输入过程
6、映象寄存器中的数据:位: I字节地址.位地址 I0.1字节、字或双字: I长度 起始字节地址 IB4输出过程映象寄存器:Q在每次扫描周期的结尾,CPU 将输出过程映象寄存器中的数值复制到物理输出点上。可以按位、字节、字或双字来存取输出过程映象寄存器:位: Q字节地址 .位地址 Q1.1字节、字或双字: Q长度起始字节地址 QB5变量存储区:V您可以用 V 存储器存储程序执行过程中控制逻辑操作的中间结果, 也可以用它来保存与工序或任务相关的其它数据。并且可以按位、字节、字或双字来存取 V 存储区中的数据:位: V字节地址.位地址 V10.2字节、字或双字: V长度 起始字节地址 VW100位存储
7、区:M可以用位存储区作为控制继电器来存储中间操作状态和控制信息。并且可以按位、字节、字或双字来存取位存储区:位: M字节地址. 位地址 M26.7字节、字或双字: M长度 起始字节地址 MD20定时器存储区:TS7-200 CPU 中,定时器可用于时间累计,其分辨率(时基增量)分为 1ms、10ms 和 100ms 三种。定时器有两个变量:当前值:16 位有符号整数,存储定时器所累计的时间。定时器位:按照当前值和预置值的比较结果置位或者复位。预置值是定时器指令的一部分。可以用定时器地址(T定时器号)来存取这两种形式的定时器数据。究竟使用哪种形式取决于所使用的指令:如果使用位操作指令则是存取定时
8、器位;如果使用字操作指令,则是存取定时器当前值。如图中所示,常开触点指令是存取定时器位;而字移动指令则是存取定时器的当前值计数器存储区:C在 S7-200 CPU 中,计数器可以用于累计其输入端脉冲电平由低到高的次数。CPU 提供了三种类型的计数器:一种只能增计数;一种只能减计数;另外一种既可以增计数,又可以减计数。计数器有两种形式:当前值:16 位有符号整数,存储累计值。计数器位:按照当前值和预置值的比较结果置位或者复位。预置值是计数器指令的一部分。可以用计数器地址(C计数器号)来存取这两种形式的计数器数据。究竟使用哪种形式取决于所使用的指令:如果使用位操作指令则是存取计数器位;如果使用字操
9、作指令,则是存取计数器当前值。如图中所示,常开触点指令是存取计数器位;而字移动指令则是存取计数器的当前值。高速计数器:HC高速计数器对高速事件计数,它独立于 CPU 的扫描周期。高速计数器有一个 32 位的有符号整数计数值(或当前值)。若要存取高速计数器中的值,则应给出高速计数器的地址,即存储器类型(HC)加上计数器号(如 HC0)。高速计数器的当前值是只读数据,仅可以作为双字( 32 位)来寻址。格式: HC高速计数器号 HC1累加器:AC累加器是可以象存储器一样使用的读写设备。例如,可以用它来向子程序传递参数,也可以从子程序返回参数,以及用来存储计算的中间结果。S7-200 提供 4 个
10、32 位累加器(AC0 ,AC1,AC2 和 AC3)。并且您可以按字节、字或双字的形式来存取累加器中的数值。被访问的数据长度取决于存取累加器时所使用的指令。如图所示,当以字节或者字的形式存取累加器时,使用的是数值的低 8 位或低 16 位。当以双字的形式存取累加器时,使用全部 32 位特殊存储器:SMSM 位为 CPU 与用户程序之间传递信息提供了一种手段。可以用这些位选择和控制 S7-200 CPU 的一些特殊功能。例如:首次扫描标志位、按照固定频率开关的标志位或者显示数学运算或操作指令状态的标志位。并且可以按位、字节、字或双字来存取 SM 位:位: SM字节地址.位地址 SM0.1字节、
11、字或者双字: SM长度 起始字节地址 SMB86局部存储器:LS7-200 有 64 个字节的局部存储器,其中 60 个可以用作临时存储器或者给子程序传递参数。局部存储器和变量存储器很相似,但只有一处区别。变量存储器是全局有效的,而局部存储器只在局部有效。全局是指同一个存储器可以被任何程序存取(包括主程序、子程序和中断服务程序)。局部是指存储器区和特定的程序相关联。S7-200 给主程序分配 64 个局部存储器;给每一级子程序嵌套分配 64 个字节局部存储器;同样给中断服务程序分配 64 个字节局部存储器。子程序或者中断服务程序不能访问分配给主程序的局部存储器。子程序不能访问分配给主程序、中断
12、服务程序或者其它子程序的局部存储器。同样的,中断服务程序也不能访问分配给主程序或子程序的局部存储器。S7-200 PLC 根据需要分配局部存储器。也就是说,当主程序执行时,分配给子程序或中断服务程序的局部存储器是不存在的。当发生中断或者调用一个子程序时,需要分配局部存储器。新的局部存储器地址可能会覆盖另一个子程序或中断服务程序的局部存储器地址。局部存储器在分配时 PLC 不进行初始化,初值可能是任意的。当在子程序调用中传递参数时,在被调用子程序的局部存储器中,由 CPU 替换其被传递的参数的值。局部存储器在参数传递过程中不传递值,在分配时不被初始化,可能包含任意数值。位: L字节地址.位地址
13、L0.0字节、字或双字: L长度 起始字节地址 LB33模拟量输入:AIS7-200 将模拟量值(如温度或电压)转换成 1 个字长(16 位)的数字量。可以用区域标识符(AI)、数据长度(W )及字节的起始地址来存取这些值。因为模拟输入量为 1 个字长,且从偶数位字节(如0,2,4)开始,所以必须用偶数字节地址(如 AIW0,AIW2 ,AIW4)来存取这些值。模拟量输入值为只读数据。格式: AIW起始字节地址 AIW4模拟量输出:AQS7-200 把 1 个字长(16 位)数字值按比例转换为电流或电压。可以用区域标识符(AQ )、数据长度(W)及字节的起始地址来改变这些值。因为模拟量为一个字长,且从偶数字节(如 0,2 ,4)开始,所以必须用偶数字节地址(如 AQW0,AQW2 ,AQW4)来改变这些值。模拟量输出值是只写数据。格式: AQW起始字节地址 AQW4顺控继电器存储器:S顺控继电器位(S)用于组织机器操作或者进入等效程序段的步骤。SCR 提供控制程序的逻辑分段。可以按位、字节、字或双字来存取 S 位。位: S字节地址.位地址 S3.1字节、字或者双字: S长度 起始字节地址 SB4