简介在程序执行过程中,同步和异步指令有很大的不同。
所述“同步”模块包括:“同步”模块。
和“异步”属性与指令调用和执行之间的时间顺序有关。
以下条件适用于同步指令:当同步指令调用完成时,指令执行也完成。
对于异步指令,情况有所不同:异步指令调用完成后,异步指令的执行可能不会完成。
这也意味着异步指令的执行可以跨越多个调用。
在CPU中,异步指令的执行与用户程序循环同时执行。
异步指令在CPU中生成挂起的作业。
通常使用异步指令来传输数据(例如,模块数据记录,通信数据,诊断数据)。
同步/异步指令之间的差异下图显示了异步指令和同步指令处理之间的差异。
在该图中,CPU在指令执行完成之前(例如,传输数据记录完成)调用了异步指令五次。
对于同步指令,它们将在每次调用时完全执行。
①第一次调用异步指令,开始执行;②在中间调用异步指令,继续执行;③最后一次调用异步指令,执行完毕;④每次调用后,同步指令将对作业进行完全处理。
完全处理的作业的持续时间用于异步指令作业的并行处理CPU可以同时执行多个异步指令作业。
在以下情况下,CPU将并行执行多个作业:用于异步指令的作业将启动,而该指令的其他作业仍在运行。
●但是不超过该指令可以同时运行的最大作业数。
下图显示了WRREC指令中两个作业的并行处理。
在一段时间内,两条指令同时执行。
将指令调用分配给作业需要跨多个调用执行一条指令,并且CPU必须唯一地将后续调用分配给该指令正在运行的作业。
根据指令的类型,CPU可以通过以下两种方式将呼叫分配给作业:●使用指令的背景数据块(“ SFB”类型)●使用指令的作业标识输入参数。
在异步指令执行期间,这些输入参数必须与执行过程中的每个调用匹配。
示例:“ Create_DB”的工作指令由输入参数LOW_LIMIT,UP_LIMIT,COUNT,ATTRIB和SRCBLK标识。
下表列出了识别指令的输入参数。
异步指令的状态异步指令通过块参数STATUS / RET_VAL和BUSY显示指令的状态。
一些异步指令还使用块参数DONE和ERROR来显示。
下图显示了两个异步指令WRREC和CREATE_DB的执行。
输入参数REQ用于启动作业和执行异步指令。
②输出参数DONE用于指示作业已完成且没有错误。
③输出参数BUSY用于指示作业是否正在执行。
当BUSY = 1时,为异步指令分配资源。
当BUSY = 0时,不分配资源。
④输出参数ERROR用于指示发生了错误。
⑤输出参数STATUS / RET_VAL用于提供有关作业执行的状态信息。
发生错误后,输出参数STATUS / RET_VAL用于接收错误信息。
资源的使用在执行过程中,异步指令将占用CPU中的资源。
根据CPU类型和指令,对资源的使用有一定的限制。
CPU可以同时执行最大数量的异步指令作业。
在作业成功完成或发生错误之后,这些资源将再次可用。
示例:对于RDREC指令,S7-1500CPU可以并行处理多达20个作业。
如果超过了指令的并行作业的最大数量,则会发生以下情况:指令将在块参数STATUS中返回错误代码80C3(资源不足)。
●CPU将停止执行作业,直到再次可用资源为止。
解释低级异步指令某些异步指令可以使用一个或多个低位l处理