教你三相永磁同步电机隆博戈观测matlab搭建
创始人
2024-05-24 18:27:08
0

一、观测器原理

在这里插入图片描述
对这个原理不懂的小伙伴们,可以去看B站DR_can的视频。后续有空我再将这里细化讲解一下
简而言之:目标就是设计一组K值使得模型估算的Xhat 和 实际的X相等。 Xhat - X收敛于0,即知道了实际的X的值,这就是观测器的基本原理.

二、三相永磁同步电机的基本公式

2.1定子电压方程

在这里插入图片描述

2.2隆博戈观测器的组成

在这里插入图片描述

2.3隆博戈观测的推导

在这里插入图片描述
提问题:
为什么要用隆博戈观测器?
通过隆博戈观测器,主要是为了电机得到alpha,beta轴的反电动势
为什么要得到alpha,beta轴的反电动势?
因为反电动势中蕴含了电机定子电角度信息,如下面:在这里插入图片描述
要弄明白的是模型的输入与输出分别是什么?
模型输入: Ialpha、Ibeta、Ualpha、Ubeta、We
模型输出:Ealpha、Ebeta

2.4隆博戈观测器的离散化

在这里插入图片描述

三、matlab实现隆博戈观测器

第一步:找到subsytem

在这里插入图片描述
建立5个输入口,2个输出口
在这里插入图片描述
建立类似于下面的图:
在这里插入图片描述

需要更加使用matlab的S-function实现的高阶的离散化实现或者上述整个连续模型的实现,请留下评论联系 要收费哦!

五、具体的M0方案实现代码


static int16_t STO_CalcElAngle(CSPD this, void *pInputVars_str)
{pDVars_t pDVars_str = &DCLASS_VARS;  #ifndef FULL_MISRA_C_COMPLIANCYpDParams_t pDParams_str = DCLASS_PARAMS;#endifint32_t wAux, wDirection;int32_t wIalfa_est_Next,wIbeta_est_Next;int32_t wBemf_alfa_est_Next, wBemf_beta_est_Next;int16_t hAux, hAux_Alfa, hAux_Beta, hIalfa_err, hIbeta_err, hRotor_Speed, hValfa, hVbeta;static u16 sOldAngle;Observer_Inputs_t * pInputs;pInputs= (Observer_Inputs_t *)pInputVars_str;/**************************反电动势beta**********************/#ifdef FULL_MISRA_C_COMPLIANCYhAux_Beta = (int16_t)(pDVars_str->wBemf_beta_est/pDVars_str->hF2);#elsehAux_Beta = (int16_t)(pDVars_str->wBemf_beta_est>>pDParams_str->hF2LOG);#endif/************************Ialfa误差获取*************************/#ifdef FULL_MISRA_C_COMPLIANCYhIalfa_err = (int16_t)(pDVars_str->wIalfa_est/pDVars_str->hF1);#elsehIalfa_err = (int16_t)(pDVars_str->wIalfa_est>>pDParams_str->hF1LOG);#endif/***************************Ialfaerrest - Ialfa**********************/hIalfa_err = hIalfa_err - pInputs->Ialfa_beta.qI_Component1;#ifdef FULL_MISRA_C_COMPLIANCYhIbeta_err = (int16_t)(pDVars_str->wIbeta_est/pDVars_str->hF1);#elsehIbeta_err = (int16_t)(pDVars_str->wIbeta_est>>pDParams_str->hF1LOG);#endif/***************************Ibetaerrest - Ibeta**********************/hIbeta_err = hIbeta_err - pInputs->Ialfa_beta.qI_Component2;   /***************************Vbus*Valfa**********************/wAux = (int32_t)(pInputs->Vbus) * pInputs->Valfa_beta.qV_Component1; /***************************Vbus*Vbeta**********************/wAux = (int32_t)(pInputs->Vbus) * pInputs->Valfa_beta.qV_Component2; /**********************alfa 轴观测器********************************/// hF1LOG 作用/*alfa axes observer*/wAux = (int32_t) (pDVars_str->hC1)* hAux;     wIalfa_est_Next = pDVars_str->wIalfa_est - wAux;   // Ialhaest - hc1*IalhpaestwAux = (int32_t) (pDVars_str->hC2) * hIalfa_err;   // Inest = Ialphaest -hc1*Ialhpaest + hC2*(Ialpaest - Ialpha)wIalfa_est_Next += wAux;wAux = (int32_t) (pDVars_str->hC5) * hValfa;    wIalfa_est_Next += wAux;                          //Inest = Ialphaest -hc1*Ialhpaest + hC2*(Ialpaest - Ialpha) + hc5*ValfawAux = (int32_t)  (pDVars_str->hC3)* hAux_Alfa;   //Iestbeta(k+1)  - Iestbeta(k)  = -Rs*Iestbeta(k)*T/Ls  - Eestbeta(k)*T/Ls  + T*Ubeta(k)/Ls  + K2*T*(Ibetaest(k)  - Ibeta(k) )  wIalfa_est_Next -=wAux;                           //Ialpha_nest_next = Ialphaest -hc1*Ialhpaest + hC2*(Ialpaest - Ialpha) + hc5*Valfa - hc3*Ebemfalphaest         wAux = (int32_t)(pDVars_str->hC4) *hIalfa_err;wBemf_alfa_est_Next = pDVars_str->wBemf_alfa_est + wAux;   //  Ebemfalpha_est_next = Ebemfalphaest + hc4*(Ialpaest - Ialpha)//hC6作用wAux = wAux * pDVars_str->hC6;wAux = CLASS_VARS->hElSpeedDpp * wAux;wBemf_alfa_est_Next += wAux;/**********************beta 轴观测器********************************/	/*beta axes observer*/  #ifdef FULL_MISRA_C_COMPLIANCYhAux = (int16_t) (pDVars_str->wIbeta_est/pDVars_str->hF1);#elsehAux = (int16_t) (pDVars_str->wIbeta_est>>pDParams_str->hF1LOG);#endif/*************************hC1的作用*********************************/wAux = (int32_t)  (pDVars_str->hC1)* hAux;wIbeta_est_Next = pDVars_str->wIbeta_est - wAux;/*************************hC2的作用*********************************/wAux = (int32_t) (pDVars_str->hC2) * hIbeta_err;wIbeta_est_Next += wAux;/*************************hC5的作用*********************************/wAux = (int32_t) (pDVars_str->hC5) * hVbeta;wIbeta_est_Next += wAux;  /*************************hC3的作用*********************************/wAux = (int32_t)  (pDVars_str->hC3)* hAux_Beta;wIbeta_est_Next -=wAux;/*************************hC4的作用*********************************/wAux = (int32_t)(pDVars_str->hC4) *hIbeta_err;wBemf_beta_est_Next = pDVars_str->wBemf_beta_est + wAux;//hF3POW2的作用#ifdef FULL_MISRA_C_COMPLIANCYwAux = (int32_t)hAux_Alfa / pDVars_str->hF3;#elsewAux = (int32_t) hAux_Alfa >> pDVars_str->hF3POW2;#endif//hC6的作用:  Ebemfalpha(K+1)  =  Ebemfalpha(k) - hc6*Wspeed*Ebeta(k) + hc4*(Ialpaest - Ialpha)wAux = wAux * pDVars_str->hC6;wAux = CLASS_VARS->hElSpeedDpp * wAux;wBemf_beta_est_Next -= wAux;/**********************************锁相环*********************************/	/*Calls the PLL blockset*/pDVars_str->hBemf_alfa_est = hAux_Alfa;pDVars_str->hBemf_beta_est = hAux_Beta;hAux_Alfa = (int16_t)(hAux_Alfa * wDirection);hAux_Beta = (int16_t)(hAux_Beta * wDirection);/***************************锁相环求取转速********************************///#ifdef PLL_ANGLE	hRotor_Speed = STO_ExecutePLL(this, hAux_Alfa, -hAux_Beta);STO_Store_Rotor_Speed(this, hRotor_Speed);/***************************转速积分求取角度********************************/CLASS_VARS->hElAngle +=hRotor_Speed;/*********************更新值的列表***********************************/      /*storing previous values of currents and bemfs*/pDVars_str->wIalfa_est = wIalfa_est_Next;pDVars_str->wBemf_alfa_est = wBemf_alfa_est_Next;pDVars_str->wIbeta_est = wIbeta_est_Next;pDVars_str->wBemf_beta_est = wBemf_beta_est_Next;/***********************返回电角度**********************************/return (CLASS_VARS->hElAngle);
}

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...