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。标记中的解释信息如下:
在上表中,列表示字节地址,行表示位地址,继电器应由继电器名+字节地址+位地址组成,当字节地址为“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。标记中的解释信息如下:
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。标记中的解释信息如下:
2.1.4 定时器和计数器继电器(T/C),PLC可以利用这些继电器实现计时或计数的功能。定时器或计数器分为两部分,一个是时间继电器或计数继电器,另一个是触点。当计时或计数的结果到达时将设定对应的触点位变量为1。计时器和计数器使用减值工作法,如T0的设定值是5s,当T0的工作条件满足时,每经过1s,T0减1,直到T0的值为0时,T0的位变量值为1。当T0的工作条件不满足时,T0对应的位变量为0。同理,计数器的工作原理一样。只是计时器以内部时间为减1的触发信号,计数器以位信号输入为减1的触发信号。
2.1.5 特殊内部继电器(R),PLC运行时的用于指示状态的内部继电器。表中指出该PLC共有64个特殊继电器位变量信号,如:常On,常Off,秒计时标志,加法溢出标志,错误警告标志等。
2.2 值存储区。 表中的值存储区是指字变量数值的保存区域,共有8个类型。其中WX、WY、WR的字分别对应2.1中的X继电器、Y继电器、R继电器的位变量数值。
2.2.1 输入继电器数值存储器WX。 通过WX的字变量可以一次性读取输入信号的变量值,它和X继电器的位变量信号一一对应。如下所示:
表中是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的位变量。
WY、WR的字变量的值特性与WX一样。WY的地址也是0-12,WR的字地址为0-62。对于特殊内部继电器没有字地址的读取必要,所以PLC中不支持对特殊内部继电器字变量的读写。
2.2.2 数据寄存器(DT)。 用于程序中的数据存储,每个字位16位,地址由DT0-DT1659共1660个字。字可读可写,但不支持字中的位变量的读写。由16位的性质可以得到如果这是一个无符号整数,数值的范围是0-65535。如果这是一个有符号数,数值范围是-32768-32767。
2.2.3 定时/计数器设定值区(SV)和定时/计数器经过值区(EV)。 SV是用户为定时/计数器设定的数值。当触发器闭合时,设定时间[n]递减,当经过值达到零时,定时器触点Tn(n为定时器触点编号)闭合。若在运行过程中触发器断开,则运行停止且经过值复位(清零)。
通过下面的实例,大家理解一下设定值(SV)和经过值(EV)的区别。
定时器动作:
方法一:下面是用K常数来设置设定值的示例。指定设定值区(SV)时的动作的说明。
(1)当PLC模式切换到运行(RUN)、或在运行模式下接通电源,定时设定值被传输至相同编号的设定值区(SV)。
(2)当计时触发器由OFF变为ON时,设置值被由设定值区(SV)传输至相同编号的经过值区(EV)。
(若在触发器闭合的情况下PLC模式变为运行,则会进行同样的动作。)
(3)若触发器保持闭合状态,则经过值区(EV)的值递减。
(4)当经过值区(EV)的值达到零时,同号的定时器触点(T)变为ON。
方法二:直接指定设定值区编号作为定时器设定值
设定值区号(SV)可直接指定为设定值n。
上述程序的具体操作如下:
① 当触发器X0为ON时,执行高级指令F0(MV),将K30设置到SV5
② 触发器X1变为ON后,由设定的数值30开始进行递减操作。
指定n(设定值SV的编号)为与定时器相同的编号。
2.2.4 特殊数据寄存器。 该寄存器的地址从DT90000-DT90111共112个字节,用于存储特殊数据的数据存储区,如用户的不同PLC特性设置,PLC运行中的错误代码等将被存储这个区域。用户可以同过这些寄存器定制化如通信频率,脉冲输出等性能,也能通过错误代码区的信息发现程序运行中的代码问题,运行故障等,便于差错。
2.2.5 索引寄存器(I)。 共两个字节的寄存器(IX,IY),寄存器可被用作存储区地址和常数的修改器。索引寄存器用于间接指定常数和存储区地址。可使用IX 和IY 两个16 位寄存器。用索引寄存器中的值来改变地址和常数,称为“变址”。
地址变址:地址 = 基地址 + IX 或IY 中的值(K 常数)
修改常数:常数 = 基数据 + IX 或IY 中的值
变址修改方法:
电气自动化点滴:PLC编程使用多重背景DB块减少内存的占用
在使用西门子PLC编程的时候我们会经常使用定时器计数器,在调用定时器和计数器的时候,会自动弹出一个调用选项的会话框生成一个对应的DB块。但是每一个定时器或者计数器单独生成使用一个DB快会占用太多的内存,而且编程上看上起也比较乱,学会使用多从背景数据块DB,可以规范管理计数器定时器DB块的使用。
首先以TIA博途软件为例如下图新建一个全局的DB块,此处命名IEC定时器,这样项目程序用到的定时器我们都在这一个DB块进行定义和管理。
接下来打开刚才新建的全局DB块,新定义一个IEC_TIMER的定时器名字可以随意定义此处命名ICE_TINM1如下图,在这里我们用多少就可以定义多少。
定义完成后在添加定时器或者计数器的时候会自动弹出一个调用选项的窗口,不要选择确定,选择取消从而不会对此定时器生成对应DB块。如下图:
选择取消后程序的定时器就不会有对应的名称,只有问号,我们双击问号然手点击右侧的一个菜单栏图标 的图标就会弹出程序所有定义的DB块,然后点击我们定义的全局DB块后面的>>就可以进入到该DB快的内部
进入DB快找到刚才定义的定时器如下图点击
点击后还会在我们定义的定时器的名字后面生成一个.并且有一个对话框,对话框本来是选择该定时器输入或者输出端的,此处选择无即可,如果你要用定时器的输出位,此处会有对应Q输出点可以选择使用。
这样我们用多少定时器都可以在一个背景数据块进行定义和使用,当然用博途软件有一个好处就是变量可以随意拖拽,我们可以不用那么麻烦找变量,打开双窗口功能(垂直拆分编辑器功能),将定时器变量直接拖到要用的定时器上方的对应位置就可以,这都是使用小技巧。希望大家多多支持关注,有问题 一起学习和讨论。
美女工程师向您报道
相关问答
PLC吃存储空间还是吃显卡?-ZOL问答
你指的是否是PLC编程?如果是的话,PLC编程吃内存和显卡的情况基本不存在,因为都是做为单片机通讯用,且程序编译出来很小。你只需考虑用什么开发软件IDE一般主...
plc没有内存卡会怎么样?
可以正常使用。西门子的S7-200系列PLC自身就带有程序和数据存储的寄存器,不需要存储卡。储存卡是程序过长,PLC自身没有足够存储空间时用的。1、PLC一般指可...
PLC吃内存还是吃显卡?
1.PLC吃内存。2.PLC(可编程逻辑控制器)是一种用于自动化控制的设备,它主要通过处理输入信号和执行逻辑程序来控制输出信号。在运行过程中,PLC需要加载和执...
如何将plc的程序导入内存卡?
结论:可以通过外接的内存卡读写器将PLC程序导入内存卡中,然后将内存卡插入到PLC中实现程序导入。原因:PLC通常采用内部存储器来存储程序,但是在某些情况下,...
台达plc清空内存指令?
就是PLC存储空间\数据元件存储空间\位元件存储空间这些都会被清除.如果你在使用PLC时.不想让以前的程序对你现在所编写的程序有影响或干扰.就可以用这个功能...
三菱plc容量设置怎么设置?
三菱PLC的容量设置是根据安装环境和应用要求来进行设定的。需要根据具体情况来选择合适的控制器型号和扩展模块,并按照其容量参数进行配置。容量设置包括I/O...
PLC内存读取?
采用485,做个上位机根据PLC协议,就可以读取出里面的数据,任意读,随便读,很简单,呵呵采用485,做个上位机根据PLC协议,就可以读取出里面的数据,任意读,随便读,...
西门子PLCS7-200模拟量输入EM235是如何使用的?
读取模拟量:MOVWAIW0,VW0VW0用于存储,也可以MW,甚至于读取到累加器AC0中。而模拟量输出也是如此:MOVWVW0,AQW0,将要输出的模拟量直接扔进模拟量输出通...
西门子plc提示内存不足怎么办?
当西门子PLC提示内存不足时,您可以尝试通过以下措施解决问题。首先,检查程序是否存在冗余或不必要的指令和数据,尝试删除它们以释放内存。其次,可以尝试将...
1t机械硬盘和512固态硬盘做编程够用吗?
其实主要用来编程的话,512G就够用了,如果用来存储各种教程视频,那就不够了,现在的视频太占资源,随便一个视频就好几百兆。编程的话建议内存配置大点,现在I...