基于FPGA的步進電動機伺服控制器通信系統設計
吳喜橋,劉景林
(西北工業大學自動化學院,西安710129)
摘要:為實現某掃描機構伺服控制器與上位機的串行通信,提出了應用于該系統的專用異步
串行通信和同步串行通信的FPGA設計方法。介紹了掃描機構伺服控制系統的構成;詳述了異步
串行通信各個功能模塊及光電編碼器脈沖計數值同步串行發送到上位機的FPGA設計與仿真實
現。分析證明該設計時序正確,實現了功能指標,確保了伺服控制器與上位機的通信。
關鍵詞:FPGA;異步串行通信;同步串行通信;伺服控制系統;步進電動機
O 引 言
步進電機伺服控制器是掃描機構的核心,而通信系統是伺服控制器的關鍵。本系統采用霍爾傳感器和光電編碼器采集步進電機的速度和角度信息,伺服控制器傳統的設計方法是利用單片機或DsP和上位機進行通信。本文采用FPGA作為下位機、采用硬件描述語言Verilog HDL,設計了掃描機構伺服控制器通信系統。FPGA可移植性強,只需要簡單地修改硬件接口和串口通信格式即可實現FPGA和不同的上位機的高速串行通信。
l伺服控制系統構成
某掃描機構系統框圖如圖l所示。本系統采用閉環控制方式驅動步進電機做變速的連續圓周掃描,帶動掃描機構實現精確掃描定位。
根據不同時刻的速度,由FPGA設計的細分驅動模塊(EP2c5T144c6)產生不同頻率的脈沖。此脈沖控翩輸出存儲在FPGA內的細分數據,功率驅動芯片根據細分數據進行斬波控制步進電機轉動,從而控制掃描機構按照預定方式轉動【1】。霍爾傳感器作為伺服控制器位置基準,輸出的信號與光電編碼器的零位信號來確定機械零點。配置芯片選用EPcS4,掉電后、上電時對FPGA進行配置。
FPGA對光電編碼器輸出的脈沖信號進行4細分計數,按照要求通過同步串口發送給Pc機。FPGA在接收到Pc機指令后通過異步串口返回遙測數據包。Pc機根據返回的數據包和光電編碼器計數值,通過異步串口向FPGA發出指令來控制步進電機。
本系統中異步串行通信的物理接口為RS485、半雙工主從應答式,波特率為9 600 bps。采用Verilog語言編寫程序,完成數據的接收與發送。電平轉換采用MAⅪM公司生產的MAX3160。這是一款高性能的多協議收發器件,可編程控制半雙工或全雙工Rs一485/422,RS232模式。
2 FPGA異步串行通信模塊
異步串行通信模塊在FPGA芯片內部的硬件邏輯設計包括波特率發生器、Rs一485接收器和Rs一485發送器【3-5】,如圖2所示。
2.1波特率發生器
波特率發生器產生的分頻時鐘,不是波特率時鐘,而是波特率時鐘頻率的16倍,對輸入rxd不斷進行采樣,保持接收器與Pc機同步,目的是為了在接收時進行精確地采樣,以提取異步的串行數據。波特率發生器根據給定的系統時鐘頻率和要求的波特率計算出波特率分頻因子,已算出的波特率分頻因子作為分頻器的分頻數。計算公式為:分頻數=全局時鐘/(16×期望波特率)一1。
2.2 Rs-485接收器
RS一485接收器接收Pc機發送的指令,并將其轉化為并行數據。FPGA控制單元根據此數據來控制步進電機的轉動。Pc機發送信號字符格式為:1位起始位,8位數據位,1位可程控位(標識地址幀),1位停止位。
由于串行數據幀和接收時鐘是異步的,由邏輯l轉化為邏輯O可以被視為一個數據幀的起始位。為了避免毛刺影響,需要至少4個連續bclk的邏輯O被接收到,才認為起始位接收到。
Rs.485接收器的接收狀態機流程圖如圖3(a)所示。狀態機一共有6個狀態:sO(等待起始位)、s1(求出位的中點)、s2(等待采樣數據位和程控位)、s3(數據位采樣)、s4(程控位采樣)、s5(存儲數據和停止位接收)。
sO狀態:接收器異步復位后,接收狀態機將處于這一狀態,一旦確定起始位到來,狀態機將轉入sl狀態。圖4(a)中的rxd—syne O、Ⅸd—syncl、rxd—sync信號是rxd的同步信號。為了排除干擾信號,檢測經過同步后的rxd—sync信號。
s1狀態:對于異步串行信號,在每位的中點檢測位信號,能保證在較后的數據位檢測的時累計誤差較小。在本狀態,就是由起始 |