plc内存控制器 (plc分配库)

PLC内存分配

了解PLC的工作原理需要从PLC的内存开始,PLC 的变量采用绝对地址变量方式,每个位变量或者数值变量在PLC内部都是唯一性的,编程时只能按要求读取和写入这些变量的值。这里通过了解某款PLC的继电器、数据存储器来理解一般 PLC 的内存分配情况,为单片机开发 PLC 做准备。

三菱plc的内存分配,plc内存如何分区

这张图是某款PLC的继电器、存储器和常数表,下面逐个做出解释。

2.1 继电器。其中继电器分为5类,分别是输入类继电器、输出继电器、内部继电器、定时器与计数器、特殊内部继电器。这里的继电器并非利用线圈和触电组成的物理类继电器,而是PLC数据存储器中的某个位变量,当这个位变量为“0”时,表示该继电器断开,当位变量为“1”时表示继电器闭合。

2.1.1 输入类继电器(X),PLC可以通过这类继电器读取输入的通断信号,用“X”标记。如输入点0将标记为X0。表中说明了这款PLC共有208个输入点,标记为X0-X12F。标记中的解释信息如下:

三菱plc的内存分配,plc内存如何分区

在上表中,列表示字节地址,行表示位地址,继电器应由继电器名+字节地址+位地址组成,当字节地址为“0”时,总结地址省略。

所以 X5就是X05,表示此继电器为输入型继电器,字节地址为“0”,位地址为“5”。X37就是字节地址为“3”,位地址为“7”的输入型继电器。如果表中空白表示位值为“0”,阴影表示值为“1”,那么X5 = 0;X37 = 1.

2.1.2 输出类继电器(Y),PLC可以通过这类继电器输出控制外部接口的通断,从而控制外围设备中电磁阀的通断,指示灯、接触器等外部用电器的通断。输出继电器用“Y”标记。如输出点0将标记为Y0。表中说明了这款PLC共有208个输出点,标记为Y0-Y12F。标记中的解释信息如下:

三菱plc的内存分配,plc内存如何分区

2.1.3 内部继电器(R),PLC运行时的中间值将保存在内部继电器中。内部继电器保存程序运算中的中间位变量信号,如:R0 = X1 & X2,这里R0就用来保存X1和X2相与的结果。R0的结果只保存在内存中,与外部输出没有任何联系,除非将R0的结果赋值给输出继电器,如:Y3 = R0,这样R0的结果将通过Y3发送出去。

内部继电器的值是暂存状态的,如果PLC在失电后这些数据将变为0,所以为了保存某些内部位变量,需要改变“易失性”的特性,变成保持型继电器。一般PLC在使用手册上会注明内部保持型继电器的区域范围。

内部继电器用“R”标记。如内部继电器点0将标记为R0。表中说明了这款PLC共有1008个内部继电器点,标记为R0-R62F。标记中的解释信息如下:

三菱plc的内存分配,plc内存如何分区

2.1.4 定时器和计数器继电器(T/C),PLC可以利用这些继电器实现计时或计数的功能。定时器或计数器分为两部分,一个是时间继电器或计数继电器,另一个是触点。当计时或计数的结果到达时将设定对应的触点位变量为1。计时器和计数器使用减值工作法,如T0的设定值是5s,当T0的工作条件满足时,每经过1s,T0减1,直到T0的值为0时,T0的位变量值为1。当T0的工作条件不满足时,T0对应的位变量为0。同理,计数器的工作原理一样。只是计时器以内部时间为减1的触发信号,计数器以位信号输入为减1的触发信号。

三菱plc的内存分配,plc内存如何分区

2.1.5 特殊内部继电器(R),PLC运行时的用于指示状态的内部继电器。表中指出该PLC共有64个特殊继电器位变量信号,如:常On,常Off,秒计时标志,加法溢出标志,错误警告标志等。

三菱plc的内存分配,plc内存如何分区

2.2 值存储区。表中的值存储区是指字变量数值的保存区域,共有8个类型。其中WX、WY、WR的字分别对应2.1中的X继电器、Y继电器、R继电器的位变量数值。

2.2.1 输入继电器数值存储器WX。通过WX的字变量可以一次性读取输入信号的变量值,它和X继电器的位变量信号一一对应。如下所示:

三菱plc的内存分配,plc内存如何分区

表中是X0-XF的输入信号状态, 其中X2、X6、X8、XD、XE 为“1”,WX的值为:

WX0 = 1x2^2 + 1x2^6 + 1x2^8 +1x2^13 + 1x2^14 = H6144(16进制) = D24900(10进制)。

输入继电器字地址由WX0-WX12共13个字节。WX0字对应R0-RF的位变量,WX1字对应X10-X1F的位变量,以此类推最后一个字WX12对应WX120-WX12F的位变量。

三菱plc的内存分配,plc内存如何分区

WY、WR的字变量的值特性与WX一样。WY的地址也是0-12,WR的字地址为0-62。对于特殊内部继电器没有字地址的读取必要,所以PLC中不支持对特殊内部继电器字变量的读写。

2.2.2 数据寄存器(DT)。用于程序中的数据存储,每个字位16位,地址由DT0-DT1659共1660个字。字可读可写,但不支持字中的位变量的读写。由16位的性质可以得到如果这是一个无符号整数,数值的范围是0-65535。如果这是一个有符号数,数值范围是-32768-32767。

三菱plc的内存分配,plc内存如何分区

2.2.3 定时/计数器设定值区(SV)和定时/计数器经过值区(EV)。SV是用户为定时/计数器设定的数值。当触发器闭合时,设定时间[n]递减,当经过值达到零时,定时器触点Tn(n为定时器触点编号)闭合。若在运行过程中触发器断开,则运行停止且经过值复位(清零)。

通过下面的实例,大家理解一下设定值(SV)和经过值(EV)的区别。

定时器动作:

方法一:下面是用K常数来设置设定值的示例。指定设定值区(SV)时的动作的说明。

(1)当PLC模式切换到运行(RUN)、或在运行模式下接通电源,定时设定值被传输至相同编号的设定值区(SV)。

三菱plc的内存分配,plc内存如何分区

(2)当计时触发器由OFF变为ON时,设置值被由设定值区(SV)传输至相同编号的经过值区(EV)。

(若在触发器闭合的情况下PLC模式变为运行,则会进行同样的动作。)

(3)若触发器保持闭合状态,则经过值区(EV)的值递减。

三菱plc的内存分配,plc内存如何分区

(4)当经过值区(EV)的值达到零时,同号的定时器触点(T)变为ON。

三菱plc的内存分配,plc内存如何分区

方法二:直接指定设定值区编号作为定时器设定值

设定值区号(SV)可直接指定为设定值n。

三菱plc的内存分配,plc内存如何分区

上述程序的具体操作如下:

① 当触发器X0为ON时,执行高级指令F0(MV),将K30设置到SV5

② 触发器X1变为ON后,由设定的数值30开始进行递减操作。

指定n(设定值SV的编号)为与定时器相同的编号。

三菱plc的内存分配,plc内存如何分区

2.2.4 特殊数据寄存器。该寄存器的地址从DT90000-DT90111共112个字节,用于存储特殊数据的数据存储区,如用户的不同PLC特性设置,PLC运行中的错误代码等将被存储这个区域。用户可以同过这些寄存器定制化如通信频率,脉冲输出等性能,也能通过错误代码区的信息发现程序运行中的代码问题,运行故障等,便于差错。

2.2.5 索引寄存器(I)。共两个字节的寄存器(IX,IY),寄存器可被用作存储区地址和常数的修改器。索引寄存器用于间接指定常数和存储区地址。可使用IX 和IY 两个16 位寄存器。用索引寄存器中的值来改变地址和常数,称为“变址”。

地址变址:地址 = 基地址 + IX 或IY 中的值(K 常数)

三菱plc的内存分配,plc内存如何分区

修改常数:常数 = 基数据 + IX 或IY 中的值

三菱plc的内存分配,plc内存如何分区

三菱plc的内存分配,plc内存如何分区

变址修改方法:

三菱plc的内存分配,plc内存如何分区