Matlab函数名和文件名要一致
定点数(Fixed-point number)是一种"小数点位置固定"的数值表示法
定点数 = "把小数当整数存、用整数算、最后再缩回去" 的技巧; 它牺牲了自动范围调整来换取硬件简单、功耗低、误差可预测,在成本敏感或确定性要求高的场合是浮点无法替代的选择
Matlab中时间单位都是秒(s)
在 MATLAB/Simulink 里做「嵌入式软件」代码生成时,solver(求解器)的选择只有一条铁律------必须让模型在"固定步长 +离散"框架下跑,否则 Embedded Coder 无法把算法翻译成周期可调、内存可测、无浮点异常的 C 代码
总结:
嵌入式 Solver 只认「Fixed-step + discrete/ode4」;步长=中断周期,Hardware 页选对 MCU,生成后再看栈和 FPU 报告------照做就能一次编译通过
车辆系统里两种步长都会用,但分工非常明确------"离线做算法研发"用变步长,"上车/进 ECU"一律改定步长
| 特性 | 模型变体 (Model Variants) | 子系统变体 (Subsystem Variants) |
|---|---|---|
| 作用范围 | 整个模型 | 子系统内部 |
| 定义位置 | 在模型级别定义 | 在子系统内部定义 |
| 主要用途 | 管理整个模型的多种配置 | 管理子系统内部的多种配置 |
| 实现方式 | 使用 Variant Subsystem 模块 |
使用 Variant Subsystem 模块 |
| 参数设置 | 在模型参数对话框中设置 | 在子系统参数对话框中设置 |
| 代码生成 | 为整个模型生成不同配置的代码 | 为子系统生成不同配置的代码 |
| 应用场景 | 不同的测试场景、硬件平台、操作模式 | 子系统内部的不同控制策略、硬件配置 |
| 示例 | 不同的控制器选择(如 PID、模糊控制器) | 子系统内部的不同控制器选择(如 PID、模糊控制器) |
| 灵活性 | 高,适用于整个模型的多种配置 | 高,适用于子系统内部的多种配置 |
| 维护成本 | 低,减少模型冗余 | 低,减少子系统冗余 |
| 多平台支持 | 支持,为不同硬件平台定义配置 | 支持,为子系统内部的不同硬件平台定义配置 |
| 测试和验证 | 支持,快速切换不同测试场景 | 支持,快速切换子系统内部的不同测试场景 |
slblocks 用于管理和操作 Simulink 库中的模块。通过 slblocks,可以轻松地列出库中的模块、获取模块的属性、添加或删除模块、检查模块的依赖关系以及生成模块的文档。
| 特性 | 模块工作空间(Module Workspace) | 基础工作空间(Base Workspace) |
|---|---|---|
| 作用范围 | 局部,仅在模块内部有效 | 全局,整个模型有效 |
| 主要用途 | 局部参数管理,封装和重用 | 全局参数管理,数据共享 |
| 变量访问 | 只能被该模块访问 | 可以被模型中的任何模块访问 |
| 独立性 | 每个模块独立,互不干扰 | 全局统一,所有模块共享 |
| 适用场景 | 模块内部的参数和变量 | 模型中共享的参数和变量 |
| 存储位置 | 模块的参数对话框或模块工作空间 | MATLAB 工作空间或模型设置中的基础工作空间 |
数据字典 提供了更集中、更安全、更易于管理的数据管理方式。
通过使用数据字典,可以:
- 集中管理模型中的所有数据,减少数据冗余和冲突。
- 确保数据的隔离和独立性,避免数据冲突。
- 使用版本控制系统管理数据字典文件,确保数据的可追溯性和可恢复性。
- 便于团队协作,确保所有成员使用的是最新的数据定义。
- 确保代码生成的一致性和准确性。
因此,数据字典通常被认为比基础工作空间更安全、更高效的数据管理工具。
Simulink Project是一个项目管理工具,用于帮助你更好地组织和管理Simulink模型项目。它就像是一个"项目管家",帮你把所有相关的文件(模型、脚本、数据字典、文档等)放在一起,方便管理和使用。主要功能
- 文件管理:把所有项目文件集中管理,文件夹分类清晰。
- 版本控制:集成 Git 等工具,方便跟踪文件变更和协作。
- 依赖管理:自动分析文件依赖,确保文件完整性和一致性。
- 团队协作:支持多人协作,共享项目文件,避免冲突。
- 文档管理:集成文档,方便查阅和更新。
逻辑相关的用StateFlow,矩阵相关的用Matlab Function,数据流用Simulink
Stateflow 是 MATLAB/Simulink 环境下用于事件驱动系统建模与仿真的图形化编程工具,其核心思想是状态机理论。它通过状态图(State Diagram)的形式,将复杂的控制逻辑、状态转换、事件响应等行为可视化
inf无穷大
[]表示条件{}表示逻辑
在 Stateflow 里,每个状态都可以写 "动作标签",常用的有:
| 关键字 | 全称 | 触发时机 | 典型用法 |
|---|---|---|---|
en / entry |
entry | 刚进入状态(仅一次) | 初始化变量、开中断、点灯 |
du / during |
during | 停留在本状态的每个激活步 | 持续控制、累加计数 |
ex / exit |
exit | 将要离开状态(仅一次) | 清标志、关中断、保存现场 |
on event_name |
on | 本状态内收到给定事件 | 事件驱动动作(如 on SWITCH) |
on after(n, sec) |
after | 进入状态 n 秒之后仍未退出 | 超时保护、看门狗 |
on before(n, sec) |
before | 进入状态未满 n 秒就离开 | 防误触、短按过滤 |
on at(n, sec) |
at | 进入状态恰好第 n 秒 | 精确定时触发 |
on every(n, sec) |
every | 每隔 n 秒触发一次 | 周期采样、闪烁 |
bind |
bind | 把变量/事件绑定到状态 | 保证只有本状态能修改它 |
模型验证
嵌入式代码生成
