对于我们进行PLC程序编程,是需要用到编程软元件的,这个编程软元件我们也叫存储器,用户程序可以对这些存储区中所存储的数据进行读写访问。
S7-1200PLC的存储器地址包括输入I、输出Q、位存储器M、数据块DB,以及本地或临时存储器L。
下面我们就分别介绍一下这些存储器吧。
输入过程映像存储器I
输入I是CPU用于接收外部输入信号的,比如按钮、开关、行程开关等。CPU会在扫描开始时从输入模块上读取外部输入信号的状态,放入到输入过程映像区,当程序执行的时候从这个输入过程映像区读取对应的状态进行运算。
但是如果我们给地址或变量后面加上“:P”这个符号的话,就可以立即访问外设输入,也就是说可以立即读取数字量输入或模拟量输入。它的数值是来自被访问的输入点的,而不是输入过程映像区的,这个我们需要注意一下。
输出过程映像存储器Q
输出Q是将程序执行的运算结果输出驱动外部负载的,比如指示灯、接触器、继电器、电磁阀等,但是需要注意它不是直接输出驱动外部负载的,而是需要先把运算结果放入到输出过程映像区,CPU在下一个扫描周期开始时,将过程映像区的内容复制到物理输出点,然后才驱动外部负载动作的。
如果我们需要把运算结果直接写入到物理输出点,需要在地址或变量名称后面加上“:P”这个符号。在使用输出Q的时候需要注意避免双线圈的情况,如果出现双线圈错误的话,会造成物理输出点不能输出的情况。
位存储器M
位存储器M既不能接收外部输入信号,也不能驱动外部负载,它是属于内部的软元件。用户程序读取和写入M存储器中所存储的数据,任何代码块都可以访问M存储器,也就是说所有的OB、FC、FB块都可以访问M存储器中的数据,这些数据可以全局性的使用。
位存储器M常用来存储运算时的中间运算结果,或者用于触摸屏中组态按钮开关的情况。对于前面说的双线圈错误,比如有两个驱动条件都要驱动Q0.0,这时我们就可以分别引入两个位存储器地址M0.0和M0.1,然后再将这两个位存储器并联再输出Q0.0,就可以避免双线圈的问题了。
临时存储器L
临时存储器L用于存储代码块被处理时使用的临时数据,我们只要去调用代码块,CPU就会将临时存储器自动分配给代码块,当代码块执行完成后,CPU会重新分配临时存储器用于其它要执行的代码块。
其实临时存储器L类似于位存储器M,区别在于M存储器是全局的,L存储器是局部的。也就是说在OB、FC、FB块的接口区生成的临时变量只能在生成它的代码块中使用,不能与其他代码块共享。我们需要注意的是临时存储器只能通过符号地址寻址。
数据块DB
数据块DB用于存储各代码块使用的各种类型的数据,数据块的访问可以按位、字节、字、双字的方式进行寻址,我们在访问数据块中的数据时,应该指明数据块的名称,比如DB0.DBB0。
在S7-1200PLC中新建的DB块默认是采用优化块的访问方式进行访问的,所有通常都是使用符号的方式访问DB块中的数据,如果我们需要使用绝对地址访问的话,需要在属性设置中去掉优化访问块的选项。