当顺控程序被abort时,顺控程序先执行当前激活步,之后再执行end步。然后sfc chart处理满足启动条件的顺控程序。
如果触发abort命令时当前sfc chart中有处于“held”状态的顺控程序,则sfc chart会先处理正在运行的顺控程序(先执行当前步,再执行end步),之后处理处于“held”的顺控程序(先执行held步,再执行end步)。然后才处理满足启动条件的顺控程序。
如下图1所示的sfc chart包含三个顺控程序run_km,abort_km,hold_km,启动条件分别为sfc chart处于“run”,“aborting”,“holding”状态。在sfc chart处于“run”状态时,顺控程序run_km会执行,hold命令将sfc chart转入“holding”状态(runhold=hold),此时顺控程序run_km会暂停而去执行hold_km的顺控程序。
图1 sfc chart被holding
如果此时通过abort命令将sfc chart转入“aborting”状态。在这个过程中会先执行hold_km顺控程序的abort过程,然后再执行run_km顺控程序的abort过程,之后才会执行abort_km的顺控程序,如下图2所示:
图2 sfc chart被aborting