消息 (MSG)
此信息适用于 CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370、GuardLogix 5570、Compact GuardLogix 5380、CompactLogix 5380、ControlLogix 5580、GuardLogix 5580 和 ControlLogix 5590 控制器。在适用的情况下会注明控制器的差异。
MSG 指令可针对网络中的其他模块执行数据块异步读写操作。
此为转换指令。使用时,请遵循以下步长:
- 在梯形逻辑中,插入一个指令,以便在每次执行该指令时,梯级输入条件均会由 false 转换为 true。
- 在结构化文本例程中,插入指令的条件以便仅在转换时执行。
可用语言
梯形图

功能块
此指令不可用于功能块中。
结构化文本
MSG(MessageControl);
操作数
梯形图
操作数 | 类型 | 格式 | 说明 |
|---|---|---|---|
Message | MSG | 标签 | Message 结构 |
结构化文本
操作数 | 类型 | 格式 | 说明 |
|---|---|---|---|
Message | MSG | 标签 | Message 结构 |
有关结构化文本中表达式语法的详细信息,请参见部分。
MESSAGE 结构
重要提示:
如果多次检查状态位:
如果在逻辑程序的多个位置对状态位进行检查,可使用这些位的副本。否则,在扫描过程中这些位可能发生更改,造成逻辑程序的运行不符合预期。
获得副本的一种方法是使用 FLAGS 字。将复制 FLAGS 字到其他标签,然后检查副本中的这些位。
重要提示:
请勿更改 MSG 指令的以下位:
- DN
- EN
- ER
- EW
- ST
无论是这些位本身还是 FLAGS 字中的这些位都不要更改。否则,控制器可能发生不可恢复的故障。如果发生不可恢复的故障,控制器会将项目从内存中清除。
助记符 | 数据类型 | 说明 | |
|---|---|---|---|
.FLAGS | INT | .FLAGS 成员可提供对状态成员(位)的访问,访问时采用一个 16 位字的形式。 | |
位 2 | Is this member .EW | ||
4 | .ER | ||
5 | .DN | ||
6 | .ST | ||
7 | .EN | ||
8 | .TO | ||
9 | .EN_CC | ||
重要提示:
请勿更改 FLAGS 成员的 EW、ER、DN 或 ST 位。例如,请勿清除整个 FLAGS 字。控制器会忽略更改,并使用内部存储的位值。
| |||
.ERR | INT | 如果 .ER 位置位,错误代码字会标识出 MSG 指令的错误代码。 | |
.EXERR | INT | 扩展错误代码字,用于指定部分错误代码的附加错误代码信息。 | |
.REQ_LEN | INT | 请求的长度,用于指定消息指令将尝试传输的字数。 | |
.DN_LEN | INT | 完成长度,标识实际传输的字数。 | |
.EW | BOOL | 使能等待位,当控制器检测到消息请求进入队列时置位。当 .ST 位置位时,控制器将 .EW 位复位。
重要提示:
请勿更改 EW 位。控制器会忽略更改,并使用内部存储的位值。
| |
.ER | BOOL | 错误位,当控制器检测到传输失败时置位。EnableIn 下一次由假变为真时,.ER 位复位。
重要提示:
请勿更改 ER 位。控制器会忽略更改,并使用内部存储的位值。
| |
.DN | BOOL | 完成位,当消息的最后一个信息包成功传输后置位。EnableIn 下一次由假变为真时,.DN 位复位。
重要提示:
请勿更改 DN 位。控制器会忽略更改,并使用内部存储的位值。
| |
.ST | BOOL | 开始位,当控制器开始执行 MSG 指令时置位。当 .DN 位或 .ER 位置位时,.ST 位复位。
重要提示:
请勿更改 ST 位。控制器会忽略更改,并使用内部存储的位值。
| |
.EN | BOOL | 使能位,当 EnableIn 变为真时置位,并保持置位直到 .DN 位或 .ER 位置位且 EnableIn 为假。如果 EnableIn 条件为假,但 .DN 位和 .ER 位清零,则 .EN 位保持置位。
重要提示:
请勿更改 EN 位。控制器会忽略更改,并使用内部存储的位值。
| |
.TO | BOOL | 如果手动将 .TO 位置位,控制器将停止处理消息,并将 .ER 位置位。 | |
.EN_CC | BOOL | 使能缓存位,用于决定 MSG 连接的管理方式。如果希望控制器保持该连接(例如在多次重复执行同一条 MSG 指令时),应将 .EN_CC 位置位。如果很少执行 MSG 指令并且需要另外的控制器连接,应将 .EN_CC 位清零。 即使 .EN_CC 位置位,由串行端口发出的 MSG 指令连接也不会缓存。 | |
.ERR_SRC | SINT | 在“消息配置”(Message Configuration) 对话框中显示错误路径。 | |
.DestinationLink | INT | 要更改 DH+ 或带源 ID 消息的 CIP 的目标链路,应将此成员设置为所需值。 | |
.DestinationNode | INT | 要更改 DH+ 或带源 ID 消息的 CIP 的目标节点,应将此成员设置为所需值。 | |
.SourceLink | INT | 要更改 DH+ 或带源 ID 消息的 CIP 的源链路,应将此成员设置为所需值。 | |
.Class | INT | 要更改 CIP 通用消息的 Class 参数,应将此成员设置为所需值。 | |
.Attribute | INT | 要更改 CIP 通用消息的 Attribute 参数,应将此成员设置为所需值。 | |
.Instance | DINT | 要更改 CIP 通用消息的 Instance 参数,应将此成员设置为所需值。 | |
.LocalIndex | DINT | 如果使用星号 [*] 来指定本地数组的元素编号,将由 LocalIndex 提供元素编号。要更改元素编号,应将此成员设置为所需值。 | |
If the message: | Then the local array is the: | ||
Reads data | Destination element | ||
Writes data | Source element | ||
.Channel | SINT | 要使用 1756-DHRIO 模块的另一个通道发出消息,应将此成员设置为所需值。应使用 ASCII 字符 A 或 B。 | |
.Rack | SINT | 要更改块传输消息的机架号,应将此成员设置为所需机架号(八进制)。 | |
.Group | SINT | 要更改块传输消息的组编号,应将此成员设置为所需组编号(八进制)。 | |
.Slot | SINT | 要更改块传输消息的插槽编号,应将此成员设置为所需插槽编号(八进制)。 | |
If the message goes over this network: | Then specify the slot number in: | ||
Universal remote I/O | octal | ||
ControlNet | decimal (0-15) | ||
.Path | STRING | 要将消息发送到其他控制器,应将此成员设置为新路径。 以十六进制值的形式输入路径。 省略逗号 [,] 例如路径 1, 0, 2, 42, 1, 3,可输入 $01$00$02$2A$01$03。 要浏览到某个设备并自动创建部分或完整的新字符串,请右键单击字符串标签,然后选择“转至消息路径编辑器”(Go to Message Path Editor)。 | |
.RemoteIndex | DINT | 如果使用星号 [*] 来指定远程数组的元素编号,将由 RemoteIndex 提供元素编号。要更改元素编号,应将此成员设置为所需值。 | |
If the message | Then the remote array is the | ||
Reads data | Source element | ||
Writes data | Destination element | ||
.RemoteElement | STRING | 要指定将消息发送到控制器中的其他目标标签或地址,应将此成员设置为所需值。以 ASCII 字符形式输入标签或地址。 | |
If the message | Then the remote array is the | ||
Reads data | Source element | ||
Writes data | Destination element | ||
.UnconnectedTimeout | DINT | 非连接型消息的超时,或者建立连接的超时。默认值为 30 秒。 如果消息为非连接型消息,则当控制器在 UnconnectedTimeout 时间内未获得响应时,ER 位置位。 如果消息为连接型消息,则当控制器在 UnconnectedTimeout 时间内未获得建立连接的响应时,ER 位置位。 | |
.ConnectionRate | DINT | 连接型消息在建立连接后的超时。此超时是指获得其他设备响应的超时。 仅适用于已建立连接的情况。 超时 = ConnectionRate x TimeoutMultiplier 默认 ConnectionRate 为 7.5 秒。 默认 TimeoutMultiplier 为 0(相当于倍乘系数 4)。 连接型消息的默认超时为 30 秒(7.5 秒 x 4 = 30 秒)。 要更改此超时,可更改 ConnectionRate 并将 TimeoutMultiplier 保留为默认值。 | |
.TimeoutMultiplier | SINT | ||
说明
MSG 指令可传输数据元素。此为跳变指令:
- 在梯形图中,每次执行指令时,EnableIn 由清零切换为置位。
- 每个元素的大小取决于指定的数据类型和使用的消息命令类型。

位置 | 说明 |
|---|---|
1 | EnableIn 为真 .EN 置位 .EW 置位 连接打开 |
2 | 消息已发送 .ST 置位 .EW 清零 |
3 | 消息完成或出错,EnableIn 为假 .DN 或 .ER 置位 .ST 清零 连接关闭(如果 .EN_CC = 0) .EN 清零(因为 EnableIn 为假) |
4 | EnableIn 为真,且 .DN 或 .ER 先前已置位 .EN 置位 .EW 置位 连接打开 .DN 或 .ER 清零 |
5 | 消息已发送 .ST 置位 .EW 清零 |
6 | 消息完成或出错,EnableIn 仍为真 .DN 或 .ER 置位 .ST 清零 连接关闭(如果 .EN_CC = 0) |
7 | EnableIn 变为假,且 .DN 或 .ER 置位 .EN 清零 |
影响数学状态标志
否
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参见“通用属性”。
执行
梯形图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | .EWS、.ST、.DN 和 .ER 位清零。 |
梯级输入条件为假 | 请参见“MSG 流程图(假)” |
梯级输入条件为真 | 请参见“MSG 流程图(真)” |
后扫描 | 不适用 |
结构化文本
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参见“梯形图”表中的“预扫描”行 |
正常执行 | 请参见“MSG 流程图(真)” |
后扫描 | 请参见“梯形图”表中的“后扫描”行 |
MSG 流程图(假)

MSG 流程图(真)

示例
梯形图

结构化文本
MSG (MessageControl);
提供反馈