目的

本文档介绍如何通过以下方式从Logix5000控制器访问数据:

  • CIP服务(固有的Logix5000通信模式)

  • 可编程控制器通信命令(PCCC),兼容PLC和SLC控制器:

——PLC-2命令
——PLC-5命令
——SLC命令

何时使用本文档

当您需要通过外部设备向Logix5000控制器写入数据或从其读取数据时,请使用本文档。

如何使用文档

本文档使用以下缩略语和定义

术语 含义
PLC-5 一种Allen-Bradley可编程逻辑控制器(PLC)
PLC-2 一种老式的Allen-Bradley可编程逻辑控制器
SLC Allen-Bradley小型逻辑控制器
CIP 控制与信息协议
GEN STS CIP报文一般状态
IOI 内部对象标识符(即,如何在CIP消息传递中处理数据。)
segment(段) IOI的一部分
tag 数据字符名称
STS /EXT STS 消息传输状态
TNS 16位唯一的事务标识符
address offset(地址偏移量) 一个2字节字段,表示从文件或标签开始的字节偏移量
system address(系统地址) 指示从何处开始操作的多字节字段
packet offset(包偏移量) 指示要继续操作的距离系统地址的距离
total transaction (总事务) 指示预期操作的总范围

有关其他信息,请参考DF1协议和命令集参考手册,出版物1770-6.5.16。

重要的用户信息

因为各种各样的用途本出版物中描述的产品,那些负责应用程序和使用这种控制设备必须满足自己已经采取了一
切必要措施来确保每个应用程序和使用符合所有的性能和安全要求,包括任何适用的法律、法规,规范和标准。

本指南中显示的插图、图表、示例程序和布局示例仅用于示例目的。由于有许多变量和要求与任何特定的安装相
关,Allen-Bradley不承担责任或责任(包括知识产权责任)的实际使用基于本出版物中显示的示例。

Allen-Bradley出版物SGI-1.1,固态控制应用、安装和维护的安全指南(可从您当地的Allen-Bradley办公室获
得),描述固态设备和机电设备之间的一些重要区别,这些区别在应用本出版物中所描述的产品时应该考虑。

未经罗克韦尔自动化的书面许可,不得复制本版权出版物的全部或部分内容。

在本手册中,我们使用注意事项来提醒您安全注意事项:

  1. 注意:
  2. 确定有关可能导致人身伤害或死亡、财产损害或经济损失的做法或情况的信息

注意力陈述可以帮助你:

  • 识别危害
  • 避免危险
  • 认识到后果

    1. 重要的:
    2. 识别对产品的成功应用和理解至关重要的信息

Logix5000 数据

Logix5000控制器将数据存储在标签中,而PLC-5控制器则将数据存储在数据文件中。Logix5000标签有以下属性:

  • 名称,用于标识数据:

    • -最多40个字符长度
    • -不包括文件编号
  • 范围:

      • controller(即global),可以直接访问
    • -程序(即本地),它不能通过外部设备访问
  • 数据类型,定义数据的组织

Logix5000控制器支持多种数据类型:

  • 原子的:位、字节、16位字或32位字,每个字存储一个单独的值。

  • 结构:不同数据类型的分组,作为一个单独的单元,服务于特定的目的。根据应用程序的需要,您可以创建其他结构,这些结构称为用户定义的结构。

  • 数组:一个元素序列,每个元素都是相同的数据类型:

    • 您可以根据需要定义0维、1维、2维、3维的数据。(零维或一维是最常见的。)
    • 可以使用原子数据类型或结构数据类型

下表标识了预定义的数据类型:

存储: 使用以下数据类型: 结构
Bit BOOL
Bit array BOOLEAN ARRAY (32 bit chunks)
8 bit integer SINT
16 bit integer INT
32 bit integer DINT
32 bit float REAL
32 bits of milliseconds TIMER ✓
32 bits of range COUNTER ✓
32 bits of range CONTROL ✓

CIP 服务

下面的部分描述了Logix5000控制器的通信和寻址的固有模式。您可以通过以下服务访问Logix5000数据:

  • CIP读取数据服务
  • 读取数据碎片格式服务
  • CIP写数据服务
  • 写入数据碎片格式服务
  • Multi-Request服务
  • 获取属性列表服务
  • 读取模板服务

介绍

在使用CIP服务之前,请回顾以下介绍信息:

  • CIP数据类型
  • IOI段
  • 缩写类型
  • 使用缩写类型返回数据格式
  • 数组索引
  • CIP服务错误

CIP数据类型

数据类型信息在CIP通信的各个方面都非常重要。类型信息用于读取、写入,如果需要,还可以对结构进行解码。下图显示了CIP数据类型的布局。

image.png

结构存储一组不同的数据类型,这些数据类型作为一个单一的单元,服务于特定的目的(例如,值的组合):

  • 一个结构包含一个或多个成员。
  • 每个成员可以是:
    • 原子数据类型
    • 另一种结构数据类型
    • 原子数据类型或结构数据类型的数组

结构模板分为以下几个方面:
image.png
image.png

要基于结构创建标记,您有以下选项

  • 使用以下预定义结构之一:
    • 轴
    • 控制
    • 计数器
    • 消息
    • MOTION_GROUP
    • MOTION_INSTRUCTION
    • PID
    • 计时器
  • 创建自己的结构(用户定义的数据类型)

您可以将大多数结构分组为数组或在其他结构中使用它们。不能在数组或其他结构中使用以下结构:

  • 轴
  • 消息
  • MOTION_GROUP

IOI 段

CIP寻址是通过IOI段完成的。控制器使用以下类型的段(遵循ControlNet International规范):

  • 类段版本:

image.png

  • 实例部分版本:

image.png

  • 元素部分版本:

image.png

  • 符号段,一个字节字符版本:

image.png

缩写类型

CIP数据表读写需要一个缩写类型字段。该字段标识数据类型:

  • 对于原子类型,有一个字节,它是类型值,后面跟着一个0字节:

image.png

  • 结构:
    • 第一个字节表示后面跟着结构类型。
    • 第二个字节表示结构句柄,用于标识用于通信目的的结构。

image.png

带有缩写类型的返回数据格式

下面显示了为CIP消息传递返回的所有原子类型和一些预定义结构的数据格式和缩写类型
image.png
image.png
image.png

数组索引

下面的例子展示了二维和三维数组如何从第一个元素到最后一个元素进行索引。所有数组索引都是基于0的。
image.png

CIP服务错误

一般情况下,CIP状态返回如下:

  • 良好的状态
  • 没有扩展的一般错误

image.png

当 含义
04 这个通用状态代码意味着IOI不能被破译。要么它没有正确地形成,要么匹配标记不存在
05 找不到所引用的特定项(通常是实例)
06 请求的数据量无法装入响应缓冲区。已发生部分数据传输。
0A 试图处理某个属性时发生错误
13 命令中没有提供足够的命令数据/参数来执行请求的服务
1C 与属性计数相比,提供的属性数量不足
26 IOI字长与被处理的IOI数量不匹配
00 SUCCESS!!
  • 错误与扩展状态:

image.png

当 含义
FF 01 05 21 您试图访问超出数据对象末端的内容
FF 01 07 21 缩写的类型与数据对象的数据类型不匹配
FF 01 04 21 起始偏移量超出模板的末端

CIP读取数据服务

CIP读取数据服务从IOI字符串的指定地址开始读取一个数据块:

  • 任何符合应答包的数据都会被返回,即使不是所有数据都符合。
  • 如果所有的数据都不符合数据包,一个错误与数据一起返回。

命令格式

image.png

回复格式

image.png

读取数据分片格式服务

这个服务读取的数据比一个数据包容纳的数据要多:

  • 应用程序必须将数据分割成适当大小的块。
  • 客户端进程必须依次请求下一个数据。
  • 从一个请求到下一个请求的唯一参数是字节偏移量(32位,最低有效位先到)。
  • 除了最后一个数据包外,每个数据包都返回一个大小错误。

命令格式

image.png

回复格式

image.png

写数据服务

CIP写数据服务从IOI字符串的指定地址开始写一个数据块。数据类型必须完全匹配才会发生写操作。

命令格式

image.png

回复格式

image.png

写数据分片格式服务

这个服务写的数据比一个数据包所能容纳的要多:

  • 应用程序必须将数据分割成适当大小的块。
  • 客户端进程必须依次发送下一条数据。
  • 从一次写入到下一次写入的唯一参数是字节偏移量(32位,最低有效位在前)。

命令格式

image.png

回复格式

image.png

Multi-Request服务

Must-Request服务将多个请求打包到一个包中。使用此服务来优化CIP读写。每次读取或写入一个标记可能非常耗时。大部分时间都花在将消息发送到控制器,然后再返回,而不是在两端进行任何有效的处理时间。

命令格式

image.png
count是要执行的服务数量的两个字节字段。
offset #n是一个双字节字段,它给出了从count字段到NTH服务开始的字节偏移量。
service#n是要执行的服务之一。上面显示了CIP读写的示例格式。
在任何时候,服务和所有其他头信息都必须符合包的边界。

回复格式

image.png
count是响应中应答数的两个字节字段。
offset #n是一个双字节字段,它给出了从count字段到第n次应答开始的字节偏移量。
reply #n是对请求中的第n个服务的应答,并遵循上述CIP读写的应答格式。
所有的服务都会被处理。每个回复都保存其自身服务的状态。Gen STS字节表示在服务处理的某个地方发生了错误。

获取属性列表服务

这个服务返回关于模板的重要信息:

  • 结构尺寸
  • 字节数
  • 会员人数
  • 处理

可能需要多次读取才能获得所有模板数据。

命令格式

image.png

回复格式

image.png
ss ss ss ss是32位字的模板结构的大小。
bb bb是结构在内存中占用的字节数。
mm mm是结构中构件的数量。
hh hh是用于通信的结构句柄。

读取模板服务

该服务返回模板中包含的关于每个成员类型的信息以及它在结构中的位置(字节偏移量)。获取所有模板数据可能需要多次读取。

命令格式

image.png
tt tt是您正在读取的模板的实例号,低字节优先
rr rr rr rr是开始读取的字节偏移量。要读取的第一个字节偏移量为0。
bb bb是要读取的字节数。

回复格式

image.png