[发明专利]基于ADRC的无刷直流电机伺服系统软件设计方法在审
申请号: | 202010331087.6 | 申请日: | 2020-04-24 |
公开(公告)号: | CN111510029A | 公开(公告)日: | 2020-08-07 |
发明(设计)人: | 熊威 | 申请(专利权)人: | 合肥工业大学 |
主分类号: | H02P6/17 | 分类号: | H02P6/17;H02P27/08 |
代理公司: | 长沙湘驰达知识产权代理事务所(普通合伙) 43242 | 代理人: | 罗若愚 |
地址: | 230000 *** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 adrc 直流电机 伺服系统 软件设计 方法 | ||
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);
//150MHZ CPU,定时周期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)中使用同一个离散化后的步进值;为了方便调试中修改控制器参数,实际数值在文件中先直接定义;
#define tdh 0.5;
#define tdh0 0.5;
#define tdr 1;
然后在程序中引用,如:
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.b=esob;
ctr1.a1=ctra1;
ctr1.a2=ctra2;
ctr1.b1=ctrb1;
ctr1.b2=ctrb2;
S3、定时中断及AD转换算法:
定时器中断设置为10us一次,主要提供计时功能;如电动机转动1圈时,计算10us中断的次数就可以得到电动机的转速;软件中Count为中断次数,转速公式为:Speed(转/分)=60×105/count;
TMS320F28335的ADC模块是12位带流水线的模数转换器,具有有16个输入通道,既可以配置成两个eCAP模块所需的独立8个通道,也可以级联成一个16通道模块;ADC时钟频率12.5MHz,转换速度快;ADC模块包含12位的ADC转换核心,内含采样/保持电路;ADC模块可以转换的电压为0-3V,采样结果与输入电压的关系为:转换的数字值=4095*(输入模拟电压-ADC)/3;
S4、转子位置计算及开关管状态:
系统采用霍尔元件确定当前转子的位置;在直流无刷电动机的定子上有3个霍尔位置传感器,它们相隔120度分布在定子圆周上;电动机的永磁体转子转动的时候,产生的磁场也随之转动,转动的磁场磁极变化会在霍尔元件上会产生宽180度的输出信号,如图2所示;
DSP通过经过eCAP接口捕捉霍尔元件输出信号,并转化成逆变器的开关管状态表,如图3所示;
S5、速度环自抗扰控制算法:
速度环自抗扰控制是先将输入设定值进行跟踪微分,得到设定速度跟踪值V1和二阶微分值V2,然后将电动机转速和控制量输出反馈到控制器的扩张状态观测器,得到当前输出的跟踪Z1、微分Z2和扰动分量Z3;
在非线性组合(NLSEF)中输出跟踪Z1与设定转速的跟踪V1进行比较,微分Z2和输入微分Z2进行比较,分别获取误差e1和e2,通过非线性组合e1、e2和Z3得到控制量输出,完成一次闭环控制;
ADRC simulink结构图如图4所示;
ADRC 算法框图如图5所示。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥工业大学,未经合肥工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010331087.6/1.html,转载请声明来源钻瓜专利网。