Matlab(Simulink)使用详解

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模型项目。它就像是一个"项目管家",帮你把所有相关的文件(模型、脚本、数据字典、文档等)放在一起,方便管理和使用。

主要功能

  1. 文件管理:把所有项目文件集中管理,文件夹分类清晰。
  2. 版本控制:集成 Git 等工具,方便跟踪文件变更和协作。
  3. 依赖管理:自动分析文件依赖,确保文件完整性和一致性。
  4. 团队协作:支持多人协作,共享项目文件,避免冲突。
  5. 文档管理:集成文档,方便查阅和更新。
    逻辑相关的用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 把变量/事件绑定到状态 保证只有本状态能修改它

模型验证

嵌入式代码生成

相关推荐
FPGA小徐6 分钟前
从 NEMU 到 AbstractMachine:程序、运行时环境与 AM 完全解析
linux·运维·服务器
呉師傅1 小时前
得力P2500、M2500系列打印机硒鼓加粉及清零方法【纯享版】
运维·网络·windows·电脑
Sayai1 小时前
Elasticsearch 日志检索 DSL 实战:时间范围查询、字段去重、分钟级统计与最新日志获取
大数据·运维·elasticsearch·搜索引擎·日志分析
大侠归来2 小时前
TCP/IP 网络编程:多播与广播
网络·tcp/ip·智能路由器
weixin_416667963 小时前
银河麒麟V10看门狗试验-1
网络·chrome·python
白帽攻防录3 小时前
SRC 挖洞:WSO2 JWT 算法混淆绕过深度复盘,CVE-2026-5430 不支持的算法怎么变成管理员
网络·算法·安全·网络安全·jwt
fb_123453 小时前
MySQL运维实战:备份恢复+主从复制+读写分离+MHA高可用(超详细手把手教程)
运维·mysql·oracle
starzy19903 小时前
Flink 优化之网络缓存优化及参数详解:从数据传输机制到反压原理的生产调优指南
网络·缓存·flink
..Dauntless..4 小时前
【Linux】进程地址空间初步理解
linux·运维·服务器
Julien20044 小时前
Docker 网络(一)
linux·运维·服务器·ssh·学习方法