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 把变量/事件绑定到状态 保证只有本状态能修改它

模型验证

嵌入式代码生成

相关推荐
分布式存储与RustFS11 小时前
群晖 NAS 被 C3RB3R 锁了:本地备份一起被加密,RustFS 对象锁为什么删不掉
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
真好啊又活了一天12 小时前
服务器和虚机配置IPV6
运维·服务器·github
zixu_star12 小时前
定时任务是什么?从日常自动化到 AI 应用,软件如何自动执行任务?
运维·人工智能·自动化
AR-26710-12 小时前
Linux Day33——定时任务+lvm
linux·运维
润滑卫士13 小时前
液压系统工作粘度窗口等级选型:泵允许粘度范围与油温-粘度匹配计算
运维
略懂而已13 小时前
安装SSL后网站速度变慢?
网络·网络协议·ssl
云上工程笔记14 小时前
RDMA / IB 高速互联 GPU 云对比:多机训练网络性能与价格
网络·gpu算力·gpu
每月一号准时摆烂16 小时前
服务器运维笔记(一)——使用shell编写实时查看BMC功率的脚本
运维·服务器·笔记
时间售卖铺17 小时前
Chrony与SSH实战:精准时间同步与安全远程登录
运维·安全·云原生·ssh
微订校园外卖系统17 小时前
校园代取快递系统选型:现成系统与定制开发的技术核对项
大数据·运维·人工智能·外卖系统·本地生活·微订