梁磊磊,何高清
(合肥工業大學 機械工程學院,安徽 合肥 230009)
插補算法的質量直接影響數控系統的精度和速度, 是數控機床的重要技術指標。插補器是數控系統用來完成運動軌跡擬合的程序或硬件。數控系統的插補算法大致分為:脈沖當量法與數字積分法[1]。(1)脈沖當量法適用對速度與精度要求不高,以步進電機為主要控制對象的開環數控系統[2];而現在的數控系統大都采用數字積分法插補,相較于脈沖當量插補,數字積分法擁有更高的插補速度與精度。(2)數字積分法包括粗插補與精插補,其中粗插補是將給定的軌跡分割為較大的段,完成插補的預處理;精插補是將粗插補算出的直線段再細分,進行插補運算,并形成最后的脈沖輸出,從而精確地控制電機的運動。精插補的關鍵在于實現輸出脈沖的均勻化,若只采用CPU完成精插補,則會消耗CPU大量的時間資源,影響其他通訊與控制程序的執行,降低系統的實時性。為了提高系統的實時性,同時完成輸出脈沖均勻化的運動控制,當前主流的解決方案是由主CPU完成粗插補,再由CPLD、FPGA或運動控制卡等模塊,獨立完成精插補程序[3-8]。但是,這種結構增加了控制系統的硬件與軟件的復雜度,開發難度大,不利于在空間要求高的緊湊型數控系統中使用。
本研究提出一種基于同步異構DSP的CLA模塊的脈沖均分插補器(CLA是TMS320F28377芯片中可以獨立于CPU運行的內嵌模塊,通過主控制器與CLA模塊并行處理任務,即主控制器發送指令觸發CLA軟中斷,CLA模塊上運行脈沖均分算法執行精插補器的任務,輸出脈沖;這種結構無需外接其他控制組件,可降低系統的復雜度,提高系統的可靠性與實時性[9])。
內置于同步異構DSP的模塊,通過引入并行處理的功能,擴展了主CPU的能力,用于對時間要求嚴格的控制,實現了更快的系統響應和更高頻率的控制回路;通過將CLA用于對時間敏感的關鍵任務,可以釋放主CPU去執行其他系統任務和通信,從而提高了系統的實時性。
目前,為了實現精插補過程中,保持輸出脈沖的均勻化,同時不降低系統的實時性,往往采用CPU外接運動控制模塊來實現。相較于傳統的解決方案,采用同步異構數字信號處理器的CLA模塊來實現脈沖均分算法,具有以下優勢:
(1)CLA模塊與CPU共用系統時鐘源,即擁有相同的時鐘速率,無需為外置模塊配置獨立的時鐘信號源;
(2)CLA模塊建立于獨立的構架,其任務由CPU軟件觸發或由硬件中斷觸發,無需配置復雜的數據與控制總線;
(3)CLA模塊擁有GPIO等外設的操作權限,這些權限由CPU分配給CLA,因此CLA可以繞過CPU直接控制CPIO,不必通過CPU來控制運動控制模塊輸出脈沖,減少了消息傳遞的跨度,提高了系統的可靠性與實時性;
(4)CLA模塊與CPU的程序都可以采用C語言編寫,且可以在相同的開發環境下進行程序的編寫、調試與下載,降低了開發難度,提高了開發效率與系統的可維護性。而如DSP+FPGA、ARM+CPLD等方案,需要針對每個主芯片,采用不同的開發方式與環境[10],難度較大的VHDL等硬件描述語言,更是增加了控制系統的研發成本與時間。
精插補脈沖均勻化算法是服務于數字積分法的精插補部分。由于計算機系統是離散的,在精插補的過程中,直線段細分的結果可能得不到整型數,導致計算機無法處理。在計算機中,最直接的方法是對結果進行取整,但這樣會導致在每個插補周期脈沖周期偏小,即脈沖周期內會有一段時間沒有脈沖產生,即為空行程,從而導致了脈沖不均勻,會對電機運行的穩定性產生消極的影響。
以插補周期為4 ms, GPIO輸出脈沖最小翻轉時間為1 us為例,則有:
(1)
式中:Nmax—插補周期內的最大脈沖數;T1—插補周期時間;Tmin—輸出脈沖最小翻轉時間。
插補周期內的脈沖周期為:
(2)
式中:N—插補周期內輸出的脈沖數量。
脈沖輸出的時間占插補周期的比值可以量化輸出脈沖均勻化的水平,其值愈小,則輸出脈沖愈不均勻,其數學表述為:
(3)
式中:μ—脈沖不均勻水平;δ—脈沖均勻化水平。
通過式(3),可得脈沖不均勻水平μ與脈沖數N的關系,如圖1所示。

圖1 脈沖不均勻水平μ與脈沖數N的關系
由圖1可知:在脈沖數N=1 001時,脈沖不均勻水平μ可達到最高值0.499 5;且在N的多數取值中都出現了脈沖不均勻現象,故有必要采取算法消除脈沖不均勻的現象。
通常情況下,若輸出脈沖的周期變化小于驅動器允許脈沖輸入的最小周期時,就可以認為輸出脈沖周期是均勻的。以此為依據,在插補周期內,設置2個脈沖周期,兩者之間相差1個輸出脈沖最小周期,即驅動器允許脈沖輸入的最高頻率為 500 kHz,則有方程組:
(4)
解得:
(5)
式中:TP1—脈沖周期1;N1—周期為TP1的脈沖數;TP2—插補周期2;N2—周期為TP2的脈沖數。
將TB=2 us與T1=4 ms代入式(5),可得:
(6)
本文通過設置這2個插補周期TP1與TP2,進行精插補運算,可以在算法層面徹底消除脈沖輸出脈沖不均勻的現象。
基于同步異構DSP的CLA模塊,本文構建的雙脈沖周期精插補脈沖均勻化算法的硬件系統結構圖如圖2所示。

圖2 硬件系統結構
由圖2可知:控制系統同時為CPU與CLA提供時鐘源與存儲空間,通過主CPU配置定時器2的定時中斷,為CLA模塊提供插補的基準頻率,觸發CLA模塊來執行精插補運算。同時,控制系統分配給CLA模塊控制GPIO的權限,用來輸出插補的脈沖。
TMS320F28377的定時器1的定時中斷周期設置為4 ms,用于提供插補周期,由主CPU來執行該中斷服務程序;定時器2的定時中斷周期為1 us,為最小脈沖的電平翻轉時間,即基準頻率,由此得出精插補器輸出的最小脈沖周期為2 us。
CLA的插補任務由定時中斷來觸發,在定時器2的每個定時中斷服務程序中,CLA可以選擇脈沖的發送使能或停止,從而控制輸出脈沖的周期;執行精插補程序變量存儲在CPU與CLA的共享內存區域,CPU與CLA都可以直接讀取與修改這些變量,以加快數據傳輸的速度。
在每個插補周期中,精插補中2個插補周期的長度與脈沖數,由主CPU計算得出,再傳遞給CLA,這部分的C語言源程序如下:
PulseA=2 000/N;
PulseB=PA+1;
CountA=(PulseA+1)*N-2000;
CountB=2 000-PulseA*N;
其中:N—插補周期內需要輸出的脈沖數;PulseA—脈沖的電平翻轉時間1;PulseB—脈沖的電平翻轉時間2;CountA—翻轉時間為PulseA的脈沖計數;CountB—翻轉時間為PulseB的脈沖計數。
使用CLA模塊,實現脈沖均分算法的流程簡圖如圖3所示。

圖3 脈沖均分算法的流程簡圖
由圖3可知:CLA通過接受主CPU通過共享內存傳遞過來的參數,來執行精插補。
當一個插補周期開始時,設置運行位為真,CLA便以定時器2的定時中斷為基準,開始執行2個插補周期與脈沖數的插補指令,插補完成以后,以狀態位置位來通知主CPU當前的插補周期任務已經完成,CLA接著開始等待下一個插補周期的任務。
本文使用CCS(code composer studio)軟件的在線調試功能,以TMS320F28377S為硬件實驗平臺,在插補周期為,GPIO輸出脈沖的最小周期為的條件下,選取插補周期內輸出的脈沖數N=1 001與667這兩個會導致脈沖不均勻水平較大的取值,進行單脈沖周期精插補算法,并與基于CLA的雙脈沖周期精插補算法進行對比實驗。
當N=1 001時,使用單脈沖周期精插補算法后,脈沖在插補周期內的分布情況如圖4所示(這種情況下脈沖分布的不均勻程度最嚴重,空行程時間占據了脈沖周期的49.95%)。

圖4 當N=1 001時使用單脈沖周期精插補算法后脈沖在插補周期內的分布情況
由圖4可知:在整個插補周期內,脈沖只分布在0~2 ms這一時間段,在該時間段內已經輸出了1 001個脈沖;在2 ms~4 ms時間段內沒有脈沖輸出,即空行程時間占脈沖周期的比例約為50%。由此可見,在誤差允許的范圍內,該結果與理論結果(空行程時間占據了脈沖周期的49.95%)相符合。
當N=667時,使用單脈沖周期精插補算法后,脈沖在插補周期內的分布情況如圖5所示。

圖5 當N=667時使用單脈沖周期精插補算法后脈沖在插補周期內的分布情況
由圖5可知:在整個插補周期內,閑置時間占據了脈沖周期的比例約為1.33/4=33.25%。由此可見,在誤差允許的范圍內,該結果與由式(3)得出的理論值33.33%相符合。
這些實驗結果證明,采用單脈沖周期精插補算法會出現輸出脈沖分布不均勻的情況。
理論上,采用改進的雙脈沖周期精插補脈沖均勻化算法后,在的取值范圍內,脈沖輸出時間都會占據整個插補周期的100%,從而可以消除輸出脈沖不均勻的現象。
由式(6)可得,當N=1 001、667時,脈沖均分算法的運行參數如表1所示。

表1 當N=1 001、667時脈沖均分算法的運行參數
當N=1 001時,使用雙脈沖周期精插補算法后,脈沖在插補周期內的分布情況如圖6所示。
當N=667時,使用雙脈沖周期精插補算法后,脈沖在插補周期內的分布情況如圖7所示。

圖6 當N=1 001時使用雙脈沖周期精插補算法后脈沖在插補周期內的分布情況

圖7 當N=667時使用雙脈沖周期精插補算法后脈沖在插補周期內的分布情況
從圖(6,7)可以看出:在N=1 001與667的情況下,輸出脈沖占據了插補周期的全部時間,沒有空行程,達到了輸出脈沖均勻化的效果。
當N=1 001,使用雙脈沖周期精插補算法時,脈沖在插補周期起始時間段的輸出波形如圖8所示。

圖8 N=1 001時使用雙脈沖周期精插補算法時脈沖在插補周期起始時間段的輸出波形
由圖8可知:當N=1 001時,輸出脈沖由起始2個周期為2 us的脈沖與后續周期為4 us的脈沖組成。
當N=667,使用雙脈沖周期精插補算法時,脈沖在插補周期起始時間段的輸出波形如圖9所示。

圖9 N=667時使用雙脈沖周期精插補算法時脈沖在插補周期起始時間段的輸出波形
由圖9可知:當N=667,輸出脈沖由起始1個周期為4 us的脈沖與后續周期為6 us的脈沖組成。
將以上結果與表1中的數據相比較可知,脈沖均分算法的實際輸出結果與理論的一致,說明該算法在實際硬件中能夠正確運行,且達到了預期的效果。同時,實驗結果說明了能夠基于同步異構DSP的CLA模塊的硬件結構,實現雙脈沖周期精插補脈沖均分算法,使插補周期中沒有閑置的空行程,達到了輸出脈沖均勻化的目的。
本研究通過脈沖均分算法,借助同步異構DSP的CPU與CLA協同處理任務的能力,設計了數控系統中用于運動控制的精插補器,實現了插補過程中脈沖的均勻化輸出。
該系統硬件與軟件結構簡單、穩定可靠,可以在不借助外部邏輯電路的情況下(如CPLD、FPGA等),達到與之相同的效率與實時性。
筆者在研究過程中發現該系統還有不足之處,即只在CLA上實現了精插補,粗插補還是由主CPU來完成。因此,在今后的研究中,可以將粗插補器也移植到CLA中,以進一步提高硬件的使用效率與系統的實時性,達到更好的效果。