一種基于FPGA的永磁同步電機(jī)控制器的設(shè)計(jì)
3.1.2 NiosⅡ系統(tǒng)軟件設(shè)計(jì)
該系統(tǒng)設(shè)計(jì)的軟件程序主要在Nios IED軟件中編輯調(diào)試,實(shí)現(xiàn)按鍵中斷程序,按鍵如下:reset(復(fù)位),start/stop(啟動(dòng)和暫停),choose(參數(shù)選擇),increase(參數(shù)值的增量),de-crease(參數(shù)值的減量),transmit(參數(shù)的傳輸);并實(shí)現(xiàn)串口通信中斷程序。圖3為NiosⅡ處理器軟件執(zhí)行流程。本文引用地址:http://m.butianyuan.cn/article/226186.htm
這里只給出 stait按鍵中斷軟件程序代碼,而choose,in-crease,decrease,transmit程序與之相同。
int main(void)
{ alL_irq_register(start_IRQ,start_BASE,start_ISR);//按鍵
start的中斷注冊(cè)
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(start_BASE,
0x01);//開(kāi)啟中斷使能;
IOWR_ALTERA_AVALON_PIO_EDGE_CA(start_BASE,
0x00)://清除捕獲寄存器;
?。唤o出start變量(用于啟動(dòng)電機(jī))初始化,并寫(xiě)入輸出
寄存器:其他變量初始化相同;
Unsigned start=0;
. IOWR_ALTERA_AVALON_PIO_data(start_BASE,start);
?。兞繉?xiě)入輸出PIO寄存器;
While()
}
3.2 電機(jī)硬件驅(qū)動(dòng)模塊
電機(jī)硬件驅(qū)動(dòng)模塊實(shí)現(xiàn)clark,park,i_park坐標(biāo)變換,PI調(diào)節(jié)器,SVPWM產(chǎn)生器,轉(zhuǎn)速檢測(cè)等硬件模塊等雙閉環(huán)結(jié)構(gòu)。由于上述各個(gè)模塊設(shè)計(jì)比較簡(jiǎn)單常見(jiàn),因此,這里主要介紹SoPC時(shí)序控制部分。Reset按鍵為全局復(fù)位。復(fù)位后系統(tǒng)軟件從主程序入口開(kāi)始執(zhí)行;而此時(shí)硬件驅(qū)動(dòng)模塊中的兩個(gè)狀態(tài)計(jì)數(shù)器為“-1”。這兩個(gè)計(jì)數(shù)器計(jì)數(shù)時(shí)間對(duì)應(yīng)50μs和1 ms,分別對(duì)應(yīng)于電流環(huán)和速度環(huán)的采樣時(shí)間。一旦檢測(cè)到來(lái)自NiosⅡ處理器的start高電平信號(hào),該信號(hào)作為計(jì)數(shù)使能信號(hào),這兩個(gè)計(jì)數(shù)器從“0”開(kāi)始計(jì)數(shù),計(jì)數(shù)為“0”時(shí)產(chǎn)生一個(gè)高電平脈沖信號(hào),電流環(huán)計(jì)數(shù)器脈沖用于鎖存SVPWM中的Ta,Tb,Tc(三相占空比信號(hào)),并啟動(dòng)A/D轉(zhuǎn)換。速度環(huán)的計(jì)數(shù)器脈沖鎖存一個(gè)反饋速度信號(hào),然后計(jì)數(shù)器循環(huán)計(jì)數(shù)。
評(píng)論