访问 ALARMBUFFER 对象
ALARMBUFFER 对象是发布者/订阅者基础架构的一部分。发布者/订阅者基础架构是 Logix 控制器通信子系统的一部分。Logix 控制器通信子系统实现用于 CIP 的发布者/订阅者消息传递模式,此模式支持其他设备接收由控制器子系统发送的消息。目前,数字和模拟报警及批处理设备相位子系统使用发布者/订阅者基础架构通过 CIP 将消息传递给订阅应用程序。
ALARMBUFFER 对象可帮助用户确定是否存在与发布者/订阅者子系统之间的连接及其状态。每个订阅应用程序都存在一个 AlarmBuffer 对象实例。这意味着,AlarmBuffer 对象可能在某个时间点存在,但在另一时间点不存在。因此,获取系统值 (GSV) 指令返回状态作为目标标签 (INT[0].0) 的一部分。当状态位为零时,很可能表示 AlarmBuffer 对象不再存在。
属性 | 数据类型 | 指令 | 说明 | |
|---|---|---|---|---|
AlarmBufferInstance | DINT[n] | GSV | 返回 AlarmBuffer 对象 ID。 | |
DINT[0] | Number of AlarmBuffer objects. | |||
DINT[1...(n-1) | AlarmBuffer object IDs. | |||
If the number of AlarmBuffer objects is greater than n-1, only the IDs of the first (n-1) objects are returned. You do not have to specify an AlarmBuffer Instance ID for this attribute. | ||||
AlarmBufferStatus | INT[2] | GSV | 返回指定 AlarmBuffer 对象的状态。用户需要指定 AlarmBuffer 实例 ID 才能获取该单个实例的状态。 | |
INT[0].0 | 1-AlarmBufferStatus Attribute is valid. 0-AlarmBufferStatus Attribute is invalid. | |||
INT[1] | AlarmBuffer Status Attribute value. | |||
The Status attribute contains the following: | ||||
INT[1].0 | 1-Multi-message packets enabled. 0-Multi-message packets disabled. | |||
INT[1].1 | 1-Buffer is enabled. 0-Buffer is disabled. | |||
INT[1].2 | 1-Data stored in the buffer. 0-Buffer is empty. | |||
INT[1].3 | 1-Buffer is full. 0-Buffer is not full. | |||
INT[1].4 | 1-Initialization Status messages WILL NOT be sent (at subscription time and on Redundancy switchover). 0-Initialization Status messages WILL be sent. | |||
All other bits are reserved and are set to 0. | ||||
BufferSize | INT[2] | GSV | 返回指定 AlarmBuffer 对象的缓冲区大小(以 kB 为单位)。用户需要指定报警缓冲区实例 ID 才能获取该单个实例的缓冲区大小。 | |
INT[0].0 | 1-BufferSize Attribute is valid. 0-BufferSize Attribute is invalid. | |||
INT[1] | Buffer Size Attribute value. | |||
BufferUsage | INT[2] | GSV | 返回指定 AlarmBuffer 对象所使用的缓冲区空间百分比。用户需要指定 AlarmBuffer 实例 ID 才能获取该单个实例的缓冲区使用百分比值。 | |
INT[0].1 | 1-BufferUsage Attribute is valid. 0-BufferUsage Attribute is invalid. | |||
INT[1] | BufferUsage Attribute value. | |||
SubscriberName | STRING | GSV | 返回指定 AlarmBuffer 对象的订阅者名称。用户需要指定 AlarmBuffer 实例 ID 才能获取该单个实例的订阅者名称。 任何字符串类型都可以作为目标标签引用。 如果订阅者名称不适合提供的目标标签字符串,则指令只能提供名称中能够适合目标标签的部分。 如果调用指令时实例 ID 指定的 AlarmBuffer 对象实例不存在,则字符串长度(.LEN 成员)将设置为零。 请注意,如果订阅者在创建 AlarmBuffer 对象时没有提供订阅者名称,则将订阅者名称属性设置为与用于调用 AlarmBuffer 对象“创建”服务的连接相关联的设备序列号。 | |
GSV 指令示例
用户程序可以包含 GSV 指令,以获取控制器中当前 AlarmBufferInstances 的列表。该指令将返回控制器中当前存在的报警缓冲区对象的总计数 (DINT[0]) 以及控制器中存在的各个 AlarmBuffer 对象的关联 AlarmBuffer 对象实例 ID (DINT[1] – DINT[n-1])。GSV 指令在 Dest(目标)标签名称下显示 AlarmBuffer 对象的数量值 (DINT[0])。
用户程序可以使用 AlarmBuffer 对象实例 ID 来获取与控制器中存在的 AlarmBuffer 对象的特定实例相关的信息。在目标标签中,可返回 AlarmBufferStatus、BufferSize 和 BufferUsage 属性的状态字 (INT[0]),指示有效或无效的数据,因为可以随时创建和删除报警缓冲区对象。当 Attribute Name 等于 AlarmBufferStatue、BufferSize 或 BufferUsage 时,返回值存于 (INT[1]) 中。当 Attribute Name 为 SubscriberName 时,返回值为订阅者名称。不会为 SubsriberName 属性返回状态。
梯形图以下示例说明用于检索 AlarmBuffer 对象 ID 的 GSV 指令。

虽然 AlarmBufferInstances 的 GSV 将返回值存于数组中,但无法使用数组地址来获取该实例的属性值。用户必须将 myAlarmBufferInstances[x](其中 x = 1、2、3、...)中的值复制或移动到直接(未加索引)标签中,如下图所示的 myAlarmBufferID。
以下示例说明用于检索 AlarmBuffer 对象缓冲区大小的 GSV 指令。
当 Attribute Name 为 AlarmBufferStatus、BufferSize 或 BufferUsage 时,在 Dest(目标)标签名称下显示的数字是有效或无效的位值。
结构化文本
以下示例说明用于检索 AlarmBuffer 对象 ID 的 GSV 指令。
GSV(AlarmBuffer, AlarmBufferInstances, myAlarmBufferInstances[0]);
以下示例说明用于检索 AlarmBuffer 对象的 GSV 指令。
GSV(AlarmBuffer, myAlarmBufferID, BufferSize, myBufferSize[0]);
提供反馈