PROFIBUS(S7-1200, S7-1500) DPSYC_FR:同步 DP 从站/冻结输入 (S7-1500) 说明使用该指令,可以同步一个或多个 DP 从站组。 可将如下的控制命令之一或其组合发送到相关组: • SYNC(输出并冻结 DP从站上的输出状态) • UNSYNC(取消 SYNC 控制命令) • FREEZE(冻结 DP 从站上的输入状态,读取冻结输入) •UNFREEZE(取消 FREEZE 控制命令) 在发送上述控制命令前,必须通过组态将 DP 从站分配给组。必须知道哪个 DP从站分 配给了哪个组及其编号,以及各组对 SYNC/FREEZE 的反应。 说明 注:在执行暖启动/冷启动时,控制命令 SYNC 和FREEZE 仍有效。 也请注意,一次只能启动一个 SYNC/UNSYNC 作业或一个 FREEZE/UNFREEZE 作业。功能描述 “DPSYC_FR”为异步执行指令,可以跨多个调用执行。通过调用“DPSYC_FR”,且 REQ = 1,可 启动该作业。输出参数 RET_VAL 和 BUSY 用于指示作业状态。 另请参见“同步指令和异步指令之间的不同之处 (页 715)”。作业标识 如果已触发 SYNC/FREEZE 作业,并在第一个作业完成之前,调用了“DPSYC_FR”,则指令的响应取决于同一作业中是否有新的调用。如果输入参数 LADDR、GROUP 和 MODE 一 致,则该调用将作为跟随调用编译。写入DP 模块的输出 可如下触发写入 DP 模块的输出: • 通过将命令传送到 DP I/O •通过将输出的过程映像写入模块(由操作系统在 OB 1 结束处写入或通过调用指令 “UPDAT_PO (页 2763)”写入)• 调用指令“DPWR_DAT (页 2919)”。 正常运行时,DP 主站将输出字节循环传送到 DP 从站的输出(在PROFIBUS DP 总线循环内)。 如果要将特定的过程数据(可能分布在多个从站上)输出到过程中,则可使用指令“DPSYC_FR”将控制命令 SYNC 发送到相关的 DP 主站中。 SYNC 的效果 使用控制命令 SYNC,所选组的 DP从站切换为同步模式。DP 主站将传送当前的输出数据,并 指示相关的 DP 从站冻结其输出。使用下列输出消息帧,DP从站可在内部缓冲区输入输出数 据,输出的状态保持不变。 在每个控制命令 SYNC 后,所选组的 DP从站使用其内部缓冲区的输出数据用于过程输出。 只有在使用指令“DPSYC_FR”发送控制命令 UNSYNC 时,才能循环更新输出。说明 如果所选组的 DP 从站目前没有连接到网络,或发送控制命令时失败,则不会切换到 SYNC 模式。在指令的返回值中不会提供该信息。 读取 DP 模块的输入数据 可如下读取 DP 模块的输入数据: • 使用装入命令到 DP I/O• 更新输入的过程映像时(由操作系统在 OB 1 结束处更新或通过调用指令“UPDAT_PI (页 2760)”更新) •通过调用指令“DPRD_DAT (页 2917)”。 正常运行时,DP 主站将从其 DP 从站循环接收该输入数据(在PROFIBUS DP 总线循环内), 并提供给 CPU。 如果要从过程中读取特定的输入数据(可能分布在多个从站上),则可使用指令“DPSYC_FR”将控制命令 FREEZE 发送到相关的 DP 主站中。
CPU1/函数块“SLI_FB_RDREC_iDevice”:程序段 1 的结果如果“扫描操作数的信号上升沿”指令(“start”)返回“TRUE”信号状态,“length”、“memErrStatus”和“checkedValid”变量会复位。 CPU1/函数块“SLI_FB_RDREC_iDevice”:程序段 2 的结果如果常开触点(“start”)的信号状态为“TRUE”,则启动“RDREC”指令。IO 控制器通知智能设备其要根据“RDREC”指令的输入参数 ID(“id”)读取数据记录。该数据记录由智能设备通过“PRVREC”指令传送到输入数据的传送区域。 RDREC 在多次循环中读取数据记录,并通过参数RECORD(“recordComm”)保存数值。 “RDREC”指令处理的成功状态(参数 VALID 的值为TRUE)通过“checkedValid”变量进行存储。 读取数据的长度存储在“length”变量中。 CPU1/函数块“SLI_FB_RDREC_iDevice”:程序段 3 的结果 当 RDREC完成处理但仍在运行时,“start”变量会复位,RDREC 结束。CPU1/函数块“SLI_FB_RDREC_iDevice”:程序段 4 的结果 如果发生错误RDREC(“error”变量的值为“TRUE”),则会将“#statStatus”变量的值传输到“memErrStatus”变量,并且将重置“start”变量。 CPU2/函数块“SLI_FB_PRVREC_iDevice”:程序段 1 的结果函数块“SLI_FB_setMode_PRVREC”中的“newDataCalled”决定“0”模式适用还是应在其它模式下运行“PRVREC”指令。 CPU 2/函数块“SLI_FB_PRVREC_iDevice”:程序段 2 的结果“PRVREC”指令按照 MODE 参数(“mode”)指定的模式执行。如果“0”模式下输出参数 NEW(“newDataCalled”)的信号状态为“TRUE”,PRVREC 会在“1”模式下执行,随后进入“3”模式。 PRVREC将存储在参数 RECORD(“recordComm”)中的数据记录传送到智能设备的传送区域。由智能设备发送的数据的长度会在输出参数“RLEN”(“#statRLength”、“length”)中输出。数 据长度不受输入参数MLEN(“maxLength”)的值“0”的限制)。待发送的数据记录数(如果对智能设备已知)会在输出参数“INDEX”(“dataRecNbr”)中输 出。 程序代码有关该示例的更多信息和程序代码,请参见“指令的示例库。FREEZE 的效果 使用控制命令 FREEZE,可将相关的 DP从站切换为冻结 (Freeze) 模式。DP 主站指示相 关的 DP 从站冻结当前的输入状态。将冻结数据传送到 CPU的输入区域。 在每次控制命令 FREEZE 执行完后,DP 从站即冻结其输入。使用指令“DPSYC_FR”发送控制命令“UNFREEZE”后,DP 主站将循环接收输入的当前状 态。 说明 如果所选组的 DP从站目前没有连接到网络,或发送控制命令时失败,则不会切换到 FREEZE 模式。在指令的返回值中不会提供该信息。 数据一致性 由于DPSYC_FR 功能不同步执行,可由更高一级的优先级中断,当使用指令“DPSYC_FR” 时,应确保过程映像与 I/O的实际输入和输出一致。 这可通过遵循以下规则来保证: • 为“SYNC输出”和“FREEZE”输入定义合适的过程映像分区(jinxian S7-400)。在每次调用 作业 SYNC之前,立即调用指令“UPDAT_PO (页 2763)”。在Zui后调用作业 FREEZE 之后, 立即调用指令“UPDAT_PI(页 2760)”。 • 或者:只为作业 SYNC 中涉及的输出和作业 FREEZE 中涉及的输入,使用直接 I/O访问。当 作业 SYNC 仍处于激活状态时,不要写入这些输出;当作业 FREEZE 仍处于激活状态时, 不要读取这些输入。 使用DPWR_DAT 和 DPRD_DAT 在使用指令“DPWR_DAT (页 2919)”时,在发送作业 SYNC进行输出之前,该指令必须执行 完毕。 在使用指令“DPRD_DAT (页 2917)”时,在发送作业 FREEZE进行输入之前,该指令必须执行 完毕。 启动和“DPSYC_FR” 需要用户在启动 OB 中发送 SYNC 和 FREEZE 控制命令。如果想在用户程序启动时,一个或多个组的输出都处于 SYNC 模式,则必须在启动时对这些 输出进行初始化,并使用控制命令SYNC,完全执行指令“DPSYC_FR”。DPNRM_DG: 读取 DP 从站的诊断数据 (S7-1200, S7-1500) 说明使用“DPNRM_DG”指令以“PROFIBUS EN 50,170 第 2 卷”中指定的格式读取 DP 从站的当前 诊断数据。有关从站诊断的基本结构,请参见下表;详细信息,请参见 DP 从站手册。下表列出了“DPNRM_DG”指令的参数: 参数 声明 数据类型存储区 说明 REQ Input BOOL I、Q、M、D、L 或常量 REQ = 1:读取请求 LADDR InputHW_DPSLAV E I、Q、M、D、L 或常量 DP 从站的硬件标识符 注:标识符必须指定为十六进制格式。例如: 硬件标识符1022 表示: LADDR:=W#16#3FE。 RET_VAL Return DINT, INT, LREAL, REALI、Q、M、D、L 在指令执行过程中如果发生错误,则返回值将 包含错误代码。如果未发生错误,则将在 RET_VAL中输入实际传送的数据长度。 RECORD Output VARIANT I、Q、M、D、L 已读取的诊断数据的目标区域。仅支持数据类型 BYTE。待读取数据记录或目标区域的Zui小 长度为 6。待读取数据记录的Zui大长度为 240。对于诊断数据长度超过 240 个字节(高达 244 个字节)的标准从站,系统将前 240 个字节传送到目标区域中。之后,在该数据中 置位相应的溢出位。 BUSY OutputBOOL I、Q、M、D、L BUSY = 1: 读取过程尚未完成。