一種嵌入式運(yùn)動(dòng)控制器的實(shí)現(xiàn)
軟件設(shè)計(jì)采用模塊化設(shè)計(jì)方法,程序的總體結(jié)構(gòu)采用以數(shù)據(jù)管理和位置速度控制為主,以I/O端口控制、邏輯控制、插補(bǔ)運(yùn)算等為中斷任務(wù)或子函數(shù)任務(wù)的形式。位置速度控制主要負(fù)責(zé)對(duì)實(shí)時(shí)運(yùn)動(dòng)狀態(tài)的監(jiān)控與調(diào)節(jié);I/O端口控制主要負(fù)責(zé)掃描輸入端口、設(shè)置輸出端口等輔助性任務(wù)。
DSP控制程序主要由一個(gè)定時(shí)中斷構(gòu)成,主程序啟動(dòng)后,首先完成對(duì)TMS320F2812的初始化及系統(tǒng)的一些基本配置,并處于等待狀態(tài)。運(yùn)動(dòng)控制功能是在伺服中斷服務(wù)程序中實(shí)現(xiàn)的。主程序和伺服中斷服務(wù)程序基本流程如圖4所示。
FPGA主要完成運(yùn)動(dòng)控制器的精插補(bǔ)功能,采用數(shù)字積分法進(jìn)行插補(bǔ)。把數(shù)字積分法分為3個(gè)狀態(tài):
(1)狀態(tài)WAIT,等待插補(bǔ)信號(hào);
(2)狀態(tài)L1,判斷總的脈沖數(shù);
(3)狀態(tài)L2,積分累加器累加一次,如有溢出,相應(yīng)的輸出脈沖為高電平,剩余累加次數(shù)減1。
數(shù)字積分法的有限狀態(tài)機(jī)如圖5所示。
觸發(fā)條件T1:沒有啟動(dòng)信號(hào),下一狀態(tài)為WAIT,無操作;
觸發(fā)條件T2:有啟動(dòng)信號(hào),下一狀態(tài)為L1,操作為初始化各寄存器,置忙信號(hào);
觸發(fā)條件T3:剩余累加次數(shù)大于0,下一狀態(tài)為L2,操作為各軸輸出脈沖為低電平;
觸發(fā)條件T4:剩余累加次數(shù)為0,下一狀態(tài)為WAIT,操作為各軸輸出脈沖為低電平,清忙標(biāo)志;
無觸發(fā)條件:下一狀態(tài)為L1。
具體實(shí)現(xiàn)方法為:時(shí)序電路產(chǎn)生的插補(bǔ)脈沖作為此模塊的累加脈沖,每累加1次,剩余累加次數(shù)減1。當(dāng)剩余累加次數(shù)為0時(shí),此次插補(bǔ)過程結(jié)束。
4 結(jié)語
該運(yùn)動(dòng)控制器的結(jié)構(gòu)設(shè)計(jì)可以模塊化和易于擴(kuò)展,這樣可以滿足用戶的各種需求。在軟件部分中,采用有限狀態(tài)機(jī)的插補(bǔ)方法,在插補(bǔ)速度處理環(huán)節(jié)做了優(yōu)化,使脈沖輸出更加穩(wěn)定。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)伺服電機(jī)相關(guān)文章:伺服電機(jī)工作原理
評(píng)論