前言:

为了进一步深入探索电机控制这个领域,找到了一些志同道合的同学一起来进行知识的分享。最近群里投票后续更新内容,票数最多的方向就是模型预测控制;无论这个方向目前是否还是很火,至少应大家需求,工作室请到了一位这个方向研究者来进行分享。

0 文章数学符号定义总览

1、为什么要用模型预测控制?

基础内环的电流调节器是电机控制的基础和核心环节之一,其性能决定了电机电流响应性能,因此电流调节器一直是电机控制领域的研究热点之一。基于三相、两电平的永磁同步电机的控制拓扑如图所示;

通常,电流调节器对采集的电机相电流进行闭环控制,常用的电流、转矩控制方包括:滞环、直接转矩控制、基于PI的矢量控制、模型预测控制等非线性控制、无差拍控制等。基于PI的矢量控制是应用最为广泛的电机控制方法之一,其基本原理是将指令和反馈之间的误差进行积分,得到电压指令,最终使得电流反馈跟踪电流指令。PI控制器通常在频域上设计,按照零极点相消的原则,将闭环电流控制最终等效为一阶惯性环节。根据控制系统理论可知,一阶惯性环节最重要的参数为带宽,带宽决定了系统的响应速度。但是:

基于PI控制器的电流内环性能存在一个关键短板——响应速度不足;

而对于电流调节器环节,其阶跃响应速度是电机控制性能的最核心指标之一, 其性能将直接影响转矩的响应速度,而转矩的响应速度则决定了电机更多的“上层性能”,例如转速、位置响应速度和谐波抑制能力等。为了解决这一问题,学者们提出了无差拍电流预测控制。无差拍模型预测电流控制(Deadbeat Model Predictive Current Control, DB-MPCC)在传统模型预测电流控制(MPCC)的基础上进一步优化,核心思想是在一个控制周期内迫使电流跟踪误差归零,兼具无差拍控制的快速性与MPCC的灵活性。

无差拍控制的基本原理非常简单,将连续域的物理模型离散化得到离散域的物理模型。再根据输入指令、系统参数和反馈直接计算需要的系统输入。对于电压型变换器,根据静止坐标系或者同步旋转d-q轴的离散模型、电流指令和反馈以及电感、电阻等参数直接计算需要的电压指令,再用PWM等效输出该指令电压;因此当所有电机参数均估算正确时,下个周期的实际d-q轴电流与指令电流
完全相等,且没有相位差,也就是说电流指令的响应时间是一个开关周期。这个过程省去传统MPCC的开关状态遍历和成本函数评估环节。其结构如下图所示:

其优势总结为以下几点:

  • 严格的无差拍特性:通过数学推导直接计算所需电压矢量,使电流在下一个采样周期精确跟踪参考值,动态响应速度接近理论极限(比传统MPCC更快)。理论上可实现零稳态误差:消除传统PI控制的积分延迟,对阶跃参考或负载突变的调节时间仅需1-2个控制周期。

  • 计算量降低:用解析解替代遍历搜索:传统MPCC需遍历所有开关状态并评估成本函数,而DB-MPCC通过无差拍方程直接解析计算最优电压矢量,计算量降低50%以上。

  • 较小的系统结构更改:可直接接入SVPWM:这一点关键的优势在于:对传统控制结构的更改非常小,如果从信号流动的角度考虑,仅改变了参考电流到参考电压的转换模块,传统控制结构中其他部分均不需要进行任何改变。DB-MPCC输出的是连续电压矢量而非离散开关状态,可接入SVPWM或SPWM模块生成固定频率的驱动信号,避免传统MPCC开关频率波动导致的谐波问题。

  • 低谐波失真:固定开关频率+PWM:结合PWM调制后,电流谐波频谱更集中,THD(总谐波失真)显著低于开关频率波动的有限控制集MPCC(FCS-MPCC)。

2、一拍误差从而何来?

永磁同步电机控制器中的“一拍误差”(One-Step Delay Error)本质上是数字控制系统固有的离散化延迟物理系统连续时间特性之间的矛盾。讨论这个技术要点时,可以回溯到典型的MCU例如DSP或者STM32等芯片数据手册。下图为DSP28335的EPWM模块数据手册截图,在单周期单采样模式下,底层外设的配置逻辑为:

ePWM模块触发ADC中断——基于采样数据计算控制电压——计算PWM输出计数器比较值;

这其中有个关键点,我们将连续控制过程分散为了以载波周期为单元间隔的离散控制过程,在以上MCU执行的过程中,计算所得的PWM输出计数器值生效为占空比在下一个载波周期的起点(PWM更新在下一个载波周期),这是控制器一拍延迟的来源。ADC进行所处的载波周期也存在生效的占空比,但是该占空比是在上一个载波周期计算得到的。该过程时许示意图如下所示:

2、DPCC 无差拍直接电流预测控制的实现原理

控制目标设定:由于控制器存在一拍的延迟(将载波周期时间Ts定义为一拍),当控制器在 t = kTs 时刻采样,其控制器所得的PWM将在 (k+1)Ts  - (k+2)Ts 载波周期生效,因此控制目标应为时刻为 (k+2)Ts的电流值参考值

反馈电流计算(预测):因控制器所得的PWM将在 (k+1)Ts  - (k+2)Ts 载波周期生效,该PWM的作用起点实则为 (k+1)Ts 时刻的电流;因此反馈电流应为(k+1)Ts时刻的电流值反馈值

2.1 如何计算 (k+1)Ts 时刻的电流

对MCU而言,只能通过ADC模块采集到 kTs 时刻的三相电流反馈值,而

(k+1)Ts 时刻的电流还未出现,无法直接被传感器采样得到,需要基于电机模型进行预测。

永磁同步电机电流模型如下所示:

电流模型微分形式:

电流模型离散表达式子:(用以 k+1 拍电流预测)

2.2 如何计算输出电压

如果从一个控制器黑盒的角度考虑,这个黑盒子的输入就是在得到了 (k+1)Ts 时刻的电流后,即可对输出电压进行计算;其原理如下公式所示:

整体原理如下信号流图所示:

在得到控制需求电压后,将其输出给SVPWM调制模块即可;

3 仿真验证

完成了原理性的学习后,我们对该算法进行仿真验证;

仿真工况:给定转速1000rpm,0.3s施加5N外部负载;

同步的PI调节器的效果:

前文有提到DPCC相对PI最大的优势在于电流跟随的快速性;如下图所示,图中红色曲线为DPCC结果,而蓝色曲线为PI调节器结果;涉及四种电流指令分别为10、8、6、4A,在不同电流指令大小时,DPCC的电流响应速度均由于传统PI调节器;

4 总结与展望

本部分系统阐述了无差拍预测电流控制(DPCC)的核心优势与局限性,深入分析了控制器一拍延迟的产生机理,并基于离散化电流模型推导出DPCC的闭环控制律,最终给出电压指令的显式表达式。通过与传统PI控制器的动态仿真对比,验证了DPCC在电流跟踪速度上的显著提升(响应时间缩短约40%),其阶跃响应可在1-2个控制周期内实现无静差跟踪。

这部分内容主要讲了三件事:

  1. DPCC的优缺点

    • 优点:电流跟踪快,计算简单,开关频率稳。

  2. 控制器为啥会有“一拍延迟”?

    • 数字控制不是实时的,采样、计算、执行都要时间,而电机是连续运行的,电流不能瞬间变,所以会有“慢拍”的情况。

  3. DPCC怎么算电压?效果如何?

    • 公式核心:让下一拍的电流精准追上目标值,电压计算包含电阻压降、耦合补偿和动态调节。

    • 仿真对比:和传统PI比,DPCC电流跟踪快40%,1-2个周期就能跟上,还没静差!

简单总结:DPCC速度快,但得模型准,仿真证明它比PI猛多了!

整提结构如上图所示,此时仅仅只是仿真,仿真中参数都是准确的控制效果必然会好一些。后续章节具体解决如何提高参数鲁棒性的问题。

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

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

相关文章

Youtube双塔模型

1. 引言 在大规模推荐系统中,如何从海量候选物品中高效检索出用户可能感兴趣的物品是一个关键问题。传统的矩阵分解方法在处理稀疏数据和长尾分布时面临挑战。本文介绍了一种基于双塔神经网络的建模框架,通过采样偏差校正技术提升推荐质量,并…

.net8创建tcp服务接收数据通过websocket广播

注册TCP服务器 注册WebSocket中间件 using System.Net; using System.Net.Sockets; using System.Text; using System.Text.Json; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.SignalR.Client; using Microsoft.AspNet…

阅读服务使用示例(HarmonyOS Reader Kit)

阅读服务使用示例(HarmonyOS Reader Kit) Reader Kit到底能干啥? 第一次搞电子书阅读器,真以为就是“读txt显示出来”这么简单,结果各种格式、排版、翻页动效、目录跳转……全是坑。还好有Reader Kit,救了…

ASP.NET Core Web API 实现 JWT 身份验证

在ASP.NET Core WebApi中使用标识框架(Identity)-CSDN博客 因为一般需要和标识框架一起使用,建议先查看标识框架用法 一.为什么需要JWT 我们的系统需要实现认证,即服务端需要知道登录进来的客户端的身份,管理员有管理员的权限,普通用户有普通用户的权限. 但服务…

优化Cereal宏 一行声明序列化函数

Cereal序列化库中宏递归展开的优化方案及技术解析 未优化&#xff1a;参考nlohmann json设计Cereal宏 一行声明序列化函数 宏实现 #include <cereal/cereal.hpp>// 强制二次展开 #define CEREAL_EXPAND( x ) x// 获取宏参数的数量&#xff0c;对应的CEREAL_PASTEn宏NAME…

14-C#的弹出的窗口输入与输出

C#的弹出的窗口输入与输出 1.文件名输入 string fileName Interaction.InputBox("输入保存的文件名", "保存");2.弹窗信息输出 MessageBox.Show("请选择轮询!", "Error", MessageBoxButtons.OK);catch (Exception ex){MessageBox.S…

多模态大语言模型arxiv论文略读(141)

Mini-InternVL: A Flexible-Transfer Pocket Multimodal Model with 5% Parameters and 90% Performance ➡️ 论文标题&#xff1a;Mini-InternVL: A Flexible-Transfer Pocket Multimodal Model with 5% Parameters and 90% Performance ➡️ 论文作者&#xff1a;Zhangwei …

VScode使用usb转网口远程开发rk3588

我使用的是鲁班猫的板&#xff0c;只有一个网口&#xff0c;需要接雷达&#xff0c;因此另外弄了一个usb转网口来连接电脑开发。 在使用vscode或MobaXterm连接板子时&#xff0c;使用主机名与用户名来连接&#xff1a; ssh catlubancat rk那边就直接插入usb转网口以及网线&a…

AUTOSAR图解==>AUTOSAR_AP_EXP_SOVD

AUTOSAR服务导向车辆诊断详解 面向现代化车辆架构的诊断方案 目录 1. 引言 1.1 ASAM SOVD简介1.2 SOVD产生的动机 2. SOVD参考架构 2.1 SOVD网关2.2 诊断管理器2.3 SOVD到UDS转换2.4 后端连接 3. SOVD用例 3.1 SOVD和UDS的共同用例3.2 SOVD特定用例 3.2.1 访问权限3.2.2 软件更…

第八讲:STL简介

1. 什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复的 组件库&#xff0c;而且是一个包罗数据结构与算法的软件框架。 2. STL的版本 a. 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本…

高弹性、高可靠!腾讯云 TDMQ RabbitMQ Serverless 版全新发布

导语 2025年6月起&#xff0c;腾讯云 TDMQ RabbitMQ 版正式推出 Serverless 版本&#xff0c;该版本基于自研的存算分离架构&#xff0c;兼容 AMQP 0-9-1 协议和开源 RabbitMQ 的各个组件与概念&#xff0c;且能够规避开源版本固有的不抗消息堆积、脑裂等稳定性缺陷&#xff0…

Linux 内存调优之 BPF 分析用户态小内存分配

写在前面 博文内容为 使用 BPF 工具跟踪 Linux 用户态小内存分配(brk,sbrk)理解不足小伙伴帮忙指正 😃,生活加油我看远山,远山悲悯 持续分享技术干货,感兴趣小伙伴可以关注下 _ brk 内存分配简单概述 一般来说,应用程序的数据存放于堆内存中,堆内存通过brk(2)系统调用进…

心理测评app心理测试系统框架设计

一、逻辑分析 用户管理逻辑 新用户注册&#xff1a;需要收集用户的基本信息&#xff0c;如用户名、密码、邮箱等&#xff0c;并且要对输入信息进行合法性校验&#xff0c;确保信息完整且符合格式要求。同时&#xff0c;为每个新用户生成唯一的标识符&#xff0c;方便后续数据管…

配置有nvlink的H20A800使用pytorch报错

背景 装有nvlink的h20机器上配置好驱动和cuda之后使用pytorch报错 A800机器同样 (pytorch2.4) rootxx-dev-H20:~# python Python 3.12.0 | packaged by Anaconda, Inc. | (main, Oct 2 2023, 17:29:18) [GCC 11.2.0] on linux Type “help”, “copyright”, “credits” or …

sql的语句执行过程

第一步&#xff1a;客户端把语句发给服务器端执行 当我们在客户端执行SQL语句时&#xff0c;客户端会把这条SQL语句发送给服务器端&#xff0c;让服务器端的进程来处理这语句。也就是说&#xff0c;Oracle 客户端是不会做任何的操作&#xff0c;他的主要任务就是把客户端产生的…

深度学习-分类

深度学习-分类方式 &#xff08;重点&#xff09;一、按数据类型与处理逻辑分类1. 序列数据&#xff08;时序/顺序相关&#xff09;2. 网格状数据&#xff08;空间相关&#xff09;3. 图结构数据&#xff08;非欧几里得结构&#xff09;4. 其他特殊类型数据 &#xff08;重点&a…

C语言---常见的字符函数和字符串函数介绍

目录 前言 1 字符分类函数 2 字符转换函数 3 strlen的使用和模拟实现 3.1 strlen的模拟实现 4 strcpy的使用和模拟实现 4.1 strcpy的模拟实现 5 strcat的使用和模拟实现 5.1 strcat的模拟实现 6 strcmp的使用和模拟实现 6.1 strcmp的模拟实现 7 strncpy函数的使用…

Minio入门+适配器模式(实战教程)

一、安装Minio 1.1 拉取镜像 docker pull minio/minio docker images 1.2创建挂载目录 1.2.1 创建数据目录 mkdir -p /docker-minio/data 1.2.2 创建配置文件目录 mkdir -p /docker-minio/config 1.2.3 设置权限 chmod -R 777 /docker-minio/data /docker-minio/config …

LLaMA-Factory 对 omnisql 进行 ppo dpo grpo nl2sql任务 实现难度 时间 全面对比

在LLaMA-Factory框架下&#xff0c;针对omnisql任务&#xff08;自然语言到SQL生成&#xff09;应用PPO、DPO、GRPO三种算法的实现难度、时间及全面对比如下&#xff1a; 一、实现难度对比 1. PPO&#xff08;近端策略优化&#xff09; 难度&#xff1a;★★☆☆☆&#xff…

Kingbase 数据库中的 sys_guid() 函数报错

解决 Kingbase 数据库中的 sys_guid() 函数报错问题 问题背景 Kingbase 数据库在迁移或使用过程中&#xff0c;可能会遇到 select sys_guid() 函数报错 , 提示函数不存在的情况&#xff0c;这通常是由于以下几种原因造成的&#xff1a; 函数未正确安装或未启用函数参数不符合…