表格 13- 13 Receive_Config(接收组态)指令
STEP 7 会在插入指令时自动创建DB。
可以在设备配置属性中设置通信端口的初始静态组态,或者索性使用默认值。 可以在用户程序中执行 Receive_Config 指令来更改组态。
CPU 不永久存储使用 Receive_Config 指令设置的值。 CPU 从 RUN 模式切换到 STOP 模式和循环上电后,将恢复设备配置中组态的参数。
表格 13- 14 参数的数据类型
参数和类型 | 数据类型 | 说明 | |
REQ | IN | Bool | 在该输入的上升沿激活组态更改。 (默认值: False) |
PORT | IN | PORT | 安装并组态 CM 或 CB 通信设备之后,端口标识符将出现在 PORT 功能框连接的参数助手下拉列表中。 分配的 CM 或 CB 端口值为设备配置属性“硬件标识符”。 端口符号名称在 PLC 变量表的“系统常量”(System constants) 选项卡中分配。 (默认值: 0) |
CONDITIONS | IN | CONDITIONS | 如下文所述,条件数据结构指定消息开始和结束条件。 |
DONE | OUT | Bool | 上一请求已完成且没有出错后,保持为 TRUE
一个扫描周期时间 |
ERROR | OUT | Bool | 上一请求已完成但出现错误后,保持为 TRUE
一个扫描周期时间 |
STATUS | OUT | Word | 执行条件代码(默认值: 0) |
Receive_P2P 指令的开始条件
Receive_P2P 指令使用 Receive_Config 指令指定的组态来确定点对点通信消息的开始和结束。 消息开始由开始条件确定。 消息开始可以由一个开始条件或开始条件的组合来确定。 如果指定多个开始条件,则只有满足所有条件后才能使消息开始。
参数 CONDITIONS 数据类型结构的第 1 部分(开始条件)
表格 13- 15 START 条件的 CONDITIONS 结构
参数和类型 | 数据类型 | 说明 | |
STARTCOND | IN | UInt | 指定开始条件(默认值: 1)
· 01H - 开始字符 · 02H - 任意字符 · 04H - 线路中断 · 08H - 线路空闲 · 10H - 序列 1 · 20H - 序列 2 · 40H - 序列 3 · 80H - 序列 4 |
IDLETIME | IN | UInt | 线路空闲超时所需的位时间数。 (默认值: 40).
仅与线路空闲条件一起使用。 0 到 65535 |
STARTCHAR | IN | Byte | 用于开始字符条件的开始字符。 (默认值: B#16#2) |
STRSEQ1CTL | IN | Byte | 针对每个字符执行的序列 1 忽略/比较控制: (默认值:
B#16#0) 它们是为开始序列中各字符启用的位。 · 01H - 字符 1 · 02H - 字符 2 · 04H - 字符 3 · 08H - 字符 4 · 10H - 字符 5 禁用与某个字符关联的位意味着该序列位置中的任意字符均 符合条件。 |
STRSEQ1 | IN | Char[5] | 序列 1 开始字符(5 个字符)。 默认值: 0 |
STRSEQ2CTL | IN | Byte | 针对每个字符执行的序列 2 忽略/比较控制。
(默认值:B#16#0) |
STRSEQ2 | IN | Char[5] | 序列 2 开始字符(5 个字符)。 默认值: 0 |
STRSEQ3CTL | IN | Byte | 针对每个字符执行的序列 3 忽略/比较控制。 默认值:
B#16#0 |
STRSEQ3 | IN | Char[5] | 序列 3 开始字符(5 个字符)。 默认值: 0 |
参数和类型 | 数据类型 | 说明 | |
STRSEQ4CTL | IN | Byte | 针对每个字符执行的序列 4 忽略/比较控制。 默认值:
B#16#0 |
STRSEQ4 | IN | Char[5] | 序列 4 开始字符(5 个字符),默认值: 0 |
示例
请注意以下所接收的十六进制编码消息: "“68 10 aa 68 bb 10 aa 16”以及下表中列出的已组态开始序列。 在成功接收到个 68H 字符时,开始评估开始序列。 在成功接收到第四个字符(第二个 68H)时,开始条件 1 得到满足。 只要满足了开始条件,就会开始评估结束条件。
开始序列处理会因各种奇偶校验、成帧或字符间时间错误而终止。 由于不再满足开始条件,因而这些错误将导致不会有接收消息。
表格 13- 16 开始条件
开始条件 | 个字符 | 个字符 +1 | 个字符 +2 | 个字符 +3 | 个字符 +4 |
1 | 68H | xx | xx | 68H | xx |
2 | 10H | aaH | xx | xx | xx |
3 | dcH | aaH | xx | xx | xx |
4 | e5H | xx | xx | xx | xx |
Receive_P2P 指令的结束条件
消息结束由指定的结束条件确定。 消息结束由次出现的一个或多个已组态结束条件来确定。 主题“组态接收参数”中“消息结束条件”部分介绍了可以在 Receive_Config 指令中组态的结束条件。
可以在设备配置的通信接口的属性中组态结束条件,或者通过 Receive_Config 指令组态结束条件。 只要 CPU 从 STOP 模式切换到 RUN 模式,接收参数(开始条件和结束条件)就将恢复为设备配置设置。 如果 STEP 7 用户程序执行 Receive_Config,则这些设置将更改为 Receive_Config 的条件。
参数 CONDITIONS 数据类型结构的第 2 部分(结束条件)
表格 13- 17 END 条件的 CONDITIONS 结构
参数 | 参数类型 | 数据类型 | 说明 |
ENDCOND | IN | UInt 0 | 该参数指定消息结束条件:
· 01H - 响应时间 · 02H - 消息时间 · 04H - 字符间隙 · 08H - 大长度 · 10H - N + LEN + M · 20H - 序列 |
MAXLEN | IN | UInt 1 | 大消息长度: 仅当选择大长度结束条件时使用。 1 到 1024 个字节 |
N | IN | UInt 0 | 长度域在消息中的字节位置。 仅与 N + LEN + M
结束条件一起使用。 1 到 1022 个字节 |
LENGTHSIZE | IN | UInt 0 | 字节域的大小(1、2 或 4 个字节)。 仅与 N + LEN + M 结束条件一起使用。 |
LENGTHM | IN | UInt 0 | 指定跟在长度域后、不包含在长度域值内的字符 数。 该参数仅与 N + LEN + M 结束条件一起使用。 0 到 255 个字节 |
RCVTIME | IN | UInt 200 | 指定接收个字符所需的等待时间。 如果在指定时间内没有成功接收到字符,接收操 作将被终止且包含错误。 该参数仅与响应时间条件一起使用。 (0 到 65535 个位时间,多 8 秒)
此参数不是消息结束条件,因为在接收到个 响应字符时评估即终止。 由于在预期有响应时却接收不到响应,因此仅就 其能够终止接收方操作而言,它又是一个结束条 件。 必须选择一个单独的结束条件。 |
MSGTIME | IN | UInt 200 | 指定在接收到个字符后完成接收整条消息所 需的等待时间。 只有选择了消息超时条件时,才会使用该参数。
(0 到 65535 毫秒) |
参数 | 参数类型 | 数据类型 | 说明 |
CHARGAP | IN | UInt 12 | 指定字符间的位时间数。 如果字符间的位时间数超出指定值,则结束条件 得到满足。 该参数仅与字符间隙条件一起使用。
(0 到 65535 个位时间,多 8 秒) |
ENDSEQ1CTL | IN | Byte B#16#0 | 针对每个字符执行的序列 1 忽略/比较控制:
它们是为结束序列中各字符启用的位。 字符 1 是位 0,字符 2 是位 1,依此类推,字符 5 是位 4。禁用与某个字符关联的位意味着该序列位置中 的任意字符均符合条件。 |
ENDSEQ1 | IN | Char[5] 0 | 序列 1 开始字符(5 个字符) |
表格 13- 18 条件代码
STATUS (W#16#....) | 说明 |
81C0 | 所选开始条件非法 |
81C1 | 所选结束条件非法;未选择结束条件 |
81C2 | 启用了接收中断,但不允许此操作。 |
81C3 | 启用了大长度结束条件,大长度是 0 或大于 1024。 |
81C4 | 启用了计算长度,但 N >= 1023。 |
81C5 | 启用了计算长度,但长度不是 1、2 或 4。 |
81C6 | 启用了计算长度,但 M 值大于 255。 |
81C7 | 启用了计算长度,但计算长度大于 1024。 |
81C8 | 启用了响应超时,但响应超时为零。 |
81C9 | 启用了字符间隙超时,但该字符间隙超时为零。 |
81CA | 启用了线路空闲超时,但该线路空闲超时为零。 |
81CB | 启用了结束序列,但所有字符均“不相关”。 |
81CC | 启用了开始序列(4 个中的任何一个),但所有字符均“不相关”。 |
81CD | 关于接收消息覆盖保护选择无效的错误 |
81CE | STOP 至 RUN 转换的接收消息缓冲区处理选择无效错误 |
81CF | 块标题错误,例如,块类型错误或块长度错误 |
STATUS (W#16#....) | 说明 |
8281 | 写入模块时得到否定确认 |
8282 | DP 从站或模块不可用 |
82C0 | 重新组态被拒绝,因为一个组态正在进行 |
82C1 | 为模块可缓冲消息数量指定的值大于大允许值。 |
82C2 | 当对固件嵌入式协议进行组态时,接收组态被拒绝。 |
8351 | 数据类型不允许用于此 Variant 指针 |

评论