当前位置: 首页 > 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位表示,以确保其精度。

相关文章:

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

目录 前言 开发流程 定点化的技巧 代码生成运行演示 总结 前言 这次尝试了在国产arm0内核的MCU上实现Simulink自动代码生成永磁同步电机无传感控制。机缘巧合之下拿到了一块国产MCU的电机控制板和一个5000RPM的小电机。最后实现了无传感控制,在这里总结下一些经…...

MySQL基本查询

文章目录表的增删查改Create(创建)单行数据 全列插入多行数据 指定列插入插入否则更新替换Retrieve(读取)SELECT列全列查询指定列查询查询字段为表达式查询结果指定别名结果去重WHERE 条件基本比较BETWEEN AND 条件连接OR 条件连…...

你需要知道的 7 个 Vue3 技巧

VNode 钩子在每个组件或html标签上,我们可以使用一些特殊的(文档没写的)钩子作为事件监听器。这些钩子有:onVnodeBeforeMountonVnodeMountedonVnodeBeforeUpdateonVnodeUpdatedonVnodeBeforeUnmountonVnodeUnmounted我主要是在组件…...

行政区划获取

行政区划获取一、导入jar包二、代码展示背景:公司的行政区划代码有问题,有的没有街道信息,有的关联信息有误,然后找到了国家的网站国家统计局-行政区划,这个里面是包含了所有的行政信息,但是全是html页面&a…...

让ChatGPT介绍一下ChatGPT

申请新必应内测通过了,我在New Bing中使用下ChatGPT,让ChatGPT介绍一下ChatGPT 问题1:帮我生成一篇介绍chatGPT的文章,不少于2000字 回答: chatGPT是什么?它有什么特点和用途? chatGPT是一种…...

【Redis】Redis 主从复制 + 读写分离

Redis 主从复制 读写分离1. Redis 主从复制 读写分离介绍1.1 从数据持久化到服务高可用1.2 主从复制1.3 如何保证主从数据一致性?1.4 为何采用读写分离模式?2. 一主两从环境准备2.1 配置文件2.2 启动 Redis3. 主从复制原理3.1 全量同步3.1.1 建立连接3…...

2023届秋招,鬼知道我经历了什么

仅记录个人经历,充满主观感受,甚至纯属虚构,仅供参考,杠就是你对 本想毕业再写,但是考虑到等毕业了,24秋招的提前批就快开始了,大概就来不及了,正好现在有点时间,陆陆续…...

ChatGPT助力校招----面试问题分享(一)

1 ChatGPT每日一题:期望薪资是多少 问题:面试官问期望薪资是多少,如何回答 ChatGPT:当面试官问及期望薪资时,以下是一些建议的回答方法: 1、调查市场行情:在回答之前,可以先调查一…...

CSS媒体查询@media (prefers-color-scheme:dark)判断系统白天黑夜模式

前言 在最近学习中突然看到了在媒体查询中prefers-color-scheme:dark监听的使用,然后就模仿里边写了个简单例子,代码如下: body {background-color: #f5f5f5;}media (prefers-color-scheme: dark) {body {background-color: #666;}}然后通过…...

运行YOLOv8实现识别

https://github.com/ultralytics/ultralyticshttps://docs.ultralytics.com/环境配置官方环境要求Python>3.7(我是python3.8也是可以用的) environment with PyTorch>1.7.这是ultralyticsCommand Line Interface命令行接口运行输入参数的格式yolo …...

如何在Linux中优雅的使用 head 命令,用来看日志简直溜的不行

当您在 Linux 的命令行上工作时,有时希望快速查看文件的第一行,例如,有个日志文件不断更新,希望每次都查看日志文件的前 10 行。很多朋友使用文本编辑的命令是vim,但还有个命令head也可以让轻松查看文件的第一行。 在…...

Nginx.conf 配置详解

#安全问题,建议用nobody,不要用root. #user nobody; #worker数和服务器的cpu数相等是最为适宜 worker_processes 2; #work绑定cpu(4 work绑定4cpu) worker_cpu_affinity 0001 0010 0100 1000 #error_log path(存放路径) level(日志等级) path表示日志路径&…...

剖析NLP历史,看chatGPT的发展

1、NLP历史演进 1.1 NLP有监督范式 ​ NLP里的有监督任务的范式,可以归纳成如下的样子。 输入是字词序列,中间一步关键的是语义表征,有了语义表征之后,然后交给下游的模型学习。所以预训练技术的发展,都是在围绕怎么…...

20个Python使用小技巧,建议收藏~

1、易混淆操作 本节对一些 Python 易混淆的操作进行对比。 1.1 有放回随机采样和无放回随机采样 import random random.choices(seq, k1) # 长度为k的list,有放回采样 random.sample(seq, k) # 长度为k的list,无放回采样1.2 lambda 函数的参数 …...

Kafka 主题管理

Kafka 主题管理创建主题查看主题修改主题内部主题异常主题删除失败创建主题 创建 Kafka 主题 create : 创建主题partitions : 主题的分区数replication-factor : 每个分区下的副本数 bin/kafka-topics.sh \ --bootstrap-server broker_host:port \ --create --topic my_topi…...

【深度学习】GPT系列模型:语言理解能力的革新

GPT-1🏡 自然语言理解包括一系列不同的任务,例如文本蕴涵、问答、语义相似度评估和文档分类。尽管大量的未标记文本语料库很充足,但用于学习这些特定任务的标记数据却很稀缺,使得判别式训练模型难以达到良好的表现。我们证明&…...

【Vue.js】全局状态管理模式插件vuex

文章目录全局状态管理模式Vuexvuex是什么?什么是“状态管理模式”?vuex的应用场景Vuex安装开始核心概念一、State1、单一状态树2、在 Vue 组件中获得 Vuex 状态3、mapState辅助函数二、Getter三、Mutation1、提交载荷(Payload)2、…...

JPA 之 Hibernate EntityManager 使用指南

Hibernate EntityManager 专题 参考: JPA – EntityManager常用API详解EntityManager基本概念 基本概念及获得 EntityManager 对象 基本概念 在使用持久化工具的时候,一般都有一个对象来操作数据库,在原生的Hibernate中叫做Session&…...

英语作文提示(持续更新)

星期(介词on)Monday星期一Tuesday星期二Wednesday星期三Thursday星期四Friday星期五Saturday星期六Sunday星期日月份(介词in)lunar calendar农历on the second day of the second lunar农历初二January1月February2月March3月Apri…...

【计算机组成原理】计算机的性能指标、数据的表示和运算、BCD码和余3码

计算机组成原理(二) 计算机的性能指标: 存储器的性能指标: 存储器中,MAR为存储单元的个数 MDR为机械字长也就是存储单元的长度 存储器的大小MAR*MDR n为二进制位能表示出几种不同的状态呢? 2的n次方种不同的状态 CPU的性能指标&#xf…...

三天吃透MySQL八股文(2023最新整理)

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…...

队列_23约瑟夫问题+_24猫狗收容所

约瑟夫问题 n 个小孩围坐成一圈,并按顺时针编号为1,2,…,n,从编号为 p 的小孩顺时针依次报数,由1报到m ,当报到 m 时,该小孩从圈中出去,然后下一个再从1报数,当报到 m 时再出去。如此反复&#…...

gradle

Gradle环境介绍OpenJDK 17.0.5Gradle 7.6示例代码 fly-gradleGradle 项目下文件介绍如果你的电脑安装了 gradle,可以使用 gradle init 去初始化一个新的 gradle 工程,然后使用电脑安装的 gradle 去执行构建命令。但是每个开发电脑上的 gradle 版本不一样…...

[牛客]链表中倒数第k个结点

使用快慢指针法:两种思路:1.fast先向后走k-1次,slow再向后走1次,然后fast和slow同时向后走,当fast走到最后一个结点时,slow刚好在倒数第k个位置上;2.fast先向后走k次,slow再向后走1次,然后fast和slow同时向后走,当fast走到最后一个结点的后面时(此时为NULL),slow刚好在倒数第k个…...

English Learning - L2 语音作业打卡 双元音 [eɪ] [aɪ] Day14 2023.3.6 周一

English Learning - L2 语音作业打卡 双元音 [eɪ] [aɪ] Day14 2023.3.6 周一💌发音小贴士:💌当日目标音发音规则/技巧:🍭 Part 1【热身练习】🍭 Part2【练习内容】🍭【练习感受】🍓元音 /eɪ/…...

C++ this 指针与静态成员

文章目录参考描述实例成员与静态成员实例成员静态成员静态成员属性隐式形参 this 指针冲突this 指针静态成员函数this 指针与静态成员函数参考 项目精通C (第九版)托尼加迪斯、朱迪沃尔特斯、戈德弗雷穆甘达 (著) / 黄刚 等 &…...

REDIS16_LRU算法概述、查看默认内存、默认是如何删除数据、缓存淘汰策略

文章目录①. LRU算法概述②. 查看默认内存③. 如何删除数据④. 缓存淘汰策略①. LRU算法概述 ①. LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的数据给予淘汰 (leetcode-cn.com/problems/lru-cache) ②. LRU算法题来源 ③.…...

ClassMix: Segmentation-Based Data Augmentation for Semi-Supervised Learning学习笔记

ClassMix相关介绍主要思想方法Mean-Teacher损失函数交叉熵损失标签污染实验实验反思参考资料相关介绍 从DAFormer溯源到这篇文章,ClassMix主要是集合了伪标签和一致性正则化,思想来源于CutMix那条研究路线,但是优化了CutMix中的标签污染的情…...

CSDN竞赛第35期题解

CSDN竞赛第35期题解 1、题目名称:交换后的or 给定两组长度为n的二进制串,请问有多少种方法在第一个串中交换两个不同位置上的数字,使得这两个二进制串“或”的 结果发生改变? int n;cin>>n; string a,b;cin>>a>…...

Java应用服务系统安全性,签名和验签浅析

1 前言 随着互联网的普及,分布式服务部署越来越流行,服务之间通信的安全性也是越来越值得关注。这里,笔者把应用与服务之间通信时,进行的的安全性相关,加签与验签,进行了一个简单的记录。 2 安全性痛点 …...

wordpress top主题/上海网优化seo公司

读S计划的理念 自助、互助,共同进步! 读S计划的初衷 现在有很多学习方式,搜索引擎、论坛、博客,qq群等等,那么我这样的计划还有存在的必要么?这个计划的独特之处在哪里? 读S计划的独特之处不在于…...

济南 论坛网站建设/推广形式

Activity的构成并不是一个Activity对象再加上一个布局那么简单 再Activity和开发人员设置的视图之间还隔着两层。实际上视图会被设置给一个Window 类,这个Window中含有一个DecorView,这个DecorView才是窗口的顶级视图。 开发人员设置的布局会被设置到这…...

制作网站开发/电脑培训班零基础网课

知名企业家、同时也是 NBA 小牛队的老板马克库班(Mark Cuban)曾说过一句话:人工智能,深度学习和机器学习,不论你现在是否能够理解这些概念,你都应该学习。否则三年内,你就会像灭绝的恐龙一样被社…...

企业建设网站的功能是什么/深圳百度seo公司

容器一直是应用程序开发行业的显着趋势之一,因为越来越多的组织选择它们来更快地构建、测试和部署他们的应用程序而没有摩擦。 容器本质上不是安全的。尽管容器具有内置的安全功能,但它们仍然需要第三方工具来保护运行时和开发环境。随着过去几年对公司…...

龙华做网站多少钱/seo培训学什么

union合并后,去除重复的数据; union all 合并后,包含重复的数据。...

信息技术做网站/郑州网站营销推广公司

...