摘 要:本文針對現有CNC系統中存在的一些問題,提出了一種基于ARM+ FPGA結構的嵌入式數控系統,并采用μC/OS-Ⅱ實時操作系統,詳細介紹了這種系統的硬件結構和軟件設計。
關鍵詞:ARM FPGA 嵌入式數控系統 μC/OS-Ⅱ
Embeded CNC System based on ARM and FPGA
Abstract:A kind of embeded CNC system based on ARM with the real-time operation system μC/OS-Ⅱ is proposed to resolve the problems of the current computer numerical control (CNC). The hardware structure and software design of this system is introduced.
Keywords: ARM; FPGA; embedded CNC system; μC/OS-Ⅱ
1 引言
自從1952年第一臺數控機床問世以來,隨著計算機技術的不斷發展,數控系統經歷了由硬件數控到計算機數控(CNC)的發展過程。起初的硬件數控系統,零件程序的輸入、運算、插補及控制功能均由硬件完成。CNC系統采用計算機作為數控系統的核心部件,減少了硬件電路,提高了系統的通用性和可靠性。但是這類系統仍然存在一些問題,如資源浪費,操作系統實時性差,硬件結構復雜等。
本文介紹了一種基于PC的“ARM+FPGA”結構的嵌入式數控系統。該系統是針對小型、便攜式機床開發生產的新一代控制全數字步進電機的數控系統。上位機PC用于復雜加工代碼的編程,“ARM+FPGA”結構控制系統則用于實現運動控制的功能。采用ARM開發數控系統可以降低硬件成本,增強穩定性,提高系統的可擴展性。
2 系統硬件設計
2.1 硬件結構
本系統的設計中,以PC機作為上位機,ARM+FPGA為控制核心。系統的硬件結構如圖1。
[align=center]

圖1 系統硬件結構[/align]
在上位PC機中,應用CAD軟件產生加工G代碼,通過USB把程序代碼串行傳送到系統的SDRAM中,ARM從數據存儲器中讀取G代碼,進行譯碼,刀補運算,粗插補[1]。FPGA接收ARM的控制指令,讀取數據,完成精插補功能,輸出對電機的控制脈沖。另外,為了實現上位PC機與控制器之間的高速數據交換,系統除了具有串口通訊功能外,還采用了USB接口通訊,用DMA方式和上位PC機進行數據同步交換,這種方式可以使系統獲得更高的通訊速度。該系統有3路脈沖直接驅動步進電機,最高頻率為4MHz。
2.2 芯片選擇
(1)ARM微處理器
本系統采用了SAMSUNG公司推出的16/32位RISC嵌入式微處理器S3C44B0X,其最大主頻為66MHz。S3C44B0X采用了ARM7TDMI核,0.25um工藝的CMOS標準宏單元和存儲編譯器,還提供了非常豐富的內置部件,包括8K高速緩存器,外部存儲控制器,2通道通用DMA,2通道外設DMA,2通道帶有握手協議的UART,71個通用I/O口,8通道外部中斷源,8通道10位ADC以及具有PLL的片上時鐘發生器。通過提供豐富的片上資源,可以減少外圍電路,降低系統成本。另外,芯片還采用了低電壓技術,運算速度很快,功耗很低,非常適合數控系統的設計。
(2)FPGA
FPGA(Field Programmable Gate Array)是在PAL、GAL等邏輯器件的基礎上發展起來的,是一種特殊的ASIC芯片,具有豐富的邏輯資源以及I/O引腳,用戶可以重新配置其內部的邏輯模塊和I/O模塊,以實現用戶的邏輯。此外,FPGA還具有規模大、體積小、可靠性高等優點,符合數控系統的設計要求。本系統采用Lattice公司的LFXP6C-3Q208C芯片來實現插補運算。在系統中,FPGA接受ARM和外部RAM送來的控制指令和數據信息執行插補運算,產生控制步進電機運轉的脈沖序列,并通過接口將脈沖序列送到步進電機驅動器。另外FPGA與主軸編碼器相連接,能識別其輸出的信號并計數,計數結果存放在寄存器中,供ARM讀取。FPGA還通過ULN2083AC芯片與I /O接口連接,執行各種信號的轉換和隔離功能。圖2 是FPGA的外圍連接。
[align=center]

圖2 FPGA的外圍連接[/align]
2.3 脈沖輸出信號的連接方式
脈沖輸出信號的連接有差動方式和單端方式兩種,單端方式適用于早期一些脈沖和方向的陽極連在一起的步進驅動器,而不適用于某些脈沖和方向的陰極連在一起的步進驅動器。差動方式適用于脈沖和方向獨立輸入的步進驅動器和大多數伺服驅動器,能夠獲得較好的抗干擾性。本系統采用的是差動方式連接,圖3為其連接方式 。
[align=center]

圖3 脈沖輸出信號的差動連接[/align]
3 系統的軟件結構
系統的軟件結構主要分為兩部分:操作系統軟件和數控應用軟件。由于數控系統是個實時多任務系統,實時性要求很高,為保證各個任務的協調執行,本系統采用了μC/OS-Ⅱ實時操作系統作為軟件平臺。
3.1 μC/OS-Ⅱ簡介[2]
μC/OS-Ⅱ是一種源代碼公開的實時操作系統,是搶先式的內核,在運行就緒條件下總是讓級別最高的任務優先執行,它還是一個多任務管理系統,可管理64個任務,其中8個保留給系統,用戶任務最多可達56個,并且每個任務由自己獨立的棧空間。μC/OS-Ⅱ的大部分源代碼是用C語言編寫的,僅與微處理器相關部分使用匯編語言,因此具有很強的移植性。但是,由于μC/OS-Ⅱ在讀寫處理器、寄存器時只能通過匯編語言來實現,所以需要用匯編語言完成一些與處理器相關的代碼。
3.2 μC/OS-Ⅱ的移植
要實現該操作系統在S3C44B0X微處理器平臺上的正常運行,需要修改與處理器類型有關部分的代碼[3],下面簡單的介紹了需要修改的相關文件:
(1)修改OS_CPU.H文件:包括定義數據類型及與處理器相關的基本信息。
(2)修改OS_CPU_C.C文件:編寫初始化任務的堆棧結構函數OSTaskStkInit(),該函數由任務創建函數OSTaskCreate()或OSTaskCreateEXT()調用。例如創建一個插補任務為:
OSTaskCreate(InterpTask,(void*)0,(void*)&InterpTask_Stack\[STACKSIZE-1\],
InterpTask_Pri)。另外還必須聲明5個函數:建立任務函數OSTaskCreateHook()、刪除任務函數OSTaskDelHook()、任務切換函數OSTaskSwHook()、產生時鐘節拍得函數OSTimeTickHook()和統計功能函數OSTimeTickHook()。
(3)修改OS_CPU_A.ASM文件:編寫4個與處理器相關的匯編語言函數OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()、OSTickISR()。
3.3 數控系統的應用軟件設計
根據數控系統所要實現的功能,可以將系統的應用軟件主要分為幾個模塊:人機界面模塊、數據處理模塊、插補模塊。其中人機界面模塊的任務由PC機完成,包括數控代碼的編輯,加工過程中相關參數的設置,刀補參數的設置等[4]。
(1)數據處理模塊
數據處理模塊主要完成譯碼和刀具補償功能。譯碼就是將數控代碼的各種工件輪廓信息(如起點、直線或圓弧等)、加工速度F和其它輔助信息(M、S、T)按一定規律翻譯成系統能識別的數據形式。由于編制零件加工程序時,一般只考慮零件的輪廓外形,而實際切削控制時,是以刀具中心為控制中心的,所以經過譯碼得到的數據不能直接由插補程序使用,必須經過軌跡計算,進行刀具長度補償和刀具半徑補償,才能轉換為插補所需要的參數。
(2)插補模塊
數控系統的核心任務是插補,插補計算的精度影響到整個數控系統的精度。插補任務就是按照進給速度的要求,由譯碼得到的數據信息計算出零件輪廓起點和終點之間若干中間點的坐標值,并轉化為脈沖數據送入步進驅動器。本系統采用了脈沖增量插補,脈沖輸出的頻率誤差小于0.1%。其脈沖輸出可用單脈沖(脈沖+方向)或雙脈沖(脈沖+脈沖)方式。可以實現任意2-3軸直線、任意2軸圓弧插補,連續插補功能。
[align=center]

圖4 逐點比較法第一象限直線插補軟件流程圖[/align]
下面以第一象限直線插補為例,圖4為逐點比較法第一象限直線插補軟件流程圖。其中,(xe,ye)為直線的終點坐標,F為每一步直線插補運算后的偏差值。當F≥0時,加工點在加工直線上或在直線上方,則向x軸正向產生一個脈沖,由步進電機驅動器驅動x軸步進電機正向進給一個步進角,并計算出新的偏差F=F-ye;當F<0時,加工點位于直線下方,則向y軸正向產生一個脈沖,由步進電機驅動器驅動y軸步進電機正向進給一個步進角,并計算出新的偏差F=F+xe。n為終點判別,當刀具到達終點時,停止插補。本系統采用VHDL語言編寫算法實現插補,如下為部分代碼:
ARCHITECTURE connect OF chabu IS
BEGIN
VERIABLE F:INTEGER:=0;
n:INTEGER:=ABS(xe)+ABS(ye);
xi,yi:INTEGER //(xi,yi)為插補運算過程中刀具的加工點坐標
PROCESS(reset) //reset是復位信號,插補開始后對偏差值F和(xi,yi)清零, BEGIN 使刀具回到坐標原點
F=0;
……
END PROCESS;
PROCESS(clk) //clk是時鐘控制信號,當clk上升沿到來時進行插補運算的處理
BEGIN
WHILE(n>0)LOOP
IF(F>=0)THEN
cqx=1; //cqx,cqy為x軸和y軸的輸出脈沖信號
cqy=0;
F=F-ye;
n=n-1;
ELSE
……
END IF;
END LOOP;
END PROCESS;
END connect;
3.4 系統中數據信息的交換
在數控加工時,CNC系統各模塊之間需要傳遞大量的數據信息,主要通過各種緩沖存儲區實現該功能,如圖5為數據信息的交換過程。首先讀入數控加工程序到數控加工程序緩沖器,從中逐個讀入字符,經譯碼處理送到譯碼結果緩沖器,再經一系列插補準備(包括刀補計算和速度處理),送到插補緩沖器中,插補程序執行插補運算時,把插補緩沖存儲區的內容讀入到插補工作存儲區,然后用插補工作區的數據進行插補計算,并將結果送到插補輸出寄存器。
[align=center]

圖5 數據信息的交換[/align]
4 結論
嵌入式數控系統采用ARM和FPGA硬件平臺,減少了系統的外圍器件,具有體積小,性價比高,穩定性好等優點。并且利用μC/OS-Ⅱ實時操作系統作為開發工具,使數控系統具有優異的實時性,滿足了高速度、高精度的加工要求,很好的解決了傳統CNC系統中存在的問題。由此,嵌入式數控系統具有廣闊的發展前景。
參考文獻:
[1]劉艷霞,李淑芬.基于ARM的嵌入式數控系統[J].微計算機信息.2006,22(35):90-91,96
[2]Labrosse Jean J.邵貝貝譯,嵌入式實時操作系統μC/OS-Ⅱ[M].2版.北京:中國電力出版社.2003
[3]王曉鳴,王樹新,張宏偉.實時操作系統μC/OS-Ⅱ在ARM上的移植[J].機電一體化.2007,(1):56-58
[4]楊代華,陳志輝.基于實時操作系統μC/OS-Ⅱ的數控系統研制[J].制造技術與機床.2007,(12):21-23
作者簡介:
第一作者:朱曉潔(1983-),女,江蘇無錫人,碩士研究生,主要研究方向:數控系統。
通信地址:南京新模范馬路5號南京工業大學丁家橋校區119#信箱
郵編:210009 電話:13675122764
E-mail:stream_xu@126.com
第二作者:舒志兵(1965-),男,江蘇南京人,南京工業大學運動控制研究所所長,主要研究方向:交流伺服系統、DSP技術、現場總線、數控系統、運動控制、機電一體化系統等。
E-mail:shuzhibing@163.com