IDD是事件驱动的,也就是说命令中控制标志的执行地位决定了序列工具的行为。总的来说,成功完成序列之前的命令,引起了下一个指令的完成,并且这个过程持续到最后一个指令被完成。然而,如果任何的命令以失败终止了,这个序列就会被引擎序列终止。事件驱动序列的另一种说法就是没有跟命令相关的时间标签,这种标签能说明他们被分派的时间。
IDD序列也采用逻辑受限性的条件序列。这使RP按顺序排好IDD来执行次级命令(阻止IDD活动性),取决于是否满足了预先设定的条件。对于MER,条件序列构建中的对照变量叫做确定数据项目,确定数据项目在一个序列中的使用受到限制。IDD没有一个可靠的确定数据项目OK_TO_IDD有TRUE/FALSE值。这表明了开发IDD的条件序列有一定的挑战性。IDDs的MI, MB 和APXS有接触开关态,直到2005年2月飞行软件升级到RAT接触开关态IDD。IDD条件序列也采用一般的确定数据项目(所有的子系统都可使用)叫做LAST_COMMAND_STATUS 值为SUCCESS/FAILURE。下面介绍一个用IDD条件序列布置RAT准备粉刷和研磨岩石表面。这个例子中条件序列的需要是确保扳动RAT接触开关,因此证明在预压RAT和粉刷和研磨之前RAT和岩石有接触。在2005年2月飞行软件升级之前RAT接触开关态没有确定的数据项目。因此,我们利用两个IDD移动行为的结合开发了以下的条件序列。
下面(表1)的序列是事件驱动的,并且有三个可能的执行通路。我们以通过序列的名义的路径开始。如果命令1是成功的,并且IDD移动被RAT接触开关终止,OK_TO_IDD将被设置成 TRUE (命令2),将2继续下去,跳过ELSE指令,直到发现ENDIF。命令2.1将设置成OK_TO_IDD 到 FALSE,因为通过设计,IDD的FREESPACE的移动不能按照一个IDD谨慎移动(如果选择的工具开关跳闸)。这就意着命令5是TURE,继续执行命令5.1,清楚预期的IDD错误,允许IDD的使用。跳过ELSE,直到发现ENDIF,然后移动到执行命令8,如果指令是正确的继续移动到指令9,我们现在介绍了名义上关掉的情况。如果命令1失败,OK_TO_IDD被设置成FALSE。这个指令会跳到2.1直到到了ELSE,执行3.1和3.2 ,进一步阻止IDD的移动并且终止这个序列。另一个名义上关掉的情况是如果命令1是成功的,并且IDD的移动通过到达命令位置(没有接触开关跳闸)终止,OK_TO_IDD 将被设置成 TRUE (命令2),继续下去到命令2.1,跳过下面的ELSE命令,直到发现ENDIF。命令2.1 的状态将设置为OK_TO_IDD to TRUE。因此命令5是FALSE,这样就跳过了5.1到命令ELSE,执行命令6.1和6.2阻止IDD进一步移动并且终止序列