4. MicroAutoBox快速原型工程搭建流程
在故障注入工程中,MicroAutoBox(MABX)承担的是“真实控制器”的角色:它运行由Simulink模型生成的实时应用,通过I/O板卡与被控对象(Plant)交换信号。要让故障注入真正可用,第一步不是接故障盒,而是先把一个可编译、可下载、可运行、可观测的实时原型工程搭起来。本节以“直流电机转速闭环控制 + 可注入故障的被控对象”为例,完整走通从Simulink模型到MABX实时应用的链路。
一、工程链路与工具分工
MABX快速原型工程由三段构成:主机端(Host PC)负责建模与代码生成,配置工具负责硬件与实时参数设定,目标机(MABX)负责实时执行。三者之间的数据流与工具分工如下:
图中橙色路径是控制量输出,蓝色路径是反馈量输入,虚线是主机对目标机的在线观测与标定通道。故障注入点位于反馈路径上,因此注入故障后,控制器“看到”的反馈与真实被控对象状态不一致,这正是后续章节要研究的核心。
二、Simulink模型的组织方式
建议把模型拆成三个顶层子系统,便于后续替换与故障注入:
- Controller:实现转速PI控制,输入为设定转速 n_ref 与反馈转速 n_fb,输出为占空比 u(0~1)。
- Plant:直流电机一阶惯性模型,示例参数:转动惯量 J=0.0002 kg·m²,反电动势常数 Ke=0.05 V·s/rad,电枢电阻 R=1.2 Ω,采样周期 Ts=1 ms。
- FaultInject:位于反馈通道,提供偏置、增益、卡滞、丢帧四种可切换故障模式。
控制器离散化后可用如下差分形式实现(示例参数 Kp=0.8,Ki=25):
% 转速PI控制器(离散,Ts = 1 ms)
e(k) = n_ref(k) - n_fb(k);
P(k) = Kp * e(k);
I(k) = I(k-1) + Ki * Ts * e(k);
u(k) = sat(P(k) + I(k), 0, 1); % 输出限幅到 [0,1]
故障注入子系统在反馈通道上实现,例如传感器偏置故障:
% 故障注入:偏置 + 增益 + 卡滞
if fault_enable == 1
n_fb = gain_fault * n_true + bias_fault; % 偏置/增益故障
if stuck_enable == 1
n_fb = stuck_value; % 卡滞故障
end
else
n_fb = n_true;
end
三、Configuration Parameters关键设置
模型建好后,必须把求解器与代码生成参数改为适合实时执行的值,否则下载后会出现步长抖动或任务超时。关键项如下表:
| 参数项 | 推荐值 | 说明 |
|---|---|---|
| Solver | Fixed-step | 实时系统必须定步长 |
| Fixed-step size | 0.001 s | 与控制器 Ts 一致 |
| System target file | rti1401.tlc | MicroAutoBox 目标 |
| Code Generation only | Generate code only 不勾选 | 需直接编译下载 |
| Sample time | 1 ms | 对应实时任务周期 |
| Stop time | inf | 实时运行不自动停止 |
四、编译、下载与运行
完成配置后,按以下顺序操作:
- 在 Simulink 中按
Ctrl+B触发 Build,RTI 会调用编译器生成目标代码,并输出.sdf描述文件与可执行文件。 - 确认 MABX 已通过以太网与主机连通,在 RTI 配置中填写目标机 IP(示例:192.168.0.10)。
- 点击 Download,将实时应用下载到 MABX 并启动运行。
- 打开 ControlDesk,加载
.sdf文件,即可看到模型中的变量与信号,拖入示波器即可观测。
五、运行结果判读
以设定转速 n_ref = 1000 rpm 为例,正常闭环下反馈转速应在约 0.3 s 内上升并稳定在 1000 rpm 附近,稳态误差小于 1%。若打开偏置故障(bias_fault = +50 rpm),控制器会误以为转速偏高而减小输出,实际转速将稳定在约 950 rpm,形成稳态偏差;若打开卡滞故障,反馈被固定在某一值,控制器输出会持续饱和或振荡,此时观测 u 的波形即可判断故障类型。这些现象是后续故障诊断与容错策略设计的直接依据。
至此,一个可运行、可观测、可注入故障的 MABX 快速原型工程已经建立。它既是后续故障注入实验的载体,也是验证控制器在异常反馈下行为的基础平台。