曹春臣+何強+孫來業(yè)
摘 要 本文介紹了一種基于STM32與CPLD的雙軸運動控制器。該控制器采用32位微控制器STM32f103VET6完成粗插補計算、數(shù)據(jù)處理、圖形顯示及數(shù)據(jù)通信;采用高速的CPLD完成精確插補及電機的高速與高精度控制。實際測試結(jié)果表明此控制器控制精度高、速度快、運動更加平穩(wěn),能滿足大多數(shù)雙軸聯(lián)動控制場合的需求。
關鍵詞 插補算法;運動控制;STM32;CPLD
中圖分類號:TP2 文獻標識碼:A 文章編號:1671-7597(2014)20-0009-02
運動控制器已經(jīng)從單片機或?qū)S眯酒ˋSIC)作為核心處理器,發(fā)展到了以DSP/ARM和FPGA作為核心處理器的開放式運動控制器。高速、高精度始終是運動控制技術(shù)追求的目標。充分利用高速處理器的計算能力,進行復雜的運動規(guī)劃、高速實時多軸插補、誤差補償,使得運動控制精度更高、速度更快、運動更加平穩(wěn)。根據(jù)應用要求,設計出智能化的運動控制器將成為市場應用的新方向。
1 系統(tǒng)設計方案
本控制器以ST公司的STM32f103VET6芯片和Altera公司的CPLD芯片EPM570T100為控制核心。利用STM32運算速度快處理能力強的特點,實現(xiàn)粗插補計算、數(shù)據(jù)處理、圖形顯示及數(shù)據(jù)通信;利用CPLD較強的邏輯處理能力,實現(xiàn)精確插補及電機的高速與高精度控制。其系統(tǒng)原理框圖如圖1所示。
圖1 系統(tǒng)原理框圖
STM32通過MAX232接口接收上位機控制指令,或以鍵盤輸入的方式輸入圖形輪廓數(shù)據(jù),之后進行相關的算法處理,將計算所得到的初插補參數(shù)傳送到CPLD,由CPLD進行精插補,產(chǎn)生控制兩軸聯(lián)動的脈沖信號,驅(qū)動步進電機運動。
2 系統(tǒng)硬件設計
1)STM32模塊。
STM32F103VET6為32位微控制器,芯片主頻為72 MHz,具有512KBFlash、64KB的SRAM內(nèi)存,支持USB接口、網(wǎng)口、串口等外設,為運動控制系統(tǒng)提供豐富的外圍接口資源支持。
STM32部分需完成接收上位機的控制指令、按鍵輸入輪廓數(shù)據(jù)、完成粗插補算法,顯示當前運行狀態(tài),與CPLD通信等功能。所以STM32芯片的外圍電路有LCD顯示模塊,矩陣鍵盤模塊,串口模塊。
2)CPLD模塊。
CPLD模塊的功能主要通過硬件語言Verilog來實現(xiàn)。CPLD負責與STM32通信,并根據(jù)數(shù)據(jù)實時進行脈沖均勻化處理,產(chǎn)生兩軸方向與脈沖控制信號,最終驅(qū)動步進電機運行。設計的CPLD內(nèi)部架構(gòu)圖如圖2所示。主要由三個模塊組成:①與STM32通信模塊:包括8*10數(shù)據(jù)寄存器與命令接口;②參數(shù)運算寄存器與數(shù)據(jù)控制模塊;③脈沖均勻化處理模塊。
圖2 CPLD內(nèi)部架構(gòu)圖
3)其他電路模塊。
系統(tǒng)其他模塊還有上位機通信模塊、電源模塊等。由于此控制器采用+5 V供電,而STM32F103VET6芯片、EPM570T100芯片、LCD顯示模塊需要3.3 V電壓供電,因此用LM1117系列芯片轉(zhuǎn)換產(chǎn)生3.3 V電源。通信模塊使用MAX3232電平轉(zhuǎn)換與上位機通信,通過串口接收上位機指令,對電機進行相應的控制。
3 系統(tǒng)軟件設計
1)粗插補算法在STM32中的實現(xiàn)。
①插補原理。插補算法有很多,根據(jù)微處理器的本身特點,這里采用數(shù)據(jù)采樣插補法。用一系列首尾相連的微小線段來逼近給定輪廓。每經(jīng)過一個插補周期就進行一次插補計算,求出插補周期內(nèi)各個坐標軸進給量,得出下一個插補點的指令
位置[1]。
②直線插補的算法實現(xiàn)。設插補周期T、輸入進給速度為F、加速度為a、當前速度為Vi、終點坐標為(Xe,Ye)??傻妹總€插補周期的進給步長△L=ViT,所需運動的總長度為L=,X軸和Y軸的位移增量為△x=△L Xe / L,△y=△L Ye / L。插補第i點的動點坐標為X=X+△x;Y=Y+△y。
由此,可以設計出數(shù)據(jù)采樣直線插補軟件流程圖,如圖3所示。
圖3 直線插補軟件流程圖
③圓弧插補。要進行圓弧插補,需要先根據(jù)指令中的進給速度F,計算出輪廓步長L,再進行插補計算。以弦線逼近圓弧,就是以輪廓步長為圓弧長相鄰兩個插補點之間的弦長,由前一個插補點的坐標和輪廓步長,計算后一插補點,實質(zhì)上是求后一插補點到前一插補點兩個坐標軸的進給量△X,△Y。設S(X,Y)為當前點,E(X,Y)為插補后到達的點,進給速度為F,圓半徑為R,則一個插補周期步長△L=F*T,由幾何關系可得,X、Y軸進給量為:
△X =
△Y =
其中,令m=、n=,則上式可以化簡為:
△X=m Y-n X,△Y=m X+n Y
故插補后到達的點E的坐標為X= X+△X,Y= Y-△Y[2]。
由此,可以設計出數(shù)據(jù)采樣插補軟件流程圖,如圖4所示。
圖4 圓插補軟件流程圖
2)STM32與CPLD的通信實現(xiàn)。
STM32與CPLD的數(shù)據(jù)傳輸協(xié)議時序圖5所示,
圖5 數(shù)據(jù)通信時序圖
STM32和CPLD通過10位數(shù)據(jù)總線data進行數(shù)據(jù)傳輸,由start,EN,clock信號進行命令控制。CPLD每4ms在 start信號線上產(chǎn)生一個正脈沖作為STM32中斷信號,STM32在中斷程序中進行數(shù)據(jù)傳輸和下一插補周期數(shù)據(jù)計算。通過使能信號EN、時鐘信號Clock對傳輸數(shù)據(jù)進行控制。
3)精插補算法在CPLD中的實現(xiàn)。
由于在4 ms粗插補周期中各進給軸的進給量在不斷變化,要保證電機進給運動平穩(wěn),必須使各插補周期中輸出脈沖均勻化。為此我們提出一種簡單有效的脈沖均勻化插補算法。
設每個插補周期T內(nèi)所需要輸出的脈沖數(shù)為X,在插補周期T內(nèi),CPLD時鐘產(chǎn)生的脈沖總數(shù)為F,F(xiàn)與X具有以下關系:
F=A*X+B=A(X–B) + (A+1)B (1)
其中A為F/X的商,B為F/X的余數(shù)。
所代表的物理含義是以CPLD時鐘為基準,先以每隔A個時鐘脈沖輸出一個進給脈沖,共輸出X-B個脈沖,然后以每隔A+1 個時鐘脈沖輸出一個進給脈沖,共輸出B個脈沖。這樣,就完成了在插補周期T內(nèi),均勻輸出X個脈沖的任務。
實際研究中,設定插補周期為4 ms與數(shù)據(jù)傳輸時間一樣,保持在數(shù)據(jù)接收與運動控制上的一致性。運動控制的系統(tǒng)時鐘為500 kHz。在一個插補周期T=4 ms中,系統(tǒng)時鐘脈沖數(shù)F=2000。
在Quartues II9.0中的仿真圖如圖6所示。
圖6 精插補輸出脈沖仿真圖
經(jīng)過測試,輸出進給脈沖的速率能穩(wěn)步上升至250 kHz。
參考文獻
[1]劉軍.數(shù)控技術(shù)及應用[M].北京大學出版社,2013.
[2]李莉.數(shù)控系統(tǒng)中圓弧插補算法的改進和實現(xiàn)[J].組合機床與自動化加工技術(shù),2009(7).
[3]王廣炎.張潤孝脈沖均勻化查補方法[J].制造技術(shù)與機床,2000(3).endprint
摘 要 本文介紹了一種基于STM32與CPLD的雙軸運動控制器。該控制器采用32位微控制器STM32f103VET6完成粗插補計算、數(shù)據(jù)處理、圖形顯示及數(shù)據(jù)通信;采用高速的CPLD完成精確插補及電機的高速與高精度控制。實際測試結(jié)果表明此控制器控制精度高、速度快、運動更加平穩(wěn),能滿足大多數(shù)雙軸聯(lián)動控制場合的需求。
關鍵詞 插補算法;運動控制;STM32;CPLD
中圖分類號:TP2 文獻標識碼:A 文章編號:1671-7597(2014)20-0009-02
運動控制器已經(jīng)從單片機或?qū)S眯酒ˋSIC)作為核心處理器,發(fā)展到了以DSP/ARM和FPGA作為核心處理器的開放式運動控制器。高速、高精度始終是運動控制技術(shù)追求的目標。充分利用高速處理器的計算能力,進行復雜的運動規(guī)劃、高速實時多軸插補、誤差補償,使得運動控制精度更高、速度更快、運動更加平穩(wěn)。根據(jù)應用要求,設計出智能化的運動控制器將成為市場應用的新方向。
1 系統(tǒng)設計方案
本控制器以ST公司的STM32f103VET6芯片和Altera公司的CPLD芯片EPM570T100為控制核心。利用STM32運算速度快處理能力強的特點,實現(xiàn)粗插補計算、數(shù)據(jù)處理、圖形顯示及數(shù)據(jù)通信;利用CPLD較強的邏輯處理能力,實現(xiàn)精確插補及電機的高速與高精度控制。其系統(tǒng)原理框圖如圖1所示。
圖1 系統(tǒng)原理框圖
STM32通過MAX232接口接收上位機控制指令,或以鍵盤輸入的方式輸入圖形輪廓數(shù)據(jù),之后進行相關的算法處理,將計算所得到的初插補參數(shù)傳送到CPLD,由CPLD進行精插補,產(chǎn)生控制兩軸聯(lián)動的脈沖信號,驅(qū)動步進電機運動。
2 系統(tǒng)硬件設計
1)STM32模塊。
STM32F103VET6為32位微控制器,芯片主頻為72 MHz,具有512KBFlash、64KB的SRAM內(nèi)存,支持USB接口、網(wǎng)口、串口等外設,為運動控制系統(tǒng)提供豐富的外圍接口資源支持。
STM32部分需完成接收上位機的控制指令、按鍵輸入輪廓數(shù)據(jù)、完成粗插補算法,顯示當前運行狀態(tài),與CPLD通信等功能。所以STM32芯片的外圍電路有LCD顯示模塊,矩陣鍵盤模塊,串口模塊。
2)CPLD模塊。
CPLD模塊的功能主要通過硬件語言Verilog來實現(xiàn)。CPLD負責與STM32通信,并根據(jù)數(shù)據(jù)實時進行脈沖均勻化處理,產(chǎn)生兩軸方向與脈沖控制信號,最終驅(qū)動步進電機運行。設計的CPLD內(nèi)部架構(gòu)圖如圖2所示。主要由三個模塊組成:①與STM32通信模塊:包括8*10數(shù)據(jù)寄存器與命令接口;②參數(shù)運算寄存器與數(shù)據(jù)控制模塊;③脈沖均勻化處理模塊。
圖2 CPLD內(nèi)部架構(gòu)圖
3)其他電路模塊。
系統(tǒng)其他模塊還有上位機通信模塊、電源模塊等。由于此控制器采用+5 V供電,而STM32F103VET6芯片、EPM570T100芯片、LCD顯示模塊需要3.3 V電壓供電,因此用LM1117系列芯片轉(zhuǎn)換產(chǎn)生3.3 V電源。通信模塊使用MAX3232電平轉(zhuǎn)換與上位機通信,通過串口接收上位機指令,對電機進行相應的控制。
3 系統(tǒng)軟件設計
1)粗插補算法在STM32中的實現(xiàn)。
①插補原理。插補算法有很多,根據(jù)微處理器的本身特點,這里采用數(shù)據(jù)采樣插補法。用一系列首尾相連的微小線段來逼近給定輪廓。每經(jīng)過一個插補周期就進行一次插補計算,求出插補周期內(nèi)各個坐標軸進給量,得出下一個插補點的指令
位置[1]。
②直線插補的算法實現(xiàn)。設插補周期T、輸入進給速度為F、加速度為a、當前速度為Vi、終點坐標為(Xe,Ye)??傻妹總€插補周期的進給步長△L=ViT,所需運動的總長度為L=,X軸和Y軸的位移增量為△x=△L Xe / L,△y=△L Ye / L。插補第i點的動點坐標為X=X+△x;Y=Y+△y。
由此,可以設計出數(shù)據(jù)采樣直線插補軟件流程圖,如圖3所示。
圖3 直線插補軟件流程圖
③圓弧插補。要進行圓弧插補,需要先根據(jù)指令中的進給速度F,計算出輪廓步長L,再進行插補計算。以弦線逼近圓弧,就是以輪廓步長為圓弧長相鄰兩個插補點之間的弦長,由前一個插補點的坐標和輪廓步長,計算后一插補點,實質(zhì)上是求后一插補點到前一插補點兩個坐標軸的進給量△X,△Y。設S(X,Y)為當前點,E(X,Y)為插補后到達的點,進給速度為F,圓半徑為R,則一個插補周期步長△L=F*T,由幾何關系可得,X、Y軸進給量為:
△X =
△Y =
其中,令m=、n=,則上式可以化簡為:
△X=m Y-n X,△Y=m X+n Y
故插補后到達的點E的坐標為X= X+△X,Y= Y-△Y[2]。
由此,可以設計出數(shù)據(jù)采樣插補軟件流程圖,如圖4所示。
圖4 圓插補軟件流程圖
2)STM32與CPLD的通信實現(xiàn)。
STM32與CPLD的數(shù)據(jù)傳輸協(xié)議時序圖5所示,
圖5 數(shù)據(jù)通信時序圖
STM32和CPLD通過10位數(shù)據(jù)總線data進行數(shù)據(jù)傳輸,由start,EN,clock信號進行命令控制。CPLD每4ms在 start信號線上產(chǎn)生一個正脈沖作為STM32中斷信號,STM32在中斷程序中進行數(shù)據(jù)傳輸和下一插補周期數(shù)據(jù)計算。通過使能信號EN、時鐘信號Clock對傳輸數(shù)據(jù)進行控制。
3)精插補算法在CPLD中的實現(xiàn)。
由于在4 ms粗插補周期中各進給軸的進給量在不斷變化,要保證電機進給運動平穩(wěn),必須使各插補周期中輸出脈沖均勻化。為此我們提出一種簡單有效的脈沖均勻化插補算法。
設每個插補周期T內(nèi)所需要輸出的脈沖數(shù)為X,在插補周期T內(nèi),CPLD時鐘產(chǎn)生的脈沖總數(shù)為F,F(xiàn)與X具有以下關系:
F=A*X+B=A(X–B) + (A+1)B (1)
其中A為F/X的商,B為F/X的余數(shù)。
所代表的物理含義是以CPLD時鐘為基準,先以每隔A個時鐘脈沖輸出一個進給脈沖,共輸出X-B個脈沖,然后以每隔A+1 個時鐘脈沖輸出一個進給脈沖,共輸出B個脈沖。這樣,就完成了在插補周期T內(nèi),均勻輸出X個脈沖的任務。
實際研究中,設定插補周期為4 ms與數(shù)據(jù)傳輸時間一樣,保持在數(shù)據(jù)接收與運動控制上的一致性。運動控制的系統(tǒng)時鐘為500 kHz。在一個插補周期T=4 ms中,系統(tǒng)時鐘脈沖數(shù)F=2000。
在Quartues II9.0中的仿真圖如圖6所示。
圖6 精插補輸出脈沖仿真圖
經(jīng)過測試,輸出進給脈沖的速率能穩(wěn)步上升至250 kHz。
參考文獻
[1]劉軍.數(shù)控技術(shù)及應用[M].北京大學出版社,2013.
[2]李莉.數(shù)控系統(tǒng)中圓弧插補算法的改進和實現(xiàn)[J].組合機床與自動化加工技術(shù),2009(7).
[3]王廣炎.張潤孝脈沖均勻化查補方法[J].制造技術(shù)與機床,2000(3).endprint
摘 要 本文介紹了一種基于STM32與CPLD的雙軸運動控制器。該控制器采用32位微控制器STM32f103VET6完成粗插補計算、數(shù)據(jù)處理、圖形顯示及數(shù)據(jù)通信;采用高速的CPLD完成精確插補及電機的高速與高精度控制。實際測試結(jié)果表明此控制器控制精度高、速度快、運動更加平穩(wěn),能滿足大多數(shù)雙軸聯(lián)動控制場合的需求。
關鍵詞 插補算法;運動控制;STM32;CPLD
中圖分類號:TP2 文獻標識碼:A 文章編號:1671-7597(2014)20-0009-02
運動控制器已經(jīng)從單片機或?qū)S眯酒ˋSIC)作為核心處理器,發(fā)展到了以DSP/ARM和FPGA作為核心處理器的開放式運動控制器。高速、高精度始終是運動控制技術(shù)追求的目標。充分利用高速處理器的計算能力,進行復雜的運動規(guī)劃、高速實時多軸插補、誤差補償,使得運動控制精度更高、速度更快、運動更加平穩(wěn)。根據(jù)應用要求,設計出智能化的運動控制器將成為市場應用的新方向。
1 系統(tǒng)設計方案
本控制器以ST公司的STM32f103VET6芯片和Altera公司的CPLD芯片EPM570T100為控制核心。利用STM32運算速度快處理能力強的特點,實現(xiàn)粗插補計算、數(shù)據(jù)處理、圖形顯示及數(shù)據(jù)通信;利用CPLD較強的邏輯處理能力,實現(xiàn)精確插補及電機的高速與高精度控制。其系統(tǒng)原理框圖如圖1所示。
圖1 系統(tǒng)原理框圖
STM32通過MAX232接口接收上位機控制指令,或以鍵盤輸入的方式輸入圖形輪廓數(shù)據(jù),之后進行相關的算法處理,將計算所得到的初插補參數(shù)傳送到CPLD,由CPLD進行精插補,產(chǎn)生控制兩軸聯(lián)動的脈沖信號,驅(qū)動步進電機運動。
2 系統(tǒng)硬件設計
1)STM32模塊。
STM32F103VET6為32位微控制器,芯片主頻為72 MHz,具有512KBFlash、64KB的SRAM內(nèi)存,支持USB接口、網(wǎng)口、串口等外設,為運動控制系統(tǒng)提供豐富的外圍接口資源支持。
STM32部分需完成接收上位機的控制指令、按鍵輸入輪廓數(shù)據(jù)、完成粗插補算法,顯示當前運行狀態(tài),與CPLD通信等功能。所以STM32芯片的外圍電路有LCD顯示模塊,矩陣鍵盤模塊,串口模塊。
2)CPLD模塊。
CPLD模塊的功能主要通過硬件語言Verilog來實現(xiàn)。CPLD負責與STM32通信,并根據(jù)數(shù)據(jù)實時進行脈沖均勻化處理,產(chǎn)生兩軸方向與脈沖控制信號,最終驅(qū)動步進電機運行。設計的CPLD內(nèi)部架構(gòu)圖如圖2所示。主要由三個模塊組成:①與STM32通信模塊:包括8*10數(shù)據(jù)寄存器與命令接口;②參數(shù)運算寄存器與數(shù)據(jù)控制模塊;③脈沖均勻化處理模塊。
圖2 CPLD內(nèi)部架構(gòu)圖
3)其他電路模塊。
系統(tǒng)其他模塊還有上位機通信模塊、電源模塊等。由于此控制器采用+5 V供電,而STM32F103VET6芯片、EPM570T100芯片、LCD顯示模塊需要3.3 V電壓供電,因此用LM1117系列芯片轉(zhuǎn)換產(chǎn)生3.3 V電源。通信模塊使用MAX3232電平轉(zhuǎn)換與上位機通信,通過串口接收上位機指令,對電機進行相應的控制。
3 系統(tǒng)軟件設計
1)粗插補算法在STM32中的實現(xiàn)。
①插補原理。插補算法有很多,根據(jù)微處理器的本身特點,這里采用數(shù)據(jù)采樣插補法。用一系列首尾相連的微小線段來逼近給定輪廓。每經(jīng)過一個插補周期就進行一次插補計算,求出插補周期內(nèi)各個坐標軸進給量,得出下一個插補點的指令
位置[1]。
②直線插補的算法實現(xiàn)。設插補周期T、輸入進給速度為F、加速度為a、當前速度為Vi、終點坐標為(Xe,Ye)??傻妹總€插補周期的進給步長△L=ViT,所需運動的總長度為L=,X軸和Y軸的位移增量為△x=△L Xe / L,△y=△L Ye / L。插補第i點的動點坐標為X=X+△x;Y=Y+△y。
由此,可以設計出數(shù)據(jù)采樣直線插補軟件流程圖,如圖3所示。
圖3 直線插補軟件流程圖
③圓弧插補。要進行圓弧插補,需要先根據(jù)指令中的進給速度F,計算出輪廓步長L,再進行插補計算。以弦線逼近圓弧,就是以輪廓步長為圓弧長相鄰兩個插補點之間的弦長,由前一個插補點的坐標和輪廓步長,計算后一插補點,實質(zhì)上是求后一插補點到前一插補點兩個坐標軸的進給量△X,△Y。設S(X,Y)為當前點,E(X,Y)為插補后到達的點,進給速度為F,圓半徑為R,則一個插補周期步長△L=F*T,由幾何關系可得,X、Y軸進給量為:
△X =
△Y =
其中,令m=、n=,則上式可以化簡為:
△X=m Y-n X,△Y=m X+n Y
故插補后到達的點E的坐標為X= X+△X,Y= Y-△Y[2]。
由此,可以設計出數(shù)據(jù)采樣插補軟件流程圖,如圖4所示。
圖4 圓插補軟件流程圖
2)STM32與CPLD的通信實現(xiàn)。
STM32與CPLD的數(shù)據(jù)傳輸協(xié)議時序圖5所示,
圖5 數(shù)據(jù)通信時序圖
STM32和CPLD通過10位數(shù)據(jù)總線data進行數(shù)據(jù)傳輸,由start,EN,clock信號進行命令控制。CPLD每4ms在 start信號線上產(chǎn)生一個正脈沖作為STM32中斷信號,STM32在中斷程序中進行數(shù)據(jù)傳輸和下一插補周期數(shù)據(jù)計算。通過使能信號EN、時鐘信號Clock對傳輸數(shù)據(jù)進行控制。
3)精插補算法在CPLD中的實現(xiàn)。
由于在4 ms粗插補周期中各進給軸的進給量在不斷變化,要保證電機進給運動平穩(wěn),必須使各插補周期中輸出脈沖均勻化。為此我們提出一種簡單有效的脈沖均勻化插補算法。
設每個插補周期T內(nèi)所需要輸出的脈沖數(shù)為X,在插補周期T內(nèi),CPLD時鐘產(chǎn)生的脈沖總數(shù)為F,F(xiàn)與X具有以下關系:
F=A*X+B=A(X–B) + (A+1)B (1)
其中A為F/X的商,B為F/X的余數(shù)。
所代表的物理含義是以CPLD時鐘為基準,先以每隔A個時鐘脈沖輸出一個進給脈沖,共輸出X-B個脈沖,然后以每隔A+1 個時鐘脈沖輸出一個進給脈沖,共輸出B個脈沖。這樣,就完成了在插補周期T內(nèi),均勻輸出X個脈沖的任務。
實際研究中,設定插補周期為4 ms與數(shù)據(jù)傳輸時間一樣,保持在數(shù)據(jù)接收與運動控制上的一致性。運動控制的系統(tǒng)時鐘為500 kHz。在一個插補周期T=4 ms中,系統(tǒng)時鐘脈沖數(shù)F=2000。
在Quartues II9.0中的仿真圖如圖6所示。
圖6 精插補輸出脈沖仿真圖
經(jīng)過測試,輸出進給脈沖的速率能穩(wěn)步上升至250 kHz。
參考文獻
[1]劉軍.數(shù)控技術(shù)及應用[M].北京大學出版社,2013.
[2]李莉.數(shù)控系統(tǒng)中圓弧插補算法的改進和實現(xiàn)[J].組合機床與自動化加工技術(shù),2009(7).
[3]王廣炎.張潤孝脈沖均勻化查補方法[J].制造技術(shù)與機床,2000(3).endprint