第二章 开发环境搭建:MATLAB/Simulink安装与配置、嵌入式编码器安装、必要的工具箱介绍
好,咱们直接进入正题。做基于模型的开发,第一件事就是把家伙事儿备齐。我见过不少新手,装个软件就卡半天,后面代码生成更是各种报错。其实说白了,环境搭好了,后面能省80%的麻烦。
2.1 MATLAB/Simulink 版本选择与安装
我个人习惯,选版本有个原则:不追新,不守旧。太新的版本,第三方硬件支持包可能还没跟上;太老的版本,很多新功能没有,代码生成效率也低。
目前工业界用得比较稳的,是 R2021b 到 R2023b 这个区间。我项目组现在统一用 R2022b,为什么?因为当时有个客户指定的编译器,只有这个版本兼容得最好。你想想看,要是装了个最新版,结果编译器不认,那多耽误事。
安装步骤其实很简单,但有几个坑我得提一下:
- 许可证文件:如果是公司买的网络许可证,记得配好 license server 地址。我刚开始用的时候,老以为激活失败是软件坏了,后来发现是 IT 给的服务器地址少了个端口号。
- 产品选择:别一股脑全装。我建议只勾选你需要的:MATLAB、Simulink、Embedded Coder、Stateflow,再加上几个常用的工具箱。全装的话,硬盘占用轻松超过 30GB,而且启动慢。
- 防火墙设置:安装过程中如果卡在 "正在激活",八成是防火墙拦了。临时关一下,或者把 MATLAB 加入白名单。
2.2 嵌入式编码器(Embedded Coder)安装
Embedded Coder 才是咱们做代码生成的核心。没有它,Simulink 只能生成那种跑在 PC 上的原型代码,没法直接烧到单片机里。
安装的时候,在 MathWorks 产品列表里找到 “Embedded Coder”,勾上就行。但我提醒你,光装这个还不够,还得装对应的 硬件支持包。
targetinstaller,会打开 Support Package Installer。这里可以下载你需要的芯片支持包,比如 TI C2000、Infineon TC2xx/TC3xx、NXP S32K 等等。我曾经给一个客户做项目,他们用的芯片比较冷门,结果支持包没装对,代码生成出来全是乱码。后来发现是版本不匹配。
安装完成后,怎么验证呢?我教你一个快速方法:
% 在 MATLAB 命令行输入:
>> which('rtwgen')
% 如果返回路径,说明 Embedded Coder 安装成功
>> coder.checkLicense
% 检查许可证是否有效
如果返回 "License checkout failed",别慌。先看看环境变量 LM_LICENSE_FILE 有没有配对。我遇到过最奇葩的一次,是杀毒软件把 license 文件当病毒隔离了……
2.3 必要的工具箱介绍
做发动机控制,不是光有 Simulink 和 Embedded Coder 就够的。下面这几个工具箱,我建议你装上,省得后面用到的时候抓瞎。
| 工具箱名称 | 用途 | 我的评价 |
|---|---|---|
| Stateflow | 状态机建模,用于模式切换、故障处理逻辑 | 必装。发动机的启动、怠速、加速、减速这些模式,用 Stateflow 画出来最直观。 |
| Simulink Coder | 生成 C 代码的基础包 | Embedded Coder 的前置依赖,装 Embedded Coder 时会自动装。 |
| Fixed-Point Designer | 定点数建模与仿真 | 发动机控制很少用浮点,因为成本高。这个工具箱帮你做定标,避免溢出。 |
| Vehicle Dynamics Blockset | 车辆动力学模型 | 做硬件在环(HIL)仿真时很有用。不过如果只是做算法,可以先不装。 |
| Simulink Design Verifier | 模型形式化验证 | 这个我强烈推荐。它能自动检测模型里的死逻辑、除零错误。我曾经用它发现过一个隐藏很深的溢出 bug,要是没发现,代码跑起来后果不堪设想。 |
| Polyspace Bug Finder | 代码静态分析 | 生成代码后,用 Polyspace 扫一遍,能发现运行时错误。很多 OEM 要求必须过这一关。 |
嗯,这里要注意一点:工具箱不是越多越好。我见过有人一口气装了 20 多个工具箱,结果 MATLAB 启动要 5 分钟。你想想看,每次改个参数都要等半天,效率全没了。所以我的建议是:按需安装,用到什么装什么。
2.4 环境验证:跑一个简单的例子
装完别急着走,咱们跑个例子验证一下。我习惯用 Embedded Coder 自带的 rtwdemo_engine 模型:
% 在命令行输入:
>> rtwdemo_engine
% 这会打开一个发动机控制示例模型
>> slbuild('rtwdemo_engine')
% 生成代码
如果一切顺利,你会看到 MATLAB 下方输出 "### Successful completion of build procedure"。这时候去工作目录看看,应该多了一个 rtwdemo_engine_ert_rtw 文件夹,里面就是生成的 C 代码。
mex -setup,选一个已安装的编译器。做嵌入式开发,我推荐 MinGW-w64 或者 TI 的编译器,别用 Visual Studio,太大了。
好了,环境搭好,咱们就可以正式开始做模型了。下一章,我会带你从零开始搭建一个发动机扭矩控制模型。到时候你会发现,前面这些准备工作,花得值。