4. 功能分解与功能树建模

功能分解是把系统级功能逐层拆解为可分配、可验证的子功能的过程。在MBSE中,功能分解不是随意画树,而是要在需求、功能、架构之间建立可追溯的层次关系。分解的粒度决定了后续物理架构分配的清晰度:分解过粗,功能无法落到具体部件;分解过细,则会造成功能冗余和接口爆炸。本节围绕三种分解策略、功能树构建方法以及SysML表达方式展开,并以无人机飞行功能为例完成一次完整分解。

一、三种功能分解策略

按流分解适用于能量流、信号流、物料流或数据流连续传递的系统。其核心是沿流动路径逐级拆分:总流→分支流→转换环节。例如无人机飞行功能可按“动力流”分解为电能存储、电能变换、电机驱动、旋翼推力产生;按“控制流”分解为指令接收、姿态解算、舵机/电机指令输出。按流分解的优点是接口关系明确,适合后续做能量平衡和信号链分析。

按状态分解适用于工作模式切换明显的系统。其思路是把系统功能按运行状态展开:地面待机、起飞爬升、巡航、悬停、返航、降落。每个状态内部再分解出该状态特有的子功能,例如“巡航”状态下包含航迹保持、高度保持、速度控制、避障感知。按状态分解能有效暴露状态切换时的功能衔接问题,如模式切换逻辑、状态监控和异常处理。

按子系统分解适用于物理边界已经比较清晰的系统。它按照机体、动力、导航、飞控、通信、载荷等子系统划分功能域,再在各域内继续分解。这种策略与后续物理架构分配衔接最自然,但容易过早引入物理实现约束,导致功能设计被现有部件限制。实际工程中通常以按流或按状态为主,按子系统为辅进行交叉验证。

选择策略的判断依据:若系统核心是能量/信号传递,优先按流;若系统核心是模式切换与行为时序,优先按状态;若系统已有明确的物理分系统边界,可用按子系统分解做补充校验。三种策略不是互斥的,同一系统可在不同层级采用不同策略。

二、功能树与功能层次图的构建

功能树是一种层次结构,根节点为系统级功能,中间节点为子功能,叶节点为可分配到物理单元的最小功能。构建功能树时需遵循三条规则:第一,同一父功能下的子功能应满足MECE原则,即相互独立、完全穷尽;第二,每个子功能必须有明确的输入输出,不能只是名词堆砌;第三,叶节点功能应能对应到至少一个物理部件或软件模块。

功能层次图与功能树的区别在于,功能层次图不仅表达父子关系,还表达功能之间的数据流、控制流和触发关系。在SysML中,功能树通常用功能分解图表达,而功能之间的动态交互则用活动图表达。活动图可以展示控制流、对象流、分叉与汇合、泳道分配,适合描述功能执行顺序和条件分支。

以无人机飞行功能为例,顶层功能为“完成指定航迹飞行”。按状态分解得到六个一级子功能:地面准备、起飞爬升、巡航飞行、悬停作业、返航回收、应急处理。其中“巡航飞行”再按流分解为:航迹保持、高度保持、速度控制、姿态稳定、避障感知。每个二级功能继续分解到可分配层级,例如“姿态稳定”分解为姿态角测量、姿态误差计算、控制律解算、电机指令输出。

无人机飞行功能分解与功能树(按状态 + 按流混合策略) F0 完成指定航迹飞行 F1 地面准备 F2 起飞爬升 F3 巡航飞行 F4 悬停作业 F5 返航回收 按流分解 F3.1 航迹保持 F3.2 高度保持 F3.3 速度控制 F3.4 姿态稳定 F3.5 避障感知 继续分解 F3.4.1 姿态角测量 F3.4.2 误差计算 F3.4.3 控制律解算 F3.4.4 电机指令输出 SysML 活动图:巡航飞行功能执行流(F3) 开始 接收航迹指令 输入:目标航点 航迹偏差计算 输出:横向/纵向偏差 偏差 >阈值? 姿态修正解算 输出:舵面/转速增量 保持当前状态 输出:无修正 电机指令输出 输出:PWM 信号 是 否 系统级功能 按状态分解 按流分解 叶节点功能 分解关系

三、SysML活动图与功能分解图的配合使用

功能分解图回答“功能由哪些子功能组成”,活动图回答“这些子功能按什么顺序执行、在什么条件下分支”。在无人机巡航案例中,功能分解图给出F3.1至F3.5的静态层次,而活动图则展示F3.1航迹保持内部的动态逻辑:接收航迹指令→计算偏差→判断偏差是否超过阈值→若超过则进入姿态修正解算,否则保持当前状态→最终输出电机指令。活动图中的判断节点和合并节点,正好对应功能分解中“条件性功能”的触发条件。

建模时建议先建功能树确定层次,再用活动图细化关键功能的执行逻辑。活动图的泳道可以分配给飞控软件、导航模块、动力模块等物理单元,这样功能分解与物理分配就能在同一模型中衔接。需要注意的是,活动图中的动作节点应与功能树中的叶节点功能一一对应,避免出现“图上有、树上无”的孤立动作。

四、无人机飞行功能分解示例参数

以下给出巡航飞行功能分解中可分配叶节点的示例参数,用于说明功能分解如何落到可验证的指标上。参数为教学示例假设值,实际型号需根据具体设计确定。

功能编号 功能名称 输入 输出 示例性能指标 分配对象
F3.1 航迹保持 目标航点序列、当前位置 横向偏差、航向修正量 横向偏差 ≤ 2 m 导航模块 + 飞控软件
F3.2 高度保持 目标高度、气压高度 高度偏差、升降指令 高度偏差 ≤ 1.5 m 飞控软件 + 电机
F3.3 速度控制 目标速度、空速/地速 油门增量 速度偏差 ≤ 1 m/s 动力模块
F3.4 姿态稳定 姿态角、角速率 电机PWM指令 姿态角误差 ≤ 1° 飞控软件 + 电机
F3.5 避障感知 激光/视觉点云 障碍距离、规避指令 检测距离 ≥ 15 m 感知模块

五、分解质量检查要点

  • 完整性:顶层功能的每个运行状态是否都有对应子功能覆盖,是否存在“有状态无功能”的空白。
  • 独立性:同一层级子功能之间是否职责重叠,例如“航迹保持”和“姿态稳定”是否被错误地合并为一个功能。
  • 可分配性:每个叶节点功能是否至少能分配到一个物理部件或软件模块,若不能,说明分解粒度还不够细或功能定义不清晰。
  • 可验证性:每个叶节点功能是否有明确的输入输出和可测量的性能指标,否则后续无法编写测试用例。
  • 一致性:功能分解图与活动图中的动作节点是否一一对应,功能编号是否在需求、功能、架构之间保持统一追溯。
常见错误:把物理部件直接当作功能节点,例如把“电机”写成功能。功能应使用“动词+名词”命名,如“输出电机指令”,物理部件是功能的分配对象而非功能本身。另一个常见错误是功能树层级过深,超过五层后通常意味着需要重新审视分解策略或引入子系统划分。

完成功能分解后,下一步是将叶节点功能分配到物理架构,并建立功能-物理分配矩阵。在无人机案例中,F3.4姿态稳定可分配到飞控计算机和四个电机;F3.5避障感知可分配到前向激光雷达和视觉处理模块。分配完成后,即可用参数图或IBD进一步描述物理部件之间的接口和约束,形成从需求到功能再到物理的完整追溯链。