【电力】永磁同步电机-自抗扰控制PMSM ADRC附matlab代码
1 内容介绍
纹波推力扰动,负载扰动,摩擦力扰动和其他不确定性扰动严重影响永磁直线同步电机(PMLSM)控制系统的性能,对控制系统的抗干扰能力提出了更高的要求.本文采用自抗扰控制(ADRC)方法,利用扩张状态观测器估计所有未知扰动作用量并给予实时动态补偿,从而抑制未知扰动实现"自抗扰"控制,同时估计出速度及其微分;跟踪微分器给出了一种计算微分的有效方法,并根据PMLSM的承受能力安排速度指令过渡过程;采用更合适的非线性PD误差反馈率计算控制量.利用基于Matlab/Simulink的xPC Target构建控制系统实验平台,实验结果表明,采用ADRC的PMLSM控制系统具有很强的抗扰性和静动态特性.
2 部分代码
function [sys,x0,str,ts,simStateCompliance] = sfuntmpl(t,x,u,flag)
%SFUNTMPL General MATLAB S-Function Template
% With MATLAB S-functions, you can define you own ordinary differential
% equations (ODEs), discrete system equations, and/or just about
% any type of algorithm to be used within a Simulink block diagram.
%
% The general form of an MATLAB S-function syntax is:
% [SYS,X0,STR,TS,SIMSTATECOMPLIANCE] = SFUNC(T,X,U,FLAG,P1,...,Pn)
%
% What is returned by SFUNC at a given point in time, T, depends on the
% value of the FLAG, the current state vector, X, and the current
% input vector, U.
%
% FLAG RESULT DESCRIPTION
% ----- ------ --------------------------------------------
% 0 [SIZES,X0,STR,TS] Initialization, return system sizes in SYS,
% initial state in X0, state ordering strings
% in STR, and sample times in TS.
% 1 DX Return continuous state derivatives in SYS.
% 2 DS Update discrete states SYS = X(n+1)
% 3 Y Return outputs in SYS.
% 4 TNEXT Return next time hit for variable step sample
% time in SYS.
% 5 Reserved for future (root finding).
% 9 [] Termination, perform any cleanup SYS=[].
%
%
% The state vectors, X and X0 consists of continuous states followed
% by discrete states.
%
% Optional parameters, P1,...,Pn can be provided to the S-function and
% used during any FLAG operation.
%
% When SFUNC is called with FLAG = 0, the following information
% should be returned:
%
% SYS(1) = Number of continuous states.
% SYS(2) = Number of discrete states.
% SYS(3) = Number of outputs.
% SYS(4) = Number of inputs.
% Any of the first four elements in SYS can be specified
% as -1 indicating that they are dynamically sized. The
% actual length for all other flags will be equal to the
% length of the input, U.
% SYS(5) = Reserved for root finding. Must be zero.
% SYS(6) = Direct feedthrough flag (1=yes, 0=no). The s-function
% has direct feedthrough if U is used during the FLAG=3
% call. Setting this to 0 is akin to making a promise that
% U will not be used during FLAG=3. If you break the promise
% then unpredictable results will occur.
% SYS(7) = Number of sample times. This is the number of rows in TS.
%
%
% X0 = Initial state conditions or [] if no states.
%
% STR = State ordering strings which is generally specified as [].
%
% TS = An m-by-2 matrix containing the sample time
% (period, offset) information. Where m = number of sample
% times. The ordering of the sample times must be:
%
% TS = [0 0, : Continuous sample time.
% 0 1, : Continuous, but fixed in minor step
% sample time.
% PERIOD OFFSET, : Discrete sample time where
% PERIOD > 0 & OFFSET < PERIOD.
% -2 0]; : Variable step discrete sample time
% where FLAG=4 is used to get time of
% next hit.
%
% There can be more than one sample time providing
% they are ordered such that they are monotonically
% increasing. Only the needed sample times should be
% specified in TS. When specifying more than one
% sample time, you must check for sample hits explicitly by
% seeing if
% abs(round((T-OFFSET)/PERIOD) - (T-OFFSET)/PERIOD)
% is within a specified tolerance, generally 1e-8. This
% tolerance is dependent upon your model's sampling times
% and simulation time.
%
% You can also specify that the sample time of the S-function
% is inherited from the driving block. For functions which
% change during minor steps, this is done by
% specifying SYS(7) = 1 and TS = [-1 0]. For functions which
% are held during minor steps, this is done by specifying
% SYS(7) = 1 and TS = [-1 1].
%
% SIMSTATECOMPLIANCE = Specifices how to handle this block when saving and
% restoring the complete simulation state of the
% model. The allowed values are: 'DefaultSimState',
% 'HasNoSimState' or 'DisallowSimState'. If this value
% is not speficified, then the block's compliance with
% simState feature is set to 'UknownSimState'.
% Copyright 1990-2010 The MathWorks, Inc.
%
% The following outlines the general structure of an S-function.
%
switch flag,
%%%%%%%%%%%%%%%%%%
% Initialization %
%%%%%%%%%%%%%%%%%%
case 0,
[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;
%%%%%%%%%%%%%%%
% Derivatives %
%%%%%%%%%%%%%%%
case 1,
sys=mdlDerivatives(t,x,u);
%%%%%%%%%%
% Update %
%%%%%%%%%%
case 2,
sys=mdlUpdate(t,x,u);
%%%%%%%%%%%
% Outputs %
%%%%%%%%%%%
case 3,
sys=mdlOutputs(t,x,u);
%%%%%%%%%%%%%%%%%%%%%%%
% GetTimeOfNextVarHit %
%%%%%%%%%%%%%%%%%%%%%%%
case 4,
sys=mdlGetTimeOfNextVarHit(t,x,u);
%%%%%%%%%%%%%
% Terminate %
%%%%%%%%%%%%%
case 9,
sys=mdlTerminate(t,x,u);
%%%%%%%%%%%%%%%%%%%%
% Unexpected flags %
%%%%%%%%%%%%%%%%%%%%
otherwise
DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
end
% end sfuntmpl
%
%=============================================================================
% mdlInitializeSizes
% Return the sizes, initial conditions, and sample times for the S-function.
%=============================================================================
%
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
%
% call simsizes for a sizes structure, fill it in and convert it to a
% sizes array.
%
% Note that in this example, the values are hard coded. This is not a
% recommended practice as the characteristics of the block are typically
% defined by the S-function parameters.
%
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 2;
sizes.NumOutputs = 1;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
%
% initialize the initial conditions
%
x0 = [];
%
% str is always an empty matrix
%
str = [];
%
% initialize the array of sample times
%
ts = [0 0];
% Specify the block simStateCompliance. The allowed values are:
% 'UnknownSimState', < The default setting; warn and assume DefaultSimState
% 'DefaultSimState', < Same sim state as a built-in block
% 'HasNoSimState', < No sim state
% 'DisallowSimState' < Error out when saving or restoring the model sim state
simStateCompliance = 'UnknownSimState';
% end mdlInitializeSizes
%
%=============================================================================
% mdlDerivatives
% Return the derivatives for the continuous states.
%=============================================================================
%
function sys=mdlDerivatives(t,x,u)
sys = [];
% end mdlDerivatives
%
%=============================================================================
% mdlUpdate
% Handle discrete state updates, sample time hits, and major time step
% requirements.
%=============================================================================
%
function sys=mdlUpdate(t,x,u)
sys = [];
% end mdlUpdate
%
%=============================================================================
% mdlOutputs
% Return the block outputs.
%=============================================================================
%
function sys=mdlOutputs(t,x,u)
sys = [];
% end mdlOutputs
%
%=============================================================================
% mdlGetTimeOfNextVarHit
% Return the time of the next hit for this block. Note that the result is
% absolute time. Note that this function is only used when you specify a
% variable discrete-time sample time [-2 0] in the sample time array in
% mdlInitializeSizes.
%=============================================================================
%
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1; % Example, set the next hit to be one second later.
sys = t + sampleTime;
% end mdlGetTimeOfNextVarHit
%
%=============================================================================
% mdlTerminate
% Perform any end of simulation tasks.
%=============================================================================
%
function sys=mdlTerminate(t,x,u)
sys = [];
% end mdlTerminate
3 运行结果
4 参考文献
[1]龙晓军. 基于自抗扰技术的永磁同步电机调速方法研究[D]. 大连海事大学, 2011.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机、雷达通信、无线传感器等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
【电力】永磁同步电机-自抗扰控制PMSM ADRC附matlab代码相关推荐
- 卡尔曼转矩观测_基于卡尔曼观测器的永磁同步电机自抗扰控制
基于卡尔曼观测器的永磁同步电机自抗扰控制 徐书凯, 胡勤丰, 王大伟 [摘 要] 摘 要 : 根据卡尔曼滤波理论建立观测器,对永磁同步伺服系统的负载 转矩进行实时观测,并利用负载转矩的观测值在系统中形 ...
- 2021-02-27 永磁同步电机 自抗扰控制 PI调节器 矢量控制 SVPWM
永磁同步电机 自抗扰控制 PI调节器 矢量控制 SVPWM 算法介绍 算法架构如下所示,其中采用SVPWM矢量控制,id=0.主要包括三个部分:转速环PI调节器,电流环PI调节器,SVPWM算法等. ...
- ADRC(自抗扰控制器)技术附Matlab代码框架
自抗扰控制器 ( Auto/Active Disturbances Rejec ion Controller, ADRC)是韩京清学者提出的,是一种继PID控制器后的一种新型的实用的控制技术. 它不是 ...
- 三相pmsm矢量控制仿真模型_学术简报|永磁同步电机无速度传感器控制离散化方法研究...
北京交通大学电气工程学院.北京纵横机电科技有限公司的研究人员许中阳.郭希铮.邹方朔.游小杰.邱腾飞,在2019年<电工技术学报>增刊1上撰文指出,基于定子电流模型参考自适应的永磁同步电机无 ...
- 永磁同步电机自抗扰无位置传感器控制仿真,同时实现自抗扰和基于eso扩张状态观测器的无位置控制仿真
永磁同步电机自抗扰无位置传感器控制仿真,同时实现自抗扰和基于eso扩张状态观测器的无位置控制仿真. ID:6950670038985136
- PMSM永磁同步电机滑模控制的直接转矩控制改进算法仿真模型,在传统算法上结合滑模控制算法加以改进
PMSM永磁同步电机滑模控制的直接转矩控制改进算法仿真模型,在传统算法上结合滑模控制算法加以改进,基于matlab/simulink搭建,以供参考学习 ID:8150678002556068阳光彩虹小 ...
- 基于非线性观测器的表贴式永磁同步电机 无位置传感器控制
基于非线性观测器的表贴式永磁同步电机 无位置传感器控制 基于非线性观测器的表贴式永磁同步电机 无位置传感器控制 摘要:非线性观测器观测通过sinθ.cosθ的估计值得到位置估计量.与龙格波观测器相比较 ...
- 基于 ESO-PLL 的永磁同步电机无位置传感器控制
基于 ESO-PLL 的永磁同步电机无位置传感器控制 1.PMSM 的无位置传感器控制方法分为两类,一类是适用于零.低速范围的高频注入法,另一类是适用于中.高速范围的观测器法.在中.高速范围,最常见的 ...
- 三相永磁同步电机的矢量控制学习笔记一
三相永磁同步电机的矢量控制学习笔记1 一 内容 三相永磁同步电机CPMSM)是一个强搞合.复杂的非线性系统,为了能够更好地 设计先进的 PMSM 矢量控制算法,建立合适的数学模型就显得尤为重要.本次学 ...
- 永磁同步电机无速度传感器控制(一)——滑模观测器(二)【滑模观测器设计过程】
1.选择滑模观测器参照的数学模型 对于表贴式三相PMSM而言,扩展反电动势的表达式可以被简化为与仅与电机的转速有关.然后将表贴式PMSM的扩展反电动势表达式写下来,进行分析: 从上式可以看出,只要可以 ...
最新文章
- 算法的时间与空间复杂度详解
- php 数组美化_PHP格式化输出数组,一目了然
- 主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)
- NetSetMan IP地址切换工具
- WSGI、uwsgi和uWSGI
- linux C++怎么转java?从云计算切入容易么?
- linux嵌入式平台测试,protobuf-c 在arm linux 嵌入式平台的使用 测试
- Python bin 函数 - Python零基础入门教程
- 作者:李茹姣(1976-),女,博士,中国科学院北京基因组研究所生命与健康大数据中心高级工程师...
- linux配置php项目路径,linux下如何修改php.ini路径
- python 写入excel 日期_详解:Python实现大数据收集至excel的思路大牛分享(建议收藏)...
- Ubuntu 12.04安装及配置vsftp步骤
- Ubuntu引导文件丢失,grub修复(附加重装显卡驱动方法)
- Ubuntu 缩减磁盘空间
- Mac ERROR launching JD-GUI
- 用指针写出strcmp函数
- 宝塔部署uniapp和php后端的经历
- 第 7 篇、Linux C基础 | 变量和常量
- 风哥MySQL数据库视频培训教程大合集(网盘下载.共10套)
- window.requestAnimationFrame Web3D渲染帧率控制
热门文章
- 如何在虚拟机安装鸿蒙os,VirtualBox安装教程
- 安装软件时“应用程序无法启动,因为应用程序的并行配置不正确......”
- SDK接入学习(一):PlayerSetting详解(PC、Mac、Linux)
- 推荐使用金山WPS 2005 !
- Qt QComboBox详解
- linetv_LINE TV台湾版
- 【WiFi】WiFi 5G信道和频宽的对应关系
- 左程云算法课基础06图课程笔记
- 计算机屏幕显示不能全屏,电脑屏幕小软件显示不全
- 【181129】VC++ 屏幕截取(窗口截图、选区截图)、屏幕拾色器、放大镜源代码