趙宵凱, 方益民 , 徐海林
(江南大學(xué) 輕工過程先進(jìn)控制教育部重點(diǎn)實(shí)驗(yàn)室,江蘇 無錫214122)
運(yùn)動(dòng)控制系統(tǒng)在工業(yè)控制系統(tǒng)中隨處可見,同時(shí)工業(yè)控制對(duì)運(yùn)動(dòng)控制系統(tǒng)的要求也在不斷提高。我國(guó)對(duì)運(yùn)動(dòng)控制產(chǎn)品質(zhì)量要求不斷提升,傳統(tǒng)的基于PC 平臺(tái)的運(yùn)動(dòng)控制器逐漸顯示出高能耗、高成本、低可靠性等缺點(diǎn)[1-2]。隨著嵌入式技術(shù)的不斷發(fā)展,ARM 微處理器的成本低、能耗低、可靠性高等特點(diǎn)使得其在工業(yè)控制領(lǐng)域得到了充分應(yīng)用[3-5]。PCL6045BL 是一種基于DSP 的專用運(yùn)動(dòng)控制芯片,DSP 強(qiáng)大的數(shù)據(jù)處理能力和較高的運(yùn)行效率等優(yōu)點(diǎn),決定PCL6045BL 可以實(shí)現(xiàn)高精度、高速度的多軸伺服控制[6]。
為解決精密制造對(duì)低成本、可移植性強(qiáng)的通用型多軸數(shù)控系統(tǒng)的迫切需求,文中給出一種基于ARM 微處理器LPC1788 與DSP 專業(yè)運(yùn)動(dòng)控制芯片PCL6045BL 構(gòu)成的嵌入式四軸運(yùn)動(dòng)控制器。該嵌入式四軸運(yùn)動(dòng)控制器具有可以脫離PC 機(jī)運(yùn)行、通用性強(qiáng)、靈活性較大以及能耗低等優(yōu)點(diǎn),可以滿足運(yùn)動(dòng)控制系統(tǒng)高速、高精度的要求。它可廣泛應(yīng)用于雕刻機(jī)、機(jī)器人、繡花機(jī)以及數(shù)控加工等工業(yè)控制領(lǐng)域。
嵌入式四軸運(yùn)動(dòng)控制器主要由硬件部分和軟件部分構(gòu)成。硬件主要包括LPC1788 嵌入式主控板和PCL6045BL 運(yùn)動(dòng)控制板兩個(gè)部分。LPC1788 嵌入式主控板和PCL6045BL 運(yùn)動(dòng)控制板之間通過專用的IDE 通信接口進(jìn)行連接。軟件方面在硬件平臺(tái)上移植μC/OS-Ⅱ嵌入式實(shí)時(shí)操作系統(tǒng)、觸摸屏程序設(shè)計(jì)、設(shè)計(jì)PCL6045BL 應(yīng)用控制程序。采用上述的軟硬件平臺(tái),嵌入式運(yùn)動(dòng)控制器可以達(dá)到開放性能好、精度高的要求。嵌入式四軸運(yùn)動(dòng)控制器的結(jié)構(gòu)如圖1 所示。

圖1 嵌入式四軸運(yùn)動(dòng)控制器的構(gòu)成Fig.1 Composition of the embedded four axes motion controller
ARM 具有豐富的通信接口、存儲(chǔ)器資源以及人機(jī)接口,具備了系統(tǒng)移植的基本條件[7]。PCL6045BL運(yùn)動(dòng)控制芯片速度快,可靠性高,性能好,在運(yùn)動(dòng)控制方面有很大的優(yōu)勢(shì)[8]。嵌入式實(shí)時(shí)系統(tǒng)μC/OS-Ⅱ不僅提供一些任務(wù)管理、通信以及時(shí)間管理等基本服務(wù),將系統(tǒng)按照優(yōu)先級(jí)合理地分成多個(gè)任務(wù),并由μC/OS-Ⅱ提供系統(tǒng)服務(wù)進(jìn)行通信,以配合實(shí)現(xiàn)系統(tǒng)的控制目的[9-10]。將LPC1788 處理器、PCL6045BL 以及μC/OS-Ⅱ三者的優(yōu)勢(shì)應(yīng)用到本嵌入式四軸運(yùn)動(dòng)控制器中可以使其具有強(qiáng)大的功能,并縮短開發(fā)時(shí)間。
本嵌入式四軸運(yùn)動(dòng)控制器以LPC1788 為主控制芯片,在ARM 上移植μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)來進(jìn)行人機(jī)界面的顯示、I/O 的管理、任務(wù)間的通信、指令的編譯等工作。PCL6045BL 運(yùn)動(dòng)控制模塊主要負(fù)責(zé)位置控制、插補(bǔ)驅(qū)動(dòng)、速度反饋。用戶通過觸摸屏對(duì)運(yùn)動(dòng)的參數(shù)及模式進(jìn)行設(shè)置,LPC1788 根據(jù)運(yùn)動(dòng)的具體要求,通過與PCL6045BL 之間的IDE 通信接口來控制DSP 運(yùn)動(dòng)控制芯片發(fā)出脈沖以達(dá)到使伺服電機(jī)高速運(yùn)行。
嵌入式四軸運(yùn)動(dòng)控制器的硬件設(shè)計(jì)主要包括ARM 控制部分和PCL6045BL 運(yùn)動(dòng)控制部分。在設(shè)計(jì)時(shí),分別對(duì)ARM 控制部分和PCL6045BL 運(yùn)動(dòng)部分進(jìn)行設(shè)計(jì),最后制板,再進(jìn)行軟硬件聯(lián)合調(diào)試。運(yùn)動(dòng)控制系統(tǒng)的硬件如圖2 所示。

圖2 系統(tǒng)硬件框圖Fig.2 System hardware block diagram
ARM 部分以嵌入式處理器LPC1788 為核心,配有豐富的存儲(chǔ)模塊和通用接口,其功能主要有:
配置外部NAND Flash 存儲(chǔ)器、NOR Flash 存儲(chǔ)器以及SDRAM 用來存放系統(tǒng)參數(shù),操作系統(tǒng)代碼以及運(yùn)動(dòng)控制系統(tǒng)控制程序。
通過串口、CAN 總線與工控一體機(jī)通信,接受觸摸屏的數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行處理,得到控制命令和插補(bǔ)參數(shù)。
根據(jù)系統(tǒng)的運(yùn)動(dòng)控制參數(shù)對(duì)PCL6045BL 進(jìn)行操作,使其完成控制伺服的功能。
DSP 部分主要以NPM 公司的PCL6045BL 為核心,其主要功能如下:
接受ARM 部分發(fā)來的控制命令和插補(bǔ)參數(shù),同時(shí)反饋運(yùn)動(dòng)信息給ARM 部分。
PCL6045BL 根據(jù)LPC1788 發(fā)來的運(yùn)動(dòng)參數(shù),發(fā)出控制伺服電機(jī)的脈沖信號(hào),控制電機(jī)進(jìn)行定長(zhǎng)運(yùn)動(dòng)和插補(bǔ)運(yùn)動(dòng)。
接收并處理外部的限位、回原點(diǎn)、減速及編碼器信號(hào),增強(qiáng)運(yùn)動(dòng)控制系統(tǒng)的控制精度。
通過對(duì)IF0 和IF1 端子的設(shè)置,PCL6045BL 可以與8 位的Z80、16 位的8086、16 位的H8 和16 位的68 000 CPU 進(jìn)行過接口。表1 是PCL6045BL 與CPU接口,其中L 表示低電平,H 表示高電平[8]。

表1 PCL6045BL 與4 種CPU 接口時(shí)端子設(shè)置Tab.1 PCL6045BL with four CPU interface terminal Settings
PCL6045BL 與LPC1788 的通信是通過讀寫輸入輸出總線上的地址來進(jìn)行控制指令和數(shù)據(jù)傳輸?shù)?。PCL6045BL 每個(gè)軸的內(nèi)部寄存器地址由A0、A1和A2 地址線輸入決定,其控制地址范圍由輸入端子A3 和A4 進(jìn)行選擇[8]。因此在這種主從結(jié)構(gòu)的設(shè)計(jì)中,ARM 與PCL6045BL 的連接如圖3 所示。

圖3 PCL6045BL 與LPC1788 的接口電路Fig.3 PCL6045BL and LPC1788 interface circuit
根據(jù)系統(tǒng)的硬件原理,運(yùn)用Protel99 進(jìn)行原理圖設(shè)計(jì),并完成PCB 設(shè)計(jì)、電路板的焊接,得到嵌入式四軸運(yùn)動(dòng)控制器的硬件實(shí)物如圖4 所示。
嵌入式四軸運(yùn)動(dòng)控制器提供了豐富的外部接口信號(hào),每個(gè)軸具有± EL、減速及ORG 的4 個(gè)專用輸入信號(hào),以及脈沖輸出、編碼器輸入等信號(hào)。
μC/OS-Ⅱ是一種源代碼公開的嵌入式實(shí)時(shí)系統(tǒng),當(dāng)外部操作和數(shù)據(jù)出現(xiàn)時(shí),能夠接收并快速處理,然后根據(jù)處理結(jié)果盡快進(jìn)行反饋,控制系統(tǒng)對(duì)象或者對(duì)系統(tǒng)給出反應(yīng),創(chuàng)建有一定優(yōu)先級(jí)實(shí)時(shí)任務(wù),并協(xié)調(diào)其運(yùn)行的嵌入式操作系統(tǒng)。μC/OS-Ⅱ具有可移植性、可固化、可裁剪的特點(diǎn)[11-12]。μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)的源代碼是完全公開的,其包含的文件結(jié)構(gòu)如圖5 所示[13]。

圖4 嵌入式四軸運(yùn)動(dòng)控制器實(shí)物Fig.4 Embedded four axes motion controller object graph

圖5 系統(tǒng)軟件的整體結(jié)構(gòu)Fig.5 Overall structure of the system software
對(duì)μC/OS-Ⅱ的移植主要是對(duì)處理器相關(guān)代碼的重寫或修改。移植的主要內(nèi)容包括:在OS_CPU.H 中用#define 設(shè)置一個(gè)常量的值、聲明10 個(gè)數(shù)據(jù)類型和#define 聲明3 個(gè)宏;在OS_CPU_C.c 中用C語言編寫6 個(gè)簡(jiǎn)單的函數(shù);在OS_CPU_A.asm 中編寫4 個(gè)匯編語言函數(shù)。
完成以上代碼的移植,將源程序和操作系統(tǒng)一起編譯,然后將生成的二進(jìn)制執(zhí)行文件下載到LPC1788 上,實(shí)時(shí)嵌入式系統(tǒng)μC/OS-Ⅱ就可以在ARM LPC1788 處理器上正常運(yùn)行。
μC/OS-Ⅱ提供基于優(yōu)先級(jí)搶占式的實(shí)時(shí)操作系統(tǒng)內(nèi)核,大致可以分為系統(tǒng)核心(包含任務(wù)調(diào)度)、任務(wù)管理、時(shí)間管理、多任務(wù)同步與通信、內(nèi)存管理、CPU 移植等部分。
μC/OS-Ⅱ操作系統(tǒng)支持多任務(wù),每個(gè)任務(wù)都具有優(yōu)先級(jí),任務(wù)越重要,賦予的優(yōu)先級(jí)應(yīng)越高,系統(tǒng)內(nèi)核總是將CPU 分配給處于就緒態(tài)的優(yōu)先級(jí)最高任務(wù)。
根據(jù)實(shí)現(xiàn)性優(yōu)先原則劃分任務(wù)的方法,優(yōu)先級(jí)大小將系統(tǒng)任務(wù)劃分為PCL6045BL 控制任務(wù)、外部信號(hào)控制任務(wù)、伺服單元采集任務(wù)、Modbus 協(xié)議通信任務(wù)以及觸摸屏管理任務(wù)。
與沒有系統(tǒng)的程序一樣,嵌入式μC/OS-Ⅱ?qū)崟r(shí)多任務(wù)操作系統(tǒng)也有一個(gè)main 主函數(shù),它是所有函數(shù)的運(yùn)行入口點(diǎn)。在主函數(shù)中主要實(shí)現(xiàn)硬件的初始化、操作系統(tǒng)的初始化OSInit()、任務(wù)創(chuàng)建、一些任務(wù)通信方法的創(chuàng)建等操作。系統(tǒng)運(yùn)行的基本流程如圖6 所示。

圖6 用戶程序流程Fig.6 User program process
在μC/OS-Ⅱ運(yùn)行任何任務(wù)程序之前,首先要調(diào)用系統(tǒng)初始化函數(shù)OSInit()對(duì)操作系統(tǒng)進(jìn)行初始化。主函數(shù)中在用開始多任務(wù)調(diào)度OSStart()函數(shù)之前,用戶必須通過OSTaskCreate()函數(shù)建立至少一個(gè)應(yīng)用任務(wù),而且任務(wù)不能在中斷服務(wù)程序中建立,否則應(yīng)用程序會(huì)崩潰。在主函數(shù)運(yùn)行到OSStart()時(shí),系統(tǒng)就會(huì)進(jìn)入開始多任務(wù)環(huán)境,μC/OS-Ⅱ會(huì)運(yùn)行處于就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)。
PCL6045BL 是通過LPC1788 的總線對(duì)寄存器賦值來工作的,把命令寫入運(yùn)動(dòng)控制芯片PCL6045BL,用PCL6045BL 來完成運(yùn)動(dòng)控制,其工作流程如圖7 所示。當(dāng)寫入啟動(dòng)指令后,PCL6045BL開始運(yùn)動(dòng)。

圖7 PCL6045 工作流程Fig.7 PCL6045 workflow
圓弧運(yùn)動(dòng)從(0,0)到(2 000,2 000)的圓弧,如圖8 所示。

圖8 圓弧插補(bǔ)軌跡Fig.8 Trajectory of circular interpolation
選擇圓弧插補(bǔ)順時(shí)針模式來實(shí)現(xiàn)如上圓弧,此時(shí)MOD 設(shè)為64 H。使用該模式時(shí),應(yīng)設(shè)置每個(gè)插補(bǔ)軸的運(yùn)動(dòng)速度,在PRMD 寄存器中指定是否使用恒定合成速度控制,并在所有插補(bǔ)軸的PRMV 寄存器中指定終點(diǎn)位置,在PRIP 寄存器中輸入中心坐標(biāo)。在順時(shí)針插補(bǔ)中,PCL 畫一條以中心坐標(biāo)為中心點(diǎn),從當(dāng)前坐標(biāo)到結(jié)束點(diǎn)坐標(biāo)的順時(shí)針圓弧,其流程如圖9 所示。

圖9 圓弧插補(bǔ)控制流程Fig.9 Circular arc interpolation control flow chart
X 軸和Y 軸的輸出脈沖波形如圖10 所示。CH1為X 軸脈沖波形,CH2 為Y 軸脈沖波形,其脈沖均為低電平時(shí)有效。
從X,Y 軸2 軸圓弧插補(bǔ)實(shí)驗(yàn)可以看出,在看到的波形中X 軸分擔(dān)了插補(bǔ)運(yùn)算的主要任務(wù),2 個(gè)軸互相配合完成圓弧插補(bǔ)動(dòng)作。嵌入式四軸運(yùn)動(dòng)控制器可以準(zhǔn)確地實(shí)現(xiàn)PCL6045BL 2 軸圓弧插補(bǔ)的功能,驗(yàn)證了系統(tǒng)方案的正確性。
該運(yùn)動(dòng)控制器的硬件結(jié)構(gòu)是基于微處理器LPC1788 和PCL6045BL 運(yùn)動(dòng)控制芯片設(shè)計(jì)的,它較好地發(fā)揮了ARM 處理器的高性能、低成本和運(yùn)動(dòng)控制芯片的高可靠、開發(fā)周期短的優(yōu)點(diǎn)和PCL6045BL強(qiáng)大的運(yùn)動(dòng)控制能力;在控制器硬件平臺(tái)上移植μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)既能使整個(gè)軟件系統(tǒng)結(jié)構(gòu)簡(jiǎn)潔、層次清晰,又能很好地達(dá)到運(yùn)動(dòng)控制實(shí)時(shí)性要求。圓弧插補(bǔ)實(shí)驗(yàn)驗(yàn)證了方案的正確性,整個(gè)系統(tǒng)可靠、穩(wěn)定且響應(yīng)速度快。

圖10 圓弧插補(bǔ)脈沖輸出拉寬顯示Fig.10 Circular arc interpolation pulse output shows wide
[1]劉建群,陳新度.Qt 環(huán)境下基于PMAC 運(yùn)動(dòng)控制器的控制系統(tǒng)開發(fā)與應(yīng)用[J].組合機(jī)床與自動(dòng)化加工技術(shù),2014(1):114-120.
LIU Jianqun,CHEN Xindun.Qt environment with PMAC motion controller based control system development and application of[J].Journal of Combination Machine Tools and Automatic Processing Technology,2014(1):114-120.(in Chinese)
[2]彭全海.基于GT 運(yùn)動(dòng)控制器開放式數(shù)控系統(tǒng)的研究[D].大連:大連交通大學(xué),2012.
[3]馬義德,劉映杰,張新國(guó).嵌入式系統(tǒng)的現(xiàn)狀及發(fā)展前景[J].信息技術(shù),2001(12):57-59.
MA Yide,LIU Yingjie,ZHANG Xinguo. Current situation and development prospect of the embedded system[J]. Journal of Information Technology,2001(12):57-59.(in Chinese)
[4]Jack Ganssle.Changes in embedded design mathodology[J].Embedded System Programming,1999,9:35-40.
[5]孫安青.ARM Cortex-M3 嵌入式開發(fā)實(shí)例詳解:基于NXP LPC1768[M].北京:北京航空航天大學(xué)出版社,2012.
[6]鄭廣,劉電霆.基于Rabbit6000 和PCL6045BL 的運(yùn)動(dòng)控制器設(shè)計(jì)[J].軟件導(dǎo)刊,2012,11(4):100-102.
ZHENG Guang,LIU Dianting.Motion controller design based on Rabbit6000 and PCL6045BL[J].Journal of Software Tribune,2012,11(4):100-102.(in Chinese)
[7]CHEN Y D,WEI H X,WANG T M. Embedded control system for industrial robots[C]//2010 International Conference on Computer,Mechatronics,Control and Electronic Engineering.Shanghai:Shanghai Jiaotong University,2010:122-125.
[8]葉佩青,張輝.PCL6045B 運(yùn)動(dòng)控制與數(shù)控應(yīng)用[M].北京:清華大學(xué)出版社,2007.
[9]陳瑤,李佳,宋寶華.Cortex-M3 +μC/OS-Ⅱ嵌入式系統(tǒng)開發(fā)入門與應(yīng)用[M].北京:人民郵電出版社,2010.
[10]Jean J Labrosse.Micro C/0S—ⅡThe Real Time Kernel[M].Montreal,Canada:CMP Books,2002.
[11]賈麗.基于μC/OS-Ⅱ的以太網(wǎng)設(shè)備遠(yuǎn)程管理軟件設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2010.
[12]李海強(qiáng).基于ARM+μC/OS-Ⅱ的智能變功率開水器控制器的研究與設(shè)計(jì)[D].南京:南京理工大學(xué),2013.
[13]李杰.基于μC/OS-Ⅱ的磁電機(jī)焊錫機(jī)器人控制系統(tǒng)設(shè)計(jì)與研究[D].重慶:重慶大學(xué),2013.