資源描述:
《DSP無刷直流電動(dòng)機(jī)驅(qū)動(dòng)控制程序.docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、2.4無刷直流電動(dòng)機(jī)驅(qū)動(dòng)控制程序//#############################################################################/////無刷電機(jī)控制源程序//TMS320F2812////#############################################################################//==============================================================
2、=======//頭文件調(diào)用//=====================================================================#include"DSP28_Device.h"#include"math.h"#include"float.h"http://=====================================================================//常量附值//==============================================
3、=======================#defineIdc_max3000//電流給定最大值#defineIdc_min0//電流給定最小值//=====================================================================//標(biāo)志位//=====================================================================charIab_Data=0;structFlag_Bits{//bitsdescripti
4、onUint16Send:1;//0串口發(fā)數(shù)Uint16Test:1;//1串口測(cè)試Uint16Vflag:1;//2轉(zhuǎn)速更新Uint16SendEnd:1;//3串口發(fā)送結(jié)束Uint16Sign1:1;//4上一次給定轉(zhuǎn)向標(biāo)志Uint16Sign2:1;//5本次給定轉(zhuǎn)向標(biāo)志Uint16Openint:1;//6啟動(dòng)標(biāo)志Uint16Adfrist:1;//7保留Uint16Spdoff:1;//8保留Uint16Zero:1;//9轉(zhuǎn)速過零標(biāo)志Uint16Mode:3;//10-12保留Uint16Dshow:1;//13保留
5、Uint16Sign:1;//14當(dāng)前轉(zhuǎn)向標(biāo)志};unionFlag_Reg{Uint16all;structFlag_Bitsbit;}FlagRegs;//=====================================================================//全局變量//=====================================================================//串口通信變量unsignedintSci_Rx[8]={0,0,0,0,0,0
6、,0,0};//接收數(shù)據(jù)數(shù)組unsignedintSci_Tx[8]={0,0,0,0,0,0,0,0};//發(fā)送數(shù)據(jù)數(shù)組charT_pointer=0;//發(fā)送數(shù)據(jù)數(shù)組指針charR_pointer=0;//接收數(shù)據(jù)數(shù)組指針charT_length=1;//發(fā)送數(shù)據(jù)長(zhǎng)度charR_length=0;//接收數(shù)據(jù)長(zhǎng)度chara2=0;//控制參數(shù)unsignedintspd_kp=0;//轉(zhuǎn)速環(huán)P參數(shù)unsignedintspd_ki=0;//轉(zhuǎn)速環(huán)I參數(shù)unsignedintid_kp=0,id_ki=0;//電流PI參數(shù)si
7、gnedintspd_given=0;//轉(zhuǎn)速給定signedintspd_given1=0;//轉(zhuǎn)速給定signedintspd_given2=0;//轉(zhuǎn)速給定//控制變量unsignedintcap1=0;//前次換向標(biāo)志位unsignedintcap2=0;//本次換向標(biāo)志位unsignedintintruptcount=0;//定時(shí)器1下溢中斷次數(shù)unsignedintspeed_given=1000;//轉(zhuǎn)速給定signedintIdc_given2=0;//算得本次電流給定值signedintspeed_e1=0;/
8、/前次轉(zhuǎn)速誤差signedintspeed_e2=0;//本次轉(zhuǎn)速誤差signedintIa_e1=0;//前次電流誤差signedintIa_e2=0;//本次電流誤差chart2first=0;signedintCOMP2=0;//裝比較寄存器值//轉(zhuǎn)速反饋