新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于FPGA的三坐標測量機電機控制系統(tǒng)

基于FPGA的三坐標測量機電機控制系統(tǒng)

作者: 時間:2017-02-27 來源:網(wǎng)絡 收藏

1、控制系統(tǒng)概述

本文引用地址:http://butianyuan.cn/article/201702/338798.htm

隨著工業(yè)的發(fā)展,三坐標測量機越來越顯示出其重要作用。而電機控制系統(tǒng)對三坐標測量機的運行有著非常重要的作用。由于FPGA可以現(xiàn)場可編程,可以實現(xiàn)專用集成電路,能滿足片上系統(tǒng)設計(SOC)的要求,使其日益成為系統(tǒng)的關鍵部件。[1]本文介紹一種基于FPGA的電機控制系統(tǒng),用于控制三坐標測量機電機運行。

系統(tǒng)主要由PC機、控制電路、驅(qū)動器[2]和電機組成。系統(tǒng)結(jié)構(gòu)圖見圖1。

其中PC機,由VC++實現(xiàn)用戶界面,發(fā)出的命令由FPGA進行接收和緩存,單片機進行分析處理產(chǎn)生控制命令,控制命令再經(jīng)過FPGA傳入驅(qū)動器,控制電機運行。同時電機狀態(tài)信息反饋回PC機,用于人機交互。系統(tǒng)中FPGA選用的是Altera公司的Cyclone系列。

2、系統(tǒng)功能實現(xiàn)

下面分別介紹FPGA實現(xiàn)電機控制功能的幾個重要部分。

2.1編碼器進行速度、位移量測量的實現(xiàn)方法

編碼器為傳感器類的一種,主要用來偵測機械運動的速度、位置、角度、距離或計數(shù),在電機控制中用于換相、速度及位置的檢出,作用十分重要?!」怆娋幋a器具有分辨率高,響應速度快,體積小,重量輕,耐惡劣環(huán)境等特點,故常被用作高精度位置檢測傳感器。它的精度或分辨率主要決定于每轉(zhuǎn)輸出的脈沖數(shù)(對增量式編碼器而言)。根據(jù)控制需要,還可以利用倍頻技術來提高位置檢測精度。[5]本系統(tǒng)使用增量式編碼器即增量編碼盤。

增量編碼盤輸出信號A和B具有90°的相位差。A和B的相位關系反映了被測對象的旋轉(zhuǎn)方向,若A超前于B,表明編碼器是順時針旋轉(zhuǎn)的,反之,編碼器為逆時針旋轉(zhuǎn)。當增量編碼盤的細分數(shù)為N時,增量編碼盤的每一個脈沖代表的角位移為360°/N,A、B信號的頻率相同,頻率大小反映當前電機速度,由這兩個信號就可得到電機轉(zhuǎn)向、轉(zhuǎn)角和轉(zhuǎn)速。[6]如圖2所示,在A和B的上升沿和下降沿計數(shù)器均做相應變化,得到count脈沖,在FPGA中計數(shù),即可得到編碼器輸出的脈沖數(shù),經(jīng)過計算就可以得到電機一定時間內(nèi)實際走過的路程或者單位時間內(nèi)的速度。


本系統(tǒng)主要在FPGA中編程實現(xiàn)對編碼器的硬件解碼。主要程序如下:

if(shift_a==2’b01)
begin
if(b)
cnt<=#2cnt-1’b1;
else
cnt<=#2cnt+1’b1;
end
elseif(shift_a==2’b10)
begin
if(b)
cnt<=#2cnt+1’b1;
else
cnt<=#2cnt-1’b1;
end
elseif(shift_b==2’b01)
begin
if(a)
cnt<=#2cnt+1’b1;
else
cnt<=#2cnt-1’b1;
end
elseif(shift_b==2’b10)
begin
if(a)
cnt<=#2cnt-1’b1;
else
cnt<=#2cnt+1’b1;

其中,cnt為十六位寄存器,shift_a=2’b01和shiftb=2’b01分別表示A和B出現(xiàn)上升沿,同理如果是等于2’b10則表示下降沿。電機編碼器硬件解碼程序仿真模擬后效果如圖3所示。圖中number為FPGA計算所得的編碼器輸出脈沖數(shù)。


2.2脈沖控制實現(xiàn)運動過程

利用脈沖控制電機速度即利用脈沖頻率決定電機速度。這種方法能夠得到較高的運行精度,適用于三坐標機電機控制系統(tǒng)。首先,上位機給定運行速度,命令傳到單片機,單片機進行計算,獲得單位脈沖周期內(nèi)需要時鐘數(shù),再將數(shù)據(jù)傳入FPGA,由其相應模塊處理。FPGA中相應的處理模塊實現(xiàn)的基本原理是:根據(jù)單片機給出的時鐘數(shù)進行判定。程序開始運行,開始計數(shù)周期,時鐘數(shù)目不斷累加,當累加數(shù)目到達單片機給定值的時候完成一個計數(shù)周期。然后計數(shù)器清零,重新開始計數(shù),輸出信號狀態(tài)翻轉(zhuǎn)。程序如下所示:

if(cnt>=currentSpd)
begin
puls<=~puls;
cnt<=25’h1;
end
else
cnt<=cnt+1’b1;
其中cnt為計數(shù)器,currentSpd為單片機計算所得的時鐘數(shù),puls為輸出脈沖。電機運動加速的過程就是一個脈沖頻率逐漸加大的過程,也就是說單位周期內(nèi)時鐘數(shù)量逐漸增加的過程。相應的減速過程與之相反。勻速過程則是一個以給定頻率保持不變的運動過程。下圖便是一個勻速、減速的仿真結(jié)果。


2.3限位和解除限位的方法

最后講述限位及其解除方法。在電機控制過程中應用限位是一種減少事故發(fā)生的有效方法。限位功能的實現(xiàn)需要由限位開關實現(xiàn)。限位開關按其檢測方式可分為接觸式(行程開關)和非接觸式(接近開關)。[7]本系統(tǒng)采用非接觸式。接近開關式一種非接觸式檢測,當運動的金屬物體接近開關的感應面而達到動作距離時,便無接觸無壓力的自動發(fā)出檢測信號,用于驅(qū)動器,也可以將其輸出信號送入控制單元,以控制系統(tǒng)動作。[8]電機運行過程中,如果運動軸到達限位開關,即產(chǎn)生限位信號,信號傳到控制電路,F(xiàn)PGA接收限位信號,做出處理后發(fā)出停止前進信號傳給驅(qū)動器,驅(qū)動器控制電機停止,避免發(fā)生碰撞危險。一旦出現(xiàn)限位,前進命令即被禁止,電機只能帶動運行軸反方向運行,在運行軸反向運動同時單片機監(jiān)測FPGA測得編碼器反饋的位移值,如果判斷運行軸反方向運動的位移值達到安全值,便認定限位解除,電機運行恢復正常狀態(tài)。
3、總結(jié)
本文較為詳細的介紹了一種基于FPGA的三坐標測量機電機控制系統(tǒng)。實現(xiàn)了較為精確的電機運行控制,實現(xiàn)了運行狀態(tài)監(jiān)測和限位,運行過程中遇到危險時能夠及時停止,運動整體的安全性有了很大保障。



評論


技術專區(qū)

關閉