当前位置: 首页 > news >正文

基于MATLAB的滑膜观测器仿真搭建

多的不说直接上图。

下面是速度的仿真结果。可以看到速度还是跟随的很准的。

下面的是角度的。虽然说有一点偏差但是还是可以的

1.反park变化

这个图是一个 坐标变换模块,具体是将电机在 dq 坐标系下的电压分量(Ud, Uq) 转换到 静止 α-β 坐标系下的电压分量(Ualfa, Ubeta)

这属于 逆 Park 变换(Inverse Park Transform) 的一部分,也叫 dq 到 αβ 变换


🔍 模块功能

✅ 输入:

  1. Ud:d 轴电压(直轴电压)
  2. Uq:q 轴电压(交轴电压)
  3. thetma:转子电角度(即旋转坐标系相对于静止坐标系的夹角)

注意:thetma 是旋转坐标系的角度,通常由位置传感器或无传感器估计得到。

✅ 输出:

  1. Ualfa:α 轴电压(静止坐标系)
  2. Ubeta:β 轴电压(静止坐标系)

📐 数学原理

该变换基于 旋转坐标系到静止坐标系的逆变换

其中:

  • θ=thetma
  • ud​=Ud
  • uq​=Uq

所以:

  • uα​=cos(θ)⋅uq​−sin(θ)⋅ud​
  • uβ​=sin(θ)⋅uq​+cos(θ)⋅ud​

2.逆Clarke+Svpwm

1.扇区判断

所在的扇区完全由Uβ、√3Uα-Uβ以及-(√3Uα +Uβ)决定。为了继续简化计算,做如下定义:

        为了继续简化计算,我们规定:若U>0,则A=1,否则A=0;若U>0,则B=1,否则B=0;若U>0,则C=1,否则C=0。因此,A、B、C共有8种组合。但是,由表4.2可知,扇区计算中不存在A、B、C全是0或者全是1的状态,因此有效的4、B、C组合一共有6种。令N=A+2B+4C,通过A、B、C的不同组合计算出N值,可以很方便地判断矢量所处的扇区。表列出了N值与矢量所在扇区的对应关系。

2.逆clark

用于将 α-β 坐标系下的两相电压 转换为 三相静止坐标系下的电压(a、b、c 相)。这是电机控制中 SVPWM 或传统 PWM 调制的关键步骤。


✅ 功能概述

📌 模块名称:逆 Clarke 变换(αβ → abc)

🔧 输入:

  1. Ualpha:α 轴电压分量
  2. Ubata(应为 Ubeta):β 轴电压分量
  3. PWM周期ts:PWM 调制周期(可能用于后续定时或归一化)
  4. 逆变直流侧电压Ud:直流母线电压(如 311 V)

⚠️ 注意:虽然输入了 Udts,但标准的逆 Clarke 变换本身不依赖这两个参数。它们可能是为了后续 PWM 占空比计算而传递的。

🎯 输出:

  • X → 对应 a 相电压 ua​
  • Y → 对应 b 相电压 ub​
  • Z → 对应 c 相电压 uc​

从 α-β 到 abc 的变换公式为:

3.作用时间判断

✅ 这个仿真是干什么的?

这是一个用于 SVPWM(空间矢量脉宽调制)中,根据扇区编号 N 和 αβ 平面电压矢量分量 X、Y,计算两个基本电压矢量作用时间 T1 和 T2 的模块。

我的理解就是说,逆Clarke变换会计算出Va,Vb,Vc但是,我们只是需要其中是两项来合成我们需要的矢量,所以说,这里会根据扇区来选择我们需要的Va,Vb,Vc以及控制矢量的方向。下面是代码可以加深理解。

    // ==================== 逆Clarke变换 ====================// 将α-β坐标系电压转换为三相电压// Va = Uβ// Vb = -Uβ/2 + Uα*sqrt(3)/2// Vc = -Uβ/2 - Uα*sqrt(3)/2epwm->Va = epwm->Ubeta;epwm->Vb = -(epwm->Ubeta >> 1) + ((((int32_t)epwm->Ualfa) * 0x0ddb) >> 12);  // 0x0ddb ≈ sqrt(3)/2epwm->Vc = -(epwm->Ubeta >> 1) - ((((int32_t)epwm->Ualfa) * 0x0ddb) >> 12);// ==================== 扇区判断 ====================// 根据三相电压的符号判断扇区if (epwm->Va > 0)  epwm->A = 1; else epwm->A = 0;if (epwm->Vb > 0)  epwm->B = 1; else epwm->B = 0;if (epwm->Vc > 0)  epwm->C = 1; else epwm->C = 0;epwm->sector = epwm->A + (epwm->B << 1) + (epwm->C << 2);  // 扇区号计算// ==================== 时间计算 ====================// 根据扇区计算各相导通时间switch (epwm->sector){case 1:epwm->t1 = -epwm->Vb;  // 扇区1的时间计算epwm->t2 = -epwm->Vc;break;case 2:epwm->t1 = -epwm->Vc;  // 扇区2的时间计算epwm->t2 = -epwm->Va;break;case 3:epwm->t1 = epwm->Vb;   // 扇区3的时间计算epwm->t2 = epwm->Va;break;case 4:epwm->t1 = -epwm->Va;  // 扇区4的时间计算epwm->t2 = -epwm->Vb;break;case 5:epwm->t1 = epwm->Va;   // 扇区5的时间计算epwm->t2 = epwm->Vc;break;case 6:epwm->t1 = epwm->Vc;   // 扇区6的时间计算epwm->t2 = epwm->Vb;break;default:break;}

4.过调制处理

输入信号:

编号名称含义
1T1基本电压矢量 V1 的作用时间(原始计算值)
2T2基本电压矢量 V2 的作用时间(原始计算值)
3TS载波周期(开关周期),即一个 PWM 周期的时间长度

⚠️ 注意:T1 和 T2 是从前面的“扇区选择 + 时间计算”模块输出的原始值,可能大于 TS,这就是“过调制”的表现。

 为什么需要过调制处理?

正常情况(欠调制):

  • 当参考电压矢量落在六边形内时,T1 + T2 ≤ TS
  • 可以直接使用原始 T1、T2 值生成 PWM
  • 输出电压与指令成比例

过调制情况(饱和):

  • 当参考电压矢量超出六边形边界(即超过直流母线电压允许的最大幅值)
  • 计算出的 T1 + T2 > TS
  • 若直接使用会导致:
    • 开关时间超过周期 → 不可能实现
    • 电机输出电压失真
    • 控制失效

所以必须进行“过调制处理”。

5.切换时间

        SVPWM 中“切换时间计算”模块,用于将已经修正过的两个基本电压矢量作用时间 t1、t2,以及载波周期 ts,转换为 三相逆变器各桥臂的开关时刻(即 PWM 的导通/关断时间)。

6.确定输出扇区

        SVPWM 中“确定输出扇区”或“PWM 时序分配”模块,但它并不是用来“判断输入扇区”的,而是根据 已知的扇区 N 和三相 PWM 切换时间 ta、tb、tc,来生成三个中间变量 Tcmp1、Tcmp2、Tcmp3,用于后续的 比较器(Comparator)触发 PWM 波形。

7.PWM信号产生

        SVPWM 中“确定输出扇区”或“PWM 时序分配”模块,但它并不是用来“判断输入扇区”的,而是根据 已知的扇区 N 和三相 PWM 切换时间 ta、tb、tc,来生成三个中间变量 Tcmp1、Tcmp2、Tcmp3,用于后续的 比较器(Comparator)触发 PWM 波形。

7.PWM信号产生

        SVPWM 中“确定输出扇区”或“PWM 时序分配”模块,但它并不是用来“判断输入扇区”的,而是根据 已知的扇区 N 和三相 PWM 切换时间 ta、tb、tc,来生成三个中间变量 Tcmp1、Tcmp2、Tcmp3,用于后续的 比较器(Comparator)触发 PWM 波形。

3.Park+Clarke

        这是一个“三相电流到 dq 坐标系变换”的模块,即 Clarke 变换 + Park 变换的组合,用于电机控制中的矢量变换(坐标变换)

4.SMO

1.Iα,Iβ,Uα,Uβ

        // ==================== 电流值更新 ====================// 滑模观测器部分:如果没有检测到编码器反馈,则使用滑模观测器估计值Angle_SMOPare.Ialpha = current_s.Ialfa;  // 使用实际的α轴电流值Angle_SMOPare.Ibeta  = current_s.Ibeta;  // 使用实际的β轴电流值// ==================== 电压值转换 ====================// 将PWM占空比电压转换为实际的电压值,d轴和q轴电压值需要转换// 使用DCBUSVALUE(直流母线电压)和PWM_PERIOD(PWM周期),1.73205f是sqrt(3),用于将线电压转换为相电压Angle_SMOPare.Valpha = (float)epwm_s.Ualfa * DCBUSVALUE / PWM_PERIOD / 1.73205f;  // 转换为实际电压ValphaAngle_SMOPare.Vbeta  = (float)epwm_s.Ubeta * DCBUSVALUE / PWM_PERIOD / 1.73205f;  // 转换为实际电压Vbeta

实际中使用 Clarke计算出来的Iα,Iβ,Uα,Uβ作物观测器的输入。

2.反电动势计算

✅ 输入信号:

编号名称含义
1Ualfa_betaαβ 坐标系下的定子电压(即 
2Ialfa_betaαβ 坐标系下的定子电流(即 

⚠️ 注意:这些是经过 Clarke 变换后的两相静止坐标系量,单位为 V 和 A。

3.正反切

http://www.dtcms.com/a/618348.html

相关文章:

  • 学生评教|高校评教|基于SpringBoot+vue高校学生评教系统 (源码+数据库+文档)
  • 深圳网站开发外包网站登录系统源码
  • wordpress acg站一个网站的建设需要哪些流程图
  • 40.华为云企业网站上云部署核心服务功能与用法总结
  • 推荐微商城网站建设河北邯郸大风
  • 中间件设计规范及安装手册
  • 网站开发合同预期中国百强城市榜单发布2021
  • Vgent:基于图的多模态检索推理增强生成框架GraphRAG,突破长视频理解瓶颈
  • MATLAB基于RBF神经网络与DE-NSGAII算法的钢轨闪光焊工艺参数优化
  • Vue3 watch 家族:watch、watchEffect、watchPostEffect 全梳理
  • 仿RabbitMQ实现消息队列(四)--sqlite3与gtest快速上手
  • 昆明网站建设_云南网站建设有网址的公司
  • 做网站后面维护要收钱吗如何做品牌运营与推广
  • 网络安全 | 深入解析CSRF攻击与防御实战
  • 动态网站发布部署核心问题详解
  • 基于RTT调试接口的项目适配性的lib库化实现与工程应用
  • 解决Blender新加面后不跟随骨骼移动(骨骼权重的绘制)
  • 深圳光明网站建设今天福州发生的重大新闻
  • Android 自定义「阶段进度条(步轴)」实践
  • 【第三阶段-核心功能开发:UI进阶】第七章:主题系统-就像室内设计师
  • discuz 手机网站wordpress 搜索自定义数据表字段
  • CC++链接数据库(MySQL)超级详细指南
  • 苍穹外卖 —— 数据统计和使用Apache_POI库导出Excel报表
  • 昆明好的网站制作网站价格评估 优帮云
  • 如何查询SQL Server数据库服务器的IP地址
  • 开源:开源协议从入门到落地
  • 网站域名要怎样规划佛山做外贸网站案例
  • 网站建设找导师蓝林月租网站空间
  • 2025 IntelliJ IDEA 2025最新免费安装教程
  • Numpy数值分析库实验