Jump to content
  • Sign in to follow this  

    PLC 内存映射和 I/O 寻址

       (0 reviews)

    leizuofa

    一位聪明的 PLC 程序员曾经告诉我,任何有抱负的程序员应该了解他们打算编程的 PLC 的第一件事就是 PLC 的数字存储器是如何组织的。 对于任何程序员来说,这都是明智的建议,特别是在内存有限的系统上,和/或 I/O 与系统内存中的某些位置有固定关联的系统上。

    事实上,每个基于微处理器的控制系统都附带一个公开的内存映射,显示其有限内存的组织:有多少可用于某些功能、哪些地址链接到哪些 I/O 点、如何引用内存中的不同位置。 程序员。

    PLC 上的离散输入和输出通道对应于 PLC 存储器阵列中的各个位。 同样,PLC 上的模拟输入和输出通道对应于 PLC 内存中的多位字(连续的位块)。

    不同 PLC 制造商之间,甚至同一制造商设计的不同 PLC 型号之间,I/O 点和内存位置之间的关联绝不是标准化的。 这使得编写有关 PLC 寻址的一般教程变得困难,因此我的最终建议是查阅您想要编程的 PLC 系统的工程参考资料。

    最常用的 PLC 品牌是 Allen-Bradley (Rockwell),它恰好使用一种独特的 I/O 寻址形式(注 1),学生们往往会感到困惑。 由于这两个原因(受欢迎和混乱),我将在本节的大部分内容中重点关注 Allen-Bradley 寻址约定。

    注 1:最现代的 Allen-Bradley PLC 几乎完全取消了固定位置 I/O 寻址,而是选择基于标签名称的 I/O 寻址。 然而,行业中仍然存在足够多的传统 Allen-Bradley PLC 系统,足以保证覆盖这些寻址约定。

    PLC 内存映射

    下表显示了 Allen-Bradley SLC 500 PLC 的部分内存映射

    1.gif

    内存映射也称为数据表,该映射显示了为用户输入的程序保留的内存区域的寻址。 SLC 500 处理器内存在其他内存区域,但编写 PLC 程序的技术人员无法访问这些其他区域。

    请注意,艾伦-布拉德利对“文件”一词的使用与个人计算机用语不同。 在 SLC 500 控制器中,“文件”是用于存储特定类型数据的随机存取存储器块。

    相比之下,个人计算机中的“文件”是具有集体意义的连续数据位集合(例如文字处理文件或电子表格文件),通常存储在计算机的硬盘驱动器上。

    Allen-Bradley PLC 的每个“文件”内都有多个“元素”,每个元素由一组表示数据的位(8、16、24 或 32)组成。

    元素通过文件指示符后面的冒号后面的数字进行寻址,每个元素中的各个位通过斜杠标记后面的数字进行寻址。 例如,文件 3(二进制)中第二个元素的第一位(位 0)将被寻址为 B3:2/0。

    在 Allen-Bradley PLC(例如 SLC 500 和 PLC-5 型号)中,文件 0、1 和 2 分别专门为离散输出、离散输入和状态位保留。

    因此,字母指示符 O、I 和 S(文件类型)对于数字 0、1 和 2(文件编号)来说是多余的。

    其他文件类型,如 B(二进制)、T(定时器)、C(计数器)等都有自己的默认文件编号(分别为 3、4 和 5),但也可以在某些用户中使用。 定义的文件编号(10 及以上)。

    例如,Allen-Bradley 控制器中的文件 7 保留用于“整数”类型 (N) 的数据,但整数数据也可以根据用户的判断存储在编号为 10 或更大的任何文件中。

    因此,除输出 (O)、输入 (I) 和状态 (S) 之外的数据类型的文件编号和文件类型字母总是一起出现。

    例如,您通常不会看到寻址为 N:30(PLC 内存中的整数字 30)的整数字,而是看到 N7:30(PLC 内存的文件 7 中的整数字 30),以将其与其他整数字区分开。 30 可能存在于 PLC 内存的其他文件中。

    这种基于文件的寻址符号需要进一步解释。 当地址出现在 PLC 程序中时,特殊字符用于分隔(或“定界”)不同的字段。

    Allen-Bradley SLC 500 PLC 的一般方案如下所示:

    2.gif

    并非所有文件类型都需要区分各个字和位。 例如,整数文件 (N) 每个元素由一个 16 位字组成。 例如,N7:5 是文件 7 中保存的 16 位整数字号 5。

    然而,离散输入文件类型 (I) 需要作为单独的位进行寻址,因为每个单独的 I/O 点都引用单个位。 因此,I:3/7 将是驻留在输入元素三中的第七位。

    当寻址离散 I/O 位时,“斜杠”符号是必需的,因为当我们仅表示 PLC 上的单个输入或输出点时,我们不希望在一个字中引用所有 16 位。

    相比之下,SLC 500 内存映射中的整数是 16 位的集合,因此通常按整个字而不是逐位进行寻址。

    某些文件类型(例如计时器)更为复杂。 每个定时器“元素”由两个不同的 16 位字(一个用于定时器的累加值,另一个用于定时器的目标值)以及不少于三个声明定时器状态的位(“启用”位, “计时”位和“完成”位)。

    因此,在引用计时器内的数据时,我们必须同时使用小数点和斜杠分隔符。 假设我们在 PLC 程序中声明了一个地址为 T4:2 的定时器,它是定时器文件 4 中包含的定时器 2。

    如果我们希望寻址该定时器的当前值,我们可以使用 T4:2.ACC(文件四中第二个定时器的“累加器”字)。 同一定时器的“完成”位将被寻址为 T4:2/DN(文件四中第二个定时器的“完成”位)

    许多传统 PLC 系统共有的 SLC 500 寻址方案的一个特点是输入和输出位的地址标签明确引用 I/O 通道的物理位置。

    例如,如果将 8 通道离散量输入卡插入 Allen Bradley SLC 500 PLC 的插槽 4,并且您希望指定第二位(0 到 7 范围内的位 1),则可以使用 以下标签:I:4/1。

    对插入插槽 3 的离散输出卡上的第七位(位号 6)进行寻址需要标签 O:3/6。 无论哪种情况,该标签的数字结构都会准确告诉您实际输入信号连接到 PLC 的位置。

    PLC 内存映射示例

    为了说明物理 I/O 和 PLC 内存中位之间的关系,请考虑 Allen-Bradley SLC 500 PLC 的示例,显示其离散输入通道之一已通电(该开关用作电气设备的“启动”开关)。 发动机):

    3.gif

    如果输入或输出卡拥有超过 16 位(如示例 SLC 500 机架的插槽 3 中所示的 32 位离散输出卡的情况),寻址方案进一步将每个元素细分为字和位(每个“字” ”的长度为 16 位)。

    因此,插入插槽 3 的 32 位输入模块的位号 27 的地址将为 I:3.1/11(因为位 27 相当于字 1 的位 11 – 字 0 寻址位 0 到 15,字 1 寻址 位 16 至 31):

    4.gif

    Allen-Bradley SLC 500 PLC 系统的 32 位直流输入卡的特写照片显示了这种多字寻址:

    5.gif

    该卡上的前 16 个输入点(左侧 LED 组编号 0 到 15)的地址为 I:X.0/0 到 I:X.0/15,其中“X”指的是该卡所在的插槽号。 插入。 接下来的 16 个输入点(右侧 LED 组编号为 16 到 31)的地址为 I:X.1/0 到 I:X.1/15。

    传统 PLC 系统通常通过“I:1/3”(或等效标签)等标签引用每个 I/O 通道,指示 PLC 单元上输入通道端子的实际位置。

    IEC 61131-3 编程标准将这种基于通道的 I/O 数据点寻址称为直接寻址。 直接寻址的同义词是绝对寻址。

    直接通过卡、插槽和/或端子标签对 I/O 位进行寻址可能看起来简单而优雅,但对于大型 PLC 系统和复杂程序来说却变得非常麻烦。

    每次技术人员或程序员查看程序时,他们都必须将每个 I/O 标签“翻译”到某个实际设备(例如,“输入 I:1/3 实际上是中间罐搅拌机电机的启动按钮”) ”)以了解该位的功能。

    后来为提高 PLC 编程的清晰度所做的努力是通过任意名称而不是固定代码来寻址 PLC 内存中的变量的概念。

    IEC 61131-3 编程标准将此称为符号寻址,与“直接”(基于通道)寻址相反,允许程序员以对整个系统有意义的方式任意命名 I/O 通道。

    要使用我们简单的电机“启动”开关示例,程序员现在可以将输入 I:1/3(直接地址的示例)指定为“电机启动开关”(符号地址的示例)。 程序,从而大大增强了 PLC 程序的可读性。

    这个概念的最初实现维护了 I/O 数据点的直接地址,符号名称作为绝对地址的补充出现。

    PLC 寻址的现代趋势是完全避免使用 I:1/3 等直接地址,因此它们不会出现在编程代码中的任何位置。

    在撰写本文时,Allen-Bradley“Logix”系列可编程逻辑控制器是这种新约定的最突出的例子。

    每个 I/O 点,无论类型或物理位置如何,都会分配一个在现实世界中有意义的标签名称,并且这些标签名称(或它们也称为符号)引用绝对 I/O 通道位置 通过数据库文件。

    标签名称的一个重要要求是单词之间不包含空格字符(例如,标签名称应使用连字符或下划线作为间隔字符,而不是“电机启动开关”:“电机启动开关”),因为通常假定存在空格 由计算机编程语言作为分隔符(不同变量之间的分隔符)。

    在介绍了 Allen-Bradley 的 SLC 500 型号 PLC 寻址符号之后,我现在将放弃它,转而在文章的其余部分中采用符号寻址的现代惯例,以避免使编程示例特定于品牌或型号。 我的 PLC 程序中的每个数据点都将带有自己的标签名称,而不是直接(基于通道)的地址标签。

    Sign in to follow this  


    User Feedback

    Create an account or sign in to leave a review

    You need to be a member in order to leave a review

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

    There are no reviews to display.


×
×
  • Create New...