FOC专题--环路PID算法拆分分析

news2024/12/24 21:25:41

foc中,其实foc算法并不是最难理解的,反而是在其中使用的PID算法,之前我只会套用别人的代码,但并不理解其中的各参数含义,导致在实际调整PI参数的时候,很难调到合适的值。
在实际理解什么是PID算法以及各参数的实际作用意义后,再去调整PI参数时就比较容易了。

只有P参数

在这里插入图片描述
图片截取自慧驱动的讲解视频。
上图列出的是一个电机启动到设定转速的过程,假设整个过程只有P参数作用,且P的值为0.01。设定的目标转速为300r/min。
需要关注的是第6秒的280r/min这个参数,该转速为当提供0.5A电流的时候,电机在克服负载阻力的情况下的实际转速,如果以后的负载不再改变,则在接下来的第7秒,由于第6秒的误差计算只有20了,所以此刻给的输出电流只有0.2A。那么此时的0.2是比0.5小的,在负载不变的情况下,此时是不能维持280r/min的转速的,所以当前转速假设会下降到250r/min。
则在此刻计算出来的误差值变成50,然后到第8秒,转速又上去了,后面就会一直维持这样的情况不变,转速始终是在280的附近波动,不能达到300r/min,就会一直存在这样的误差,也就是稳态误差。

P参数和I参数同时作用

在这里插入图片描述
同样我们分析电机转速的问题。只不过这里是加入了I参数。Ki就是一个积分参数,加入积分运算的目的就是为了消除稳态误差,具体怎么实现的可以参考上图。
假设Kp=0.01;Ki=0.002
第1秒作用的时候,积分累积为0,所以输出只有P作用,输出值为300×0.01=3;
第2秒作用的时候,积分作用,输出有P和I同时作用,输出值为250×0.01+250×0.002=3;可以看到,同样为第2秒,如果只有P作用,则输出是2.5,当PI同时作用,输出变成3,这里的转速也比之前更高。
第3秒作用的时候,积分作用的结果需要加上上一次积分的结果,而不仅仅是此次的积分结果,这里的输出结果同样比只有P作用时的输出高,所以电机继续加速。假设在此时就达到了280r/min。这个280在只有P作用时可是一个稳态转速呦。
第4秒作用的时候,输出值为1.004。然后我们看下只有P作用的时候,达到280r/min的转速时,给出的输出值是0.5左右的,而这里的输出值达到了1.004,那么转速势必会比280r/min高了,所以很轻松的这个稳态误差被缩小了吧!别急,继续分析。
假设第4秒时的转速突破300r/min达到310r/min。那么误差err值就变成负的了。
第5秒作用的时候,输出值变成0.74,此时转速为301,那么误差值就只有1了。这就是I积分作用能实现的效果了。

积分抗饱和(Anti-Windup)

积分抗饱和是一个很重要的部分,往往应用在有积分限幅的场景中。我们先来看下框图
在这里插入图片描述

上图是一个添加了积分限幅的PI计算。从temp到输出out_temp是经过了一个积分限幅。红框部分就是所说的积分抗饱和。
先说说为什么要加这个积分限幅电路
假设有一个电机在正常负载情况下,提供3A的电流转速为3000r/min。现在增加负载,如果要维持3000r/min的转速,假设这个负载很大,那么计算出来的电流值可能会达到100A,那么这个电流值已经超过实际电路器件可以承受的电流值了,为了避免出现这种非正常情况,就增加了这个积分限幅,哪怕实际转速达不到要求,也不能出现故障。
那么,为什么要用这个积分抗饱和呢?
在上面讲解的基础上,假设有一个电机在正常负载情况下,提供3A的电流转速为3000r/min。现在增加负载,此时的转速变成1500r/min,如果要达到3000r/min的转速,电流需要达到5A,此时的积分限幅限制到了3A。所以会出现输出实际达不到5A。而转速会一直有1500的误差,也就是err值会一直为1500,这个err值在每次积分运算中都会参与计算,也就是意味着,积分池的累加会一直增加,这就导致temp的值会一直增加,积分池也无限增加,这个就是不合理的情况。
再看看这里的积分抗饱和,将PI计算输出的temp和积分限幅输出的temp_out作差,这个值再返回到积分池中。
可见,当输出的temp在积分限幅参考之内时,anti-windup是不起作用的,因为temp=temp_out;当temp>temp_out时,会有一个负值累加到积分池中,将积分池削弱。
实现代码参考如下:

/***************************************
current PID 
B is Integral windup gain ,
usually, it is about I gain 
***************************************/
#if 1
void Current_PID_Calc(float ref_temp,float fdb_temp,float* out_temp,CURRENT_PID_DEF* current_pid_temp)
{
  float error;
  float temp;
  error = ref_temp - fdb_temp;
  temp = current_pid_temp->P_Gain * error + current_pid_temp->I_Sum;//这样的一次PID计算不会立即有效,可能需要经过几个反馈循环才能达到目标
  if (temp > current_pid_temp->Max_Output) 
  {
    *out_temp = current_pid_temp->Max_Output;
  } 
  else if (temp < current_pid_temp->Min_Output) 
  {
    *out_temp = current_pid_temp->Min_Output;
  } 
  else 
  {
    *out_temp = temp;
  }
	
  current_pid_temp->I_Sum += ((*out_temp - temp) * current_pid_temp->B_Gain + current_pid_temp->I_Gain * error) *FOC_PERIOD;//FOC_PERIOD

	
}

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

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

相关文章

【C++引用 】

目录 前言一、引用的概念二、使用引用时注意事项三、引用的使用场景及优势四、常引用、引用的权限五、引用和指针的区别 前言 相信大家应该在网上看过这样的段子。 大家都知道鲁迅原名周树人&#xff0c;浙江绍兴人。"鲁迅"是"周树人"的别名或者说是笔名…

TCP版本的 echo server 和 echo client

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Tcp的api展示服务端客户端存在的问题解决问题服务端和客户端的大致流程 前言 上一篇文章我们介绍了UCP的客户端与服务器的一个简单实例,这篇我们简单的来介绍T…

111.【金橘社区1.0】

金橘社区1.0版本 (一)、SpringBoot整合SpringSecurity1.导入依赖2.数据库3.登入表单4. 添加配置类 SecurityConfig5.接口实现类 CkqnUserServiceImpl6.前端认证问题 (二)、SpringBoot整合Ajax1.登入表单2. JavaScript (三)、SpringBoot整合editor.md1.编写页面(1).前端页面(2).…

Windows安装RedisJSON(无需编译)

文章目录 Windows安装RedisJSON下载解压配置文件启动服务启动客户端 Windows安装RedisJSON 下载 打开网址 https://github.com/zkteco-home/RedisJson。 在网页的右上角&#xff0c;点击“Code”按钮&#xff0c;然后选择“Download ZIP”以下载最新版本的RedisJSON。 网盘 …

C6678-控制GPIO输入/输出

C6678-控制GPIO输入/输出 术语寄存器起始地址原理输入输出测试中断功能原理中断原理框图芯片中断控制器原理框图内核中断控制器原理框图中断路由架构一级中断表二级中断表CIC0二级中断CIC1二级中断CIC2二级中断CIC3 中断演示代码参考资料 术语 NMI&#xff1a; 不可屏蔽中断CI…

6、在vscode上利用cmake创建第一个简单C++程序

文章目录 &#xff08;1&#xff09;前期准备工作&#xff1a;即安装对应的环境1&#xff09;在vscode上安装插件&#xff1a;C/C、Cmake、CMake tools2&#xff09;安装Cmake环境&#xff08;这是在前面博客提到的已经安装好gcc等环境的前提下进行的&#xff09; &#xff08;…

Springboot基础学习之(二十二):异步任务和邮件任务

方向一&#xff1a;高效学习方法分享 我认为学习的最好的办法就是做笔记:本人特别喜欢在网上学习一些课堂外的知识&#xff0c;但是如果你没有及时的复习&#xff0c;要想找到自己想要的知识该怎么办呢&#xff1f;对&#xff0c;就是做笔记我在csdn这个app发的所有内容都是笔记…

Android UI布局优化之include、merge与ViewStub标签的巧用方法

前言 在开发中UI布局是我们都会遇到的问题&#xff0c;随着UI越来越多&#xff0c;布局的重复性、复杂度也会随之增长。 相信大家经常听到include、merge、ViewStub这样的标签&#xff0c;官方也提到这三种布局可用于布局的优化。今天就介绍下这三种布局的使用&#xff0c;记…

SRv6项目实践(一):环境与工具介绍

在一切开始之前&#xff0c;首先介绍一下我们要做什么&#xff0c;做这个要有什么基础&#xff0c;以及实现的环境 1&#xff0c;实验目标与实验基础 我们要在图下图所示的拓扑中&#xff0c;完成在如以下拓扑所示的网络中&#xff0c;配合ONOS实现基本的L2L3转发以及SRv6&am…

港联证券|券商再迎利好!这一比例大幅下调,释放300亿资金

券商利好接二连三。 4月10日&#xff0c;即日起下调证券公司转融通保证金份额。资信优质的公司&#xff0c;保证金份额由20%下调至5%&#xff1b;资信杰出的公司&#xff0c;由20%下调至10%&#xff1b;其余公司由25%下调至15%。中证金融预计&#xff0c;保证金份额下调后&…

Linux系统之tomcat的安装方法

Linux系统之tomcat的安装方法一、tomcat介绍1.tomcat简介2.tomcat官网二、本次环境规划三、安装jdk1.下载jdk包2.安装jdk3.检查jdk版本四、安装tomcat1.下载tomcat2.解压tomcat软件包3.设置环境变量4.查看tomcat版本五、启动tomcat1.启动tomcat服务2.检查tomcat服务状态3.访问t…

原来情感可以这样影响用户体验设计

&#x1f525;情绪的基本情况 Emotion&#xff1a;即刻的生理反应&#xff0c; Feeling&#xff1a;物理的或者心理上的&#xff0c;是emotion经过思考后的 Mood&#xff1a;持续时间更长&#xff0c;是一种状态&#xff0c;受到很多因素影响&#xff08;天气、睡眠&#x…

92-TCP三次握手及TCP四次挥手

TCP三次握手及TCP四次挥手1.tcp三次握手(1)tcp的特点(2)tcp三次握手发生在什么阶段(3)tcp协议报头(4)tcp三次握手的流程2.tcp四次挥手(1)tcp四次挥手发生在什么阶段(2)tcp四次挥手的流程(3)能不能将服务器发端发送的ACK和FIN放在一起发送呢1.tcp三次握手 (1)tcp的特点 TCP 协…

十六、市场活动:查看市场活动明细(二)

功能需求 点击市场活动名称链接,跳转到明细页面,查看市场活动明细 -市场活动的基本信息 -市场活动下所有的备注信息 功能分析 流程图 代码实现 一、ActivityRemarkMapper 1.ActivityRemarkMapper接口 /*** 根据市场活动id查询备注*/List<ActivityRemark> selectActivi…

贪吃蛇小项目

1.总体程序 #include <curses.h> #include <stdlib.h> #include <pthread.h> #include <math.h> #include <time.h> struct Snake //贪吃蛇身子节点 {char node; //节点序号int row; //行坐标int column; //列坐标stru…

探索实践低光照场景下YOLOv5s模型上限,融合CBAM注意力机制开发构建基于改进YOLOv5s的低光照条件下目标检测识别分析系统

在现实生活场景里面&#xff0c;很多场景下光线光照条件都是比较差的&#xff0c;比如夜晚、室内等&#xff0c;这时候以往的目标检测模型是否还能够胜任我们所需的目标检测任务呢&#xff1f;这里主要的想法就是基于地光线条件下的数据集来开发构建目标检测系统&#xff0c;探…

Flowable6.x导出/查看/跟踪流程图(续)

书接上回 项目源码仓库 无论是待办、已办&#xff0c;亦或是流转中、已结束的流程实例&#xff0c;通过使用JS绘制SVG格式的交互式流程图&#xff0c;与以上篇博文中三种方式相比&#xff0c;在效果上都具有明显优势。 运行效果如下图所示&#xff1a; 整合、改造Flowable中…

110.【23种设计模式--创建者模式】

Java 23种设计模式 (一)、设计模式相关内容介绍1.软件设计模式概述(1).软件设计模式的产生背景(2).软件设计模式的概念(3).学习设计模式的重要性(4).设计模式分类 2.UML图(1).类图概述(2).类图的作用(3).类图表示法 3.软件设计原则(1).开闭原则 (重写不修改)(2).里氏代换原则 (…

node的安装与卸载

node的安装与卸载 今天遇到个问题 使用npm命令时报错显示栈溢出&#xff0c;所以将node重装了一下&#xff0c; 一.卸载node&#xff1a; 1.在程序与功能里卸载node.js&#xff0c;然后删除node相关文件夹&#xff0c;此次安装我将node安装在C盘里&#xff0c;将他的全局缓存…

10万字信用大数据一体化监管平台建设方案word

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 1.1、 系统主要功能需求分析 XX公共信用信息管理系统的主要业务流程包括信用信息资源编录管理流程、信用信息归集流程、信用信息服务流程和信用信息异议处理流程。 一.1.1…