陳 勇,王宏偉
(重慶郵電大學(xué)網(wǎng)絡(luò)化控制與智能儀器儀表教育部重點實驗室,重慶400065)
隨著現(xiàn)代物流建設(shè)的發(fā)展,倉儲管理在物流管理工作中的重要性日益提高,已成為企業(yè)物流管理的核心部分。目前我國倉儲管理基本處于人工管理或半自動化管理,即傳統(tǒng)的數(shù)據(jù)采集方式,靠人員現(xiàn)場手工記錄,并且手工錄入計算機內(nèi),特別是對于一些單體大型倉庫、多倉庫存儲或面積較大的露天場地等,存在產(chǎn)品信息難以實時獲取,人力勞動的重復(fù)以及差錯的出現(xiàn)機率增大。此外,在一些以機械設(shè)計加工為主的企業(yè)倉儲,在生產(chǎn)加工過程中存在的毛坯、半成品、成品等需要管理,這些產(chǎn)品型號、品種繁多,庫房產(chǎn)品清理、排查、存儲等存在一系列問題[1-2]。為了提高倉儲管理的高效性,通過射頻識別實現(xiàn)對物料、訂單、人員、設(shè)備等信息的實時采集與現(xiàn)場處理,設(shè)計多功能便攜式數(shù)據(jù)終端,采集的數(shù)據(jù)可以實時的與控制平臺數(shù)據(jù)庫相交換,這樣,既可實現(xiàn)采集業(yè)務(wù)數(shù)據(jù),又能現(xiàn)場進行較復(fù)雜的業(yè)務(wù)處理,避免人工錄入出錯的可能,提高工作效率。將便攜式終端應(yīng)用于智能倉儲管理系統(tǒng),可以解決企業(yè)倉儲的一些實際性問題。
該便攜式終端主要以射頻技術(shù)(radio frequency identification,RFID)為基礎(chǔ),由嵌入式主控模塊、人機交互模塊、傳感器輸入模塊、以及與PC機或其他通信設(shè)備的通訊模塊組成。
根據(jù)實際所需解決的庫房管理問題,該便攜式終端系統(tǒng)設(shè)計如圖1所示。
圖1 系統(tǒng)方案設(shè)計Fig.1 System design
主要功能包括:
①產(chǎn)品清點。該系統(tǒng)設(shè)計以電子標(biāo)簽作為產(chǎn)品識別和信息采集的技術(shù)紐帶,通過手持RFID讀寫器對產(chǎn)品進行自動識別,與傳統(tǒng)的識別方式相比具有無需直接接觸、無需人工干預(yù)即可完成數(shù)據(jù)比對等優(yōu)點。針對小體積而且規(guī)則零件可以采用紅外脈沖計數(shù)清點功能;對于大型零件產(chǎn)品,采用壓力傳感器,稱其質(zhì)量來清點零件數(shù)目。這些功能可以通過無線或有線方式接入各類傳感器設(shè)備。
②入庫/出庫管理。入庫時對于新增的貨物需要登記產(chǎn)品的名稱、型號、入庫數(shù)量、放置位置、產(chǎn)品單位重量等。如果原有數(shù)據(jù)庫存在該產(chǎn)品則只需輸入產(chǎn)品型號,然后增加其庫存數(shù)目即可。出庫時需要登記出庫產(chǎn)品型號、出庫數(shù)量以及領(lǐng)取人編號。
③詳細(xì)入出庫記錄。在產(chǎn)品入庫、出庫的時候系統(tǒng)都會自動生成一個記錄數(shù)據(jù)表,來記錄每一次入庫出庫產(chǎn)品的型號、數(shù)量、入庫出庫時間(由系統(tǒng)自動獲取)以及領(lǐng)取人編號。
④產(chǎn)品快速查找、定位。需要查找某種產(chǎn)品時,只需選擇產(chǎn)品查詢菜單,即可在系統(tǒng)的引導(dǎo)下,輸入需要查找的產(chǎn)品的基本信息,就可以準(zhǔn)確查詢,同時如果在庫房的每個存放位置安裝無線信號接收裝置,則可以發(fā)送無線信號點亮貨物具體位置的信號燈。這樣管理員就能很快找到所需要的貨物。
⑤庫房環(huán)境溫度、濕度檢測。
⑥數(shù)據(jù)的實時更新。操作員在任何地點都可以及時通過無線傳輸?shù)玫接上到y(tǒng)傳過來的出入庫預(yù)報通知,根據(jù)手持終端的提示進行出入庫操作。這樣就避免了操作員頻繁的穿梭于計算機與庫房之間來處理各種出入庫單據(jù)。該終端還可以與本地計算機數(shù)據(jù)中心進行數(shù)據(jù)實時交換,同時,在建立計算機互聯(lián)網(wǎng)絡(luò)基礎(chǔ)上能夠?qū)崿F(xiàn)物品信息的實時共享和互通,將會把倉儲管理帶入物聯(lián)網(wǎng)應(yīng)用領(lǐng)域。運用物聯(lián)網(wǎng)技術(shù),實現(xiàn)企業(yè)倉儲管理的智能化,可以有效地掌握原料、產(chǎn)品的流向,避免發(fā)貨失誤等[3-4]。
系統(tǒng)硬件框圖如圖2所示。
圖2 系統(tǒng)硬件設(shè)計Fig.2 Hardware design
本系統(tǒng)核心處理器采用ARM9芯片S3C2440,是三星公司設(shè)計的資源豐富、模塊體積小、擴展性較強的基于ARM920T核的微處理器,芯片上集成了分開的16KB指令/數(shù)據(jù)Cache、外部存儲器控制器、集成LCD控制器、4通道DMA、3通道UART、IIC總線等。外圍接有人機交互模塊、存儲器模塊、通訊模塊、傳感器輸入模塊、電源管理以及實時時鐘[5]。其中,人機交互模塊主要是通過觸摸屏或鍵盤按鍵的響應(yīng)向系統(tǒng)發(fā)出不同的用戶請求,然后通過LCD液晶顯示屏將處理結(jié)果以直觀的方式顯示給用戶;而存儲管理模塊主要是由SDRAM和FLASH組成,它們構(gòu)建了Linux嵌入式操作系統(tǒng)運行的內(nèi)存環(huán)境以及文件系統(tǒng)、數(shù)據(jù)庫的存儲介質(zhì);通訊模塊則主要包括有線/無線傳輸通訊子模塊,可以根據(jù)實際需要完成數(shù)據(jù)的交互;傳感器輸入模塊主要有RFID掃描輸入模塊、庫房溫濕度監(jiān)測模塊以及紅外脈沖計數(shù)傳感器和壓力傳感器模塊,RFID掃描用于錄入產(chǎn)品的進出信息,將進出信息送給ARM主控單元,再將信息存儲于數(shù)據(jù)庫文件,同樣,溫濕度檢測以及庫房盤點計數(shù)的操作都是通過外圍傳感器獲取信息,經(jīng)主控單元處理后反應(yīng)到LCD界面中。
本系統(tǒng)的軟件包括操作系統(tǒng)軟件和應(yīng)用程序兩部分。應(yīng)用程序控制著系統(tǒng)的運作和行為;而操作系統(tǒng)控制著應(yīng)用程序編程與硬件的交互作用。嵌入式操作系統(tǒng)平臺的構(gòu)建主要包括嵌入式引導(dǎo)程序、操作系統(tǒng)內(nèi)核、文件系統(tǒng)的實現(xiàn)等[6]。基于Qt/E的智能倉儲管理便攜式終端的軟件系統(tǒng)可分為以下5個層次,如圖3所示。
圖3 系統(tǒng)軟件結(jié)構(gòu)Fig.3 Software framework
①BootLoader,是在操作系統(tǒng)啟動時所運行的第一個程序,嵌入式系統(tǒng)通過BootLoader初始化硬件設(shè)備、建立系統(tǒng)內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。
②操作系統(tǒng)內(nèi)核,本系統(tǒng)采用的是Linux操作系統(tǒng),它是整個嵌入式軟件的核心,設(shè)備驅(qū)動程序是連接硬件設(shè)備與內(nèi)核的紐帶。
③文件系統(tǒng),內(nèi)核啟動之后的運行需要根文件系統(tǒng)的支持。內(nèi)核需要從文件系統(tǒng)中裝載和運行內(nèi)核模塊以及應(yīng)用程序。
④QT/Embedded,QT/Embedded是Qt的組成部分之一,是一個多平臺的C++圖形界面應(yīng)用程序框架,有可視化的圖形化開發(fā)界面、界面美觀、功能較強,適合于做復(fù)雜的應(yīng)用程序等特點[7]。它用于開發(fā)我們所需要的用戶圖形交互界面應(yīng)用程序。
⑤用戶應(yīng)用程序的開發(fā),主要是QT應(yīng)用程序的編寫,可以通過Qt-creator開發(fā)平臺來開發(fā)QT應(yīng)用程序。
RFID,即射頻識別,是一種非接觸式的自動識別技術(shù),通過射頻信號自動識別目標(biāo)對象并獲取相關(guān)數(shù)據(jù),識別工作無須人工干預(yù),可在許多惡劣環(huán)境下正常工作。將RFID模塊加裝至便攜式終端,其主要功能為對貨物的出庫、入庫、清點貨物的信息進行采集、傳輸[8]。
本系統(tǒng)采用的是超高頻915M遠(yuǎn)距離一體式讀卡器,首先在貨物上貼上RFID電子標(biāo)簽,由于這種遠(yuǎn)距離一體式讀寫器既可以讀取單個標(biāo)簽也可以一次性批量讀取多個標(biāo)簽,因此可以實現(xiàn)對貨物的個體管理或者批量管理。當(dāng)貨物進入RFID讀寫天線范圍后,標(biāo)簽接受讀寫器發(fā)出的射頻信號,憑借感應(yīng)電流所獲得的能量發(fā)送出存儲在芯片中的信息,RFID讀寫器讀取信息后,通過RS232接口將數(shù)據(jù)傳送至ARM主控模塊中。該RFID讀寫器通信參數(shù)的默認(rèn)設(shè)置為波特率9 600,8位數(shù)據(jù)位,1位停止位和校驗方式。在QT應(yīng)用程序中首先需要打開串口ttySAC1,設(shè)置與讀寫器一致的通信參數(shù),再根據(jù)Reader通訊協(xié)議,給讀寫器發(fā)送讀寫指令,RFID讀寫器接收后根據(jù)命令來對標(biāo)簽進行讀寫。其命令幀格式如圖4所示。
圖4 RFID讀寫器命令幀格式Fig.4 Command frame format of RFID reader
幀格式說明:
· Packet Type是包類型域,命令幀包類型固定為0xA0。
· Length是包長域,表示Length域后幀中字節(jié)數(shù)。
· Command Data是命令幀中的參數(shù)域。
· Status是狀態(tài)域。
· Check是校驗和域,規(guī)定校驗范圍是從包類型域到參數(shù)域最后一個字節(jié)為止所有字節(jié)的校驗和。讀寫器接收到命令幀后需要計算校驗和來檢錯。
利用RFID讀出的電子標(biāo)簽的ID號存入創(chuàng)建好的數(shù)據(jù)庫中,同時也可與已經(jīng)存在的信息進行查詢比較,進行入庫或出庫處理。
嵌入式人機界面決定了對數(shù)據(jù)庫的需求,主要包括體積小巧、功能完善、源碼開放等。目前嵌入式數(shù)據(jù)庫有很多,比如 Oracle、Sybase、MySQL、SQLite等[9]。本便攜式終端所選擇的是SQLite類型數(shù)據(jù)庫,SQLite是一種小型嵌入式數(shù)據(jù)庫。SQLite是一個小型的C語言鏈接庫,這個鏈接庫本身就完全包含數(shù)據(jù)庫引擎的功能,可以方便地運用于嵌入式系統(tǒng)中。SQLite支持大多數(shù)標(biāo)準(zhǔn)的SQL92語句,支持多表、索引、事務(wù)、視圖和觸發(fā)等一系列用戶接口及驅(qū)動。簡單易用,運行速度快,同時提供了豐富的數(shù)據(jù)庫接口[10]。
在Qt應(yīng)用程序開發(fā)中我們可以利用QSQLITE數(shù)據(jù)庫驅(qū)動來添加SQLite數(shù)據(jù)庫文件。
QsqlDatabasedb=QSqlDatabase:: addDatabase(“QSQLITE”);//添加數(shù)據(jù)庫驅(qū)動
db.setDatabaseName(“kufang.db:”);
db.open()//打開數(shù)據(jù)庫
QSqlQuery query;//以下執(zhí)行相關(guān)QSL語句
query.exec(QObject::tr("create table ku(型號 Integer,名稱 varchaer(20),數(shù)量 Integer,放置位置varchaer
(20),單重varchar(20))"));//創(chuàng)建數(shù)據(jù)庫文件表格
以入庫的數(shù)據(jù)更新為例,入庫時需要錄入的信息一般有產(chǎn)品名稱、型號、數(shù)量、放置位置、單位重量等。
入庫實現(xiàn)程序流程圖如圖5所示。
圖5 入庫管理程序流程圖Fig.5 Process flow chart of storage
①如果檢測到所輸入的產(chǎn)品型號在原始數(shù)據(jù)庫中已存在,則系統(tǒng)會自動識別并在原有數(shù)據(jù)上增加其庫存數(shù)量。
b=rkcount.toInt(&ok,10);//利用 Qstring::toInt()將數(shù)量輸入lineEdit內(nèi)容轉(zhuǎn)為十進制數(shù)
a=query.value(2).toInt();//提取表中庫存量
c=a+b;//算出增加后的值
query.prepare("update ku set Count=?where Type='"+rktype+"'");//更新數(shù)據(jù)表中的庫存量
query.bindValue(0,c);
query.exec();
②如果數(shù)據(jù)庫中沒有原始數(shù)據(jù),則插入新的產(chǎn)品信息。
query.exec("insert into ku values()");
③在更新完產(chǎn)品信息后,我們需要將該操作記錄到詳細(xì)記錄列表,此時需要記錄的是此次入庫產(chǎn)品的型號、數(shù)量以及入庫時間。
QDateTime time=QDateTime::currentDateTime();
QString str=time.toString("yyyy-MM-dd hh:mm:ss dddd");//獲取系統(tǒng)時間
QSqlQuery query2(db2);//對詳細(xì)記錄數(shù)據(jù)庫進行操作
完成庫存數(shù)據(jù)的存儲后,為了提高該終端的智能便捷性,在需要查找某種產(chǎn)品時,打開快速查找界面,輸入需要查找的產(chǎn)品名稱或型號,就可以準(zhǔn)確查詢到其基本信息,界面設(shè)計如圖6所示。
圖6 快速查找界面設(shè)計Fig.6 Interface design of quick search
同時,也可以增加定位功能按鈕,在此我們增加nRF905無線收發(fā)模塊,將所查找的型號以字符串通過nRF905發(fā)送給接收裝置的nRF905模塊,在庫房的一些存放位置安裝無線信號接收裝置,接收裝置的nRF905由單片機控制,如果收到的型號屬于一段范圍內(nèi),則單片機控制點亮具體位置的LED燈,如圖7所示,管理員通過定位能很快找到所需要的貨物。
圖7 nRF905無線收發(fā)模塊Fig.7 Wireless transmission module of nRF905
系統(tǒng)通過測試,實現(xiàn)了產(chǎn)品信息的RFID識別出入庫、存儲、準(zhǔn)確查找定位,數(shù)據(jù)共享等功能。其交互式觸摸控制平臺測試結(jié)果如圖8所示。
點擊產(chǎn)品入庫操作,執(zhí)行相應(yīng)的功能模塊即可實現(xiàn)系統(tǒng)設(shè)計功能,圖9為產(chǎn)品入庫功能設(shè)計實現(xiàn)結(jié)果。
利用Qt/E所設(shè)計的便攜式終端可以有效的解決各種環(huán)境下的倉儲管理系統(tǒng)對數(shù)據(jù)的采集、檢索、存檔和統(tǒng)計的實時化,使管理者更加準(zhǔn)確高效的掌握倉儲信息,以及對貨物準(zhǔn)確快速的查找定位。將此便攜式終端根據(jù)企業(yè)的需求應(yīng)用于實際生產(chǎn)中,使管理者能及時、準(zhǔn)確、全面地了解到庫房物品流通情況,減少了信息查詢時間,降低了成本,提高了精度,將會給企業(yè)的管理帶來顯著的效果。
[1]董彥龍.我國倉儲物流現(xiàn)狀及其優(yōu)化[J].商業(yè)時代,2006,16:24-26.DONG Yan-long.The status quo and optimization of China's logistics[J].Commercial Times,2006,16:24-26.
[2]秦惠林,朱杰.便攜式終端在智能倉儲管理系統(tǒng)中的應(yīng)用[J].中國流通經(jīng)濟,2006,7:38-40.QIN Hui-lin,ZHU Jie.The application of portable terminal in the intelligent warehouse management system[J].China Business and Market,2006,7:38-40.
[3]李忠成.智能倉儲物聯(lián)網(wǎng)的設(shè)計與實現(xiàn)[J].計算機系統(tǒng)應(yīng)用.2011,20(7):11-15.LI Zhong-cheng.Design and Implementation of the Internet of Things in Intelligent Warehouse Management[J].Computer systems & applications,2011,20(7):11-15.
[4]李玲娟.IoT的數(shù)據(jù)管理與智能處理[J].中興通訊技術(shù),2011,17(1):38-41.LI Ling-jian.Data Management and Intelligent Processing in IoT[J].ZTE communications,2011,17(1):38-41.
[5]何劍鋒,栗楠.基于ARM 920T嵌入式Linux/Qt4的點菜系統(tǒng)設(shè)計[J].計算機應(yīng)用,2011(6):43-46.HE Jian-feng,LI Nan.Design of Meal-ordering System Based on ARM920T Embedded Linux/Qt4[J].Journal of Computer Applications,2011(6):43-46.
[6]王浩南,劉益成.基于嵌入式Linux系統(tǒng)下QT開發(fā)[J].電腦開發(fā)與應(yīng)用,2010(1):11-13.WANG Hao-nan,LIU Yi-cheng.Development of Qt based on Embedded Linux[J].Computer development& application,2010(1):11-13.
[7]宋榮.基于Qt/Embedded的嵌入式系統(tǒng)GUI開發(fā)[J].機電工程,2009,26(4):90-92.SONG Rong.Development of embedded system GUI based on Qt/Embedded[J].Mechanical & Electrical Engineering Magazine,2009,26(4):90-92.
[8]李章林,盧桂章.基于RFID的廣義物流中的移動智能終端設(shè)計[J].自動化與儀表,2007,22(1):1-4.LI Zhang-lin,LU Gui-zhang.Design for the Smart Portable Terminal in Broad-sense Supply Chain Based on RFID[J].Automation & Instrumentation,2007,22(1):1-4.
[9]曾云,胡頻.嵌入式數(shù)據(jù)庫在QT中的應(yīng)用研究與實現(xiàn)[J].國外電子測量技術(shù),2010,9(9):73-76.ZENG Yun,HU Pin.Study and application of embedded database in QT software[J].Foreign Electronic Measurement Technology,2010,9(9):73-76.
[10]MICHAEL Owens.The Definitive Guide to SQLite[M].US:Apress,2006,5:35-40.