3. ICD 设计输入与需求捕获

接口控制文件(ICD)不是凭空写出来的文档,它的每一条接口定义都必须能追溯到上游的设计输入。ICD 设计输入的质量,直接决定了后续接口定义是否完整、是否会出现遗漏或冲突。本节要解决的核心问题是:面对系统架构图、设备功能清单和交联关系图这三类典型输入,如何把它们"翻译"成可写入 ICD 的接口需求条目——包括接口类型、方向、速率、数据格式与实时性要求。

一、三类设计输入各自能提供什么

系统架构图回答的是"谁和谁在同一个系统里、通过什么总线或链路相连"。它给出的是物理与逻辑连接骨架:例如航电系统中综合显示单元、任务计算机、惯导、大气数据计算机、雷达之间的连接关系,以及它们挂在 ARINC 429、ARINC 653 分区、1553B 总线还是以太网 AFDX 上。架构图通常能直接读出接口的承载介质和拓扑位置,但一般不会写清每条消息的字段含义。

设备功能清单回答的是"每个设备对外承担什么职责"。它给出的是接口存在的理由:惯导对外输出姿态、位置、速度;大气数据计算机输出高度、空速、攻角;任务计算机需要接收这些数据并输出控制指令。功能清单能帮助判断某个接口是"必须存在"还是"可选",也能提示接口的数据内容范围。

交联关系图回答的是"数据往哪个方向流、以什么频率流"。它给出的是接口的方向与实时性线索:谁发送、谁接收、是单向广播还是双向请求应答、是周期发送还是事件触发。交联关系图往往是三类输入中最接近 ICD 条目的一条,但仍需补充速率、格式和精度等量化信息。

三类输入不是互相替代的关系,而是互补关系:架构图给"通道",功能清单给"内容",交联关系图给"方向与节奏"。ICD 需求捕获就是把三者叠加、去重、补全量化的过程。

二、从输入到接口需求条目的提取路径

实际工程中,推荐按"连接—功能—方向—量化"四步推进,但每一步的产出都要落到具体条目上,而不是停留在描述性文字。

第一步,从架构图提取候选接口对。逐个识别有数据交互的设备对,记录它们之间的承载总线类型。例如"惯导 → 任务计算机,ARINC 429 高速口"、"任务计算机 → 综合显示单元,AFDX 虚拟链路"。此时得到的是接口的"骨架",还没有内容。

第二步,用功能清单确认接口内容。对每个候选接口对,回到功能清单确认发送方到底输出哪些参数组。惯导可能输出姿态角、角速率、地速、经纬度、高度等多组数据,每组在 ARINC 429 上通常对应一个独立的 Label。这一步要把"设备级接口"细化到"参数组级接口"。

第三步,用交联关系图确定方向与触发方式。明确该参数组是单向输出还是需要接收方回执,是周期发送还是事件触发。周期发送要记录更新率,事件触发要记录触发条件和最大延迟。

第四步,补全量化属性。这是 ICD 需求捕获中最容易被忽略、也最容易在后期引发返工的一步。需要为每条接口补齐:数据格式(编码方式、字长、分辨率、符号约定)、速率(更新率或带宽)、实时性要求(最大允许延迟、抖动容限)、以及有效性标识方式(如 SSM 符号状态矩阵)。

ICD 设计输入 → 接口需求条目 提取关系 系统架构图 设备清单 · 总线介质 · 拓扑位置 → 提供"通道" 设备功能清单 职责 · 输出参数组 · 数据范围 → 提供"内容" 交联关系图 发送/接收 · 周期/事件 · 流向 → 提供"方向与节奏" 接口需求捕获:连接 → 功能 → 方向 → 量化 去重 · 补全 · 冲突检查 · 可追溯编号 接口需求条目(ICD 可写入字段) 接口类型 方向 速率 / 更新率 数据格式 实时性 每条条目须可追溯到架构图连接、功能清单参数组与交联图方向 示例条目(教学假设值) IF-INS-TC-001 | 惯导 → 任务计算机 | ARINC 429 高速口 | 单向周期 姿态角 Label 325 | 更新率 50 Hz | BNR 编码 | 分辨率 0.0055° | 最大延迟 20 ms 有效性由 SSM 位标识 | 源:架构图 A-03、功能清单 F-12、交联图 X-07

三、接口类型、方向、速率、格式与实时性的判定要点

接口类型由架构图直接给出,但要区分物理接口与逻辑接口。同一条 ARINC 429 物理线路上可能承载多个 Label,每个 Label 在 ICD 中应作为独立逻辑接口条目。AFDX 上则要区分虚拟链路(VL)与其中的端口,VL 决定带宽与完整性检查,端口决定数据内容。

方向必须明确到"发送方—接收方"这一对,不能只写"双向"。对于请求应答型接口,要分别定义请求消息与应答消息,并说明超时后的处理策略。方向定义不清是后期联调中最常见的争议来源。

速率包含两层含义:对于周期数据是更新率(如 20 Hz、50 Hz、100 Hz),对于非周期数据是最大消息速率或带宽占用。速率需求要能反推到总线负载计算,例如一条 429 高速口在 100 kbps 下,若每条 Label 含 32 位数据字加开销,可估算出可承载的 Label 数量上限,从而判断架构图给出的通道是否够用。

数据格式要写清编码方式(BNR、BCD、离散量)、字长、分辨率、量程与符号约定。以姿态角为例,若采用 BNR 编码、16 位有效数据、量程 ±180°,则分辨率约为 360°/2¹⁶ ≈ 0.0055°,这个数值应直接写入 ICD,而不是留给实现方自行推断。

实时性要区分端到端延迟、抖动和刷新周期。对于飞行控制相关数据,延迟要求通常在毫秒级;对于显示类数据,可放宽到几十毫秒。实时性要求必须与总线调度周期、接收方处理周期一起核算,否则会出现"单条满足、链路不满足"的情况。

四、需求捕获中的常见遗漏与检查方法

实践中,接口需求遗漏往往集中在几类:只画了单向却实际需要回执、只写了更新率没写延迟、只写了数据内容没写有效性标识、以及跨设备引用的参数没有统一量纲。建议在需求捕获完成后做一次交叉检查:以设备为行、以接口为列,检查每个设备的输入输出是否与功能清单一致;再以总线为行,检查负载是否超出架构图给出的容量。

不要把架构图上的"连线"直接当成一条 ICD 条目。一条连线可能承载多组参数、多个 Label 或多个 VL,必须细化到参数组级才能作为可实现的接口需求。

完成本节的需求捕获后,应形成一份可追溯的接口需求清单,每条包含接口编号、发送方、接收方、承载介质、方向、更新率、数据格式、实时性要求与来源依据。这份清单就是后续 ICD 详细定义、总线负载核算和接口测试用例设计的共同输入。