第1類是以單片機等微處理器作為控制核心的運動控制器。這類運動控制器速度較慢、精度不高、成本相對較低,只能在一些低速運行和對軌跡要求不高的輪廓運動控制場合應(yīng)用。
第2類是以專用芯片(ASIC)作為核心處理器的運動控制器,這類運動控制器結(jié)構(gòu)比較簡單,大多只能輸出脈沖信號,工作于開環(huán)控制方式。由于這類控制器不能提供連續(xù)插補功能,也沒有前饋功能,特別是對于大量的小線段連續(xù)運動的場合不能使用這類控制器。
第3類是基于PC總線的以DSP或FPGA作為核心處理器的開放式運動控制器。這類開放式運動控制器以DSP芯片作為運動控制器的核心處理器,以PC機作為信息處理平臺,運動控制器以插件形式嵌入PC機,即“PC+運動控制器”的模式。這樣的運動控制器具有信息處理能力強,開放程度高,運動軌跡控制準確,通用性好的特點。但是這種方式存在以下缺點:運動控制卡需要插入計算機主板的PCI或者ISA插槽,因此每個具體應(yīng)用都必須配置一臺PC機作為上位機。這無疑對設(shè)備的體積、成本和運行環(huán)境都有一定的限制,難以獨立運行和小型化。
針對這些問題,設(shè)計了一種基于ARM+DSP的嵌入式運動控制器。該控制器將嵌入式CPU與專用運動控制芯片相結(jié)合,將運動控制功能以功能模塊的方式嵌入到ARM主控板的架構(gòu),把不需要的設(shè)備裁減掉,既兼顧功能又節(jié)省成本。該控制器是一種可以脫離上位機單獨運行的一種獨立型運動控制器,具有良好的應(yīng)用前景。
1 嵌入式運動控制器的硬件平臺設(shè)計
嵌入式運動控制器的硬件主要包括兩個部分:ARM主控板和DSP運動控制板。這兩塊控制板通過通用I/O口以總線的方式連接在一起。在設(shè)計時,可以分別對ARM主控板和DSP運動控制板進行設(shè)計,*再調(diào)試。這種將ARM主控板和DSP運動控制板分開設(shè)計和調(diào)試的硬件方案,將設(shè)計難點分散,使設(shè)計和調(diào)試更簡單。
1.1 ARM主控板部分
本系統(tǒng)采用的ARM芯片為Samsung公司推出的16/32位RISC處理器S3C2440A,主頻為400 MHz,*頻率可達533 MHz。ARM主控板以嵌入式處理器S3C2440A為核心,外擴存儲器和通用設(shè)備接口。ARM主控板的硬件結(jié)構(gòu)框圖如圖1所示。
通過通用I/O接口與DSP運動控制板通信,實現(xiàn)ARM主控板與運動控制板之間數(shù)據(jù)的實時雙向傳送;外部NAND Flash存儲器(64 MB),用于存儲系統(tǒng)參數(shù)及運動指令;NOR Flash存儲器(2 MB),用于存放系統(tǒng)運行程序;SDRAM存儲器(64 MB),用于存放臨時數(shù)據(jù);通過串口、以太網(wǎng)接口、USB接口與上位機系統(tǒng)通信,實現(xiàn)兩者之間數(shù)據(jù)的傳送;通過LCD接口,實現(xiàn)320×240分辨率液晶屏的圖形與字符顯示,并具有觸摸屏接口,提供友好的人機交互界面;通過I/O擴展接口,提供可編程的數(shù)字I/O通道;通過JTAG接口與PC機通信,實現(xiàn)系統(tǒng)運行程序的仿真調(diào)試及下載,軟件升級接口。
1.2 DSP運動控制板部分
本系統(tǒng)DSP運動控制芯片選用PCL6045B。PCL6045B是一種功能十分強大的DSP運動控制芯片。芯片能夠控制四軸,并實現(xiàn)兩軸到四軸直線差補、兩軸圓弧差補。所有插補計算由芯片完成,上位機只需寫入圓弧的參數(shù)即可,其多軸插補控制功能特別優(yōu)秀。系統(tǒng)硬件采用主從式雙CPU結(jié)構(gòu)模式。主CPU為ARM處理器,負責鍵盤、顯示、網(wǎng)絡(luò)通信等管理工作;從CPU為PCL6045B運動控制芯片,專門負責運動控制的處理工作。PCL6045B與ARM的通信是靠讀寫I/O總線上的幾個地址來進行指令和數(shù)據(jù)的傳輸??刂葡到y(tǒng)硬件結(jié)構(gòu)框圖如圖2所示。
1.3 ARM處理器與運動控制芯片的連接
通過設(shè)置引腳IF0與IF1,PCL6045B芯片與不同的CPU相連,如表1所列。
本系統(tǒng)設(shè)置IF1:IF0=0:1,CPU連接如圖3所示。
2 嵌入式運動控制器的軟件設(shè)計
本系統(tǒng)可根據(jù)被控對象的特征設(shè)計不同的模塊化用戶軟件,來滿足不同的運動控制任務(wù)。模塊化軟件恰好是Linux操作系統(tǒng)的優(yōu)點。Linux還可以根據(jù)用戶的需求實現(xiàn)內(nèi)核的裁減和定制,源碼開放,網(wǎng)絡(luò)支持功能強大,價格上也更具有競爭優(yōu)勢等。所以該控制器選用Linux作為片上系統(tǒng)(SoC)。但是,Linux并不是一個實時操作系統(tǒng),因此,通過實時內(nèi)核補丁RTAI(Real Time Application In-terface),在硬件平臺的基礎(chǔ)上增加一個實時內(nèi)核,將Linux內(nèi)核當作它的優(yōu)先級*的任務(wù)執(zhí)行,從而保證運動控制系統(tǒng)的實時性。系統(tǒng)的控制軟件分為兩個區(qū)域:非實時域和實時域。非實時域是建立在普通Linux內(nèi)核基礎(chǔ)上的,其主要包括系統(tǒng)初始化和通信模塊。
①系統(tǒng)初始化:進行微處理器的硬件初始化,包括輸入/輸出接口的配置、具體總線通信方式的配置以及伺服系統(tǒng)相關(guān)的接口參數(shù)配置。
②通信模塊:負責運動控制卡和上位機之間的坐標值、速度值、數(shù)控系統(tǒng)的I/O接口狀態(tài)、報警狀態(tài)以及數(shù)據(jù)鏈表的傳輸。
實時域建立在RTAI實時內(nèi)核的基礎(chǔ)上。其實時任務(wù)通過實時進程的方式來完成,一種為周期性(peri_odic)實時進程,另一種為一次性(one shot)實時進程。實時域主要包括如下4個周期性實時線程:
①狀態(tài)檢測線程(rt_monitor_thread)。本任務(wù)對設(shè)備運行狀態(tài)進行檢測,負責從I/O端口讀入各個連接的I/O設(shè)備值,然后將狀態(tài)寫入狀態(tài)檢測緩沖區(qū)中,對設(shè)備急停、伺服報警、限位