STM32电机控制固件架构

embedded/2024/9/20 6:59:29/ 标签: stm32, 电机控制, FOC

目录

一、应用程序剖析

二、面向现场的控制实现体系结构

1、参考计算循环

2、电流调节环路

3、安全回路


一、应用程序剖析

上图显示了由ST MC SDK构建的电机控制应用程序。首先,这样的应用程序是由电机控制工作台生成的软件项目,这要归功于STM32CubeMx。该软件项目由几个不同的部分组成,这些部分相互反应:

  • 这些部分中最重要的是应用程序。在这种情况下,该应用程序由ST Motor Control SDK的用户开发,它专注于最终应用程序的用途,将纯粹的电机控制方面留给ST MCSDK生成的代码。
  • UI库提供了用户在应用程序开发过程中可以从中受益的功能,以控制和调试它:它处理硬件功能,例如用于启动和停止电机的按钮,用于设置转子速度参考的电位器。更重要的是,它还提供调试功能,如电机控制协议套件,允许将电机控制应用与ST Motor Pilot工具或DAC功能连接。电机控制应用程序中是否存在 UI 库是可选的。它通常不会出现在最终应用程序中。
  • ST MCSDK固件的核心是电机控制。该库由一组组件组成,每个组件都实现了 SDK 提供的一项功能。对于其中的大多数功能,提供了几个组件来实现它的不同变体。电机控制工作台的任务之一是选择用户应用所需的正确组件。
  • 为应用程序选择的“电机控制库”组件由电机控制驾驶舱”部件使用。这部分实际上实现了电机驱动的核心算法。它将选定的组件集成在一起。电机控制驾驶舱的最后一个主要作用是充当电机和应用程序之间的主接口。
  • 应用程序和 UI 库都使用电机控制应用程序编程接口 (MC API) 来访问电机控制主控舱。MCAPI 是应用程序与系统其余部分之间的主接口。它提供了正确控制应用驱动的电机所需的所有功能。
  • 但是,有时,应用程序可能需要微调某些内部参数或获取比 MCAPI 所能提供的更详细的信息。对于这些情况,它可以使用“**MC 低级 API**”,它由电机控制应用程序的所有组件提供的接口功能组成。请参阅组件页面,了解 MC 低级 API 文档的入口点。
  • **STM32Cube 驱动程序**块表示项目中所需的 STM32 外设驱动程序 – HAL 或 LL,具体取决于用户的选择。电机控制库本身仅使用LL,硬件外设初始化可以使用HAL或LL。这些驱动程序被复制到为电机控制应用程序生成的软件项目中。

二、面向现场的控制实现体系结构

1、参考计算循环

需要应用程序设置的扭矩参考或转子速度参考作为输入。在后一种情况下,参考计算环路还执行转子速度调节。

该循环在名为“中频任务”的函数中实现,该函数在STM32 MCU的SysTick中断上执行。通常,中频任务的频率为 1 毫秒。但是,在电机控制工作台中,这可配置为低至 500 μs 和高达数毫秒的 ms。

500 μs 是电机控制工作台生成的电机控制应用程序的默认 SysTick 中断频率。而且,通常中频任务和参考计算循环每隔一个 SysTick 中断运行一次。

2、电流调节环路

电流调节环路FOC 实施的核心。

它的任务是测量流经电机相位的电流,并对其进行调节,使它们达到参考计算回路设置的参考值。为此,电流调节回路需要知道(在无传感器配置的情况下,这意味着:估计)受控电机转子的位置和速度。

电流调节环路通过克拉克和帕克变换实现了 FOC 算法的核心,即我d和我d电流调节和空间矢量脉冲宽度调制。当读取电机相电流时(它可以在ADC中断或DMA中断上),它会在中断环境中触发,并执行以下操作:

  • 读取IaIb 和 Ic 相电流
  • 计算转子的位置
  • 调节相电流,这将导致施加相电压
  • 使用占空比对PWM定时器进行编程

3、安全回路

安全循环在 SysTick 中断上运行,就像参考计算循环一样。但是,它在每次出现 SysTick 时都会运行,而后者并不总是如此。它的任务是评估许多故障条件,以确定它们是否处于活动状态。故障条件包括过流、欠压或过热条件。当检测到其中之一时,电机的运行将停止,并释放对其的任何最终控制。请参阅文档的 MC 状态机、命令和故障管理页面的故障部分。


http://www.ppmy.cn/embedded/2927.html

相关文章

【WordPress】在 Ubuntu 系统上使用 Caddy 服务器来发布 WordPress 网站

在 Ubuntu 系统上使用 Caddy 服务器来发布 WordPress 网站可以通过以下步骤完成: 安装 Caddy 服务器: 首先,你需要在 Ubuntu 上安装 Caddy 服务器。你可以从 Caddy 的官方网站或者仓库获取安装包,也可以使用以下命令进行安装&…

OR-TOOL 背包算法

起因&#xff1a;最近公司要发票自动匹配&#xff0c; 比如财务输入10000W块&#xff0c;找到发票中能凑10000的。然后可以快速核销。 废话不多&#xff0c; 一 官方文档 https://developers.google.cn/optimization/pack/knapsack?hlzh-cn 二 POM文件 <!--google 算法包…

万兆以太网MAC设计(3)MAC_RX模块添加CRC

文章目录 前言一、并行CRC处理二、添加CRC处理的MAC_RX模块三、总结 前言 上文介绍的MAC_RX模块实现了接受字节对齐的功能&#xff0c;但是尾端存在4字节CRC校验未处理。 一、并行CRC处理 前面在千兆以太网里对CRC代码和使用进行了介绍&#xff0c;千兆里面数据是一个一个by…

后端jar包部署常见运行和停止命令

目录 一、jar包运行最佳方式&#xff1a;nohup的方式运行&#xff0c;同时输出日志&#xff1a; 二、停止Jar包的运行&#xff1a; 一、jar包运行最佳方式&#xff1a;nohup的方式运行&#xff0c;同时输出日志&#xff1a; nohup java -jar xxx.jar > log.file 2>&…

CentOS 7软件安装全攻略:YUM命令详解与实战

在CentOS 7中&#xff0c;软件安装主要依赖于其强大的包管理器——YUM&#xff08;Yellowdog Updater Modified&#xff09;。YUM可以自动解决软件包之间的依赖关系&#xff0c;使得软件的安装、更新和卸载变得简单而高效。本文将详细介绍CentOS 7中软件安装的相关命令、选项和…

大话设计模式之访问者模式

访问者模式是一种行为设计模式&#xff0c;它允许你在不修改对象结构的前提下定义作用于这些对象结构元素的新操作。 在访问者模式中&#xff0c;有两个核心概念&#xff1a; 访问者&#xff08;Visitor&#xff09;&#xff1a;定义了对对象结构中每个元素的访问操作。每个访…

病毒繁殖-第12届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第52讲。 病毒繁殖&#xf…

AI大模型之路 第二篇: Word2Vec介绍

你好&#xff0c;我是郭震 今天我来总结大模型第二篇&#xff0c;word2vec&#xff0c;它是大模型的根基&#xff0c;一切NLP都会用到它。 Word2Vec Word2Vec 是一种流行的自然语言处理&#xff08;NLP&#xff09;工具&#xff0c;它通过将词汇表中的每个单词转换成一个独特的…

微服务设计模式:构建现代分布式系统的蓝图

引言 随着软件开发的进步和需求的变化&#xff0c;微服务架构逐渐崭露头角&#xff0c;成为当今分布式系统设计的主流方式。这种架构方式的兴起并非偶然&#xff0c;它为企业提供了构建灵活、可扩展且高效的应用程序的方法。在这篇博客中&#xff0c;我们将深入探讨微服务架构…

计算机网络原原理学习资料分享---第一章/第一节(为有梦想的自己加油!)

计算机网络原理 课程知识框架 计算机网络原理 课程框架 第一章 计算机网络概述 重点 第二章 网络应用 重点 第三章 传输层 重点 难点 第四章 网络层…

代码随想录算法训练营第三十八天|509.斐波那契数、70.爬楼梯、746. 使用最小花费爬楼梯

提示 文章目录 一、斐波那契数二、爬楼梯三、使用最小花费爬楼梯总结 一、斐波那契数 当前数值等于前两个数值相加 class Solution { public:int fib(int n) {//1.确定dp数组及含义//2.确定递推公式//3.dp数组如何初始化//4.遍历顺序//5.举例推导递推公式if (n < 1) retur…

QT系列教程(4) Qt 信号和槽

信号和槽 当我们需要一个界面通知另一个界面时&#xff0c;可以采用信号和槽机制。通过链接信号和槽&#xff0c;当一个界面发送信号时&#xff0c;链接该信号的槽会被响应&#xff0c;从而达到消息传递的目的。 所以我们先创建一个Qapplication Widgets 应用。Creator会为我们…

记录--病理切片图像处理

简介 数字病理切片&#xff0c;也称为全幻灯片成像&#xff08;Whole Slide Imaging&#xff0c;WSI&#xff09;或数字切片扫描&#xff0c;是将传统的玻片病理切片通过高分辨率扫描仪转换为数字图像的技术。这种技术对病理学领域具有革命性的意义&#xff0c;因为它允许病理…

避免上下文切换--Linux原子函数

在现代操作系统中&#xff0c;原子函数是一类特殊的函数&#xff0c;它们能够保证在并发环境中执行的操作是不可分割的。这意味着一旦一个原子函数开始执行&#xff0c;它的操作会在任何其他线程或进程可以介入之前完全完成。这是通过多种机制实现的&#xff0c;包括硬件支持的…

SpringBoot + minio实现分片上传、秒传、续传

什么是minio MinIO是一个基于Go实现的高性能、兼容S3协议的对象存储。它采用GNU AGPL v3开源协议&#xff0c;项目地址是https://github.com/minio/minio。 引用官网&#xff1a; MinIO是根据GNU Affero通用公共许可证v3.0发布的高性能对象存储。它与Amazon S3云存储服务兼容…

在Linux操作系统中,修改文件目录权限常用的命令操作

修改文件的属主或者是属组 命令chown 用户名.用户组名&#xff0c;文件路径 如上图所示&#xff0c;使用命令 chown martin.caiwu /opt/test/1.txt 将文件1.txt的属主修改为martin 。 将文件1.txt的属组修改为caiwu 如上图所示&#xff0c;使用命令chown .jishu /opt/test/…

系统学c#:2、基础语法(关键字、标识符、数据类型、变量、常量、字面量、运算符、类型转换)

关键字&#xff1a; 关键字是编程语言中具有特殊含义的单词或符号&#xff0c;它们通常被编程语言用于表示特定的语法结构、操作或约定。在C#中&#xff0c;关键字具有特定的语法和功能&#xff0c;用于定义语言的基本结构和规则。 以下是一些C#中常用的关键字及其功能&#xf…

【2024官方文档版】React快速入门

系列文章目录 一、快速入门【基础】 文章目录 系列文章目录前言一、快速入门【基础】1. 创建一个组件2. 组件嵌入3.添加样式4.显示数据5.条件渲染6.渲染列表7.响应事件8.更新页面9.使用Hook10.组件间共享数据 小结&#xff1a; 前言 偶然翻开React的官方文档。觉得蛮有意思&a…

自动清理过期备份文件报RMAN-06207和RMAN-06214错误

感谢您关注“数据库运维之道”公众号&#xff0c;分享数据库运维技术! 本期将为大家分享“自动清理过期备份文件报RMAN-06207和RMAN-06214错误”的案例。 关键词&#xff1a;RMAN-06207、RMAN-06208、RMAN-06214 今天给客户的Oracle 10g 生产环境做一次健康检查&#xff0c;从…

熟练使用Nacos、GateWay、OpenFeign、Sentinel常用组件

Nacos 面试题&#xff1a; 请简述Nacos是什么&#xff0c;它主要解决了什么问题&#xff1f;Nacos提供了哪些核心功能&#xff1f;Nacos是如何支持服务发现的&#xff1f;如何使用Nacos作为配置中心&#xff1f;Nacos的集群部署是如何实现的&#xff1f; 答案&#xff1a; …