调用 SFCERR 或SFCSTATUS 变量 可以调用 SFCERR 或 SFCSTATUS 变量,以便获得有关待定事件类别 30 错误、14(1E0EH) 或 15 (1E0FH) 的更多详细信息。 仅可以通过对相应指令的背景数据块的符号访问来装载 SFCERR 或SFCSTATUS 变量。可在系统函数 SFC 58 的“WR_REC:向 I/O 写入数据记录”下以及系统函数SFC 59 的 “RD_REC:从 I/O 读取数据记录”下找到在 SFCERR 变量中输入的错误消息。 可在系统函数SFB 52 的“RDREC:读取数据记录”下以及系统函数 SFB 53 的“WRREC:写入 数据记录”下找到在 SFCSTATUS变量中输入的错误消息。
P_SND_RK: 用 3964(R) 和ASCII 驱动程序发送数据 (S7-300, S7-400) 说明 P_SND_RK 指令根据 DB_NO、DBB_NO 和 LEN参数指定的内容将数据块从 DB 传送至 CP 341。 为进行数据传输,可在循环或者时间控制的程序的静态(无条件)操作中调用P_SND_RK 指令。 操作原理 通过输入 REQ 的上升沿启动数据传输。 数据传输可能会进行多次调用(程序周期),具体取决于数据量。通过将 R 参数输入的信号状态设置为“1”,可在循环中调用 P_SND_RK 指令。 该设置会取消 向 CP 341的传输,并将 P_SND_RK 指令复位为初始状态。 CP 341 已接收到的数据仍会发 送给通信伙伴。 如果输入 R的信号状态保持为静态“1”,则发送已禁用。 参数 LADDR 指定要寻址的 CP 341 的地址。 输出 DONE指示“作业已完成且无错”,ERROR 指示错误事件。如果发生错误,会在 STATUS中显示相应的事件编号。如果未发生错误,STATUS 的值为 0。对于 P_SND_RK 指令的 RESET,还会输出 DONE 和ERROR/STATUS。如果出现错误,则复位二进制结果 BR。 如果块 已完成且无错,则二进制结果的状态为“1”。 参数 参数 声明数据类型 说明 REQ INPUT BOOL 作业在上升沿触发 R INPUT BOOL 取消作业 取消正在进行的作业。传输被禁止。LADDR INPUT INT CP 341 的起始地址 起始地址从 STEP 7 获取。 DB_NO INPUT INT 数据块号发送 DB 号: 依 CPU 而定, 不允许为零 DBB_NO INPUT INT 数据字节号 0 ≤ DBB_NO ≤8190,从数据字节 开始发送数据 LEN INPUT INT 数据长度1 ≤ LEN ≤ 4096,通过字节数指定 DONE1 OUTPUT BOOL作业已完成且无错 STATUS 参数 == 16#00; ERROR1 OUTPUT BOOL 作业已取消但有错误 STATUS 参数(页 8964)包含错误信 息。 STATUS1 OUTPUT WORD 错误规范 如果 ERROR == 1,则STATUS 参数 (页 8964)包含错误信息。 1 参数在下次调用指令之前可用!说明R_CPU_NO、R_TYP、R_NO、R_OFFSET、R_CF_BYT 和 R_CF_BIT 参数与程序 3964(R) 及ASCII 驱动程序无关,不需要任何数据。 同样,由于在默认情况下设置“S”表示“发送”,SF 参数也不需要任何数据。 数据区中的分配P_SND_RK 指令与 I_SND_RK 背景数据块结合使用。 调用时包含 DB 号。 禁止访问背景数据 块中的数据 说明 例外:如果出现错误 STATUS == W#16#1E0F,可以检查 SFCERR 或 SFCSTATUS 变量以获得 其它详细信息。该错误变量必须通过对背景数据块进行符号访问来装载。 时序图 下图说明了 DONE 和 ERROR 参数的特性(取决于 REQ 和 R的输入电路)。说明 输入 REQ 通过沿来触发。输入 REQ 上的一个上升沿便足够。在整个传输期间,RLO(逻辑运算结果)不一定必须为“1”。 规则 说明 P_SND_RK 指令不会进行参数检查。 如果参数分配不正确,则 CPU 可能转至STOP 模式。 说明 必须先完成 P_SND_RK 指令的 CP-CPU 启动例程,CP 341 才能执行 CPU 从STOP 切换 到 RUN 之后触发的作业。在此期间启动的作业不会丢失。启动协调完成后,会将该作业发 送至 CP 341。P_SND_RK: 通过 RK 512 发送数据 (S7-300, S7-400) 说明 可通过参数设置 SF =“S”使用P_SND_RK 指令将数据从 S7 数据区发送至 CP 341。 操作原理 通过输入 REQ 的上升沿启动数据传输。数据传输可能会进行多次调用(程序周期),具体 取决于数据量 (LEN)。 参数 LADDR 指定要寻址的 CP 341的地址。 只允许将数据块区域作为要发送的数据的源。 通过设置 DB 号 (DB_NO) 和要从此数据块传 送的第一个数据字节的偏移量(DBB_NO) 来适当地指定源。 数据块 (DB) 和扩展数据块 (DX) 是有效的目标数据类型 (R_TYP)。 通过 CPU号(R_CPU_NO, 仅与多处理器通信有关)、数据类型(R_TYP:DB 或 DX)、DB 号 (R_NO) 以及要向其写入第一个字节的偏移量 (R_OFFSET) 来适当地指定目标。 伙伴 CPU 上的处理器间通信标志字节和位在 R_CF_BYT 和R_CF_BIT 中指定。通过将 R 参数输入的信号状态设置为“1”,可在循环中调用 P_SND_RK 指令。 该设置会取消 向 CP341 的传输,并将 P_SND_RK 指令复位为初始状态。 CP 341 已接收到的数据仍会发 送给通信伙伴。 输入 R的静态信号状态“1”指示数据传输已禁用。 输出 DONE 指示“作业已完成且无错”,ERROR 指示错误事件。如果发生错误,会在STATUS 中显示相应的事件编号。 如果未发生错误,STATUS 的值为 0。对于 P_SND_RK 指令的 RESET,还会输出DONE 和 ERROR/STATUS。 如果出现错误,则复位二进制结果 BR。 如果 块已完成且无错,则二进制结果的状态为“1”。参数 参数 声明 数据类 型 说明 SF INPUT CHAR 用于发送数据或获取数据的选项 SF =“S”(发送) 默认值: “S”REQ INPUT BOOL 作业在上升沿触发 R INPUT BOOL 取消作业 取消正在进行的作业。 传输被禁止。 默认值: 0LADDR INPUT INT CP 341 的起始地址 起始地址从 STEP 7 获取。 DB_NO INPUT INT源的数据块号 发送 DB 号: 依 CPU 而定,不允许为零 DBB_NO INPUT INT 源的数据字节号 0 ≤ DBB_NO≤ 8190,从数据字节开始发送数据 LEN INPUT INT 要发送的消息帧的数据长度1 ≤ LEN ≤ 4096,通过字节数指定,仅偶数值适用 R_CPU_NO INPUTINT 伙伴 CPU 的 CPU 号 0 ≤ R_CPU_NO ≤ 4,仅适用于多处理器模式。默认 值: 1 R_TYP INPUT CHAR 伙伴 CPU 上的地址类型 “D”: 数据块 “X”: 扩展数据块 R_NOINPUT INT 伙伴 CPU 上的数据块号。数据区中的分配 P_SND_RK 指令与 I_SND_RK 背景数据块结合使用。调用时包含 DB 号。 禁止访问背景数据 块中的数据 发送数据的特性 请注意以下有关发送数据的特性: • RK 512仅允许发送偶数量的数据。 如果指定了奇数量的数据作为长度 (LEN),那么将在 数据末尾发送值“0”作为附加的填充字节。 • RK512 仅允许偶数偏移量。 如果指定了奇数偏移量,则将从下一个较低的偶数偏移量开 始在伙伴中存储数据。 示例: 偏移量是7,数据从字节 6 开始存储。 时序图 下图说明了 DONE 和 ERROR 参数的特性(取决于 REQ 和 R 的输入电路)。说明输入 REQ 通过沿来触发。输入 REQ 上的一个上升沿便足够。在整个传输期间,RLO(逻辑 运算结果)不一定必须为“1”。 规则说明 P_SND_RK 指令没有参数检查。 如果参数分配错误,CPU 可以切换到 STOP 模式。