当前位置: 首页 > ops >正文

拓展:simulink中将仿真环境离散化

simulink仿真环境离散化

  • 一、仿真模型
  • 二、如何查看离散情况
  • 三、仿真环境离散化的设置
    • 1、整个simulink系统离散化
    • 2、PowerGUI电气环境离散化
    • 3、控制方式离散化
  • 四、运行结果

此练习,主要在simulink仿真环境的离散化。

一、仿真模型

  • 还是以前面simulink练习10的flyback电路为例:

仿真模型

二、如何查看离散情况

  • 在空白处 右键 ,按下图选择 采样时间显示 ,再选择 全部
    查看离散情况
  • 此时,就能看到弹出的一些连续、离散化的情况;
  • 并且,电气的连接图,也会以不同情况,显示对应的颜色
  • 例如:0.5就是个常数;这个PWM脉冲发生器就是混合的情况,因为PWM脉冲发生器其输入是0.5常数,输出又是灰色的最小步长,所以是混合的。
    离散化情况

三、仿真环境离散化的设置

  • 从上面可以看到,此时整个系统就是各种都有,而现在就是要将整个系统全部离散化。主要分以下三步:
    • simulink系统离散化;
    • 电气环境离散化;
    • 控制方式离散化;

1、整个simulink系统离散化

  • 点开 模型设置 的界面;(如下图)
  • 将类型选为 定步长 ,求解器选为 离散
  • 固定步长,这里设置为 0.25e-6
  • 固定步长的设置方法:
    • 如果对于相控形式的电路,大概设置 1e-4
    • 如果对于斩波形式的电路,
      • 10k开关频率大概设置 1e-6 或者更小;
      • 20k开关频率大概设置 0.5e-6
      • 这里40k就是设置 0.25e-6
  • 注意:后面如果有报错,可能就要检查这里是最小刻度的值,是否其他地方的设置是仿真时间0.25e-6的整数倍
  • 总结,目前整个simulink系统就变为离散化了。
    设置参数

2、PowerGUI电气环境离散化

  • 双击 PowerGUI 模块,将类型选为 Discrete 离散形式,采样时间设置和刚才的固定步长一样 0.25e-6
  • 总结,目前就是电气环境也做了离散化了。
    PowerGUI

3、控制方式离散化

  • 就是在仿真里面,要用离散形式来对系统进行控制;

  • 此时同样再搭建一个离散形式的PID的闭环反馈来验证;

  • 双击空白处,搜子系统模块 Subsystem ,将控制部分在子模块里面进行搭建,这样更简洁;

  • 需要有以下参数:

    • 给定量:因为要输出5V,用 constant 模块;
    • 反馈量:用万用表 Multimeter ,将电阻两端的输出电压作为反馈;
    • 误差:就是给定减去反馈,用 Sum 模型,进行相减;
    • PID调节器:这里需使用离散的PID控制器 Discrete PID Controller
    • 复合型控制:开环大信号+PID闭环小信号,参考之前的练习;
    • 这里就是用一个固定占空比常数 0.325 ,作为开环部分的大信号,再用 Sum 加上PID的输出的小信号,构成复合控制。
    • PID参数的设置:双击PID模块,
      • 比例项设置:通过前面误差信号如果差1V,则占空比大概需要0.05,就大概可以设置 0.05*5
      • 积分项设置,通常就要至少快比例项再快100倍,因为这里积分是乘以Ts,是还原到秒级的,所以需要100倍,大概可以设置 0.055100
      • 限幅部分:就大概限制在 -0.3 0.3 之间即可;
  • 以下是PI模块的设置:

PI模块设置
限幅

  • 再将两个占空比的和,连接到PWM脉冲发生器 PWM Generator(DC-DC)
  • 以下,就是完整的控制子模块的连接图
    控制子模块
  • 以及完整电路的连接图:(如下图)
  • 总结,目前就是控制部分也做了离散化了。
    完整电路

四、运行结果

  • 仿真时间:0.02s,其输出电压的运行结果:
  • 此时看到最后就是到5V左右了,仿真时间再长一点就比较明显;
    0.02s
  • 仿真时间:0.04s,其输出电压的运行结果:
  • 从图看出,是不是觉得改成离散的仿真,反倒更差呢?
  • 之前连续的波形很光滑,现在更多这种波动的毛刺;
  • 其实,这才是正常的,这才是更贴近实际真实情况
    0.04s

学习来源:B站:西瓜粥西瓜粥

http://www.xdnf.cn/news/18573.html

相关文章:

  • K8S的部署与常用管理
  • VS2022的MFC中关联使用控制台并用printf输出调试信息
  • Redis 高可用篇
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十四)垂直滚动条
  • HarmonyOS实战(DevEco AI篇)—深度体验DevEco CodeGenie智能编程助手
  • 算法训练营day60 图论⑩ Bellman_ford 队列优化算法、判断负权回路、单源有限最短路(修改后版本)
  • `strcat` 字符串连接函数
  • 蔬菜溯源系统的开发与设计小程序
  • 新疆地州市1米分辨率土地覆盖图
  • Placement new是什么
  • 这也许就是DeepSeek V3.1性能提升的关键:UE8M0与INT8量化技术对比与优势分析
  • Python Excel
  • 何为‘口业’,怎么看待它
  • C++哈希表:unordered_map与unordered_set全解析
  • 搜索算法在实际场景中的应用
  • 基于ResNet50的血细胞图像分类模型训练全记录
  • 【Kubernetes知识点】Pod调度和ConfigMaps
  • 结构主义神话学的范式突破与后现代转向:从二元对立到数字神话素的符号学革命
  • 【深入理解 Linux 网络】收包原理与内核实现(下)应用层读取与 epoll 实现
  • 20250823解决荣品RD-RK3588-MID开发板在充电的时候大概每10s屏幕会像水波纹闪烁一下
  • douyin_search_tool:用python开发的抖音关键词搜索采集软件
  • 使用tensorRT10部署yolov5实例分割模型(2)
  • k8s总结
  • HTTP的状态码有哪些,并用例子说明一下
  • DS18B20温度传感器详解
  • 注意力机制:捕获长距离依赖关系的革命性技术
  • chapter06_应用上下文与门面模式
  • 每日算法题【链表】:链表的中间节点、返回倒数第k个节点、合并两个有序链表
  • MySQL优化器追踪(Optimizer Trace)详解
  • APIs基础one