目录
1.概述
2.核心功能架构
3.ISO 26262 功能安全支持
4.集成化 App 界面
5.快速开始
6.典型应用场景
7.系统要求与安装
8.扩展与定制
9.版本与演进
1.概述
1.1 背景与定位
随着汽车电子电气架构(E/E Architecture)的复杂度指数级增长,基于模型的设计(Model-Based Design, MBD)已成为汽车电控系统(ECU)开发的主流方法论。MathWorks 的 MATLAB/Simulink 生态系统提供了强大的建模仿真与代码生成能力,但在实际工程落地中,开发团队仍面临以下挑战:
l项目缺乏标准化:不同工程师创建的模型结构、命名规范、数据管理方式各异,导致集成困难
l工具链碎片化:模型检查、代码生成、测试验证、文档输出等环节依赖多个独立工具,缺乏统一编排
l功能安全合规成本高:ISO 26262 要求的需求追溯、HARA 分析、安全验证等流程手工操作繁琐
l知识沉淀困难:最佳实践分散在个人脚本中,难以形成可复用的组织级资产
MBD 开发工具链正是为解决上述痛点而设计的集成化开发平台。它以 MATLAB/Simulink 为核心,通过标准化的项目模板、自动化的流程编排、以及深度集成的 ISO 26262 功能安全模块,帮助汽车电子团队建立规范、高效、可追溯的 MBD 开发体系。
1.2 设计原则
基于原生 MATLAB/Simulink API 开发,不依赖第三方编译工具 |
2.核心功能架构
工具链采用 MATLAB Package(+命名空间) 架构,按功能域划分为 8 个核心模块和 1 个功能安全模块组:
+MBD/├── +Project/ 项目管理├── +Template/ 模型模板├── +Data/ 数据字典管理├── +CodeGen/ 代码生成├── +Check/ 模型检查├── +Test/ 测试验证├── +DocGen/ 文档生成├── +Workflow/ 工作流引擎└── +Safety/ ISO 26262 功能安全├── +Requirement/ 安全需求管理├── +HARA/ 危害分析与风险评估├── +Traceability/ 追溯矩阵├── +Analysis/ 安全分析 (FMEA)└── +VandV/ 验证与确认
2.1 项目管理(+Project)
功能:创建和管理标准化的 MBD 项目结构。
% 创建 AUTOSAR 风格项目project = MBD.Project.createProject('EngineECU', ...'Template', 'autosar', ... % basic | autosar | multirate'Location', 'C:\Projects', ...'DataDict', true, ...'GitInit', true);
生成的标准项目结构:
EngineECU/├── models/ Simulink 模型文件│ ├── subsystems/ 子系统库│ └── reference/ 参考模型├── data/ 数据字典与参数│ └── calibration/ 标定数据├── code/ 自动生成的代码│ ├── src/ C 源代码│ └── include/ 头文件├── tests/ 测试用例│ ├── unit/ 单元测试│ ├── integration/ 集成测试│ └── harness/ 测试框架├── docs/ 设计文档│ ├── interface/ 接口文档│ └── requirements/ 需求文档├── reports/ 生成报告└── tools/ 项目专属脚本
2.2 模型模板(+Template)
功能:快速创建标准化的子系统和可复用库。
% 创建标准化子系统(3输入/2输出)MBD.Template.createSubsystem('MyModel', 'Controller', ...'Inputs', 3, 'Outputs', 2, ...'Description', '主控制器', ...'Color', [0.85 0.95 1.0]);% 创建可复用库MBD.Template.createLibrary('MyLib', ...'Blocks', {'Block1', 'Block2', 'Block3'});
2.3 数据字典管理(+Data)
功能:统一管理信号、参数、枚举类型,支持 Simulink Data Dictionary。
% 创建信号对象sig = MBD.Data.createSignal('Name', 'SIG_VehicleSpeed', ...'DataType', 'single', ...'Unit', 'km/h', ...'Min', 0, 'Max', 300);% 创建参数对象param = MBD.Data.createParameter('Name', 'PARAM_TorqueGain', ...'Value', 2.5, ...'DataType', 'single');% 添加到数据字典MBD.Data.addToDictionary('data/EngineECU_data.sldd', ...'SIG_VehicleSpeed', sig);
2.4 代码生成(+CodeGen)
功能:配置并调用 Embedded Coder 生成符合汽车标准的 C 代码。
% 生成代码result = MBD.CodeGen.generateCode('EngineECU_main', ...'OutputFolder', 'code', ...'BuildType', 'model', ...'Report', true);% 代码度量分析metrics = MBD.CodeGen.getCodeMetrics('EngineECU_main');
内置代码生成配置:
l目标文件:ert.tlc(Embedded Coder)
l语言:C
l求解器:Fixed-step
l代码风格:K&R 缩进、4 空格、31 字符标识符长度限制
2.5 模型检查(+Check)
功能:执行 5 项标准自动检查,确保模型符合开发规范。
report = MBD.Check.runModelCheck('EngineECU_main', ...'AutoFix', true, ...'ReportPath', 'reports/check.mat');
检查项 | 内容 | 严重级别 |
求解器配置 | 检查是否为 Fixed-step | Warning |
数据类型 | 检查是否存在继承数据类型 | Warning |
未连接端口 | 检测未连接的输入/输出端口 | Warning |
命名规范 | 检查模块名称是否包含非法字符 | Warning |
模型复杂度 | 检查模块数量是否超过 500 | Warning |
2.6 测试验证(+Test)
功能:创建测试框架并执行单元测试。
% 创建测试框架(自动适配 Simulink Test 或基础 Harness)harness = MBD.Test.createTestHarness('EngineECU_main', ...'Source', 'SignalBuilder', ...'SaveFolder', 'tests/harness');% 运行单元测试result = MBD.Test.runUnitTest('EngineECU_main', ...'StopTime', 10, ...'AbsTol', 1e-6);
测试内容:
l仿真执行验证
l信号范围检查(NaN/Inf 检测)
l可选基线比较
2.7 文档生成(+DocGen)
功能:自动生成 HTML 设计文档。
report = MBD.DocGen.generateReport('EngineECU_main', ...'Format', 'html', ...'Sections', {'overview', 'interface', 'code'}, ...'OutputPath', 'reports');
报告包含:
l模型概述(模块数量、子系统数量、版本信息)
l接口定义(输入/输出信号的数据类型、维度、单位)
l代码生成配置(目标文件、语言、求解器设置)
2.8 工作流引擎(+Workflow)
功能:一键编排端到端开发流程。
result = MBD.Workflow.runFullWorkflow('EngineECU_main', ...'SkipCheck', false, ...'SkipCodeGen', false, ...'SkipTest', false, ...'SkipDoc', false, ...'AutoFix', true);
执行顺序:
模型检查 → 代码生成 → 单元测试 → 文档生成每个步骤的结果实时反馈,失败时自动中断并输出诊断信息。
3.ISO 26262 功能安全支持
工具链深度集成了 ISO 26262:2018 标准的关键流程,覆盖从概念阶段到产品开发阶段的核心活动。

3.1 安全需求管理(+Safety/+Requirement)
支持 SG(Safety Goal)、FSR(Functional Safety Requirement)、TSR(Technical Safety Requirement)三级需求体系。
% 创建安全需求req = MBD.Safety.Requirement.createSafetyRequirement(...'ID', 'SG001', ...'Type', 'SG', ... % SG | FSR | TSR'ASIL', 'D', ... % QM | A | B | C | D'Description', '防止电机扭矩失控', ...'AllocatedTo', 'TorqueController');% 管理需求数据库MBD.Safety.Requirement.manageRequirements('add', ...'FilePath', 'safety_req.mat', 'Req', req);% 链接到模型元素MBD.Safety.Requirement.manageRequirements('link', ...'FilePath', 'safety_req.mat', ...'ID', 'SG001', ...'ModelElement', 'EngineECU_main/Algorithm');% 导出报告(Excel/HTML/CSV)MBD.Safety.Requirement.manageRequirements('export', ...'FilePath', 'safety_req.mat', 'Format', 'html');
3.2 危害分析与风险评估(+Safety/+HARA)
基于 ISO 26262 Part 3 的 HARA 方法论,支持 ASIL 等级自动计算。
% 定义危害事件hz = MBD.Safety.HARA.createHazard(...'ID', 'HZ001', ...'Description', '电机扭矩超限导致车辆失控', ...'Item', 'MotorControl', ...'OperationalSituation', '高速巡航', ...'Severity', 'S3', ... % S0-S3'Exposure', 'E4', ... % E0-E4'Controllability', 'C3'); % C0-C3% ASIL 自动计算规则% S3 + E4 + C3 → ASIL-D% S3 + E4 + C2 → ASIL-C% ...% 执行 HARA 分析result = MBD.Safety.HARA.runHARA('MotorControl', ...[hz1, hz2, hz3], ... % 危害列表[sg1, sg2]); % 安全目标列表
输出:
l危害事件汇总表(含 S/E/C/ASIL)
l风险矩阵统计
l功能安全建议措施
3.3 追溯矩阵(+Safety/+Traceability)
建立 需求 → 模型元素 → 代码文件 → 测试用例 的完整追溯链。
% 生成追溯矩阵traceMat = MBD.Safety.Traceability.createTraceMatrix(...'ReqDB', 'safety_req.mat', ...'Model', 'EngineECU_main', ...'CodeFolder', 'code/src', ...'TestFolder', 'tests/unit');% 导出 HTML 报告(含覆盖率统计)MBD.Safety.Traceability.exportTraceReport(traceMat, ...'trace_report.html');
报告特性:
l颜色编码(按 ASIL 等级高亮)
l覆盖率进度条
l未链接需求标记
3.4 安全分析(+Safety/+Analysis)
支持 DFMEA(设计失效模式与影响分析)。
% 定义失效模式fm = struct('Component', 'MCU', ...'Mode', '时钟失效', ...'Cause', 'EMI 干扰', ...'Effect', '控制丢失', ...'Severity', 8, ... % 1-10'Occurrence', 3, ... % 1-10'Detection', 4, ... % 1-10'SafetyRelated', true);% 执行 FMEAfmea = MBD.Safety.Analysis.runFMEA('MotorControl', ...{'MCU', 'Sensor', 'Actuator'}, ...[fm1, fm2, fm3]);
输出:
lRPN(Risk Priority Number)计算
l风险分级(高/中/低)
l改进措施建议
3.5 验证与确认(+Safety/+VandV)
按 ASIL 等级定义不同的验证通过标准。
% 创建安全测试用例test = MBD.Safety.VandV.createSafetyTest(...'ReqID', 'SG001', ...'Type', 'FaultInjection', ... % Unit | Integration | HIL | FaultInjection'Method', 'FaultTree', ...'ASIL', 'D');% 验证安全目标result = MBD.Safety.VandV.verifySafetyGoal(safetyGoal, testResults);
ASIL | 要求覆盖率 | 要求测试方法 |
D | 100% | Fault Injection + HIL |
C | 100% | HIL |
B | 90% | SIL |
A | 80% | MIL |
QM | 70% | MIL |
4.集成化 App 界面
为降低使用门槛,工具链提供了基于 uifigure 的集成化 App,将所有功能封装在图形界面中。
4.1 启动方式
cd('MBD_Toolchain/app');launchApp();
4.2 界面布局
App 采用 10 页签(Tab) 设计:
页签 | 功能 |
首页 | 项目状态看板、环境信息 |
项目管理 | 创建/加载项目、选择模板(basic/autosar/multirate) |
模型开发 | 创建模型、生成子系统(自定义输入/输出端口) |
数据字典 | 创建 Signal/Parameter、管理数据字典 |
代码生成 | 一键生成 ERT C 代码、查看代码度量 |
模型检查 | 运行 5 项自动检查、查看结果详情 |
测试验证 | 创建测试框架、执行单元测试 |
ISO 26262 | 安全需求管理、HARA 分析、追溯矩阵、FMEA |
工作流 | 勾选步骤,一键执行完整开发流程 |
设置/日志 | 代码生成配置、实时操作日志 |
4.3 典型操作流程
[首页] 确认环境就绪↓[项目管理] 创建 "EngineECU" 项目(autosar 模板)↓[模型开发] 创建子系统 "TorqueController"(3 in / 2 out)↓[数据字典] 创建信号 SIG_TorqueCmd、参数 PARAM_MaxTorque↓[ISO 26262] 添加安全需求 SG001 → 运行 HARA → 生成追溯矩阵↓[模型检查] 运行检查,自动修复问题↓[代码生成] 生成 C 代码↓[测试验证] 创建测试框架 → 运行单元测试↓[工作流] 执行完整工作流验证
5.快速开始
5.1 环境准备
% 将工具链添加到 MATLAB 路径addpath(genpath('MBD_Toolchain'));% 初始化工具链init_toolchain();
5.2 创建第一个项目
% 创建基础项目project = MBD.Project.createProject('DemoProject', ...'Template', 'basic', ...'Location', pwd);% 打开主模型open_system('DemoProject_main');
5.3 添加 ISO 26262 安全需求
% 创建安全需求req = MBD.Safety.Requirement.createSafetyRequirement(...'ID', 'SG001', ...'Type', 'SG', ...'ASIL', 'D', ...'Description', '防止系统输出超出安全阈值');% 保存到数据库MBD.Safety.Requirement.manageRequirements('create', ...'FilePath', 'safety_req.mat');MBD.Safety.Requirement.manageRequirements('add', ...'FilePath', 'safety_req.mat', 'Req', req);
5.4 执行完整工作流
% 一键执行检查→代码→测试→文档MBD.Workflow.runFullWorkflow('DemoProject_main');
6.典型应用场景
场景一:乘用车动力域控制器开发
挑战:电机控制器(MCU)涉及高电压、大扭矩,安全等级要求 ASIL-D。
工具链应用:
1.使用 autosar 模板创建项目,生成 Runnable 架构
2.通过 HARA 识别扭矩失控危害,确定 ASIL-D
3.创建安全需求 SG001:扭矩限制功能
4.在数据字典中定义安全相关信号(E2E 保护)
5.模型检查确保无继承数据类型、无未连接端口
6.代码生成配置 ERT + MISRA C 风格
7.故障注入测试验证扭矩限制策略
8.生成追溯矩阵报告,供功能安全审计
场景二:底盘域制动系统开发
挑战:制动系统涉及多 ECU 协同(IPB、ESC、EPB),集成测试复杂。
工具链应用:
1.创建 multirate 模板项目(10ms 快速控制 + 100ms 状态管理)
2.使用子系统模板创建标准化模块(轮缸压力控制、故障诊断)
3.FMEA 分析识别关键失效模式(RPN ≥ 100 项)
4.单元测试验证每个子系统的边界条件
5.工作流自动化确保每次代码提交前通过全部检查
场景三:自动驾驶感知算法原型开发
挑战:算法迭代快,需要快速验证和文档输出。
工具链应用:
1.使用 basic 模板快速搭建算法原型
2.数据字典管理传感器标定参数
3.代码生成 SIL 模型用于 PC 级仿真
4.文档自动生成设计说明,对接系统工程师
7.系统要求与安装
7.1 软件要求
组件 | 最低版本 | 说明 |
MATLAB | R2019b | App 使用 uigridlayout(R2019a+) |
Simulink | R2019b | 必需 |
Stateflow | R2019b | 必需(用于状态机模板) |
MATLAB Coder | R2019b | 必需 |
Simulink Coder | R2019b | 必需 |
Embedded Coder | R2019b | 必需(ERT 代码生成) |
Simulink Test | R2019b | 推荐(高级测试框架) |
Simulink Check | R2019b | 推荐(Model Advisor 扩展) |
7.2 硬件要求
l内存:≥ 8 GB(推荐 16 GB,大型模型仿真需要)
l磁盘:≥ 2 GB 可用空间(含代码生成输出)
7.3 安装步骤
lanchAPP8.扩展与定制
8.1 添加自定义模型检查规则
在 +MBD/+Check/ 目录下创建新的检查函数:
function issues = checkCustomRule(modelName)issues = {};% 自定义检查逻辑blocks = find_system(modelName, 'BlockType', 'Gain');for i = 1:length(blocks)gainVal = get_param(blocks{i}, 'Gain');if strcmp(gainVal, '0')issues{end+1} = sprintf('[%s] Gain 值为 0', blocks{i});endendend
然后在 runModelCheck.m 中注册新检查项。
8.2 自定义代码生成配置
% 创建自定义配置集cs = Simulink.ConfigSet;cs.Name = 'MyCustomConfig';set_param(cs, 'SystemTargetFile', 'ert.tlc');set_param(cs, 'TargetLang', 'C');set_param(cs, 'CustomHeaderCode', '#include "my_platform.h"');% 应用到代码生成MBD.CodeGen.generateCode('MyModel', 'Config', cs);
8.3 自定义报告模板
修改 +MBD/+DocGen/generateReport.m 中的 generateHtmlReport 子函数,调整 HTML 样式和输出字段。
8.4 CI/CD 集成
% Jenkins/GitLab CI 脚本示例init_toolchain();tryMBD.Workflow.runFullWorkflow('MyModel_main', ...'SkipDoc', true, ...'OutputFolder', 'ci_output');exit(0);catchexit(1);end
9.版本与演进
版本 | 日期 | 重大特性 |
v1.0.0 | 2026-04 | 初始版本:项目管理、代码生成、模型检查、测试验证 |
v2.0.0 | 2026-04 | ISO 26262 功能安全:HARA、安全需求、追溯矩阵、FMEA、V&V |
集成化 App:uifigure 10 页签图形界面 |
路线图
lv2.1:MAAB 建模规范自动检查集成
lv2.2:AUTOSAR 代码生成配置(ARXML 导出)
lv2.3:Simulink Coverage 覆盖率报告集成
lv2.4:Requirements Toolbox 需求追溯双向链接
lv3.0:Python API 接口,支持非 MATLAB 环境调用
附录
A. 文件结构总览
MBD_Toolchain/├── +MBD/ MATLAB 核心功能包│ ├── +Project/ 项目管理(2 个函数)│ ├── +Template/ 模型模板(2 个函数)│ ├── +Data/ 数据字典(3 个函数)│ ├── +CodeGen/ 代码生成(2 个函数)│ ├── +Check/ 模型检查(1 个函数)│ ├── +Test/ 测试验证(2 个函数)│ ├── +DocGen/ 文档生成(1 个函数)│ ├── +Workflow/ 工作流引擎(1 个函数)│ ├── +Utils/ 工具函数(3 个函数)│ └── +Safety/ ISO 26262 功能安全│ ├── +Requirement/ 安全需求管理(2 个函数)│ ├── +HARA/ 危害分析(2 个函数)│ ├── +Traceability/ 追溯矩阵(2 个函数)│ ├── +Analysis/ 安全分析(1 个函数)│ └── +VandV/ 验证确认(2 个函数)├── app/│ ├── MBDToolchainApp.m 集成化 App(~980 行)│ ├── launchApp.m 启动脚本│ └── diagnose.m 环境诊断脚本├── scripts/ 便捷入口脚本│ ├── init_toolchain.m 工具链初始化│ ├── create_project.m 项目创建向导│ └── run_full_workflow.m 工作流快捷脚本├── configs/ 配置文件├── examples/ 示例项目├── tests/ 自测脚本└── docs/ 文档├── README.md 使用文档├── APP_GUIDE.md App 指南└── INTRODUCTION.md 本白皮书
B. 联系方式与支持
l问题反馈:请在后台联系乐邦占士
l功能建议:请在后台联系乐邦占士
l培训需求:请在后台联系乐邦占士
声明:本工具链基于 MATLAB/Simulink 原生 API 开发,不修改 MathWorks 产品的内部行为。功能安全模块提供 ISO 26262 流程支持,但最终的合规性认证仍需由具备资质的第三方审核机构完成。


