王宏文,王志華,李曉燕
(河北工業大學 控制科學與工程學院,天津 300130)
王宏文(教授),主要研究方向為現代傳動控制系統與智能化工程裝備、單片機與嵌入式系統。
噴碼機是一種通過軟件控制,使用非接觸方式在產品上進行標識的設備。它能夠以非接觸、高速、墨水快于的方式準確地在不同材料(如金屬、玻璃、塑料等)的物體表面噴印商標、防偽圖案、生產日期、保質日期、批號、規格、條形碼等標識。噴碼機一般均具備自動計數、時間日期自動更新等功能,廣泛應用于飲料、食品、煙酒、醫藥、化工、電子電器、鋁塑管材等行業。隨著噴碼機的普及,噴碼技術也呈現出智能化、人性化、中文化以及高處理能力和低維修率的趨勢。
本文通過測試8位單片機W77E58控制下的噴頭輸入/輸出波形,獲得噴頭工作原理,編寫噴頭的驅動程序,添加人機交互模塊,使噴碼機能夠在脫離上位機的情況下噴印信息。
通過對噴碼機控制系統的研究,分析了在其實現過程中的關鍵技術,研究并設計關鍵技術的實現細節,包括上下位機數據傳輸方法、打印數據轉換算法、噴頭的控制。
噴碼機噴頭接收的數據為電壓值矩陣,打印信息包含了數字、圖片、文字等,首先將打印信息經過一定的算法轉換成點陣數據,點陣數據中的點根據自己所處位置轉換成相應的電壓值,這些電壓值就是打印的時候所需的數據。
打印信息轉換成點陣信息需要借助于點陣字庫。點陣字庫是一個數據文件,在這個數據文件里面保存了漢字字符或者英文字符的點陣數據。點陣字庫是把每個字符都分成x×y個點,每個點的虛實用一個二進制位來表示,虛用0表示,實用1表示。漢字點陣字庫是根據區位碼的順序進行存儲的,因此可以根據區位碼來獲取一個字符的點陣在字庫中的存儲位置,獲取點陣起始存儲位置后,就可以從這個位置讀取出一個字符的點陣信息。例如若需要噴印一個16×16的中文漢字“好”,根據漢字點陣結構,“好”字的點陣結構如圖1所示,圖中左上角虛線中為該16×16點陣漢字的逐列掃描方式下的一個字節數據,其高低位的放置需要根據噴頭的串行接收數據方式相關,噴頭在接收128位數據時,高位在前,所以在提取圖像點陣數據時應把低位放在前面,該漢字點陣左上角虛線中的字節如圖1右半部分所示,其十六進制值為0x10。

圖1 漢字點陣
噴頭接收噴印信息和反饋信息是通過串行通信完成的。串行通信需要專門的接口控制器,由于CPU與接口控制器之間按并行方式傳輸,接口控制器與外設之間按串行方式傳輸,因此在串行接口中,必須要有“接收移位寄存器”(串→并)和“發送移位寄存器”(并→串)。
RS-232的流控制分為兩種,分別是硬件流控制和軟件流控制。本文RS-232通信采用軟件流控制方式。實現軟件流控制,必須有接收緩沖,當接收端的輸入緩沖區內數據量超過設定的高位時,就向數據發送端發出XOFF字符,發送端收到XOFF字符后就立即停止發送數據,當接收端的輸入緩沖區內數據量低于設定的低位時,就向數據發送端發出XON字符。發送端收到XON字符后就立即開始發送數據。
WinCE下開發串口通信,首先打開串口并進行初始化。使用創建文件函數CreateFile打開指定的串口,以獲取串口操作句柄m_hComm,如果打開成功,讀取串口的DCB結構體變量,根據需要通過DCB對串口進行相應的設置。調用函數SetupComn設置接收與發送的緩沖區大小,調用SetComnTimeouts函數設置串口接收與發送超時參數,用函數PurgeComn函數清除該串口的收發緩沖區。然后可以調用函數ReadFile和WriteFile對串口進行操作。串口使用函數CreateThread創建串口接收線程。以下為串口通信部分代碼:

本文主要涉及的硬件是由賽爾(XAAR)公司生產的XJ128按需噴印噴頭,噴頭前有一列共128個噴嘴,并以“二態”形式動作,即數據傳輸為1時噴墨,為0時不動作。其電氣接口共有30個引腳,但是其中有10個是保留接口,8個為電源和接地引腳。其他12個引腳為信號引腳。電氣接口與主控制電路的連接采用15針的RS232串行通信,為了方便操作和便于連接,其內部采用轉換電路,把30針引腳轉換為15針。以下為15針引腳的信號說明:
1 GNDH電源高壓地線
2 MISO輸出串口數據輸出
3 VDD電源5V邏輯供電
4 nRESET輸入驅動芯片邏輯復位
5 VPPH電源35V高壓供電
6 nFIRE輸入點火觸發信號
7 CLK輸入系統主時鐘
8 PHO輸入相位序列選取
9 SCK輸入時鐘信號,nSS2輸入 MOSI/MISOA芯片
10 選取芯片2
11 READY輸出“準備就緒”信號,nSS1輸入 MOSI/MISOA芯片
12 選取芯片1
13 MOSI輸入串口數據輸入
14 nFAULT輸出高溫預警信號
XJ128噴頭的內部有兩個64位的數據移位寄存器,通過MOSI引腳給噴頭傳輸數據時,當READY信號變為低電平時,先選中片選信號nSS2,128位數據中的高64位數據暫存在數據寄存器中,再選中片選信號nSS1,低64位數據存在另一個寄存器中。數據裝載完成后,就可以觸發nFIRE信號,使寄存器中的數據噴出。MOSI引腳配合SCK的上升沿就可將數據裝載到寄存器中。由于噴頭中的寄存器是雙緩沖移位寄存器,所以可以在噴印的同時,給寄存器裝載下一組要噴印數據。采用日本HIOKI 8855記憶示波器分組采樣對比15通道的信號波形,測試出通道信號如圖2所示,圖3為XJ128噴頭的控制時序圖。

圖2 通道信號測試圖(部分)

圖3 XJ128噴頭的控制時序圖
本設計的軟件設計部分主要由驅動、應用程序設計組成,其系統軟件結構如圖4所示:

圖4 軟件結構圖
上位機應用軟件作為用戶對系統進行人機交互操作的橋梁,是整個噴碼機系統中重要的一環。上位機應用軟件向用戶提供符合其操作習慣的友好界面,豐富的交互信息提示。根據噴碼機的特點,本系統的應用軟件主要包括三個子系統:編輯界面子系統、系統設置子系統、打印控制子系統。
2.1.1 編輯功能的設計
編輯界面的功能主要實現信息的創建,或對已有信息進行編輯。在編輯界面,用戶可以編輯自己想要打印的信息,可以在打印信息位置插入序列號,日期時間,文字,圖片等,可以對信息進行具體的設置,比如字體的格式、大小、信息反轉、打印次數。圖5為條形碼屬性編輯對話框。

圖5 條碼屬性編輯
2.1.2 打印控制功能的設計
打印控制功能主要包括打印速度的設定,打印噴頭的選擇,打印信息的狀態。有些信息并不是固定不變的,比如在信息中插入時間信息和序列號。這樣每條打印信息會隨著時間和打印信息條數實時改變。用戶可以通過打印信息界面清楚觀察到打印信息的變化情況,并且可以停止或者啟動當前打印、編輯當前打印信息或者重置打印計數器等操作。圖6為打印信息狀態窗口。

圖6 打印信息狀態
2.1.3 系統設置功能的設計
系統設置子系統提供一個噴碼機系統工作特性設置的界面,包括噴頭與串口選擇、語言文件的選擇等,如圖7所示。產品打印計數器設置界面可以選擇計數器、設置計數初值、累計值等參數。

圖7 系統選項
WinCE提供流式接口驅動程序管理流式設備。在流式接口驅動程序中,驅動程序負責把外設抽象成一個文件,而應用程序則使用操作系統提供的API對外設進行訪問。當系統啟動后,設備管理器就會枚舉[HKEY_LOCAL_MACHINE\Drivers\BuiltIn]下所有鍵值,并調用相應驅動的XXX_Init函數。如果函數調用成功,設備管理器就會將該驅動的信息寫入[HKEY_LOCAL_MACHINE\Drivers\Active]。WinCE提供流式接口驅動程序管理流式設備。應用程序使用文件API對設備進行訪問,文件API被操作系統轉發到FileSys.exe進程中,然后FileSys.exe發現是對設備的操作,就會把執行交給設備管理器處理;接著設備管理器根據具體的請求,調用流式接口驅動程序中暴露的接口。最終,驅動程序負責與硬件交互。以下是驅動程序中部分函數:


驅動除了進行數據傳遞之外,還要向噴碼機提供時鐘信號,發出點火信號等,以下是與噴頭連接引腳的寄存器設置:

當系統不再使用該設備時,應用程序可調用DeactivateDevice()函數把該驅動程序卸載。設備管理器會負責將sampledev.dll從device.exe的虛擬地址空間中移除,并且從 HKEY_LOCAL_MACHINE\Drivers\Active鍵下,移除對該設備驅動的記錄。
本文設計了一款基于S3C2440處理器和WinCE操作系統下的高解析噴碼機圖形編輯軟件。采用模塊化的編程分別實現了模塊的功能,并編寫了噴頭的驅動程序,界面設計簡潔美觀,便于用戶操作,具有很好的應用前景。
[1]方耀湘.基于FPGA的高解析噴碼機控制器設計與實現[D].長沙:湖南大學,2008:8-13.
[2]莊曉奇,張莉君,方敏.基于ARM9的嵌入式噴碼機控制系統設計與實現[J].計算機測量與控制,2010,18(8):1799-1801.
[3]陳誠.連續噴墨式噴碼機的設計[D].武漢:武漢理工大學,2009:9-39.
[4]謝劍操.基于ARM7的噴碼機控制系統開發[D].杭州:浙江大學,2006:1-27.
[5]曹景勝.基于WINCE的高解析噴碼系統上位機設計與實現[J].遼寧工業大學學報,2010(5).
[6]漢字點陣字庫原理[OL].[2013-10].http//blog.csdn.net/zixu/article/details/2045164.
[7]何宗健.Widows CE嵌入式系統[M].北京:北京航空航天大學出版社,2006.