3. 任务序列的基本概念与表示方法
星务系统要完成一次对地成像、一次姿态机动或一次数传,往往不是发一条指令就能结束的。地面测控人员真正上传给卫星的,是一段带有时间约束、依赖关系和分支逻辑的“任务序列”。理解任务、指令、序列、时间标签、依赖关系、条件分支与循环结构这六个概念,是读懂和编写星务任务脚本的基础。
从指令到任务:三个层次的抽象
指令是星务系统可执行的最小动作单元,例如“打开相机电源”“设置磁力矩器电流为 0.3 A”“启动数传发射机”。一条指令通常包含目标设备、操作码和参数三部分,执行后产生确定的硬件效果。
任务是面向一个业务目标的指令集合。例如“对某区域成像”这个任务,内部可能包含:调整姿态指向目标、稳定三轴、开相机电源、设置曝光参数、触发快门、关相机电源、恢复对日定向。任务是对指令的业务级封装,它回答“要达成什么”,而指令回答“具体怎么做”。
序列则是任务在时间轴上的有序排列。一个序列可以包含多个任务,也可以包含单条指令,它规定了“先做什么、后做什么、什么时候做”。序列是星务系统实际存储、上注和执行的对象。
时间标签:绝对、相对与窗口
序列中的每个动作都需要时间标签来定位。常见有三种:
- 绝对时间标签:以星上时间(如 GPS 周内秒)给出,例如
T=345600.0s。适合与地面计划严格对齐的动作。 - 相对时间标签:相对序列起点或前一动作的偏移,例如
+120s。适合动作间隔固定的组合,如“开机后 30 s 再采集”。 - 时间窗口:给出允许执行的最早和最晚时刻,例如
[345600, 345660]。适合对测控弧段、光照条件有依赖的动作,窗口内满足条件即可执行。
时间标签的选择直接影响序列的鲁棒性。绝对时间精度高但缺乏弹性,相对时间灵活但误差会累积,窗口方式兼顾两者,是工程中常用的折中。
依赖关系:让动作按正确顺序发生
依赖关系描述动作之间的先后约束,常见有四类:
- 顺序依赖:A 完成后 B 才能开始,如“相机电源开”先于“触发快门”。
- 数据依赖:B 需要 A 的输出,如“姿态稳定标志置位”后“成像”才有效。
- 资源依赖:两个动作不能同时占用同一资源,如数传发射机与测控应答机共用天线时需互斥。
- 条件依赖:只有满足某状态才执行,如“电池 SOC > 60%”才允许开机。
依赖关系可以用有向无环图(DAG)表示,节点是动作,边是约束。星务软件在执行前会做依赖检查,若前置条件不满足,则挂起或跳过后续动作。
条件分支与循环结构
真实任务中,动作路径往往取决于星上状态。条件分支用 if-else 表达:若“姿态误差 < 0.1°”则进入成像分支,否则进入姿态修正分支。分支条件通常来自遥测参数或标志位。
循环结构用于重复动作,例如“每 10 s 采集一次温度,共 6 次”,或“持续加热直到温度 ≥ 5 ℃,最多循环 20 次”。循环必须带终止条件,否则可能造成星务机长时间占用或能源浪费。工程上常设置最大循环次数和超时保护。
表示方法:从文本脚本到状态图
任务序列的表示方法主要有三类:
- 文本脚本:以行式指令加时间标签描述,便于上注和人工检查,例如
345600.0 CAM_PWR ON。 - 表格:以“序号、时间、动作、参数、依赖、条件”列组织,适合地面计划编排与评审。
- 图形化表示:用状态图或活动图表达分支与循环,直观展示执行路径,适合复杂序列的设计与验证。
下面这张图用状态图的方式,展示了一个“对地成像”任务序列的典型结构:从待机出发,经过姿态指向、稳定判断、成像、数传,最终回到待机,其中包含条件分支和循环等待。
一个可参考的序列描述表
在实际工程中,图形化表示适合评审,但上注前通常要落成结构化表格。下面给出一个与上图对应的序列描述示例,字段可根据任务复杂度增减。
| 序号 | 时间标签 | 动作 | 参数 | 依赖 | 条件/分支 |
|---|---|---|---|---|---|
| 1 | T+0s | 姿态指向 | 目标经纬度 | — | — |
| 2 | T+90s | 判断姿态误差 | < 0.1° | 1 完成 | 是→3;否→6 |
| 3 | T+90s | 相机开机 | — | 2 为是 | — |
| 4 | T+100s | 触发快门 | 曝光 5 ms | 3 完成 | — |
| 5 | T+120s | 数传下传 | 通道 A | 4 完成 | — |
| 6 | T+90s | 姿态修正 | — | 2 为否 | 循环回 1,最多 5 次 |