4. 被控对象与测试模型建模

在MicroAutoBox原型自动化测试工程中,被控对象模型(Plant Model)是测试闭环的核心。它决定了测试用例能否真实反映ECU在整车环境下的行为。很多测试失败并非控制器逻辑错误,而是Plant Model的接口、信号调理或参数化与真实对象不一致。本节围绕Simulink环境,从模型构建、接口定义、信号调理、参数化到测试场景抽象,给出一条可落地的工程路径。

一、Plant Model的定位与构建原则

Plant Model不是控制器的附属品,而是与控制器对等的“虚拟被控对象”。在MicroAutoBox上,控制器模型通常运行于实时任务,Plant Model则通过同一实时内核或独立核运行,两者通过I/O或共享内存交换信号。构建时应遵循三条原则:物理保真度匹配测试目标、接口与真实传感器/执行器一致、参数可追溯且可批量替换。例如测试发动机怠速控制时,Plant Model至少应包含进气歧管动态、燃油喷射与扭矩生成、转速惯量环节;若只做通信协议测试,则可简化为增益与延迟模型。

在Simulink中,推荐采用自下而上的方式:先建立最小可运行闭环,再逐步增加物理细节。以一个直流电机位置控制为例,基础模型包含电枢回路(电压→电流)、电磁转矩(电流→转矩)、机械惯量(转矩→转速→位置)三个环节。初始参数可设为:电枢电阻R=1.2 Ω,电感L=0.005 H,反电动势常数Ke=0.05 V·s/rad,转矩常数Kt=0.05 N·m/A,转动惯量J=0.0002 kg·m²。这些数值属于教学示例,实际项目需从台架或数据手册获取。

二、模型接口定义:从信号名到数据字典

接口定义是Plant Model与控制器、测试脚本之间的契约。在Simulink中,应使用Simulink.Signal对象和Simulink.Bus对象集中管理,而不是依赖端口连线。每个接口信号需明确:名称、数据类型、单位、量程、初始值、采样时间。例如:

% 定义Plant Model输入接口(来自控制器)
ThrottleCmd  = Simulink.Signal;  % 类型uint16,单位%,量程0~100
ThrottleCmd.DataType = 'uint16';
ThrottleCmd.Min = 0; ThrottleCmd.Max = 100;
ThrottleCmd.SampleTime = 0.001;

% 定义Plant Model输出接口(送往控制器)
EngineSpeed  = Simulink.Signal;  % 类型single,单位rpm,量程0~8000
EngineSpeed.DataType = 'single';
EngineSpeed.Min = 0; EngineSpeed.Max = 8000;
EngineSpeed.SampleTime = 0.001;

接口命名建议采用“对象_物理量_单位”格式,如EngSpd_rpm、ThrPos_pct,避免使用Out1、Signal1这类无意义名称。对于总线信号,用Simulink.Bus定义结构体,例如EngineBus包含Spd、Tq、Temp三个元素,便于在测试脚本中按字段访问。

Plant Model 接口与信号调理链路 控制器模型 Control Algorithm 采样: 1 ms 接口定义层 Simulink.Signal / Bus 数据类型·单位·量程 信号调理 滤波·限幅·单位换算 零阶保持·延迟补偿 Plant Model(Simulink) 执行器动态 Throttle→Torque 被控对象物理 惯量·阻尼·摩擦 传感器模型 噪声·量化 参数化:MAT文件 / 结构体 / 批量替换脚本 控制量 信号对象 调理后输入 反馈信号 测试场景抽象 工况·激励·边界 Scenario→Signal 激励 注:图中参数为教学示例,实际项目需依据台架数据或数据手册标定

三、信号调理:让模型信号“像”真实传感器

控制器接收的信号往往经过调理,Plant Model输出也应模拟这一过程。常见调理包括:一阶低通滤波模拟传感器带宽,限幅模拟量程饱和,量化模拟ADC位数,延迟模拟总线传输。例如转速信号在真实系统中经CAN传输,周期10 ms,则Plant Model输出应加10 ms延迟和零阶保持。在Simulink中可用Transfer Fcn、Saturation、Quantizer、Transport Delay组合实现。

以一个温度传感器为例:真实NTC在25°C时阻值10 kΩ,经分压和ADC后,控制器读到0~5 V对应-40~150°C。Plant Model输出温度后,应经过y = (T + 40) / 190 * 5的线性映射,再叠加±0.5°C噪声和12位量化。这样控制器看到的信号才与实车一致,避免“模型太干净导致测试通过、实车失败”。

四、模型参数化:从硬编码到可配置

参数化是自动化测试的前提。禁止在Simulink模块中直接填写数字,应统一使用Simulink.Parameter对象或MAT文件。推荐结构:

% plant_params.m
P.R = 1.2;          % 电枢电阻 Ω
P.L = 0.005;        % 电感 H
P.Ke = 0.05;        % 反电动势常数
P.Kt = 0.05;        % 转矩常数
P.J = 0.0002;       % 转动惯量 kg·m²
P.Ts = 0.001;       % 采样时间 s
P.Tau_sensor = 0.01;% 传感器时间常数 s

测试脚本可通过set_param或Simulink.Parameter的Value属性批量替换。例如做参数扫描时,用循环修改P.J从0.0001到0.001,观察控制器响应。所有参数应记录在测试报告中,确保可复现。

五、测试场景抽象:从工况到激励信号

测试场景抽象是把“驾驶员踩油门”“车辆上坡”等工况,转化为Plant Model可接受的激励信号。常用方法有三种:查表法(用1-D Lookup将时间映射为油门开度)、状态机法(用Stateflow描述工况切换)、信号编辑法(用Signal Editor导入Excel/CSV)。以怠速测试为例,场景可抽象为:0~2 s启动,2~5 s怠速,5~8 s加载10 N·m,8~10 s卸载。对应油门开度信号为:0~2 s为0%,2~5 s为5%,5~8 s为15%,8~10 s为5%。

场景抽象应遵循“激励可参数化、边界可覆盖”原则。每个场景至少包含:初始条件、输入激励、环境变量(温度、电压)、持续时间、预期输出范围。这些字段可直接写入测试用例表,由自动化脚本读取并驱动Simulink仿真。

工程提示:Plant Model的接口信号名、单位、量程必须与控制器模型完全一致,否则编译时会报“信号维度不匹配”。建议在项目初期建立InterfaceSpec.xlsx,由Simulink脚本自动生成Simulink.Signal对象,避免手工维护出错。
常见误区:把Plant Model做成“理想增益”,忽略延迟和噪声。这会导致控制器在仿真中表现完美,但上实车后因相位滞后而振荡。建议至少加入一个采样周期的延迟和传感器噪声,使测试更接近真实。

综上,Plant Model建模不是一次性工作,而是与测试场景同步迭代的过程。接口定义保证连接正确,信号调理保证信号真实,参数化保证可批量测试,场景抽象保证覆盖充分。四者结合,才能让MicroAutoBox上的自动化测试既高效又可信。