FOC无感开环启动算法

FOC无感开环启动排除掉高频注入这种直接识别当前转子dq轴的位置直接闭环启动,大部分的常规启动方式就是三段式启动,对齐-强拖-观测器介入-观测器误差稳定后平滑过渡-闭环。

这里就只写出I/F(V/F)启动的角度输出的代码,力矩就是一条y=kx+b的直线,没什么好说的。

这里的逻辑是我搭建的Simulink仿真的逻辑

simulink仿真如下图

相关参数


#define MOTOR_POLE_PAIRS		4	//4对极#define OPEN_LOOP_END_SPEED									300	//RPM
#define OPEN_LOOP_END_TIME									20			//Second
#define OPEN_LOOP_FREQ											0.001f	//1kHz#define OPEN_LOOP_CURRENT                   0.2f      
#define OPEN_LOOP_CURRENT_END								1.1f
#define OPEN_LOOP_VOLTAGE                   0.4f        
#define OPEN_LOOP_VOLTAGE_END								1.1f#define OPEN_LOOP_TORQUE_DURATION						500	//ms

开环启动控制头文件

struct OpenLoopControl
{int8_t CloseLoopFlag;		//指示是否可以切入闭环float StartAngle;				//初始角度,对齐的角度float OpenLoopAngleAcc;	//角加速度float OpenLoopAngleSpeed;	//角速度float OpenLoopElecTheta;	//电角度uint16_t OpenLoopAccCount;	//计数器uint16_t OpenLoopAccTime;	//时间float OpenLoopOutAngle;	//计算出的开环实际角度float OpenLoopTorqueSlop;	//开环力矩斜率float OpenLoopOutTorque;	//计算出的实际力矩,V/F是电压,I/F是电流
};void OpenLoopSlopInit(void);
void OpenLoopCtrl(void);

相关实现

#define PI		3.11415926535f
#define PI_2 (2 * PI)
#define RadGain	2 * PI / 60.0fstatic void OpenLoopTorqueCtrl(void);
static void OpenLoopAngleCtrl(void);struct OpenLoopControl _sOpenLoopHandle;//初始化
void OpenLoopSlopInit(void)
{_sOpenLoopHandle.CloseLoopFlag = 0;_sOpenLoopHandle.OpenLoopOutAngle = 0;_sOpenLoopHandle.OpenLoopOutTorque = OPEN_LOOP_CURRENT;_sOpenLoopHandle.StartAngle = 0;_sOpenLoopHandle.OpenLoopAngleAcc = OPEN_LOOP_END_SPEED * MOTOR_POLE_PAIRS * RadGain / OPEN_LOOP_END_TIME;_sOpenLoopHandle.OpenLoopAccCount = 0;_sOpenLoopHandle.OpenLoopAccTime = (OPEN_LOOP_END_TIME / OPEN_LOOP_FREQ);_sOpenLoopHandle.OpenLoopAngleSpeed = 0.0f;_sOpenLoopHandle.OpenLoopElecTheta = 0.0f;_sOpenLoopHandle.OpenLoopOutAngle = 0.0f;_sOpenLoopHandle.OpenLoopTorqueSlop = (OPEN_LOOP_CURRENT_END - OPEN_LOOP_CURRENT) / OPEN_LOOP_TORQUE_DURATION;
}	//开环曲线计算
void OpenLoopCtrl(void)
{OpenLoopTorqueCtrl();OpenLoopAngleCtrl();_sOpenLoopHandle.OpenLoopOutAngle = fmodf(_sOpenLoopHandle.OpenLoopElecTheta ,PI_2);}	static void OpenLoopTorqueCtrl(void)
{if(_sOpenLoopHandle.OpenLoopOutTorque < OPEN_LOOP_CURRENT_END){_sOpenLoopHandle.OpenLoopOutTorque += _sOpenLoopHandle.OpenLoopTorqueSlop;}else{_sOpenLoopHandle.OpenLoopOutTorque = OPEN_LOOP_CURRENT_END;}
}static void OpenLoopAngleCtrl(void)
{if(_sOpenLoopHandle.OpenLoopAccCount < _sOpenLoopHandle.OpenLoopAccTime){_sOpenLoopHandle.OpenLoopAngleSpeed += _sOpenLoopHandle.OpenLoopAngleAcc * OPEN_LOOP_FREQ;_sOpenLoopHandle.OpenLoopElecTheta += _sOpenLoopHandle.OpenLoopAngleSpeed * OPEN_LOOP_FREQ;_sOpenLoopHandle.OpenLoopAccCount++;}else{_sOpenLoopHandle.OpenLoopElecTheta += _sOpenLoopHandle.OpenLoopAngleSpeed * OPEN_LOOP_FREQ;}
}

该开环启动算法是在1ms的周期执行的实测如下

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

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

相关文章

Android 自定义View 加 lifecycle 简单使用

前言 本文是自定义view中最简单的使用方法&#xff0c;分别进行 ‘onMeasure’、‘onDraw’、‘自定义样式’、‘lifecycle’的简单使用&#xff0c;了解自定义view的使用。 通过lifecycle来控制 动画的状态 一、onMeasure做了什么&#xff1f; 在onMeasure中获取view 的宽和…

《挑战你的控制力!开源小游戏“保持平衡”开发解析:用HTML+JS+CSS实现物理平衡挑战》​

&#x1f4cc; 大家好&#xff0c;我是智界工具库&#xff0c;致力于分享好用实用且智能的软件以及在JAVA语言开发中遇到的问题&#xff0c;如果本篇文章对你有所帮助请帮我点个小赞小收藏吧&#xff0c;谢谢喲&#xff01;&#x1f618;&#x1f618;&#x1f618; 博主声…

浅浅初识AI、AI大模型、AGI

前记&#xff1a;这里只是简单了解&#xff0c;后面有时间会专门来扩展和深入。 当前&#xff0c;人工智能&#xff08;AI&#xff09;及其细分领域&#xff08;如AI算法工程师、自然语言处理NLP、通用人工智能AGI&#xff09;的就业前景呈现高速增长态势&#xff0c;市场需求…

服务器时间同步

方法一 [rootbogon hwh-ansible]# cat time-sync.sh #!/bin/bash # NTP 服务器信息 NTP_SERVER"192.168.42.12" PASSWORD"123456" # 多个 IP 地址 HOSTS("192.168.42.8" "192.168.42.9" "192.168.42.10" "192.168.42…

Android Studio安装与配置详解

Android Studio安装与配置详解 前言 作为一名Android开发者&#xff0c;Android Studio是我们日常开发中最重要的工具。本文将详细介绍Android Studio的安装配置过程&#xff0c;帮助你搭建一个高效的开发环境。 一、Android Studio下载与安装 1.1 下载Android Studio 访问…

在PyCharm开发环境中,如何建立hello.py文件?

李升伟 整理 一、分析 首先&#xff0c;用户可能是刚接触PyCharm或者Python的新手&#xff0c;所以需要从打开软件开始讲起。不过用户可能已经安装好了PyCharm&#xff0c;但也许需要确认是否已经正确安装。不过问题重点在创建文件&#xff0c;可能不需要深入安装步骤。 接下…

es6常见知识点

官方文档&#xff1a;[https://es6.ruanyifeng.com/](https://es6.ruanyifeng.com/) 一、Class 1、Class Class只是一个语法糖,其功能用es5也能实现,但是比es5更符合类的期待 定义: constructor代表构造方法,而this指向new 生成的实例 定义类方法时,可以不使用function 注…

国内外优秀AI外呼产品推荐

在数字化转型浪潮中&#xff0c;AI外呼系统凭借其高效率、低成本、精准交互的特点&#xff0c;成为企业客户触达与服务的核心工具。本文基于行业实践与技术测评&#xff0c;推荐国内外表现突出的AI外呼产品&#xff0c;重点解析国内标杆企业云蝠智能&#xff0c;并对比其他代表…

【无标题】FrmImport

文章目录 前言一、问题描述二、解决方案三、软件开发&#xff08;源码&#xff09;四、项目展示五、资源链接 前言 我能抽象出整个世界&#xff0c;但是我不能抽象你。 想让你成为私有常量&#xff0c;这样外部函数就无法访问你。 又想让你成为全局常量&#xff0c;这样在我的…

给定计算预算下的最佳LLM模型尺寸与预训练数据量分配

给定计算预算下的最佳LLM模型尺寸与预训练数据量分配 FesianXu 20250304 at Wechat Search Team 前言 如果给定了计算预算 C C C&#xff0c;如何分配LLM的模型尺寸 N N N和训练的数据量 D D D&#xff0c;才能使得模型的效果 L L L最好呢&#xff1f;笔者在此介绍一篇经典的文…

青训营:简易分布式爬虫

一、项目介绍 该项目是一个简易分布式爬虫系统&#xff0c;以分布式思想为基础&#xff0c;通过多节点协作的方式&#xff0c;将大规模的网页抓取任务分解&#xff0c;从而高效、快速地获取网络数据 。 项目地址&#xff1a;https://github.com/yanchengsi/distributed_crawle…

任务9:交换机基础及配置

CSDN 原创主页&#xff1a;不羁https://blog.csdn.net/2303_76492156?typeblog 一、交换机基础 交换机的概念&#xff1a;交换机是一种网络设备&#xff0c;用于连接多台计算机或网络设备&#xff0c;实现数据包在局域网内的快速交换。交换机基于MAC地址来转发数据包&#x…

YOLOv8改进------------SPFF-LSKA

YOLOv8改进------------SPFF-LSKA 1、LSAK.py代码2、添加YAML文件yolov8_SPPF_LSKA.yaml3、添加SPPF_LSKA代码4、ultralytics/nn/modules/__init__.py注册模块5、ultralytics/nn/tasks.py注册模块6、导入yaml文件训练 1、LSAK.py代码 论文 代码 LSKA.py添加到ultralytics/nn/…

[Lc(2)滑动窗口_1] 长度最小的数组 | 无重复字符的最长子串 | 最大连续1的个数 III | 将 x 减到 0 的最小操作数

目录 1. 长度最小的字数组 题解 代码 ⭕2.无重复字符的最长子串 题解 代码 3.最大连续1的个数 III 题解 代码 4.将 x 减到 0 的最小操作数 题解 代码 1. 长度最小的字数组 题目链接&#xff1a;209.长度最小的字数组 题目分析: 给定一个含有 n 个 正整数 的数组…

安卓binder驱动内核日志调试打印开放及原理(第一节)

背景&#xff1a; 经常有学员朋友在做系统开发时候&#xff0c;有时候遇到binder相关的一些问题&#xff0c;这个时候可能就需要比较多的binder相关日志&#xff0c;但是正常情况下这些binder通讯的的内核日志都是没有的打印的&#xff0c;因为经常binder通讯太过于频繁&#…

docker 安装达梦数据库(离线)

docker安装达梦数据库&#xff0c;官网上已经下载不了docker版本的了&#xff0c;下面可通过百度网盘下载 通过网盘分享的文件&#xff1a;dm8_20240715_x86_rh6_rq_single.tar.zip 链接: https://pan.baidu.com/s/1_ejcs_bRLZpICf69mPdK2w?pwdszj9 提取码: szj9 上传到服务…

MWC 2025 | 紫光展锐联合移远通信推出全面支持R16特性的5G模组RG620UA-EU

2025年世界移动通信大会&#xff08;MWC 2025&#xff09;期间&#xff0c;紫光展锐联合移远通信&#xff0c;正式发布了全面支持5G R16特性的模组RG620UA-EU&#xff0c;以强大的灵活性和便捷性赋能产业。 展锐芯加持&#xff0c;关键性能优异 RG620UA-EU模组基于紫光展锐V62…

达梦适配记录-检查服务器

service DmServicedmdb status 查看是否开启&#xff0c;没有配置systemctl&#xff0c;查看《DM8_Linux 服务脚本使用手册》2.1.2.2 1 &#xff0e;拷贝服务模板文件&#xff08; DmService &#xff09;到目录&#xff08; /opt/dmdbms/bin &#xff09;&#xff0c;并将新文…

Pipeline模式详解:提升程序处理效率的设计模式

文章目录 Pipeline模式详解&#xff1a;提升程序处理效率的设计模式引言Pipeline的基本概念Pipeline的工作原理Pipeline的优势Pipeline的应用场景1. 数据处理2. DevOps中的CI/CD3. 机器学习4. 图像处理 常见的Pipeline实现方式1. 函数式编程中的Pipeline2. 基于消息队列的Pipel…

STM32单片机芯片与内部115 DSP-FIR IIR低通 高通 带通 带阻 中值 自适应 滤波器 逐个数据实时 样条插值拟合

目录 一、FIR 低通、高通、带通、带阻 1、FIR滤波器特点 2、滤波器结构 3、滤波器系数 4、滤波实现 5、FIR 滤波后的群延迟 二、IIR 低通、高通、带通、带阻 1、IIR滤波器特点 2、滤波器结构 3、滤波器系数 4、滤波实现 5、IIR滤波后的群延迟 三、中值滤波 1、中值…