基于ADRC的无刷直流电机伺服系统软件设计方法技术方案

技术编号:25192154 阅读:29 留言:0更新日期:2020-08-07 21:18
本发明专利技术公开了基于ADRC的无刷直流电机伺服系统软件设计方法,属于无刷直流电机技术领域,通过对主程序的设计、中断程序的设计、换相程序以及转速计算程序的设计,软件将电动机转速反馈到控制系统中,控制量输出以PWM方式调节,驱动永磁无刷直流电动机按照设定速度运转,在搭建整体的实验平台,进行了基于PID和ADRC控制算法的无刷直流电机性能比较实验,分析出基于ADRC的无刷直流电机控制系统是有效的;基于ADRC的无刷直流电机控制系统较基于PID的无刷直流电机控制系统有更强的动态响应能力和抗扰动能力,这充分体现了ADRC控制算法的优越性,该系统具有良好的抗扰性能及动态响应性能,工程适用性较强。

【技术实现步骤摘要】
基于ADRC的无刷直流电机伺服系统软件设计方法
本专利技术属于无刷直流电机
,具体为基于ADRC的无刷直流电机伺服系统软件设计方法。
技术介绍
永磁无刷直流电动机既具备交流电动机结构简单、运行可靠、维护方便等优点,又具备直流电动机运行效率高、调速性能好等特性。随着现代电力电子和计算机技术的快速发展,其硬件成本得到了有效控制,其在日常工业领域中的应用日益广泛,如在电动车、伺服驱动器方面应用较广。永磁无刷直流电动机是非线性的多变量系统,数学模型比较难建立。经典的PID控制难以实现精确控制电动机。较先进的模型参考自适应控制、模糊控制和神经网络控制虽然可以有效地提高电动机的运行性能,但是模型参考自适应控制难以应对负载的快速变化;模糊控制由于复杂模糊规则的相互作用,致使控制效果不够理想;而神经网络控制器需要高速的微处理器进行数据运算,硬件实现比较困难。因此,尝试使用自抗扰控制技术(ADRC)研究永磁无刷直流电动机系统的控制器。自抗扰控制技术(ADRC)是一种不依赖于系统模型的新型非线性控制器,它从经典PID控制出发,以误差负反馈方式建立系统闭环控制,利用现代控制理论的观测器理论,建立扩张状态观测器观测系统内部和外部的扰动,然后加入相应的控制量抑制扰动。自抗扰控制技术(ADRC)继承了PID的优点,具有超调低、收敛速度快、精度高、抗干扰能力强等特点,对不确定性的扰动和控制对象内部的自身扰动都具有较强的自适应性和鲁棒性。
技术实现思路
(一)解决的技术问题为了克服现有技术的上述缺陷,本专利技术提供了基于ADRC的无刷直流电机伺服系统软件设计方法,解决了传统PID控制引取输入设定与系统反馈输出之间的误差,增益后作控制信号,当输入设定量变化时得到的误差会以数量级的方式变化,进而引起系统设计的响应快速性与超调性矛盾的问题。(二)技术方案为实现上述目的,本专利技术提供如下技术方案:基于ADRC的无刷直流电机伺服系统软件设计方法,包括以下步骤:S1、软件总体设计:DSP通过eCAP接口捕捉霍尔传感器信号的高低变化,根据信号改变逆变桥路的输出,驱动电动机设计要求运转,12次eCAP中断时,磁极对数为2的电动机转子转动了一圈,此时配合10us计时器的中断次数,就可以计算出电动机的转速。ADRC控制器将PWM占空比作为控制系统的输出,把电动机转速当作控制对象的反馈,与设定转速一起进行控制运算,运算过程是设定转速经过跟踪微分器(TD)计算出输入的一阶跟踪和二阶微分V1、V2,扩张状态观测器通过被控对象的反馈(电动机转速)和控制系统的输出(PWM占空比)得到系统状态的一阶输出跟踪、二阶输出微分和系统干扰,然后通过非线性组合(NLSEF)更新PWM占空比输出。S2、系统初始化:初始化包括两部分,一是DSP芯片初始化,二是电动机主动模块初始化。a、DSP芯片初始化:这段程序是TI公司提供的初始化例程,用作初始化内部模块和器件到默认状态1.initsysctrl();初始化系统控制:PLL,看门狗,使能外围时钟,这个功能在dsp2833x_sysctrl.C文件中实现。2.initgpio();initxintf16gpio();初始化GPI0(通用输入输出接口),这个功能在dsp2833x_gpio.C文件中实现,目的是设置GPI0为默认状态。3.initpiectrl();清除中断向量表,初始化PIE:禁用CPU的中断,初始化PIE控制寄存器为系统默认状态。默认状态是所有PIE中断和标志都清除,该函数是在dsp2833x_piectrl.c中实现。禁用CPU的中断和清除所有的CPU中断标志。IER=0x0000;IFR=0x0000;initpievecttable();功能在dsp2833x_pievect.C中实现。初始化PIE矢量表中断指针和中断服务程序(ISR)。程序将覆盖整个表,有利于程序调试。b、电动机驱动模块初始化初始化定时器,以10us为周期定时中断,之后以该时钟计算电动机转速。InitCpuTimers();//此例中仅初始化CPU时钟ConfigCpuTimer(&CpuTimer0,150,10);//150MHZCPU,定时周期10us,此中断用于判断电动机的转速,为了保证计时的准确性,中断服务程序要尽可能简化,只有一个时钟计数功能StartCpuTimerO();//初始化Cap接口,用来捕捉霍尔传感器信号,当电动机的三个霍尔传感器任//意一个发生变化时,进入中断程序改变开关管状态InitCapl();//初始化PWM生成器,设定载波频率和PWM工作方式EPwmSetup();//初始化AD采样模块InitAdc();//设置中断IER|=M_INT4;IER|=M_INT1;PieCtrlRegs.PIEIER4.bit.INTx1=1;PieCtr1Regs.PIEIER4.bit.INTx2=1;PieCtr1Regs.PIEIER4.bit.INTx3=1;PieCtrlRegs.PIEIER1.bit.INTx6=1;PieCtrlRegs.PIEIER1.bit.INTx7=1;//打开全局中断和实时调试中断EINT;//允许全局中断ERTM;//允许实时调试中断c、ADRC参数设置(1)、跟踪微分器(TD)参数r为速度因子,决定跟踪速度;h0为滤波因子,对噪声进行滤波;h为ADRC系统离散化的计算步进,在扩张状态观测器(ES0)跟跟踪微分器(TD)中使用同一个离散化后的步进值;为了方便调试中修改控制器参数,实际数值在文件中先直接定义。#definetdh0.5;#definetdh00.5;#definetdr1;然后在程序中引用,如:fst1.h=tdh;fst1.h0=tdh0;fst1.r=tdr;(2)扩张状态观测器(ESO)参数ESO中采用fal()函数,对一二三阶状态进行修正,d为fal函数误差上下限,fal函数实现大于d的误差小增益,小于d的误差大增益;a1,b1;a2,b2.是fal函数参数,决定fal函数的曲线形状和增益系数。b是扰动参数,决定抗扰动的增益大小,根据控制对象的模型来决定;b1和b2基本上决定了ESO的性能;基本规律为:b1较小时,z1跟踪输出y较慢,但较大时可能出现振荡;b2一般比b1大,但过大时会引起z1的超调过大;a1越大,a2越小时,反应越快,超调越大。esol.al=esoal;esol.a2=esoa2;eso1.b1=esobl;esol.b2=esob2;esol.b3=e本文档来自技高网...

【技术保护点】
1.基于ADRC的无刷直流电机伺服系统软件设计方法,其特征在于,包括以下步骤:/nS1、软件总体设计:DSP通过eCAP接口捕捉霍尔传感器信号的高低变化,根据信号改变逆变桥路的输出,驱动电动机设计要求运转,12次eCAP中断时,磁极对数为2的电动机转子转动了一圈,此时配合10us计时器的中断次数,就可以计算出电动机的转速;/nADRC控制器将PWM占空比作为控制系统的输出,把电动机转速当作控制对象的反馈,与设定转速一起进行控制运算,运算过程是设定转速经过跟踪微分器(TD)计算出输入的一阶跟踪和二阶微分V

【技术特征摘要】
1.基于ADRC的无刷直流电机伺服系统软件设计方法,其特征在于,包括以下步骤:
S1、软件总体设计:DSP通过eCAP接口捕捉霍尔传感器信号的高低变化,根据信号改变逆变桥路的输出,驱动电动机设计要求运转,12次eCAP中断时,磁极对数为2的电动机转子转动了一圈,此时配合10us计时器的中断次数,就可以计算出电动机的转速;
ADRC控制器将PWM占空比作为控制系统的输出,把电动机转速当作控制对象的反馈,与设定转速一起进行控制运算,运算过程是设定转速经过跟踪微分器(TD)计算出输入的一阶跟踪和二阶微分V1、V2,扩张状态观测器通过被控对象的反馈(电动机转速)和控制系统的输出(PWM占空比)得到系统状态的一阶输出跟踪、二阶输出微分和系统干扰,然后通过非线性组合(NLSEF)更新PWM占空比输出;
S2、系统初始化:初始化包括两部分,一是DSP芯片初始化,二是电动机主动模块初始化;
a、DSP芯片初始化:这段程序是TI公司提供的初始化例程,用作初始化内部模块和器件到默认状态
1.initsysctrl();
初始化系统控制:PLL,看门狗,使能外围时钟,这个功能在dsp2833x_sysctrl.C文件中实现;
2.initgpio();initxintf16gpio();
初始化GPI0(通用输入输出接口),这个功能在dsp2833x_gpio.C文件中实现,目的是设置GPI0为默认状态;
3.initpiectrl();
清除中断向量表,初始化PIE:禁用CPU的中断,初始化PIE控制寄存器为系统默认状态;
默认状态是所有PIE中断和标志都清除,该函数是在dsp2833x_piectrl.c中实现;
禁用CPU的中断和清除所有的CPU中断标志:
IER=0x0000;
IFR=0x0000;
initpievecttable();
功能在dsp2833x_pievect.C中实现;
初始化PIE矢量表中断指针和中断服务程序(ISR);
程序将覆盖整个表,有利于程序调试;
b、电动机驱动模块初始化
初始化定时器,以10us为周期定时中断,之后以该时钟计算电动机转速;
InitCpuTimers();
//此例中仅初始化CPU时钟
ConfigCpuTimer(&CpuTimer0,150,10);
//150MHZCPU,定时周期10us,此中断用于判断电动机的转速,为了保证计时的准确性,中断服务程序要尽可能简化,只有一个时钟计数功能
StartCpuTimerO();
//初始化Cap接口,用来捕捉霍尔传感器信号,当电动机的三个霍尔传感器任//意一个发生变化时,进入中断程序改变开关管状态
InitCapl();
//初始化PWM生成器,设定载波频率和PWM工作方式
EPwmSetup();
//初始化AD采样模块
InitAdc();
//设置中断
IER|=M_INT4;
IER|=M_INT1;
PieCtrlRegs.PIEIER4.bit.INTx1=1;
PieCtr1Regs.PIEIER4.bit.INTx2=1;
PieCtr1Regs.PIEIER4.bit.INTx3=1;
PieCtrlRegs.PIEIER1.bit.INTx6=1;
PieCtrlRegs.PIEIER1.bit.INTx7=1;
//打开全局中断和实时调试中断
EINT;//允许全局中断
ERTM;//允许实时调试中断
c、ADRC参数设置
(1)、跟踪微分器(TD)参数
r为速度因子,决定跟踪速度;h0为滤波因子,对噪声进行滤波;h为ADRC系统离散化的计算步进,在扩张状态观测器(ES0)跟跟踪微分器(TD)中使用同一个离散化后的步进值;为了方便调试中修改控制器参数,实际数值在文件中先直接定义;
#definetdh0.5;
#definetdh00.5;
#definetdr1;
然后在程序中引用,如:
fst1.h=tdh;
fst1.h0=tdh0;
fst1.r=tdr;
(2)扩张状态观测器(ESO)参数
ESO中采用fal()函数,对一二三阶状态进行修正,d为fal函数误差上下限,fal函数实现大于d的误差小增益,小于d的误差大增益;a1,b1;a2,b2.是fal函数参数,决定fal函数的曲线形状和增益系数;
b是扰动参数,决定抗扰动的增益大小,根据控制对象的模型来决定;b1和b2基本上决定了ESO的性能;基本规律为:b1较小时,z1跟踪输出y较慢,但较大时可能出现振荡;b2一般比b1大,但过大时会引起z1的超调过大;a1越大,a2越小时,反应越快,超调越大;
esol.al=esoal;
esol.a2=esoa2;
eso1.b1=esobl;
esol.b2=esob2;
esol.b3=esob3;
esol.b=esob;
esol.d=esob;
(3)非线性组合
PID通过线性累加P、I、D各自输出得到控制量u,ADRC中采用非线性组合(NLSEF)对一阶误差、二阶误差,和扰动误差进行计算得到控制量u;一阶误差、二阶误差通过fal函数实现“大误差小增益,小误差大增益”,扰动误差则单独通过参数b进行设置;a1,a2,b1,b2调节fal函数的响应曲线;非线性组合的误差参数d采用eso的d;
ctrl....

【专利技术属性】
技术研发人员:熊威
申请(专利权)人:合肥工业大学
类型:发明
国别省市:安徽;34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1