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

Simulink 自动代码生成电机控制:在某国产ARM0定点MCU上实现自动代码生成无感电机控制

目录

前言

开发流程

定点化的技巧

代码生成运行演示

总结


前言

这次尝试了在国产arm0内核的MCU上实现Simulink自动代码生成永磁同步电机无传感控制。机缘巧合之下拿到了一块国产MCU的电机控制板和一个5000RPM的小电机。最后实现了无传感控制,在这里总结下一些经验。

芯片的参数如下:

开发流程

1. 首先根据新的电机参数在浮点的模型上进行仿真验证, 这里选择使用的观测器是龙伯格观测器

新的电机和控制参数调整完后仿真没有问题 

 2. 不放心可以先在浮点的MCU上跑一把,一般电机参数和实际参数相差不大,仿真没问题,实际运行也没啥问题

 3. 把浮点模型定点化

可以参考以下文章链接

Simulink 自动代码生成电机控制:自动定点化Fixed-Point Tool 使用_simulink模型定点化_卡洛斯伊的博客-CSDN博客

定点化的技巧

创建电机的运行实例,不同的输入电压,不出的负载,越多的输入输出实例,定点化后问题越少!

但是高转速可能输入的电流范围太小,大扭矩可能转速不够高,转速范围小。不能完全依赖自动定点化收集的数据。所以可以考虑局部定点化,分每个单独的模块进行定点化。如:

先对电流环进行定点化,或者先对SVPWM模块进行定点化都可以。完整系统进行定点化有很多工况会考虑不到范围。

当全局定点化运行后,如果系统仿真不正常,就需要去对模块进行检查

可通过Scope和log的方式去检查可疑的输出信号。如:

定点化后跑到一定的转速就失控了,不知道是控制环路引起的还是角度引起的。

 这个时候可以用电机的实际角度进行控制排除观测器原因,直接用电流环控制,排除速度环。

直接给电流环和实际角度,运行如下,能正常控制,说明电流环没有问题

 对比观测器的角度和实际角度,观测器观测的角度和实际角度对不上了,先把问题定位到观测器,理论上来讲观测到的角度要和实际的角度一样。

 再进到观测器里面查找是观测器的问题,还是锁相环的问题,经过一翻查找,定位到了下面这个位置。

 适当调整范围后:

目标转速也能达到,可以到开发板中进行测试了

 有时候在定位数据溢出可以用浮点和定点混合运行测试,如:

 仿真后:

浮点和定点的反电动势完全重合在一起,说明定点化的模块在当前工况没有问题。 

 这种方式,也能快速去定位数据溢出的位置。直到仿真的结果和自己想要的结果一致。就可以直接生成代码并集成了。

代码生成运行演示

也是在ADC里面调用生成的代码,传递电流信息等。

电机

总结

掌握定点化流程方法后,系统越复杂就越不要想着通过几个实例就把整个系统完全定点化好,也需要对一些异常的模块进行分析,仿真以达到数据失真小,且不溢出。Simulink定点化后有些数据是16位的,可以考虑把一些数据用32位表示,以确保其精度。

http://www.lryc.cn/news/38914.html

相关文章:

  • MySQL基本查询
  • 你需要知道的 7 个 Vue3 技巧
  • 行政区划获取
  • 让ChatGPT介绍一下ChatGPT
  • 【Redis】Redis 主从复制 + 读写分离
  • 2023届秋招,鬼知道我经历了什么
  • ChatGPT助力校招----面试问题分享(一)
  • CSS媒体查询@media (prefers-color-scheme:dark)判断系统白天黑夜模式
  • 运行YOLOv8实现识别
  • 如何在Linux中优雅的使用 head 命令,用来看日志简直溜的不行
  • Nginx.conf 配置详解
  • 剖析NLP历史,看chatGPT的发展
  • 20个Python使用小技巧,建议收藏~
  • Kafka 主题管理
  • 【深度学习】GPT系列模型:语言理解能力的革新
  • 【Vue.js】全局状态管理模式插件vuex
  • JPA 之 Hibernate EntityManager 使用指南
  • 英语作文提示(持续更新)
  • 【计算机组成原理】计算机的性能指标、数据的表示和运算、BCD码和余3码
  • 三天吃透MySQL八股文(2023最新整理)
  • 队列_23约瑟夫问题+_24猫狗收容所
  • gradle
  • [牛客]链表中倒数第k个结点
  • English Learning - L2 语音作业打卡 双元音 [eɪ] [aɪ] Day14 2023.3.6 周一
  • C++ this 指针与静态成员
  • REDIS16_LRU算法概述、查看默认内存、默认是如何删除数据、缓存淘汰策略
  • ClassMix: Segmentation-Based Data Augmentation for Semi-Supervised Learning学习笔记
  • CSDN竞赛第35期题解
  • Java应用服务系统安全性,签名和验签浅析
  • spring中bean的实例化