王宏文,王志華,李曉燕
(河北工業(yè)大學 控制科學與工程學院,天津 300130)
王宏文(教授),主要研究方向為現(xiàn)代傳動控制系統(tǒng)與智能化工程裝備、單片機與嵌入式系統(tǒng)。
噴碼機是一種通過軟件控制,使用非接觸方式在產(chǎn)品上進行標識的設備。它能夠以非接觸、高速、墨水快于的方式準確地在不同材料(如金屬、玻璃、塑料等)的物體表面噴印商標、防偽圖案、生產(chǎn)日期、保質(zhì)日期、批號、規(guī)格、條形碼等標識。噴碼機一般均具備自動計數(shù)、時間日期自動更新等功能,廣泛應用于飲料、食品、煙酒、醫(yī)藥、化工、電子電器、鋁塑管材等行業(yè)。隨著噴碼機的普及,噴碼技術也呈現(xiàn)出智能化、人性化、中文化以及高處理能力和低維修率的趨勢。
本文通過測試8位單片機W77E58控制下的噴頭輸入/輸出波形,獲得噴頭工作原理,編寫噴頭的驅(qū)動程序,添加人機交互模塊,使噴碼機能夠在脫離上位機的情況下噴印信息。
通過對噴碼機控制系統(tǒng)的研究,分析了在其實現(xiàn)過程中的關鍵技術,研究并設計關鍵技術的實現(xiàn)細節(jié),包括上下位機數(shù)據(jù)傳輸方法、打印數(shù)據(jù)轉(zhuǎn)換算法、噴頭的控制。
噴碼機噴頭接收的數(shù)據(jù)為電壓值矩陣,打印信息包含了數(shù)字、圖片、文字等,首先將打印信息經(jīng)過一定的算法轉(zhuǎn)換成點陣數(shù)據(jù),點陣數(shù)據(jù)中的點根據(jù)自己所處位置轉(zhuǎn)換成相應的電壓值,這些電壓值就是打印的時候所需的數(shù)據(jù)。
打印信息轉(zhuǎn)換成點陣信息需要借助于點陣字庫。點陣字庫是一個數(shù)據(jù)文件,在這個數(shù)據(jù)文件里面保存了漢字字符或者英文字符的點陣數(shù)據(jù)。點陣字庫是把每個字符都分成x×y個點,每個點的虛實用一個二進制位來表示,虛用0表示,實用1表示。漢字點陣字庫是根據(jù)區(qū)位碼的順序進行存儲的,因此可以根據(jù)區(qū)位碼來獲取一個字符的點陣在字庫中的存儲位置,獲取點陣起始存儲位置后,就可以從這個位置讀取出一個字符的點陣信息。例如若需要噴印一個16×16的中文漢字“好”,根據(jù)漢字點陣結構,“好”字的點陣結構如圖1所示,圖中左上角虛線中為該16×16點陣漢字的逐列掃描方式下的一個字節(jié)數(shù)據(jù),其高低位的放置需要根據(jù)噴頭的串行接收數(shù)據(jù)方式相關,噴頭在接收128位數(shù)據(jù)時,高位在前,所以在提取圖像點陣數(shù)據(jù)時應把低位放在前面,該漢字點陣左上角虛線中的字節(jié)如圖1右半部分所示,其十六進制值為0x10。
圖1 漢字點陣
噴頭接收噴印信息和反饋信息是通過串行通信完成的。串行通信需要專門的接口控制器,由于CPU與接口控制器之間按并行方式傳輸,接口控制器與外設之間按串行方式傳輸,因此在串行接口中,必須要有“接收移位寄存器”(串→并)和“發(fā)送移位寄存器”(并→串)。
RS-232的流控制分為兩種,分別是硬件流控制和軟件流控制。本文RS-232通信采用軟件流控制方式。實現(xiàn)軟件流控制,必須有接收緩沖,當接收端的輸入緩沖區(qū)內(nèi)數(shù)據(jù)量超過設定的高位時,就向數(shù)據(jù)發(fā)送端發(fā)出XOFF字符,發(fā)送端收到XOFF字符后就立即停止發(fā)送數(shù)據(jù),當接收端的輸入緩沖區(qū)內(nèi)數(shù)據(jù)量低于設定的低位時,就向數(shù)據(jù)發(fā)送端發(fā)出XON字符。發(fā)送端收到XON字符后就立即開始發(fā)送數(shù)據(jù)。
WinCE下開發(fā)串口通信,首先打開串口并進行初始化。使用創(chuàng)建文件函數(shù)CreateFile打開指定的串口,以獲取串口操作句柄m_hComm,如果打開成功,讀取串口的DCB結構體變量,根據(jù)需要通過DCB對串口進行相應的設置。調(diào)用函數(shù)SetupComn設置接收與發(fā)送的緩沖區(qū)大小,調(diào)用SetComnTimeouts函數(shù)設置串口接收與發(fā)送超時參數(shù),用函數(shù)PurgeComn函數(shù)清除該串口的收發(fā)緩沖區(qū)。然后可以調(diào)用函數(shù)ReadFile和WriteFile對串口進行操作。串口使用函數(shù)CreateThread創(chuàng)建串口接收線程。以下為串口通信部分代碼:
本文主要涉及的硬件是由賽爾(XAAR)公司生產(chǎn)的XJ128按需噴印噴頭,噴頭前有一列共128個噴嘴,并以“二態(tài)”形式動作,即數(shù)據(jù)傳輸為1時噴墨,為0時不動作。其電氣接口共有30個引腳,但是其中有10個是保留接口,8個為電源和接地引腳。其他12個引腳為信號引腳。電氣接口與主控制電路的連接采用15針的RS232串行通信,為了方便操作和便于連接,其內(nèi)部采用轉(zhuǎn)換電路,把30針引腳轉(zhuǎn)換為15針。以下為15針引腳的信號說明:
1 GNDH電源高壓地線
2 MISO輸出串口數(shù)據(jù)輸出
3 VDD電源5V邏輯供電
4 nRESET輸入驅(qū)動芯片邏輯復位
5 VPPH電源35V高壓供電
6 nFIRE輸入點火觸發(fā)信號
7 CLK輸入系統(tǒng)主時鐘
8 PHO輸入相位序列選取
9 SCK輸入時鐘信號,nSS2輸入 MOSI/MISOA芯片
10 選取芯片2
11 READY輸出“準備就緒”信號,nSS1輸入 MOSI/MISOA芯片
12 選取芯片1
13 MOSI輸入串口數(shù)據(jù)輸入
14 nFAULT輸出高溫預警信號
XJ128噴頭的內(nèi)部有兩個64位的數(shù)據(jù)移位寄存器,通過MOSI引腳給噴頭傳輸數(shù)據(jù)時,當READY信號變?yōu)榈碗娖綍r,先選中片選信號nSS2,128位數(shù)據(jù)中的高64位數(shù)據(jù)暫存在數(shù)據(jù)寄存器中,再選中片選信號nSS1,低64位數(shù)據(jù)存在另一個寄存器中。數(shù)據(jù)裝載完成后,就可以觸發(fā)nFIRE信號,使寄存器中的數(shù)據(jù)噴出。MOSI引腳配合SCK的上升沿就可將數(shù)據(jù)裝載到寄存器中。由于噴頭中的寄存器是雙緩沖移位寄存器,所以可以在噴印的同時,給寄存器裝載下一組要噴印數(shù)據(jù)。采用日本HIOKI 8855記憶示波器分組采樣對比15通道的信號波形,測試出通道信號如圖2所示,圖3為XJ128噴頭的控制時序圖。
圖2 通道信號測試圖(部分)
圖3 XJ128噴頭的控制時序圖
本設計的軟件設計部分主要由驅(qū)動、應用程序設計組成,其系統(tǒng)軟件結構如圖4所示:
圖4 軟件結構圖
上位機應用軟件作為用戶對系統(tǒng)進行人機交互操作的橋梁,是整個噴碼機系統(tǒng)中重要的一環(huán)。上位機應用軟件向用戶提供符合其操作習慣的友好界面,豐富的交互信息提示。根據(jù)噴碼機的特點,本系統(tǒng)的應用軟件主要包括三個子系統(tǒng):編輯界面子系統(tǒng)、系統(tǒng)設置子系統(tǒng)、打印控制子系統(tǒng)。
2.1.1 編輯功能的設計
編輯界面的功能主要實現(xiàn)信息的創(chuàng)建,或?qū)σ延行畔⑦M行編輯。在編輯界面,用戶可以編輯自己想要打印的信息,可以在打印信息位置插入序列號,日期時間,文字,圖片等,可以對信息進行具體的設置,比如字體的格式、大小、信息反轉(zhuǎn)、打印次數(shù)。圖5為條形碼屬性編輯對話框。
圖5 條碼屬性編輯
2.1.2 打印控制功能的設計
打印控制功能主要包括打印速度的設定,打印噴頭的選擇,打印信息的狀態(tài)。有些信息并不是固定不變的,比如在信息中插入時間信息和序列號。這樣每條打印信息會隨著時間和打印信息條數(shù)實時改變。用戶可以通過打印信息界面清楚觀察到打印信息的變化情況,并且可以停止或者啟動當前打印、編輯當前打印信息或者重置打印計數(shù)器等操作。圖6為打印信息狀態(tài)窗口。
圖6 打印信息狀態(tài)
2.1.3 系統(tǒng)設置功能的設計
系統(tǒng)設置子系統(tǒng)提供一個噴碼機系統(tǒng)工作特性設置的界面,包括噴頭與串口選擇、語言文件的選擇等,如圖7所示。產(chǎn)品打印計數(shù)器設置界面可以選擇計數(shù)器、設置計數(shù)初值、累計值等參數(shù)。
圖7 系統(tǒng)選項
WinCE提供流式接口驅(qū)動程序管理流式設備。在流式接口驅(qū)動程序中,驅(qū)動程序負責把外設抽象成一個文件,而應用程序則使用操作系統(tǒng)提供的API對外設進行訪問。當系統(tǒng)啟動后,設備管理器就會枚舉[HKEY_LOCAL_MACHINE\Drivers\BuiltIn]下所有鍵值,并調(diào)用相應驅(qū)動的XXX_Init函數(shù)。如果函數(shù)調(diào)用成功,設備管理器就會將該驅(qū)動的信息寫入[HKEY_LOCAL_MACHINE\Drivers\Active]。WinCE提供流式接口驅(qū)動程序管理流式設備。應用程序使用文件API對設備進行訪問,文件API被操作系統(tǒng)轉(zhuǎn)發(fā)到FileSys.exe進程中,然后FileSys.exe發(fā)現(xiàn)是對設備的操作,就會把執(zhí)行交給設備管理器處理;接著設備管理器根據(jù)具體的請求,調(diào)用流式接口驅(qū)動程序中暴露的接口。最終,驅(qū)動程序負責與硬件交互。以下是驅(qū)動程序中部分函數(shù):
驅(qū)動除了進行數(shù)據(jù)傳遞之外,還要向噴碼機提供時鐘信號,發(fā)出點火信號等,以下是與噴頭連接引腳的寄存器設置:
當系統(tǒng)不再使用該設備時,應用程序可調(diào)用DeactivateDevice()函數(shù)把該驅(qū)動程序卸載。設備管理器會負責將sampledev.dll從device.exe的虛擬地址空間中移除,并且從 HKEY_LOCAL_MACHINE\Drivers\Active鍵下,移除對該設備驅(qū)動的記錄。
本文設計了一款基于S3C2440處理器和WinCE操作系統(tǒng)下的高解析噴碼機圖形編輯軟件。采用模塊化的編程分別實現(xiàn)了模塊的功能,并編寫了噴頭的驅(qū)動程序,界面設計簡潔美觀,便于用戶操作,具有很好的應用前景。
[1]方耀湘.基于FPGA的高解析噴碼機控制器設計與實現(xiàn)[D].長沙:湖南大學,2008:8-13.
[2]莊曉奇,張莉君,方敏.基于ARM9的嵌入式噴碼機控制系統(tǒng)設計與實現(xiàn)[J].計算機測量與控制,2010,18(8):1799-1801.
[3]陳誠.連續(xù)噴墨式噴碼機的設計[D].武漢:武漢理工大學,2009:9-39.
[4]謝劍操.基于ARM7的噴碼機控制系統(tǒng)開發(fā)[D].杭州:浙江大學,2006:1-27.
[5]曹景勝.基于WINCE的高解析噴碼系統(tǒng)上位機設計與實現(xiàn)[J].遼寧工業(yè)大學學報,2010(5).
[6]漢字點陣字庫原理[OL].[2013-10].http//blog.csdn.net/zixu/article/details/2045164.
[7]何宗健.Widows CE嵌入式系統(tǒng)[M].北京:北京航空航天大學出版社,2006.