电机控制PI调节器(速度闭环-PFC闭环)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

kjipkjIspjeKkeKjeTTkeKku00)()(])()([)((3.60)=kp*e(k)+yn(k+1)=kp*e(k)+ki*e(k)+yn(k)=K1*(kp*e(k)+ki*e(k)+yn(k))//K1为寄存器比例系数,下一程序取64.目的是能转化成MCU调节//****************************************************************************//@Function//Ccallingformat:////intpi_controller32(long*pi_parameter,intreference,intactual)////----------------------------------------------------------------------------//@Description////PI-Controller//derivedfromtransferfunctionG=kp+1/(p*Ti)////e(k)=reference-actualT0=//yn(k+1)=yn(k)+ki*e(k)ki=T0/Ti//y(k+1)=yn(k+1)+kp*e(k)*64//----------------------------------------------------------------------------//Computingtime42CPU-cycle////----------------------------------------------------------------------------//@Returnvalue////int@4Outputofpi_controller64//----------------------------------------------------------------------------//@Parameters////---------------------------Arguments-------------------------------------//reference:referencevalue//actual:actualvalue////structpi_parameter//{//longyn;Integralbuffer//intkp;ProportionalConstant//intki;IntegralConstant//intymin;Limitvaluemin//intymax;Limitvaluemax//};////----------------------------------------------------------------------------//@Date27.11.2004//Conditionoptimizationoff/one//****************************************************************************inlineintpi_controller32(PI_array*pi_parameter,intreference,intactual)//inlineintpi_controller32(int*pi_parameter,intreference,intactual){intretvalue;__asm(\nmovr8,MCW;SaveMCWregister\nmovMCW,#0600h;Setshiftleft\nmov%0,ZEROS;LoadzeroinR9\nCoLOAD%0,%2;LoadAccumulator(High)with%2(reference\nCoSUB%0,%3;error=reference-actual\nCoSTOREr13,MAS;Loaderrorin@R5\nmovr12,[%1+]\nCoLOADr12,[%1+];Loadyn(integralbuffer)inaccumulator\nmovr11,%1;SaveparametersaddresinR1\nmovr12,[r11+];LoadKp(proportionalConstant)inR5\nmovr10,[r11+];LoadKi=T0/Ti(integralConstant)inR6\nCoMACr10,r13;yn=Ki*error+yn\nmovr10,[r11+];Loadynmax(limitvaluemax)\nmovr9,[r11+];Loadynmin(limitvaluemin)\nCoMIN%0,r10;Limitmaxyn\nCoMAX%0,r9;Limitminyn\nCoSTORE%2,MAH;Storeyn-highinR4\nCoSTORE%3,MAL;Storeyn-lowinR3\nmov[-%1],%2;StoreR4inintegralbuffer(High)\nmov[-%1],%3;StoreR3inintegralbuffer(Low)\nCoMULr12,r13;Kp*error\nCoSHL#6;64*Kp*error\nCoADD%3,%2;y=yn+(64*Kp*error)\nmovr10,[r11+];Loadymax(limitvaluemax)\nmovr9,[r11+];Loadymin(limitvaluemin)\nCoMIN%0,r10;Limitmaxy\nCoMAX%0,r9;Limitminy\nCoSTORE%0,MAH;Storey-highin%0(returnregister)\nmovMCW,r8;RestoreMCWregister\n\n:=&w(retvalue)/*outputregisters*/:w(pi_parameter),w(reference),w(actual)/*inputregisters*/:r13,r12,r11,r10,r9,r8/*scratchregisters*/);returnretvalue;}下文使用的是16位定点DSP,在计算中不可避免会产生截断误差,为了防止截断误差的累积,本文采用位置式的PI算法,为了解决上文提到的积分饱和问题,本文采用抑制积分饱和的PI算法:)()()1()()1()()(nUUeeKneKnInInIneKnUspipisatinnnp其中,当max)(UnU时,maxUUs;当min)(UnU时,minUUs;否则)(nUUs式中,sU表示抑制积分饱和PI算法的输出,)(nU表示本次的PI调节器的计算结果,pK表示比例调节系数,iK表示积分系数,satK表示抗饱和系数,)(nIn为本次积分累加和,maxU,minU分别表示PI调节器输出的最大值和最小值,用户可以根据控制量的特性,确定PI调节器输出的最大值和最小值,例如,当控制对象为占空比时,maxU和minU的值可分别设置为1和0。使用这种PI算法,可以将调节器的输出限定在需要的范围内,保证当计算出现错误时也不会使控制量出现不允许的数值。PI调节器的输出具有饱和特性。图3.16表明了这种PI算法的流程图。)1()()(nIneKnUnpmaxUUs?)(maxUnUY?)(minUnUYminUUsNN)(nUUs)(nUUespipisatinneKneKnInI)()1()(RET图3.16抑制积分饱和的PI算法/***************************************************下程序取自FSL洗衣机程序)()()1()()1()()(nUUeeKneKnInInIneKnUspipisatinnnp***************************************************///PI调节器程序段开始,for380vif(Soft_enable_flag==1||Soft_end_flag==1){Bus_Input_ErrorK=BusVoltage_Ref-Sample_Vbus;//Q15,实际采样的电压//添加积分分离算法,保证PI调节器初始上电时不会饱和if(Bus_Input_ErrorK295){VoltageLoop_temp=(Word32)Kp_VoltageLoop*Bus_Input_ErrorK;//比例项}else{VoltageLoop_temp=(Word32)Ki_VoltageLoop*Bus_Input_ErrorK;//Q15+Q15=Q30VoltageLoop_temp=VoltageLoop_temp3;//Q30-Q3=Q27Intergral_VoltageK=VoltageLoop_temp+Intergral_VoltageK_1;//Q27VoltageLoop_temp=(Word32)K_sat_coef*(Duty_output-Voltage_pi_Output);//Q16+Q15=Q31抗饱和系数应该限幅,参照上面流程图VoltageLoop_temp=VoltageLoop_temp4;//Q31-Q4=Q27Intergral_VoltageK=Intergral_VoltageK+VoltageLoop_temp;//Q27//if(Intergral_VoltageKIntergral_Max){Intergral_VoltageK_1=Intergral_Max;//Q27}elseif(Intergral_VoltageKIntergral_Min){Intergral_VoltageK_1=Intergral_Min;//Q27}else{Intergral_VoltageK_1=Intergral_VoltageK;//Q27}VoltageLoop_temp=(Word32)Kp_VoltageLoop*Bus_Input_ErrorK+Intergral_VoltageK_1;//Q12+Q15=Q27,积分项Q27定标}if(VoltageLoop_temp134217728)//Q27定标,限幅值需要重新校正{VoltageLoop_temp=134217728;}if(VoltageLoop_temp-134217728){VoltageLoop_temp=-134217728;}Voltage_pi_Output=VoltageLoop_temp11;//Q27-Q11=Q16if(Voltage_pi_OutputDutyLimit_Up)//Q16{Duty_output=DutyLimit_Up;//Q16}elseif(Voltage_pi_OutputDutyLimit_Down)//Q16{Duty_output=DutyLimit_Down;//Q16}else{Duty_output=Voltage_pi_Output;//Q16}}PPG1_SetRatio16(Duty_output);//设置占空比}

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功