Simulink 自动代码生成电机控制:低阶滑模观测器仿真实现及生成代码在开发板上运行

news2024/11/15 7:22:19

目录

理论参考

仿真实现

运行演示

总结

前段实时搭过高阶的滑模观测器,相比于高阶的,普通的滑模观测器计算量小更适合计算能力低的MCU,这里参考Microchip的16位MCU所使用的观测器,通过Simulink建模仿真实现系统控制,再通过自动代码生成集成到STM32单片机,实现滑模无感控制。以下为开发过程的总结:

理论参考

这里参考的是Microchip 开放的文档AN1078 ,框图如下:

模型的搭建参照下图

 滑模观测器需要调整的参数有Kslide和MaxSMCError,按照上面框图搭好模型后对Z进行低通滤波就得到了估算的反电动势e*。如下图,得到估算的e*又对其进行了低通滤波,再做反正切得到了角度。

由于引入了LPF,导致了观测到的反电动势滞后,观测出来的角度会有误差,需要加上角度补偿。

如果固定一个滤波器的截止频率,当转速发生变化时,误差角也会相应的发生变化。解决方法是自动调整滤波器的截止频率。达到自适应的LPF,这样输出的误差角就是一个固定值,只需要补偿一个固定的角度误差即可。

仿真实现

搭建模型如下,和Microchip有些不同的地方,这里计算角度前没有对e*进行LPF滤波,但是对Z进行了滤波,因此角度滞后的现像还是在的。

 如下,实际的反电动势相位和滑模估算出来的反电动势相位,Ealpha为例:

 计算出来的角度就会存在一个固定的角度差,如下对其进行补偿:

 

补偿后各个速度段的角度和实际角度基本一致:

 启动仿真运行演示:

启动添加了IF开环,2s后进入闭环,仿真没有问题。

 

 生成代码并集成:

需要调整的参数如下,这里可以用反正切,也可以用锁相环来计算角度,不管用哪一种,都需要一个补偿角。

 

运行演示

编译下载到开发板后,运行效果如下:

带载启动波形:

 运行视频

普通滑模演示

总结

通过实验验证这种简单的滑模估算方法可行,效果也可以,速度变化也能正常使用,这里通过锁相环替换了参考文献的反正切也能正常工作。另外构建了另一个滑模观测器,这个观测器输出的反电动势相位没有发生滞后,开发板运行效果和本文所说的效果基本一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/357557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【查看多个长图】如何方便地在安卓手机上查看多个长图?如何更便捷地浏览长图合集

经常我会看到有些知识分享是通过长图形式进行。 往往在手机本地的图片浏览器中不能很方便地查看很多长图(能放大,但是横向滑动时,无法保证同样的放缩比例浏览同一个文件夹)。 我推荐下面一个APP和曲折解决办法。 1、perfect vi…

Error: Timeout trying to fetch resolutions from npm

总目录: 如何使用VSCode插件codesight扫描出前端项目的风险依赖包并借助 npm-force-resolutions 修复之?blackduck issue fix 文章目录问题描述【最终解决】我搜索到的解决方案npmjs 该依赖各版本列表及对应的被下载次数github issue 说降级到0.0.3就可以…

(十五)、从插件市场引入问题反馈页面【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1,插件市场问题反馈页面 插件市场链接 dloud插件插件市场中找到问题反馈插件: 首先确保登录了dcloud账号。 使用hbuilderX导入插件到自己项目中。 选择合并导入。 从插件市场导入意见反馈页面的路径地址如下: 2,点击跳转到…

论文阅读_AlphaGo_Zero

论文信息 name_en: Mastering the game of Go without human knowledge name_ch: 在没有人类知识的情况下掌握围棋游戏 paper_addr: http://www.nature.com/articles/nature24270 doi: 10.1038/nature24270 date_publish: 2017-10-01 tags: [‘深度学习’,‘强化学习’] if: 6…

【C++封装】C++面向对象模型

文章内容如下: 1)成员变量和函数的存储 2)this指针 3)const修饰成员函数 4)有元 一。成员变量和函数的存储 C实现了封装,数据(-变量)和处理数据的操作(-函数)是分开存储的,C中的非静态数据…

SpringBoot Notes

文章目录1 SpringBootWeb快速入门1.1Spring官网1.2 Web分析2. HTTP协议2.1 HTTP介绍34 SpringBootWeb请求响应5 响应6 分层解耦6.1 三层架构6.1.1 三层架构介绍6.1.2 基于三层架构的程序执行流程:6.1.3 代码拆分6.2 分层解耦6.2.1 内聚、耦合6.2.2 解耦思路6.3 IOC&…

[LeetCode周赛复盘] 第 333 场周赛20230219

[LeetCode周赛复盘] 第 333 场周赛20230219 一、本周周赛总结二、 [Easy] 6362. 合并两个二维数组 - 求和法1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6365. 将整数减少到零需要的最少操作数1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6364. 无平方子集计数1. 题目描…

操作系统闲谈08——系统调用、中断、异常

操作系统闲谈08——系统调用、中断、异常 一、系统调用 IDT - GDT - 系统调用表 找到对应系统调用号将系统调用号以及一些现场信息存入寄存器eax中(ebx、ecx、edx存放其他信息),然后触发软中断(x86中,0x80为中断号&…

设计模式 状态机

前言 本文梳理状态机概念,在实操中状态机和状态模式类似,只是被封装起来,可以很方便的实现状态初始化和状态转换。 概念 有限状态机(finite-state machine)又称有限状态自动机(英语:finite-s…

ThreadLocal知识点总结

什么是ThreadLocal?它的作用是什么? ThreadLocal是线程Thread中属性threadLocals的管理者。 ThreadLocal是Java中lang包下的一个类,可以用于在多线程环境中为每个线程维护独立的变量副本。它的作用是让每个线程都拥有自己的数据副本&#xff…

Java面向对象的特性:封装,继承与多态

Java面向对象的特性 在学习Java的过程是必须要知道的Java三大特性:封装、继承、多态。如果要分为四类的话,加上抽象特性。 封装 1.封装概述 是面向对像三大特征之一(封装,继承,多态) 是面向对象编程语言对客…

语音增强学习路线图Roadmap

语音增强算是比较难的研究领域,从入门到精通有很多台阶,本文介绍一些有价值的书籍,值得反复阅读。主要分为基础类和进阶类书籍,大多都是理论和实践相结合的书籍,编程实践是抓手,让知识和基础理论变扎实。基础书籍《信号…

RT-Thread初识学习-01

1. RT-Thread 简介 1.1 RT-Thread 是什么 据不完全统计,世界有成千上万个 RTOS(Real-time operating system,实时操作系统),RT-Thread 就是其中一个优秀的作品。 RT-Thread 内核的第一个版本是熊谱翔先生在 2006 年…

分布式-分布式存储笔记

读写分离 什么时候需要读写分离 互联网大部分业务场景都是读多写少的,读和写的请求对比可能差了不止一个数量级。为了不让数据库的读成为业务瓶颈,同时也为了保证写库的成功率,一般会采用读写分离的技术来保证。 读写分离的实现是把访问的压…

LeetCode-384-打乱数组

1、列表随机 为了能够初始化数组,我们使用nums保存当前的数组,利用orignal保存初始化数组。为了实现等可能随机打乱,考虑到随机数本质上是基于随机数种子的伪随机,我们采用如下的方式实现等可能随机:我们将所有元素压…

MySQL备份恢复(十二)

文章目录1. MySQL数据损坏类型1.1 物理损坏1.2 逻辑损坏2. DBA运维人员备份/恢复职责2.1 设计备份/容灾策略2.1.1 备份策略2.1.2 容灾策略2.2 定期的备份/容灾检查2.3 定期的故障恢复演练2.4 数据损坏时的快速准确恢复2.5 数据迁移工作3. MySQL常用备份工具3.1 逻辑备份方式3.2…

【scl】博图程序的导入和导出

导入或者导出博图文件的方法(也叫移植文件) 目录 前言 ​编辑 ​编辑 前言 本篇文章主要写一下关于博图文件的导入和导出,具体要怎么样才能将写好的程序或者块移植到其他地方,下面我们一起来看! 一、程序块的导入和导…

[软件工程导论(第六版)]第4章 形式化说明技术(课后习题详解)

文章目录1. 举例对比形式化方法和欠形式化方法的优缺点。2. 在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则?3. 一个浮点二进制数的构成是:一个可选的符号(+或-)&…

Seata分布式事务框架-AT模式与TCC模式介绍

Seata分布式事务框架-AT模式介绍 Seata AT事务方案 Seata 的 AT 模式(Automatic Transaction)是一种无侵入的分布式事务解决方案。下面结合具体业务场景来分析其执行的原理。 业务场景 订单系统 当用户下订单时,执行以下三步流程&#x…

【NLP开发】Python实现聊天机器人(Selenium、七嘴八舌)

🍺NLP开发系列相关文章编写如下🍺:1🎈【NLP开发】Python实现词云图🎈2🎈【NLP开发】Python实现图片文字识别🎈3🎈【NLP开发】Python实现中文、英文分词🎈4🎈【…