收藏 分享(赏)

openplc 的内存组织.pdf

上传人:weiwoduzun 文档编号:1753552 上传时间:2018-08-22 格式:PDF 页数:5 大小:129.04KB
下载 相关 举报
openplc 的内存组织.pdf_第1页
第1页 / 共5页
openplc 的内存组织.pdf_第2页
第2页 / 共5页
openplc 的内存组织.pdf_第3页
第3页 / 共5页
openplc 的内存组织.pdf_第4页
第4页 / 共5页
openplc 的内存组织.pdf_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、OpenPLC的内存组织 史珺 德维森科技(深圳)有限公司 内存是PLC的最核心的部件,位于OpenPLC控制器的CPU模块中,是所有的程序、顺序指令存储和执行的地方,也是存储数据的地方。有的PLC有专门的内存模块,但由于计算机技术的发展,在现有的OpenPLC采用了足够大的内存单元,因此不需要单独的内存模块。本文将介绍V80等OpenPLC的内存的在CPU模块的组织原理和方法。 1 内存按可寻址程度的分类 OpenPLC的特点之一就是,存放控制程序的内存可以被重新改动或重新编程。如果按照用户对内存的访问权限来说,也就是内存的可寻址的程度来分类的话,内存可以分为三类: 1 第一部分的内存是用户

2、不能访问的,用来存放OpenPLC的专用操作系统程序和数据,与OpenPLC一起提供给用户使用的。 2 第二个区域,是用来存储用户程序和特殊的组态数据,只能用编程器(编程软件)来改变,在OpenPLC处于运行模式时,这个区域的内存通常是不能改变的。通常,在用户程序的内部是不能对该区域的内存进行寻址的。即便可以寻址,也只能读取数据,也不能改写。 3 第三部分的内存是完全可寻址的,也就是说用户程序的指令可以对其进行读写。输出映射表当然必须是可寻址的,有的PLC允许用户改写内存的输入映射区的内容,(直到扫描周期的输入数据将用户的改动覆盖),另外,可寻址的内存是存储工作数据的,包括计数器、定时器的数值

3、和其它数值。有部分PLC的组态内存是可寻址的,因此,PLC可以被编程改变其工作特点(在运行时)。 除了CPU模块的内存外,有些I/O模块也包含一些数据内存,可以由用户程序直接进行寻址。CPU的数据内存芯片可以是标准的动态RAM类型,这些内存在掉电后数据就会丢失。许多是采用后备电池的方式来维持DRAM中的数据在掉电后不丢失的,也有采用电容来储存足够的电量防止短期的掉电。OpenPLC是采用闪存(FLASH MEMORY)作为内存芯片,不需要电池和电容也可以保全数据。 在掉电后不丢失数据的内存叫做固定内存或保持内存,尽管现在内部全部采用固定内存来保存数据在成本上也是可行的,但不少制造商依然还是将部

4、分的内存设计为非固定内存。当刚刚上电或者从编程模式切换到运行模式时,OpenPLC将这个区域的内存全部清除,这个初始化的过程将在第九章详细再介绍。 OpenPLC的编程单元有一个数据监视屏的功能,程序员或OpenPLC操作员可以利用这个功能来监视数据内存的内容,即使在OpenPLC运行时也可以。当扫描周期控制一些数据时,如用户程序改写输入映像表和内存的地址时,程序使用的其它的数据可以通过数据监视器来改写,即使用户程序在运行也是一样。用户程序的表现可以在程序员修正工作数据时进行动态调整。 2 用户内存与应用内存 所有的内存可以看作一个大的二维面阵,每个面阵的单元是一位。整个内存的图象如下图所示:

5、 图 4.1 工业可编程控制器的内存的空间分配 内存可以分为两个区域:用户内存和应用内存。前者是储存梯形图的程序,为可变内存;后者为固定内存,存储用户程序需要运行的信息,如开关量输入和输出的状态,计数器或定时器的预设值和累计值,数量值,顺序模型、内部I/O继电器状态等等。 用户内存 用户程序区是用来存储控制逻辑的。OpenPLC的控制机器或过程的所有的指令都存储在该区域。处理器的执行软件语言,代表每个OpenPLC指令,也将指令存放在用户程序区。当OpenPLC执行程序时,处理器将用户程序内存区域的信息进行解释,并控制数据表中与真实或外部I/O对应的相应的数据位,处理器对执行程序的执行完成了这

6、个对用户程序的解释过程。 用户程序内存区的最大量通常代表OpenPLC的规模。在中型以上的OpenPLC,用户程序区通常是可变的,可以根据数据表的大小来进行变动。对于小型和微型OpenPLC,用户用户内存(梯形图程序) 输入映像状态输出映像状态定时器状态计数器状态数字状态其它功能应用内存 存储位和寄存器以及指令的区域 数据表区域程序指令区域 程序区域通常是固定的。用户程序内存的数量与控制程序的指令数量直接成正比。可以根据I/O和控制功能来对用户程序内存的区域进行预估。 用户程序占了整个内存的大部分空间,通常在75%以上。比如,16KB内存的OpenPLC通常有12KB以上给梯形图用的。 所有内

7、存的地址通常是用8进制数给出的,每个内存的一个字节是16位(也有8位和32位的)。 用户程序存储用户编程的指令,也由几个部分构成。 对于存储内存来说,也称为执行内存,是一系列永久存储的程序的集合,这部分通常认为是属于OpenPLC本身的。它的程序指挥所有的系统活动,如控制程序的执行、与外设的通讯等。这部分内存,除了I/O数据表部分外,用户是不能访问的,只能由控制程序来访问。它又可以分为五个部分: 第一部分是输入状态区域,这里存储实际世界的开关量的输入状态,其大小应该等于该OpenPLC可以控制的最大数量的开关量所占用的字节数,比如,开关量最大为2048点,则占用256K, 第二部分的输出状态映

8、像区域是准备激活外部真实世界的输出量的状态。其大小也是取决于OpenPLC可以控制的最大的开关量字节数。 定时器状态、累计值和预设值,保存在第三个区域。该区域的大小根据定时器的数量和大小而定。 计数器的状态、累计值和预设值在第四个区域内。该区域根据计数器的数量和每个计数器的大小而定。 第五个区域保存数据系统转换的值,通常是模拟量值。模拟量最大如果考虑是256点,则占用512K字节(按每个模拟量2个字节计)作为模拟量的输入输出区域。通常,模拟量的内存不限区间,可以提供较大的空间保证有足够的模拟量可以接入。 其它功能可以继续在内存的底部继续存储。该区间根据逻辑功能和算法的复杂程度而确定。 此外,还

9、要考虑数据的存储、和中间变量的存储以及复杂算法所需要的额外的内存,另外,还要考虑扩展。通常,内存的数量通常在上述考虑的基础上要留出50%的余量。 应用内存 应用内存提供编程指令,以及完成控制功能所需要用到的数据。下图给出OpenPLC中该区域的典型的分布图: 图.2 工业控制器应用内存的分配 每种型号的OpenPLC都有一个最大的应用内存区域的上限值,取决于控制器的规模。从图4.2可以看到,应用内存又可以分为两个区域,即数据表区域和程序指令区域。程序指令区域是存放用户程序用到的指令和常数的;数据表则包括三个部分:输入表、输出表和存储表。 INPUT TABLEOUTPUT TABLEInter

10、nal BitsRegister/Words ControlProgram Instructions 输入表: 输入表是一个阵列,存储数字量输入。与OpenPLC可采集的最大位数的输入点对应。输入模块的地址也在该区域。地址通常由模块的地址和模块内部的通道号构成,如13007(8进制),可能表示模块的地址为130,通道号为07。输入表的数据每次在扫描周期的读入时进行刷新。 输出表: 输出表的最大数量对应于OpenPLC可控制的最大的数字输出点。只有在控制程序扫描周期的输出部分执行时,该表的数据才被送到实际的输出模块上去。 存储区域: 存储区域分为两部分,一部分是内部的位存储,一部分是寄存器和指令

11、存储。内部位存储包括内部的输出点,内部线圈,内部继电器等内部数据。这些内部数据是供控制程序的梯形逻辑进行输出、连锁用的。该部分数据不直接向外部电路输出控制,因为他们不在输出数据表中,因而不与外部电路有任何直接对应关系。 寄存器和指令存储区域,用来存储关于数量或程序编码。比如模拟量或其它十进制数。该区域的数值可以是来自许多器件的数据,如鼓轮开关、模拟量输入、编码器的计数输入等。除了输入值外,还可以存储准备输出到输出区域的数值,如模拟表、LED显示器的BCD码,控制阀,和驱动速度控制器等。存储寄存器也可以用来存储一些常数,如预设的计数器或定时器的值,算法结果的变化值和定时器和计数器的累计值等。根据

12、用法不同,该区域又可分为输入寄存器、输出寄存器和保持寄存器。 内存的容量配置考虑 了解了内存的组织后,尤其是I/O数据表与存储区域的相互作用,有助于理解OpenPLC的功能操作。对用户来说,了解这些知识也有助于帮助组织控制程序的编制。 以下将介绍内存与I/O是如何进行相互作用的。 首先,考虑OpenPLC的应用程序的一个例子。假如控制器有如下的内存、I/O和数值系统规格: z 总的应用程序的大小为4K,(16位字) z 可连接256个I/O,128个输入,128个输出 z 128个内部输出; z 256个存储寄存器,每组8个WORD,共32组; z 指令为8进制,16位(2字节) 首先,我们要

13、设定I/O表的边界。假定输入表在前,输入表将从0000(8进制,后同)开始,在0007结束,输出表在0010开始,0017结束。由于每个地址有16位,128个点需要8个地址。内部输出的地址从0020开始,到0027结束。而寄存器的起始地址为0030,256个一共要到0427为结束地址。 如果所有的寄存器都被用到,则控制程序的起始地址为0430。这个组态将留出3816(十进制)个地址来存储控制软件。 大多数控制器允许用户改变寄存器的边界,而无须考虑控制程序的起始地址。但不管怎样,用户必须清楚自己要用到的寄存器数量,这对程序中考虑寄存器地址是有用的。 I/O寻址 PLC或其它控制器,包括OpenP

14、LC,目的是为了监视和控制外界的I/O,因此,如何将程序与外界的I/O联系起来是很重要的。这就是I/O寻址的关系。控制器的核心是CPU,而CPU与外界的联系是通过数据表中的数据进行信息交换的,因此,I/O寻址包括程序对数据表的寻址,和数据表与I/O的寻址。因此,数据表的寻址是十分重要的,它不仅定义了包括离散器件的寻址,也定义了包括数值和模拟量的寄存器地址,包括定时器和计数器的操作。程序对数据表的寻址将在下节介绍。 可编程控制器的输入/输出结构设计的最大原则是简单。输入输出器件与PLC的I/O模块相连,I/O模块在机架(或底板)上。机架上每个模块的地址对应于I/O表中的地址,这样,I/O模块的位置就定义了该模块所连接的器件在I/O表中的地址。有些OpenPLC带有内部地址开关,但不论如何,I/O表与外部的I/O的关系都是直接而简单的。 (完)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报