跳转至

FaultParamsExtract 模块文档

所属工具箱:RflySim PHM

FaultParamsExtract 模块外观

简介

一句话描述:该模块用于从输入的故障标识数组与对应参数数组中,提取指定ID故障的相关参数,并输出故障存在标识。

该模块是RflySim PHM故障预测与健康管理工具链中的基础预处理模块,用于实现针对PX4飞控输出的多故障信息的筛选解析。在无人机故障注入与PHM算法仿真验证场景中,该模块一般对接来自PX4或者CopterSim输出的批量故障信息数据,从中提取用户指定故障的参数,为后续的故障诊断、健康评估算法提供结构化的输入数据。

该模块可配合RflySim平台的故障注入模块、PX4飞控仿真环境与RflySim3D可视化环境共同使用,能够快速完成故障PHM算法仿真验证的信息预处理流程,适配无人机各类执行器、传感器故障的仿真验证需求。

端口说明

输入端口(Inputs)

端口名 数据类型 维度 说明
FaultID double 1×1 需要检测的目标故障标识符
inInts double 1×N [待确认] 存储多个候选故障标识符的整数数组
inFloats double 1×N [待确认] 与inInts一一对应的故障参数浮点数数组

输出端口(Outputs)

端口名 数据类型 维度 说明
hasFault double 1×1 目标故障检测结果,检测到目标故障则返回1(对应逻辑真),否则返回0(对应逻辑假)
FaultParam double 1×20 存储提取出的故障参数。若检测到目标故障,数组前16个元素为对应故障参数,后4个元素为inFloats数组的最后4个值;未检测到故障时填充默认零值

参数配置(Parameters)

本模块无可配参数。

模块特性(Block Characteristics)

特性项
支持的数据类型 doublesingleintboolean
直接馈通(Direct Feedthrough)
采样时间 继承
代码生成支持

数据通信协议

本模块不涉及网络通信。

相关模块

模块名 说明
ActuatorFaultInject 为固定翼无人机执行器注入预设类型的故障信号
PropFaultInject 为多旋翼无人机电机注入预设类型的故障信号
SensorFaultInject 为无人机传感器注入预设类型的故障信号
FaultDetectionCheck 检测无人机传感器、执行器故障的检测结果准确率
PHMDataRecv 接收来自飞控的PHM相关原始数据,用于故障诊断与预测
RULCalculate 计算性能衰减故障的剩余使用寿命,并输出评估误差
HealthIndicatorExtract 提取无人机系统运行过程中的健康指标信号
FaultIDEncode 将故障ID与对应参数编码为标准格式的故障数据数组
MultipleFaultsExtract 从编码的多故障数据数组中提取多个故障的参数信息
IMUOnlineCalibration 实现仿真环境中IMU的在线标定功能
BarometerOnlineCalibration 实现仿真环境中气压计的在线标定功能
GPSOnlineCalibration 实现仿真环境中GPS的在线标定功能
MagnetometerOnlineCalibration 实现仿真环境中磁力计的在线标定功能
RangeFinderOnlineCalibration 实现仿真环境中测距传感器的在线标定功能
OpticalFlowOnlineCalibration 实现仿真环境中光流传感器的在线标定功能
VIOOnlineCalibration 实现仿真环境中VIO传感器的在线标定功能
ESCOnlineCalibration 实现仿真环境中电调的在线校准功能

快速开始

在 Simulink 模型中使用此模块的最小步骤。

  1. 在 MATLAB 中执行 RegisterMatlab 注册 RflySim PHM 工具箱
  2. 在 Simulink Library Browser 的 RflySim PHM 库中找到 FaultParamsExtract 模块
  3. 将模块拖入你的故障诊断仿真模型,按接口定义连接输入输出信号
% 初始化工作区,示例故障配置
FaultID = 1; % 需要检测的目标故障ID

使用示例

基础用法:检测特定作动器卡死故障

% 模型初始化脚本示例
% 定义要检测的目标故障ID:1对应左舵机卡死故障
targetFaultID = 1;

% 示例输入数组:当前仿真中存在的故障ID列表
inputInts = [0, 1, 3]; % 0表示无故障,1为左舵卡死,3为GPS信号异常
% 对应故障参数:左舵卡死角度为15度,GPS偏移参数为[2.5, 1.8, 0],额外状态参数[12, 0, 0, 0]
inputFloats = [0, 15, 2.5, 1.8, 0, 12, 0, 0, 0];

在Simulink模型中,将targetFaultID连接至FaultID输入端口,inputIntsinputFloats分别连接对应输入端口后,输出hasFault会返回true表示检测到目标故障,FaultParam数组前16位会存储15这个卡死参数,最后4位会存储输入inputFloats的最后4个值[12, 0, 0, 0]

多轮故障检测场景

% 遍历检测多个故障的初始化脚本
faultIDList = [1, 2, 3]; % 需要依次检测的故障ID列表
for i = 1:length(faultIDList)
    currentFaultID = faultIDList(i);
    % 将currentFaultID输入FaultParamsExtract模块,即可得到对应故障是否存在和对应参数
end

注意事项与常见问题

  • 输入维度匹配inInts数组长度必须不大于inFloats数组长度,inInts中每个故障ID对应inFloats中至少1个参数,否则会出现维度不匹配错误。
  • 输出数组长度固定FaultParam输出固定为长度20的浮点数数组,即使未检测到目标故障,输出数组长度也不会改变,未使用的元素默认为0。
  • 故障ID唯一性:若inInts中存在多个相同的目标FaultID,模块默认返回第一个匹配到FaultID对应的故障参数。
  • 参数存储规则:单个故障对应的参数长度超过16时,仅前16个参数会存入FaultParam的前16位,超出部分会被截断。
  • 采样时间匹配:该模块为组合逻辑模块,建议设置为与故障输入信号相同的采样时间,避免仿真步长不匹配导致的参数读取错误。

更新日志

  • v4.10 (2024-07-24): 新增FaultParamsExtract故障参数提取模块,支持从输入整数数组和浮点数数组中提取指定FaultID对应的故障参数输出。