国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于步進電機多軸聯(lián)動控制系統(tǒng)設(shè)計與實現(xiàn)

2014-05-13 10:34李志華
關(guān)鍵詞:上位代碼嵌入式

李志華

?

基于步進電機多軸聯(lián)動控制系統(tǒng)設(shè)計與實現(xiàn)

李志華*

(長沙高級技工學校, 湖南 長沙, 410000)

針對現(xiàn)有多步進電機控制系統(tǒng)的不足, 采用DSP 芯片TMS320F28335作為主控制器以及USB通信完成上位機與下位機通信, 給出了多軸步進電機控制系統(tǒng)硬件設(shè)計. 控制系統(tǒng)的軟件部分包括上位機監(jiān)控程序、G代碼解釋程序、USB通信程序和插補控制程序. 采用USB2.0總線與上位機通信, 實現(xiàn)了G代碼高速下載和執(zhí)行信息的反饋. 實踐證明系統(tǒng)設(shè)計解決了低成本、高速傳輸和即插即用等關(guān)鍵問題, 有較好的工程應(yīng)用價值.

步進電機; 多軸控制系統(tǒng); DSP; USB

隨著社會的發(fā)展, 產(chǎn)品規(guī)格和質(zhì)量要求逐步提高, 而人力資源日益緊張, 機械制造企業(yè)亟需實施技術(shù)提升[1]. 目前, 國內(nèi)外對多軸運動控制器進行了大量的研究. 國外己有成熟的產(chǎn)品應(yīng)用在數(shù)控系統(tǒng)中, 但價格昂貴. 國內(nèi)對運動控制器的研究以高校和研究所為主, 其產(chǎn)品價格相對低廉, 但是功能和精度均需要進一步完善[2]. 基于多步進電機的運動控制系統(tǒng)在制造加工領(lǐng)域有廣泛的應(yīng)用. 步進電機是將電脈沖信號轉(zhuǎn)換成相應(yīng)的角位移或線位移的機電執(zhí)行元件. 其角位移或線位移量與輸入的脈沖數(shù)成比例, 速度與單位時間內(nèi)輸入的脈沖數(shù)(即脈沖的頻率)成比例, 方向則取決于輸入脈沖的順序[3].

本文研究了一種基于DSP的多步進電機控制系統(tǒng), 控制系統(tǒng)由上位機監(jiān)控平臺和基于DSP的嵌入式執(zhí)行平臺組成, 平臺間采用USB總線連接. 上位機平臺主要完成對執(zhí)行系統(tǒng)的參數(shù)設(shè)定, 加工文件的管理以及執(zhí)行過程的人機交互. 嵌入式執(zhí)行平臺接收到的加工文件后, 對指令進行解析, 協(xié)調(diào)控制多步進電機帶動刀具完成機械加工, 并實時將加工執(zhí)行信息反饋給上位機控制平臺. 系統(tǒng)可以實現(xiàn)步進電機的正反轉(zhuǎn)、速度調(diào)節(jié)以及細分的控制, 可高效進行了兩軸圓弧插補、三軸直線插補、S形曲線速度控制和連續(xù)曲線插補等功能.

1 控制系統(tǒng)硬件平臺

控制系統(tǒng)由PC機、嵌入式控制平臺和多軸電機等模塊組成, 嵌入式控制平臺硬件結(jié)構(gòu)包括DSP控制核心模塊、外圍存儲器模塊、CPLD驅(qū)動與擴展模塊、USB總線接口模塊等, 系統(tǒng)結(jié)構(gòu)框圖如圖1所示. 為提高系統(tǒng)的高速性、實時性和穩(wěn)定性, 嵌入式執(zhí)行平臺使用TI公司TMS320F28335數(shù)字信號處理器(DSP)作為核心, 屬于TMSC28x系列. 它的處理能力達到150MHz, 包含32位浮點處理單元, 6個DMA通道, 支持ADC、McBSP和EMIF輸入, 有18路的PWM輸出, 其中有6路為TI特有的更高精度的PWM輸出, 12位16通道ADC. 新型F28335浮點控制器與TI前代領(lǐng)先數(shù)字信號控制器相比, 性能平均提高50%, 并與定點C28x控制器軟件兼容[4].

1.1 存儲模塊設(shè)計

系統(tǒng)內(nèi)存擴展選用三星K9F1G08U0A芯片, 容量為8位的(256MB+8MB). K9F1G08U0A的頁編程操作(寫操作)在(2 k + 64)字節(jié)的頁上執(zhí)行, 時間為200 μs, 塊擦除操作是在(128 + 4 k)字節(jié)的塊上執(zhí)行, 時間為1.5 ms[5]. 數(shù)據(jù)寄存器里的數(shù)據(jù)每字節(jié)被讀出是用25 ns的時間周期, 并可以直接映射到 DSP 外部存儲接口的Zone 6或者Zone 7區(qū)域. Zone 6區(qū)域的范圍是在地址0x100000- 0x1FFFFF, Zone 7區(qū)域的范圍是在地址0x200000-0x2FFFFF.

圖1 系統(tǒng)功能框圖

1.2 USB模塊設(shè)計

通用串行總線(USB, Universal Serial BUS)是一個外部總線標準, 用于規(guī)范電腦與外部設(shè)備的連接和通訊. 根據(jù)不同USB設(shè)備對數(shù)據(jù)傳輸?shù)囊? USB定義了4種傳輸類型: 塊傳輸、中斷傳輸、同步傳輸和控制傳輸[6]. 本系統(tǒng)選用Cypress公司的高速USB芯片CY7C68001來完成平臺間的USB通信, 該芯片對4種傳輸模式提供了全面支持. CY7C68001集成了USB2.0收發(fā)器和SIE (串行接口引擎) ,可完成物理層和鏈路層的數(shù)據(jù)通信管理, 但是芯片內(nèi)不含微控制器, 因此須由TMS320F28335編程實現(xiàn)USB的應(yīng)用層協(xié)議以及固件程序的加載. 該芯片支持高速480 Mbit/s或全速12 Mbit/s兩種傳輸方式, 而且具備智能SIE功能, 可不借助微處理器中斷的前提下完成枚舉, 能夠較好地完成系統(tǒng)所需功能.

1.3 CPLD模塊及驅(qū)動模塊設(shè)計

CPLD主要由可編程邏輯宏單元(MC, Macro Cell)圍繞中心的可編程互連矩陣單元組成, 應(yīng)用在外設(shè)的映射, 起到片選外設(shè)和橋接外設(shè). 系統(tǒng)采用Altera公司EPM3064芯片, 這是一款高性能、低功耗的基于EEPROM的CPLD. 為增強信號的輸出能力, 系統(tǒng)將輸出信號均通過CPLD驅(qū)動后輸出. 這不僅增強了帶負載能力, 而且增加系統(tǒng)的靈活性和可擴展性. 系統(tǒng)數(shù)字輸出信號包括三軸步進電機的驅(qū)動信號、驅(qū)動電路控制信號以及輔助限位信號等. 在驅(qū)動電路中增加了光電轉(zhuǎn)換器以進行電平轉(zhuǎn)換, 進一步增強電路驅(qū)動能力. 同時通過光電隔離, 可有效避免驅(qū)動器信號對控制器的影響.

2 控制系統(tǒng)軟件設(shè)計

系統(tǒng)軟件包括PC機端的上位機控制平臺和嵌入式控制平臺的執(zhí)行軟件部分, 嵌入式控制軟件主要包括USB通信程序、電機驅(qū)動程序、插補程序和G代碼解釋程序等.

2.1 USB模塊程序設(shè)計

根據(jù)模塊化設(shè)計的思想, 固件的結(jié)構(gòu)由不同的功能模塊堆積而成(圖2).

①硬件提取層: 對DSP的I/O口、數(shù)據(jù)總線等硬件接口進行操作;

②CY7C68001命令接口: 對芯片進行操作的模塊子程序集;

③中斷服務(wù)程序: 處理硬件的中斷事務(wù)程序;

④標準請求處理程序: 對USB的標準設(shè)備請求進行處理;

⑤用戶請求處理程序: 對用戶添加的廠商請求進行處理;

⑥主循環(huán)程序: 發(fā)送USB請求、處理USB總線事件和用戶功能處理等.

USB模塊程序包括USB固體程序, 運行在DSP內(nèi)部的程序和運行在Windows平臺上USB驅(qū)動的程序. 在USB的數(shù)據(jù)傳輸方式中主要采用塊傳輸和字節(jié)傳輸2種傳輸方式[2]. 系統(tǒng)的固體程序采用C語言編寫, 由上位機監(jiān)控平臺的USB驅(qū)動程序發(fā)出指令, 如設(shè)備描述符等標準請求, 固體程序根據(jù)指令來接收或發(fā)送數(shù)據(jù).

圖2 固體結(jié)構(gòu)圖

2.2 G代碼解釋模塊

加工文件主要由G代碼組成, 也稱為G指令. G代碼在數(shù)控加工領(lǐng)域中得到了廣泛的應(yīng)用程. 嵌入式控制平臺中設(shè)計專門的G代碼解釋器. 收到上位機傳輸過來的加工文件, 文件被暫存到嵌入式平臺的外存(NAND FLASH)中, 解釋器從外部存儲設(shè)備逐次讀取G代碼信息. 由G代碼解析程序解析數(shù)據(jù)流之后, 將加工指令轉(zhuǎn)存至DSP內(nèi)部RAM緩沖區(qū)內(nèi)準備運行. 同時數(shù)據(jù)被轉(zhuǎn)為標準GCode結(jié)構(gòu)體數(shù)據(jù), 然后根據(jù)指令的類型(如加工指令或輔助指令)進行分類操作. 當加工坐標有變化則表示該數(shù)據(jù)為運動指令, 反之則為輔助指令[7]. 對于運動指令, 則需要獲取各坐標軸的運動坐標以及軌跡運動類型, 根據(jù)其軌跡運動類型進行相應(yīng)的插補處理. 軌跡運動類型主要可分為為G01—直線運動; G02—順弧運動; G03—逆弧運動. 反饋當前的執(zhí)行狀態(tài), 由DSP控制器將步進電機運動信息寫入NAND FLASH中, 上位機監(jiān)控平臺定時主動讀取.

G代碼解析程序首先根據(jù)預(yù)定義規(guī)則表進行語法和詞法檢查, 刪除無效字符, 包括指令空格和N指令等. 再根據(jù)G代碼組詞規(guī)則, 對加工文件逐行讀取, 依次檢查, 包括是否為合法字符, 代碼參數(shù)設(shè)置是否合適. 當發(fā)現(xiàn)某行中包含非法的代碼, 則記錄其行號和出錯的信息代號, 并將出錯信息反饋給上位機監(jiān)控平臺, 提示代碼錯誤信息. 如加工文件無語法錯誤則進行運動指令的解析, 并將運動坐標信息和輔助指令信息分別存儲到預(yù)定義的數(shù)據(jù)區(qū)域以便于后續(xù)處理.

G代碼解析程序的主要程序.

void GCODEAnalysis(char *tempGcode, GCODE gCode[])

{

char *templine = tempGcode;

char temp[8] = {0} ;

int i; i nt num = 0;

templine[num] = (templine[num] & 0xFF);

while (templine[num]!= 0x00) //數(shù)據(jù)不為空則進入循環(huán)

{

switch (templine[num])

{ case 0x47: //G ASC碼

i = 0;

templine[num + 1] = (templine[num + 1]&0xFF);

while((templine[num + 1]< 0x41)) //在數(shù)字的ASC碼區(qū)域

{

temp[i] = templine[num + 1]; //接收的數(shù)據(jù)值存放到temp[8]

num++;

i++;

}

gn++;

gCode[gn].G = atol(temp); //把temp[8]數(shù)組中的字符串轉(zhuǎn)換成長整型數(shù)

break;

}…}

2.3 直線插補程序

直線插補就是用逼近的方式把曲線用線段去逼近, 從而實際輪廓就由若干段折線拼接而成[8]. 雖然是折線, 但是如果每一段走刀線段都非常小(在精度允許范圍內(nèi)), 那么此段折線和實際輪廓還是可以近似地看成相同的曲線[9—10](圖3).

各象限直線插補程序如下:

Line_Cabu(GCODE GCode){

long int Xsteps = 0, Ysteps = 0.0,

Total_steps = 0;

long int X = 0, Y = 0;

Xsteps = (GCode.X - cankao.X);

Ysteps = (GCode.Y - cankao.Y);

X = labs(Xsteps);

Y = labs(Ysteps);

Total_steps = X + Y;//總步數(shù)

while((Total_steps--) > 0)

{if(F >= 0)

{ F = F - Y;

if(Xsteps >= 0) {

GpioDataRegs.GPADAT.bit.GPIO0=0;

Pulse_X();// X正方向 }

else {

GpioDataRegs.GPADAT.bit.GPIO0= 1;

Pulse_X();// X反方向 } }

else

{ F = F + X;

if(Ysteps >= 0) {GpioDataRegs.GPADAT.bit.GPIO2= 0;

Pulse_Y();// Y正方向 }

else {

GpioDataRegs.GPADAT.bit.GPIO2= 1;

Pulse_Y();// Y反方向 } }}

cankao.X = GCode.X;

cankao.Y = GCode.Y;

}

圖3 逐點比較法直線插補流程圖

3 上位機監(jiān)控平臺設(shè)計

上位機監(jiān)控平臺主要是通過USB端口設(shè)置嵌入式平臺參數(shù), 向嵌入式控制平臺傳輸加工文件, 接受反饋執(zhí)行信息并仿真顯示等功能. 數(shù)據(jù)傳輸采用了CRC算法進行校驗. 監(jiān)控平臺在Visual Studio 2008平臺上開發(fā), 使用了C++語言編程, 主要通過調(diào)用系統(tǒng)相關(guān)API函數(shù)完成.

程序使用CreateFile函數(shù)打開設(shè)備句柄, 進而通過DeviceIoControl函數(shù)將數(shù)據(jù)發(fā)送到嵌入式控制平臺(包括ReadFile讀數(shù)據(jù)和用WriteFile寫數(shù)據(jù)), 操作完畢后用CloseHandle函數(shù)關(guān)閉設(shè)備[11]. DSP嵌入式平臺通過解析加工文件來控制多軸步進電機的運動, 同時實時反饋步進電機的運行情況, 如運動位置及運動的距離通給上位機. 上位機將執(zhí)行數(shù)據(jù)進行相關(guān)處理后, 實現(xiàn)步進電機運動軌跡仿真, 仿真當中運用到GDI(Graphics Device Interface)的繪圖技術(shù), 將反饋數(shù)據(jù)在上位機運用GDI繪圖技術(shù)實時顯示出來. GDI是圖形設(shè)備接口, 它的主要任務(wù)是負責系統(tǒng)與繪圖程序之間的信息交換, 處理所有Windows程序的圖形輸出. 利用GDI所提供的眾多函數(shù)就可以方便的在屏幕、打印機及其它輸出設(shè)備上輸出圖形和文本等操作.

其中比較核心的就是用DeviceIoControl函數(shù)對設(shè)備進行讀寫操作, 相關(guān)函數(shù)和程序如下所示:

①DeviceIoControl函數(shù)原型為:

BOOL DeviceIoControl(

HANDLE hDevice, //設(shè)備句柄

DWORD dwIoControlCode, //設(shè)備控制代碼

LPVOID lpInBuffer, //輸入數(shù)據(jù)緩沖區(qū)指針

DWORD nInBufferSize, //輸入數(shù)據(jù)緩沖區(qū)長度

LPV OID1pOutBuffer//輸出數(shù)據(jù)緩沖區(qū)指針

DWORD nOutBufferSize, //輸出數(shù)據(jù)緩沖區(qū)長度

LPDWORD lpBytesReturned, //輸出數(shù)據(jù)實際單元長度

LPOVERLAPPED lpOverlapped //重疊操作結(jié)構(gòu)指針);

②設(shè)備句柄用來標識你所訪問的設(shè)備. 發(fā)送不同的控制碼, 可以調(diào)用設(shè)備驅(qū)動程序的不同類型的功能. 設(shè)備句柄可以用API函數(shù)CreateFile獲得.

③打開USB設(shè)備.

HANDLE Handle = CreateFile ("\\.\

Ezusb-0",// USB設(shè)備名GENERIC_WRI TE

| GENERIC_READ, FILE_SHAR E_WRITE |

FILE_SHARE_READ,NULL, OPEN _EXIST

ING, 0, NULL);

在打開USB設(shè)備后通過DeviceIo Control函數(shù)獲取USB管道信息

ULONG numBytes = 0;

UCHAR InterfaceInfo[1024] = NULL ;

ULONG pipeCount = 0;

DeviceIoControl (Handle, IOCTL_Ezusb_GET_PIPE_INFO, NULL, 0, &InterfaceInfo, sizeof(InterfaceInfo), &numBytes, NULL); //獲取管道數(shù)

pipeCount =((PUSBD_INTERFACE_INFORMATION) InterfaceInfo) -> NumberOfPipes;

操作完成后用CloseHandle關(guān)閉設(shè)備句柄. 其原型如下:

System.Runtime.InteropServices.DllImport("kernel32.dll")

private static extern bool CloseHandle (IntPtr hObject //要關(guān)閉的句柄地址);

④接收控制器發(fā)送過來的數(shù)據(jù)時是通過ReadFile函數(shù)來實現(xiàn)的. ReadFile函數(shù)從文件指針指定的位置讀取數(shù)據(jù). 讀操作完成后, 文件指針將根據(jù)實際對讀出的數(shù)據(jù)自動進行調(diào)整. 經(jīng)測試, 上位機軟件很好的實現(xiàn)了對多步進電機的實時控制與仿真.

4 結(jié)論

針對在機械制造設(shè)備中常見的多步進電機的控制, 采用了一種基于DSP和CPLD聯(lián)合控制的多軸步進電機控制系統(tǒng). 系統(tǒng)具有優(yōu)良的實時處理能力, 能充分滿足開放式數(shù)控系統(tǒng)實時加工的要求; 可實現(xiàn)更加復雜的加工算法提高加工速度與精度. 采用USB協(xié)議作為DSP控制器與計算機主機之間的數(shù)據(jù)傳輸方式, 解決了數(shù)據(jù)傳輸速度慢、穩(wěn)定性差等問題. 通過可視化的上位機程序, 用戶可以方便的對各軸電機進行精確控制, 且可以實時監(jiān)測運行狀態(tài), 提高了生產(chǎn)效率.

[1] 褚仁林. 基于DSP的電機控制系統(tǒng)的研究[D]. 西安: 西北工業(yè)大學, 2007: 30—32.

[2] 唐志強, 黃道平, 劉少君. 基于USB總線的多軸運動控制平臺設(shè)計[J]. 組合機床與自動化加工技術(shù), 2010 (11): 71—77, 86.

[3] 薛玉磊, 韓存武. 基于DSP的三軸轉(zhuǎn)臺控制系統(tǒng)的實現(xiàn)[J]. 微計算機信息, 2010, 26(9-2): 111—112.

[4] Texas Instruments.TMS320F28335, TMS320F28334, TMS320F28332 Digital Signal Controllers Data Manual[DB/OL].http://focus.ti.com/docs/prod/folders/print/tms320f28335.html.

[5] 李擁軍, 楊龍, 安吉宇, 等. DSP原理及控制系統(tǒng)設(shè)計[M]. 北京: 清華大學出版社, 2010.

[6] 張嚴林, 李海生, 鐘震宇, 等. 步進電機三軸聯(lián)動的快速加減速算法研究[J]. 數(shù)控技術(shù), 2009 (8): 111—112.

[7] 李建奇, 肖繼國, 賀盛修, 等. 基于NURBS插補算法的數(shù)控雕刻機控制系統(tǒng)的設(shè)計與實現(xiàn)[J]. 計算機測量與控制, 2012, 20(12): 3249—3252.

[8] 張學飛, 李健. 開放式數(shù)控系統(tǒng)G代碼的編譯模塊設(shè)計[J]. 機械設(shè)計與制造, 2010(10): 87—88.

[9] 何蘇勤, 黃翠翠. 基于USB2.0的異步數(shù)據(jù)傳輸和控制接口的設(shè)計[J]. 國外電子測量技術(shù), 2010(3): 79—83.

[10] 呂曄, 周洪強. EZ-USB FX2的數(shù)據(jù)采集和傳輸系統(tǒng)設(shè)計[J]. 單片機與嵌入式系統(tǒng)應(yīng)用, 2009(5): 57—59.

[11] 鄭振華, 郭慶, 吳國鋮. 基于插補算法的二維數(shù)控平臺研究與設(shè)計[J]. 測控技術(shù), 2010(6): 58—61.

Control system for multi-axis stepper motor based on DSP and USB

LI ZhiHua

(Changsha Senior Technical School, Changsha 410000, China)

To improve the shortcomings of the multi-axis control system, the TMS320F28335 DSP chip was used as the main controller, and the USB was used to transfer data between the DSP controller and the host, a software design of the control system was presented. The software part of control system includes PC monitoring program, G code interpreter, USB communication program and the interpolation control program. The key codes of the program were introduced.The USB communication realized the high-speed download G code and information feedback. Simulation results show that the system had advantages of both high speed transmission, and better tracking performance, therefore, it can be widely used in radar engineering.

stepper motor; multi-axis control system; DSP; USB

10.3969/j.issn.1672-6146.2014.03.016

TP 273

1672-6146(2014)03-0067-06

email: 86051419@qq.com.

2014-04-18

(責任編校:劉剛毅)

猜你喜歡
上位代碼嵌入式
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
特斯拉 風云之老阿姨上位
搭建基于Qt的嵌入式開發(fā)平臺
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
“三扶”齊上位 決戰(zhàn)必打贏
基于ZigBee和VC上位機的教室智能監(jiān)測管理系統(tǒng)
以新思路促推現(xiàn)代農(nóng)業(yè)上位