陳延文,陳旭文,管 永
(1.天水師范學(xué)院 電子信息與電氣工程學(xué)院,甘肅 天水 741001;2.蘭州達(dá)嘉噴碼標(biāo)識(shí)設(shè)備有限公司,甘肅 蘭州 730050)
為了實(shí)現(xiàn)工業(yè)生產(chǎn)過(guò)程中對(duì)產(chǎn)品的跟蹤和追溯,對(duì)產(chǎn)品內(nèi)外包裝進(jìn)行賦碼,并將內(nèi)外包裝的賦碼結(jié)果和內(nèi)外包裝的關(guān)聯(lián)結(jié)果保存到數(shù)據(jù)庫(kù)。通過(guò)軟件控制向打印機(jī)發(fā)送編碼或二維編碼,完成賦碼功能;內(nèi)外包裝的關(guān)聯(lián)由軟件完成,并存儲(chǔ)到數(shù)據(jù)庫(kù)中,要求可靠、快速、穩(wěn)定;便于企業(yè)后續(xù)利用本軟件產(chǎn)生的數(shù)據(jù),在ERP系統(tǒng)中開(kāi)發(fā)更復(fù)雜的應(yīng)用。
本軟件主要解決食品飲料行業(yè)中包裝的賦碼與關(guān)聯(lián)問(wèn)題。系統(tǒng)工作模型如圖1所示。
受蘭州達(dá)嘉噴碼標(biāo)識(shí)設(shè)備有限公司委托,開(kāi)發(fā)設(shè)計(jì)該公司代理銷(xiāo)售產(chǎn)品的配套軟件,該公司主要銷(xiāo)售產(chǎn)品包括激光噴碼打印機(jī)、條碼打印機(jī)等產(chǎn)品,該公司還為相關(guān)企業(yè)提供產(chǎn)品集成服務(wù),包括賦碼控制、關(guān)聯(lián)軟件的開(kāi)發(fā)。
向激光打印機(jī)和條碼打印機(jī)發(fā)送編碼,經(jīng)打印機(jī)打印賦碼,要求快速、準(zhǔn)確、穩(wěn)定;要求在賦碼打印的同時(shí),還要進(jìn)行內(nèi)、外包裝碼的相互關(guān)聯(lián),并將關(guān)聯(lián)結(jié)果存入數(shù)據(jù)庫(kù),以備后續(xù)查詢、跟蹤及ERP應(yīng)用開(kāi)發(fā)。
圖1 系統(tǒng)工作模型
(1)賦碼。指將軟件根據(jù)客戶要求的格式生成的代碼按照激光打印機(jī)和條碼打印機(jī)的通訊協(xié)議要求,經(jīng)過(guò)處理后,發(fā)送給激光打印機(jī)或者條碼打印機(jī),經(jīng)過(guò)激光打印機(jī)和條碼打印機(jī)雕刻或打印在產(chǎn)品的外包裝上的過(guò)程。
(2)關(guān)聯(lián)。指產(chǎn)品的外包裝(箱)的條形碼和產(chǎn)品的內(nèi)包裝(盒或瓶)的編碼之間的對(duì)應(yīng)關(guān)系。例如:如果對(duì)于6瓶(盒)/箱的包裝形式,那么,1個(gè)箱碼則對(duì)應(yīng)6個(gè)瓶(盒)碼,箱碼和瓶(盒)碼編碼要求必須唯一,不能重復(fù),防止內(nèi)外包裝碼之間對(duì)應(yīng)關(guān)系混亂,造成竄碼。
(3)前關(guān)聯(lián)。指在賦碼前,由軟件根據(jù)廠家設(shè)置的參數(shù),形成內(nèi)包裝(盒或瓶)的編碼與外包裝(箱)的條形碼之間的對(duì)應(yīng)關(guān)系。
(1)要求計(jì)算機(jī)與激光打印機(jī)和條碼打印機(jī)通訊協(xié)議采用RS232通訊。
(2)要求激光打印機(jī)和條碼打印機(jī)在波特率為19 200和9 600的情況下,關(guān)聯(lián)速度要達(dá)到最少2箱/s的速度。
(3)要求每個(gè)產(chǎn)品批次產(chǎn)品數(shù)量在10~200 000瓶之間。
(4)要求將賦碼結(jié)果和關(guān)聯(lián)結(jié)果存入數(shù)據(jù)庫(kù),便于數(shù)據(jù)查詢和數(shù)據(jù)導(dǎo)出。
(5)要求對(duì)賦碼出現(xiàn)失敗的情況下,可以進(jìn)行補(bǔ)救或重新打印賦碼。
(6)要求用戶界面友好、操作方便。
(1)硬件環(huán)境:X86 架構(gòu),主頻4.5GHZ,1G 內(nèi)存,天燦加密鎖,研華PCI1761-I/O卡。
(2)軟件環(huán)境:Windows XP、Windows 7、Windows 10平臺(tái),.NET Framework 3.5以上版本,研華PCI1761 I/O卡驅(qū)動(dòng)程序DAQNavi_PCI1761_PCM3761I_MIC3761_4.0.3.0以上版本,Access2010數(shù)據(jù)庫(kù)引擎。
軟件設(shè)計(jì)中的功能模塊包括:
(1)“新建任務(wù)”功能模塊。本功能模塊的功能是生成產(chǎn)品任務(wù)(實(shí)際就是生成Access 數(shù)據(jù)庫(kù)文件),將產(chǎn)品生產(chǎn)日期、產(chǎn)品批次、班次、每箱瓶數(shù)、生產(chǎn)線編碼、廠家編碼等信息存入數(shù)據(jù)庫(kù),并根據(jù)瓶數(shù)產(chǎn)生瓶碼數(shù)據(jù)庫(kù)表(BottleTable)和箱碼數(shù)據(jù)庫(kù)表(BoxTable),BottleTable 表的記錄條數(shù)等于瓶數(shù),BoxTable表的記錄條數(shù)等于瓶數(shù)/每箱瓶數(shù)。在每條記錄中產(chǎn)生唯一的隨機(jī)碼,為在關(guān)聯(lián)時(shí)產(chǎn)生盒(或瓶)碼、箱碼做準(zhǔn)備。
(2)“產(chǎn)品信息設(shè)置”模塊。本功能模塊的功能是設(shè)置產(chǎn)品基本信息,信息包括:產(chǎn)品編碼、產(chǎn)品名稱(chēng)、每箱瓶數(shù)、每垛箱數(shù)。將這些信息存入數(shù)據(jù)庫(kù)的表BasicTable中。要求實(shí)現(xiàn)增、刪、改的功能。
(3)“補(bǔ)印漏碼”模塊。本功能模塊的功能是對(duì)打印機(jī)打印賦碼過(guò)程中由于打印機(jī)故障或因打印質(zhì)量原因,對(duì)瓶(盒)碼及箱碼需要重新打印時(shí),通過(guò)查詢箱碼,實(shí)現(xiàn)對(duì)箱碼和瓶(盒)碼的查詢和打印功能。要求通過(guò)輸入箱碼的后8位,然后查詢出箱碼以及與箱碼關(guān)聯(lián)的瓶碼,然后選擇打印。
(4)“系統(tǒng)參數(shù)設(shè)置”模塊。本功能模塊的功能是設(shè)置條碼打印機(jī)(打印箱碼)的通訊串行口及波特率、激光打印機(jī)(打印瓶(盒)碼)的通訊串行口及波特率,廠家代碼、生產(chǎn)線代碼、導(dǎo)出文件夾、備份文件夾等。這些信息保存在系統(tǒng)配置文件sysconfig.ini文件中,以備使用。
(5)“導(dǎo)出關(guān)聯(lián)數(shù)據(jù)”模塊。本功能模塊的功能是以文本文件格式(擴(kuò)展名為T(mén)XT)導(dǎo)出數(shù)據(jù)庫(kù)文件中的關(guān)聯(lián)結(jié)果數(shù)據(jù),并保存在“系統(tǒng)參數(shù)設(shè)置”中設(shè)置的“導(dǎo)出文件夾”的文件夾下,以備開(kāi)發(fā)其他ERP應(yīng)用時(shí)使用。
(6)“系統(tǒng)日志瀏覽”模塊。本功能模塊的功能是在對(duì)系統(tǒng)運(yùn)行過(guò)程中產(chǎn)生的日志文件打開(kāi)并進(jìn)行瀏覽,通過(guò)瀏覽日志文件,對(duì)系統(tǒng)的運(yùn)行過(guò)程中的錯(cuò)誤進(jìn)行處理,對(duì)系統(tǒng)運(yùn)行性能進(jìn)行評(píng)估。
(7)“開(kāi)始生產(chǎn)”模塊。本功能模塊的功能是根據(jù)生成的產(chǎn)品任務(wù),根據(jù)客戶要求格式,產(chǎn)生瓶(盒)碼和箱碼,并發(fā)送給激光打印機(jī)和條碼打印機(jī),將瓶碼存入數(shù)據(jù)庫(kù)表BottleTable中,將箱碼存入數(shù)據(jù)庫(kù)表BoxTable 中,并且進(jìn)行瓶(盒)碼和箱碼的關(guān)聯(lián),并將關(guān)聯(lián)結(jié)果存入數(shù)據(jù)庫(kù)的BoxTable 中,要求在向激光打印機(jī)發(fā)送瓶碼時(shí),通過(guò)研華的PCI1761 I/O卡,接受激光打印機(jī)的“Marking”應(yīng)答信號(hào)的下降沿后,才發(fā)送,系統(tǒng)處理流程如圖2所示。
圖2 處理流程圖
基于物流管理的防竄碼前關(guān)聯(lián)軟件程序結(jié)構(gòu)如圖3所示。
系統(tǒng)功能需求與程序的關(guān)系見(jiàn)表1-表3。
表1 功能需求與程序的關(guān)系1
表2 功能需求與程序的關(guān)系2
表3 功能需求與程序的關(guān)系3
圖3 基于物流管理的防竄碼前關(guān)聯(lián)軟件程序結(jié)構(gòu)圖
在賦碼過(guò)程中,如果打印機(jī)出現(xiàn)故障、人為造成內(nèi)外包裝關(guān)聯(lián)錯(cuò)誤、打印質(zhì)量不理想的情況,需要人工處理。如果打印機(jī)出現(xiàn)故障,造成漏碼,需要人工找出遺漏的碼,然后用“補(bǔ)印漏碼”的功能進(jìn)行補(bǔ)打漏碼。若打印質(zhì)量不理想,也可以利用“補(bǔ)印漏碼”的功能重新打印。
數(shù)據(jù)庫(kù)讀寫(xiě)速度優(yōu)化的問(wèn)題,用戶要求在打印機(jī)波特率為19 200時(shí),根據(jù)打印內(nèi)容,賦碼打印速率達(dá)到3 箱/s,當(dāng)然這個(gè)速率和計(jì)算機(jī)配置有關(guān)系,與數(shù)據(jù)庫(kù)的讀寫(xiě)方法也有關(guān)系。目前在Pentium4 3.5G,1GB 內(nèi)存配置下,能達(dá)到 3 箱/s 的速率,滿足客戶要求。這個(gè)速率越高越好。
(1)用戶主界面,啟動(dòng)程序后,該界面首先顯示,實(shí)現(xiàn)與用戶總體交互,如圖4所示。
(2)“系統(tǒng)配置設(shè)置”界面,完成軟件系統(tǒng)運(yùn)行環(huán)境的信息配置,如圖5所示。
(3)“產(chǎn)品基本信息設(shè)置”界面,完成生產(chǎn)產(chǎn)品基本信息的設(shè)置,并存入數(shù)據(jù)庫(kù),如圖6所示。
(4)“生產(chǎn)任務(wù)”界面,完成生產(chǎn)任務(wù)的生成,并把生成數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù),如圖7所示。
圖4 用戶主界面
圖5 “系統(tǒng)配置”設(shè)置界面
圖6 “產(chǎn)品基本信息設(shè)置”界面
(5)“打開(kāi)生產(chǎn)任務(wù)”界面,完成生產(chǎn)任務(wù)的打開(kāi)(打開(kāi)對(duì)應(yīng)的數(shù)據(jù)庫(kù)文件),如圖8所示。
(6)“補(bǔ)印漏碼”界面,完成在賦碼過(guò)程中對(duì)漏碼或質(zhì)量不理想的碼進(jìn)行補(bǔ)打的對(duì)話框,如圖9所示。
(7)“關(guān)聯(lián)數(shù)據(jù)導(dǎo)出”界面,完成關(guān)聯(lián)數(shù)據(jù)以文本文件導(dǎo)出,以備開(kāi)發(fā)ERP應(yīng)用,如圖10所示。
(8)“瀏覽日志文件”界面,完成對(duì)日志文件的瀏覽功能,如圖11所示。
圖7 “生產(chǎn)任務(wù)”界面
圖8 “打開(kāi)生產(chǎn)任務(wù)”界面
圖9 “補(bǔ)印漏碼”界面
有四個(gè)外部硬件接口,分別為:
USB接口:利用第三方U盤(pán)加密鎖(天燦加密鎖)對(duì)軟件實(shí)現(xiàn)加密,防止用戶非法重復(fù)拷貝。與加密鎖有關(guān)的軟件包括:readPasswordDog 方法讀密碼,RegisterDeviceNotification()注冊(cè)設(shè)備。
PCI IO接口卡:型號(hào)為研華PCI1761 IO卡,需要安裝相應(yīng)的驅(qū)動(dòng)程序。
與激光打印機(jī)連接的串行口:波特率可以設(shè)置。
與條形碼打印機(jī)連接的串行口:波特率可以設(shè)置。
外部軟件接口:access2010數(shù)據(jù)庫(kù)驅(qū)動(dòng)引擎。
圖10 “關(guān)聯(lián)數(shù)據(jù)導(dǎo)出”界面
圖11 “瀏覽日志文件”界面
軟件中有一個(gè)類(lèi),是接口類(lèi),為串行通信提供統(tǒng)一接口,接口中有兩個(gè)方法。一個(gè)是事件處理方法Datareceived,另一個(gè)是數(shù)據(jù)發(fā)送方法SendData()。
操作步驟:參考圖2處理流程。
在圖12所示的主界面中,點(diǎn)擊“開(kāi)始”按鈕,程序開(kāi)始運(yùn)行,開(kāi)始賦碼并關(guān)聯(lián)。在運(yùn)行過(guò)程中,如果要停止系統(tǒng),可以在圖12所示的主界面中,點(diǎn)擊“停止”按鈕,使程序停止運(yùn)行。
圖12 系統(tǒng)主界面
用戶要求在打印機(jī)波特率為19 200 時(shí),根據(jù)打印內(nèi)容,賦碼打印速率達(dá)到3箱/s,經(jīng)過(guò)測(cè)試,在生成任務(wù)為20萬(wàn)瓶時(shí),賦碼打印速率可以達(dá)到5箱/s。
(1)產(chǎn)品基本信息E-R圖,如圖13所示。
圖13 產(chǎn)品基本信息E-R圖
(2)瓶(盒)碼信息E-R圖,如圖14所示。
圖14 瓶(盒)碼信息E-R圖
(3)箱信息E-R圖,如圖15所示。
圖15 箱信息E-R圖
通過(guò)本軟件系統(tǒng)的設(shè)計(jì),實(shí)現(xiàn)了客戶提出的要求和功能,并很好地利用C#提供的多線程并行運(yùn)算功能解決了數(shù)據(jù)庫(kù)的快速讀寫(xiě),提供了在C#中通過(guò)網(wǎng)口和串口與賦碼設(shè)備的接口設(shè)計(jì)規(guī)范,為研華PCI卡在工控機(jī)中的工業(yè)應(yīng)用提供了參考。