阶梯逻辑104:内存组织

内存分配因平台而异。所有平台都有输入和输出(I/O)内存,并根据平台的不同以不同的方式分配和标记。

通过Frank Lamb,自动化入门 2016年2月26日

在设计可编程逻辑控制器(PLC)系统时,首先需要做的决定之一是内存分配和组织。在PLC的早期,内存是非常珍贵的。用于程序和数据的1K(千字节)内存可能是程序员在特定PLC中可用的所有内存。如果程序增长到剩余的数据寄存器已经被分配,程序员将未使用的I/O内存分配为数据寄存器是很正常的。

内存分配因平台而异。所有平台都有输入和输出(I/O)内存;这是因为程序不是直接访问I/O,而是在扫描开始时读取输入,并将它们写入内存表。然后程序处理逻辑,使用保存的输入值并更新内存和输出表。在扫描结束时,输出表被写入物理输出。

I/O内存以不同的方式分配和标记。在这篇文章中,我将使用三个平台作为例子。

I/O的字母指示符不同,它们分配给物理点的方式也不同。对于西门子来说,模拟I/O开始于不同的平台(例如:PIW256或PIW800指定进程输入字),这使得情况更加复杂。Allen-Bradley仍然遵循插槽编号(即I:6.0),而AutomationDirect的Koyo平台使用V-Memory位置进行模拟,即V7630-V7633可以保存来自I/O卡的四个模拟值。

计时器和计数器也需要分配给它们内存。由于它们具有特殊的数据类型,如预设值、累积值和“完成”位,因此通常会为它们分配专门的区域。例如T0或C2(西门子)或CT5 (Koyo)。Allen-Bradley预先为定时器和计数器分配了寄存器,T4和C5。AB地址的例子可能是T4:1或C5:3。然后附加/DN表示“完成”位或.pre表示预设值。

Allen-Bradley还为比特(B3)、整数(N7)和实数(F8)预先分配寄存器。可以根据需要为计时器、计数器、位、整数、实数或浮点值以及字符串打开新的寄存器。比如N14、B33、F27、T88等等。

Siemens和Koyo都为离散位分配了特殊区域。西门子使用M位或字进行一般编程;位可以有M10.2这样的地址,而字、双字和字节可以分配为MW42、MD60或MB16。浮点值放置在双字位置。

Koyo的控制继电器是分立的,并使用“C”的名称。它们也是八进制的,并且有诸如C10或C217这样的地址。

Koyo的所有地址,甚至是I/O,都被“V”标识覆盖。V0从计时器当前值开始,I/O可能落在V40000范围内,而volatile(非保留)和non-volatile(保留)类型的用户数据词落在两者之间的某个地方。系统参数也位于这里。200、300和400个平台的位置也各不相同。

西门子plc还允许将数据组织成数据块(db)。这些数据由程序员构造,可以包含混合数据类型。大多数内存使用放在这里,而不是在“M”或标记内存中。这允许更多特定于应用程序的数据组织。用户定义类型(udt)可用于进一步定义数据。

前面的描述适用于这三种类型plc的较旧的原始平台。对于Allen-Bradley,这包括PLC5, SLC500和Micrologix家族。对于AutomationDirect/Koyo,它涵盖了200,300和400系列,西门子的S5和S7系列,200,300和400s。

这三家公司都有更新的基于标签的系统。对于Allen-Bradley来说,ControlLogix和CompactLogix平台允许用户以标签的形式添加内存,或者根据需要添加基于文本的地址。因为这些是程序员可读的,而且通常是描述性的,基于标记的编程允许程序的上传和阅读更容易,而不需要描述。

Siemens TIA Portal平台是基于标签的,但是拥有该程序仍然很重要,因为数据结构在上传时不容易关联。S7-1200和S7-1500是西门子基于标签的plc。

Koyo的生产力3000平台是他们基于标签的PLC。基于标记的编程比前面提到的基于寄存器的系统更有效,也更容易组织。

前面提到的所有平台还允许按地址导入和导出标签或描述。这使得程序员能够使用Microsoft Excel以一种有效的方式管理和组织内存。

在开始编程之前计划内存使用和分配是非常有用的,可以为用户节省大量时间。

弗兰克羊肉他是自动化咨询服务公司的创始人。本文最初发表于自动化入门博客.Automation Primer是CFE Media的内容合作伙伴。由制作编辑克里斯·瓦夫拉编辑,控制工程, CFE传媒,cvavra@cfemedia.com

在线额外

有关plc和编程的更多文章,请参阅下面的相关文章。

原始内容可以在automationprimer.com