劉景泰 石濤 王鴻鵬 陳新偉 林森
(南開大學(xué)機器人與信息自動化研究所,天津 300071)
近年來,由于市場的推動,二維平面噴繪得到了長足的發(fā)展,噴繪技術(shù)也隨之提高,主要集中在提高噴繪速度和提高噴墨頭每英寸所打印的點數(shù)(dots per inch,DPI)上。三維噴繪技術(shù)在發(fā)展上沒有標(biāo)志性的成果出現(xiàn),主要的技術(shù)瓶頸在于三維噴繪機械結(jié)構(gòu)復(fù)雜,噴墨頭向多噴嘴、大體積方向發(fā)展也不利于三維噴繪技術(shù)的發(fā)展[1]。
南開大學(xué)機器人與信息自動化研究所從2007年3月起著手利用國產(chǎn)RH6通用工業(yè)機器人進行三維真彩色噴繪系統(tǒng)原型機理的研究,積累了一定的前期經(jīng)驗[2-3]。根據(jù)三維噴繪的作業(yè)需求,系統(tǒng)要控制青、品 紅、黃、黑 (cyan、magenta、yellow、black,CMYK)四色噴頭在三維模型表面高速、準(zhǔn)確地噴上每個點位對應(yīng)的顏色。現(xiàn)有的噴墨打印機雖然技術(shù)成熟,但是它是一個封閉的技術(shù),只能用于平面打印,無法進行三維噴繪。項目組前期基于RH6工業(yè)機器人的樣機,其底層噴墨控制采用ARM處理器完成,通過定時器中斷控制GPIO來模擬噴墨時序。由于定時器資源有限,且受中斷響應(yīng)頻率限制,該方法存在噴墨頻率低、時序邊沿?zé)o法嚴格對齊、容易造成誤噴、靈活性不夠等缺點。
為了解決以上問題,本文采用高度靈活的FPGA作為主控模塊,利用FPGA豐富的邏輯資源對噴墨過程進行硬件加速[4-5],同時發(fā)揮FPGA并行處理能力,通過IP核復(fù)用來控制多路噴頭[6-7]。真彩色噴墨控制系統(tǒng)是三維噴繪機器人的重要組成部分之一,是三維噴繪中的核心技術(shù)。因此,研究真彩色噴墨控制系統(tǒng)具有重要的意義。
三維真彩色噴墨控制系統(tǒng)作為三維噴繪機器人的一個子系統(tǒng),與七軸運動控制子系統(tǒng)、負壓供墨子系統(tǒng)一起協(xié)調(diào)完成三維模型的噴繪作業(yè)過程。它的主要功能是在三維噴繪機器人運動過程中,根據(jù)影像數(shù)據(jù)產(chǎn)生相應(yīng)的CMYK四路噴頭控制信號,控制四個噴頭在每個點位噴出相應(yīng)的顏色數(shù)據(jù)。
三維真彩色噴墨控制系統(tǒng)由上位機、PMAC運動控制卡、FPGA主控單元、噴墨控制接口板和噴頭組成,其體系結(jié)構(gòu)如圖1所示。
圖1 噴墨控制系統(tǒng)體系結(jié)構(gòu)Fig.1 Architecture of the inkjet control system
圖1中,位置觸發(fā)信號是在噴頭運動過程中產(chǎn)生的,對應(yīng)著機器人電機上碼盤的真實位置信息,位置觸發(fā)的精度為單位墨滴的直徑。這樣就保證了噴頭在運動過程中的每一個位置都能噴上該點對應(yīng)的真實影像數(shù)據(jù)。由圖1可知,上位機通過以太網(wǎng)與FPGA主控單元進行交互,給FPGA發(fā)送噴墨影像數(shù)據(jù)和任務(wù)級的控制命令。PMAC運動控制卡產(chǎn)生位置觸發(fā)信號,作為中斷源接入FPGA。FPGA主控單元采用Xilinx的Virtex-II Pro系列 FPGA,以內(nèi)嵌的PowerPC405硬核處理器為中心,通過移植Xilkernel嵌入式操作系統(tǒng)和LwIP網(wǎng)絡(luò)協(xié)議,搭建了一個多任務(wù)實時處理平臺,使系統(tǒng)具有靈活的任務(wù)調(diào)度功能。FPGA主控單元對待噴影像數(shù)據(jù)進行解析,并在上位機的命令控制下,按照位置觸發(fā)信號的節(jié)拍,產(chǎn)生四路噴頭時序控制信號,經(jīng)噴墨控制接口板轉(zhuǎn)換成噴頭正常工作電平,從而驅(qū)動CMYK四色噴頭執(zhí)行噴墨動作。
隨著自動化技術(shù)的發(fā)展,F(xiàn)PGA已經(jīng)不局限于邏輯處理功能,而是兼具控制和數(shù)字信號處理功能。目前很多FPGA芯片都內(nèi)置了硬IP核,如32位硬核處理器、存儲器、數(shù)字時鐘管理器(digital clock manager,DCM)、鎖相環(huán)(phase-locked loop,PLL)、DSP 單元等[8]。這使得FPGA能更方便地應(yīng)用于嵌入式系統(tǒng)控制。
本系統(tǒng)采用Xilinx公司的Virtex-II Pro FPGA作為主控單元,它內(nèi)置了32位的PowerPC405硬核處理器,最高頻率達到300 MHz;采用CoreConnect總線結(jié)構(gòu),有處理器內(nèi)部總線(process local bus,PLB)和片上外圍總線(on-chip peripheral bus,OPB)兩種形式,PLB 總線頻率高達100 MHz,用來連接雙倍速率(double data rate,DDR)內(nèi)存控制器等高速設(shè)備,OPB總線用來連接UART等相對低速率的外圍設(shè)備[9]。
根據(jù)三維真彩色噴墨控制系統(tǒng)的需求,在FPGA中以PowerPC405處理器為核心,添加噴墨控制需要用到的各種外圍IP核,搭建如圖2所示的硬件平臺。
圖2 FPGA中硬件平臺結(jié)構(gòu)圖Fig.2 Structure of the hardware platform in FPGA
圖2中,硬件平臺主要包括10/100 Mbit/s以太網(wǎng)、DDR內(nèi)存控制器、SystemACE_CF控制器、中斷控制器、GPIO控制器和Opb_xj64 IP核。其中,10/100 Mbit/s以太網(wǎng)用來傳輸高速影像數(shù)據(jù),并與PC進行命令交互。系統(tǒng)配備了256 MB的DDR,用于存儲影像數(shù)據(jù),DDR內(nèi)存控制器提供DDR讀寫訪問接口,噴頭每次噴墨時從DDR中相應(yīng)地址取數(shù),DDR高效的讀寫性能保證了噴墨數(shù)據(jù)裝載的實時性。SystemACE_CF是CF卡控制器,系統(tǒng)采用了1個2 GB的CF卡。CF卡有兩個用途:一是FPGA配置文件存儲在CF卡中,上電之后自動對FPGA重配置;二是在CF卡上建立一個小型文件系統(tǒng),可以方便地存取文件。中斷控制器接收PMAC運動控制卡發(fā)出的位置觸發(fā)信號,產(chǎn)生中斷信號,交給PowerPC405進行處理。GPIO控制器實現(xiàn)對板載LED燈等通用I/O口的控制。Opb_xj64是自主設(shè)計的噴頭時序控制IP核,它是專門用來控制噴頭噴墨的標(biāo)準(zhǔn)化模塊,1個Opb_xj64 IP核控制1個噴頭。系統(tǒng)對該模塊進行了復(fù)用,采用4個Opb_xj64 IP核實現(xiàn)對CMYK四色噴頭的控制。
在三維真彩色噴繪系統(tǒng)中,由于三維模型的限制,同一時刻進行噴繪的若干點的高度數(shù)據(jù)不一致會導(dǎo)致噴嘴到該點的距離也不一致。一般地,體積越大的噴墨頭,在進行三維噴繪過程中,噴墨頭距離被噴模型的平均距離越大,噴墨效果越差。因此,在噴墨頭選型中,我們希望能夠使用體積相對較小的噴墨頭。Xaar公司早期推出的xj64噴墨頭擁有64個噴嘴,是目前市面上可見的體積較小的壓電式噴墨頭,分辨率為185像素/英寸(1英寸=25.4 mm),適合三維噴繪,所以本系統(tǒng)選擇xj64型噴頭。
xj64噴頭工作時鐘為1 MHz,具有特定的串行送數(shù)時序,在SCK信號的同步下,將64 bit數(shù)據(jù)串行移位寫入內(nèi)部寄存器,然后等待Nfire信號,如果Nfire變低,則噴頭執(zhí)行一次噴墨動作,噴出64 bit數(shù)據(jù)。本文設(shè)計了一個滿足噴頭控制信號時序邏輯的IP核Opb_xj64,使用VHDL編寫,采用同步時序設(shè)計方法,避免了由于競爭冒險引起的毛刺現(xiàn)象,且各功能模塊具有統(tǒng)一的復(fù)位信號,消除了系統(tǒng)啟動時的不確定狀態(tài)[10]。Opb_xj64采用模塊化的設(shè)計,主要包括兩大功能模塊的設(shè)計:OPB_IPIF接口模塊(OPB總線接口)和xj64時序邏輯模塊(噴繪時序邏輯)。Opb_xj64結(jié)構(gòu)如圖3所示。
圖3 Opb_xj64結(jié)構(gòu)圖Fig.3 Structure of Opb_xj64
圖3中,OPB_IPIF接口模塊實現(xiàn)OPB總線讀寫寄存器和訪問FIFO接口等操作。噴頭執(zhí)行一次噴墨動作的64 bit數(shù)據(jù)通過OPB總線發(fā)送給Opb_xj64,然后,xj64時序邏輯模塊將該64 bit數(shù)據(jù)轉(zhuǎn)換為符合噴頭時序規(guī)范的串行數(shù)據(jù)流,從而驅(qū)動噴頭執(zhí)行一次噴墨動作。同時,xj64時序邏輯模塊對噴頭反饋信號進行檢測,如果噴頭溫度過高,則停止噴墨,并向上反饋error信號。噴繪時序控制信號由狀態(tài)機產(chǎn)生,狀態(tài)轉(zhuǎn)換圖如圖4所示,包括“空閑”、“開始”、“裝載低32位數(shù)據(jù)”、“裝載高32位數(shù)據(jù)”、“等待 Ready信號”、“設(shè)置Nfire信號”、“停止”這7個狀態(tài)。
圖4 狀態(tài)轉(zhuǎn)換圖Fig.4 State transition diagram
本系統(tǒng)設(shè)計了一個噴墨控制接口板,用來連接噴頭和FPGA控制板。FPGA產(chǎn)生的噴墨時序控制信號經(jīng)過排線連接到噴墨控制接口板,接口板提供了4路噴頭接口,通過4根柔性扁平電纜(flexible flat cable,F(xiàn)FC)連接到噴頭。
噴墨控制接口板主要包括電源控制模塊和電平轉(zhuǎn)換模塊兩個模塊。電源控制模塊用于提供噴頭所需的3種輸入電源:35 V直流電源VPPH(高電流)、35 V直流電源VPPL(低電流、低噪聲)和5 V邏輯電源VDD。同時對它們的上電和掉電時序進行控制,避免出現(xiàn)由于上電或掉電時序錯誤造成的噴頭電路燒毀現(xiàn)象。系統(tǒng)使用繼電器對上電和掉電順序進行控制:5 V電源上電穩(wěn)定后才加載35 V電源;35 V電源完全掉電穩(wěn)定后5 V電源才掉電。由于FPGA主控模塊中Opb_xj64 IP核產(chǎn)生的噴墨時序信號都是3.3 V的LVTTL信號,而驅(qū)動噴頭的控制信號和噴頭反饋回來的nFault信號都是5 V的CMOS信號,所以還需進行電平轉(zhuǎn)換。電平轉(zhuǎn)換模塊采用SN74LVC4245芯片完成LVTTL電平與CMOS電平之間的轉(zhuǎn)換。
綜合考慮系統(tǒng)的復(fù)雜程度和實時性要求,選擇Xilkernel操作系統(tǒng),它具有嵌入式內(nèi)核完整的功能,支持POSIX開放結(jié)構(gòu),而且占用CPU資源較少,運行速度快,是中小型設(shè)計的理想操作系統(tǒng)。Xilkernel本身不帶有文件系統(tǒng)處理與TCP/IP協(xié)議棧,但它與LwIP具有良好的接口,加上CF卡中的FAT文件系統(tǒng),可以形成比較復(fù)雜的嵌入式系統(tǒng),滿足三維噴繪底層軟件的控制需求。按照自頂向下的設(shè)計方法,將噴墨控制底層軟件分為噴墨控制網(wǎng)絡(luò)服務(wù)器、中斷處理模塊、數(shù)據(jù)解析模塊、文件讀寫模塊、噴頭驅(qū)動模塊5個組成部分,軟件架構(gòu)如圖5所示。系統(tǒng)采用多線程來處理各個不同的任務(wù),提高了軟件處理能力。
圖5 噴墨控制底層軟件架構(gòu)圖Fig.5 Framework of bottom layer software of inkjet control
噴墨控制網(wǎng)絡(luò)服務(wù)器在FPGA中搭建TCP服務(wù)器,提供完整的Socket訪問接口。服務(wù)器負責(zé)與上位機交互,接收上位機的連接請求,并接收來自上層三維噴繪一體化軟件的任務(wù)級噴墨命令和高速影像數(shù)據(jù),同時,將確認信號和系統(tǒng)運行狀態(tài)反饋給上位機。
中斷處理模塊中的PMAC運動控制卡會根據(jù)真實位置信息,在每個噴墨點位產(chǎn)生1個位置觸發(fā)信號。該信號作為中斷源接入到中斷控制器,中斷處理模塊從DDR緩存中讀取該點位的影像數(shù)據(jù),并發(fā)送給噴頭驅(qū)動模塊,從而完成該位置的噴墨過程。
針對上位機與噴墨控制網(wǎng)絡(luò)服務(wù)器之間的網(wǎng)絡(luò)通信,制定了特定的數(shù)據(jù)包協(xié)議,定義了開始噴墨、停止噴墨、清除緩存、數(shù)據(jù)傳輸、噴頭初始化等十幾種命令。數(shù)據(jù)解析模塊負責(zé)對接收到的數(shù)據(jù)包進行拆包解析,提取影像數(shù)據(jù)存入DDR緩存中或者執(zhí)行噴頭初始化等命令。數(shù)據(jù)包分為命令數(shù)據(jù)包和確認數(shù)據(jù)包兩種。其中,命令數(shù)據(jù)包由上位機發(fā)送給FPGA主控單元,確認數(shù)據(jù)包由FPGA主控單元發(fā)送給上位機。數(shù)據(jù)包格式分別如表1和表2所示,每個命令數(shù)據(jù)包都對應(yīng)著1個確認數(shù)據(jù)包。
表1 命令數(shù)據(jù)包格式Tab.1 Format of the command data packet
表2 確認數(shù)據(jù)包格式Tab.2 Format of the acknowledgment data packet
文件讀寫模塊提供輔助功能,負責(zé)讀取存儲在CF卡文件系統(tǒng)中的離線文件,同時將系統(tǒng)工作過程中的相關(guān)狀態(tài),以日志文件的形式寫入CF卡文件系統(tǒng),方便對系統(tǒng)運行狀況進行監(jiān)督和調(diào)試。
噴頭驅(qū)動模塊是IP核Opb_xj64的驅(qū)動程序,是聯(lián)系噴頭硬件和控制軟件的橋梁,它為軟件提供訪問接口。驅(qū)動模塊提供噴頭復(fù)位(xj64_mReset)、判斷噴頭是否忙(xj64_isBusy)、噴頭裝載數(shù)據(jù)(xj64_loadData)和一次噴墨(once3dPrint64bit)等操作。
在ModelSim軟件中對噴墨時序控制IP核進行仿真。將64 bit測試數(shù)據(jù)64’hFFFF0000FF0F0F0F發(fā)送給噴頭,每一個比特位對應(yīng)噴頭的一個噴嘴。從仿真結(jié)果可以看到,串行數(shù)據(jù)流邏輯與噴頭數(shù)據(jù)表一致,串行時鐘達到1 MHz,數(shù)據(jù)與時鐘邊沿對齊,滿足建立時間、保持時間等約束條件。
根據(jù)前面所述軟硬件設(shè)計方法進行硬件綜合、應(yīng)用程序編譯和FPGA配置比特流生成,并下載到FPGA芯片中。最后,將本文設(shè)計的大型三維真彩色噴墨控制系統(tǒng)應(yīng)用于三維噴繪機器人,在雕刻好的三維模型上進行噴繪試驗。從噴繪試驗結(jié)果可以看出,本系統(tǒng)噴繪出的三維真彩色模型可以很好地與實際地形匹配,且色彩還原度較高。
本文設(shè)計的大型三維真彩色噴墨控制系統(tǒng),軟硬件都可重配置,具有高度靈活性和可擴展性。同時,本文設(shè)計了噴墨時序控制IP核,通過IP核的復(fù)用,可以支持CMYK四路噴頭,甚至更多;噴墨時序邏輯采用FPGA硬件實現(xiàn),保證了高速噴墨過程的準(zhǔn)確性和實時性。試驗證明,本系統(tǒng)能夠很好地滿足三維真彩色噴繪作業(yè)的需求,在一定程度上促進了三維噴繪行業(yè)的發(fā)展。
[1]Sun Lei,Chen Xinwei,Liu Jingtai,et al.3D terrain model approach by an industrial robot[C]//Proceedings of the 7th World Congress on Intelligent Control and Automation(WCICA),2008:320 -326.
[2]陳新偉.三維噴繪機器人噴墨機理研究[D].天津:南開大學(xué),2009.
[3]Niu Xuejuan,Liu Jingtai,Sun Lei,et al.Robot 3D sculpturing based on extracted NURBS[C]//IEEE International Conference on Robotics and Biomimetics(ROBIO),2007.
[4]Monmasson E,Cirstea M N.FPGA design methodology for industrial control systems—a review[J].IEEE Transactions on Industrial Electronics,2007,54(4):1 -19.
[5]林鍵,黃軼倫.面向噴墨打印機的高速數(shù)據(jù)處理系統(tǒng)[J].計算機工程,2010,36(23):1 -3.
[6]Sridharan K,Priya T K.The design of a hardware accelerator for real-time complete visibility graph construction and efficient FPGA implementation[J].IEEE Transactions on Industrial Electronics,2005,52(4):1185 -1187.
[7]Li Tzuuhseng S,Chang Shihjie,Chen Yixiang.Implementation of human-like driving skills by autonomous fuzzy behavior control on an FPGA-based car-like mobile robot[J].IEEE Transactions on Industrial Electronics,2003,50(5):867 -880.
[8]薛小剛,葛毅敏.Xilinx ISE 9.x FPGA/CPLD 設(shè)計指南[M].北京:人民郵電出版社,2007.
[9]楊強浩.基于EDK的FPGA嵌入式系統(tǒng)開發(fā)[M].北京:機械工業(yè)出版社,2008.
[10]He Yi,Li Changbin,Lang Zheyan,et al.Research on implementation of fuzzy logic control arithmetic based on FPGA[C]//Proceedings of the 8th World Congress on Intelligent Control and Automation(WCICA),2010:4608 -4613.