電話:13691762133
手機:13691762133
郵件:andy@ownlikes.cn
QQ:317779813
地址:深圳市龍華新區(qū)觀瀾大道35號1棟3樓
網(wǎng)址 : greezubamboo.cn
在前面的系統(tǒng)分析與設(shè)計基礎(chǔ)之上,本節(jié)對基于RFID的數(shù)字化卷煙倉庫管理系統(tǒng)進行了部分模塊的開發(fā)工作。下面將詳細闡述數(shù)字化卷煙倉庫管理系統(tǒng)中的服務(wù)器消息處理子系統(tǒng)、出庫管理模塊和叉車電子貨位導(dǎo)航系統(tǒng)三個部分的開發(fā)。
1、系統(tǒng)開發(fā)工具
本系統(tǒng)采用Java開發(fā)平臺和Eclipse開發(fā)工具中提供的RCP框架設(shè)計,而數(shù)據(jù)庫采用SQL Server 2005。
Java編程語言是一個簡單的、面向?qū)ο蟆⒎植际?、健壯、安全與系統(tǒng)無關(guān)、可移植高性能、多線程和動態(tài)的語言。Java的跨平臺性使得開發(fā)出的基于RFID的數(shù)字化卷煙倉庫管理系統(tǒng)可以在不同的系統(tǒng)上使用,這樣在以后可以方便地進行系統(tǒng)的擴展和二次開發(fā)。
(2)主控機客戶端通過TCP協(xié)議向服務(wù)器端發(fā)送請求和指令;
(3)叉車客戶端通過TCP協(xié)議向服務(wù)器端發(fā)送請求,查詢指令;
(4)叉車客戶端通過TCP協(xié)議向服務(wù)器端發(fā)送指令狀態(tài)信息;
(5)服務(wù)器接收到叉車客戶端傳來的指令狀態(tài)信息后,更改服務(wù)器上儲存指令的狀態(tài),然后以組播的方式向各個客戶端廣播指令狀態(tài)信息;
(6)主控機客戶端和叉車客戶端接收到組播后,更新本機界面上的狀態(tài)。
綜上所述,服務(wù)器消息處理子系統(tǒng)具有客戶端登錄驗證和消息儲存轉(zhuǎn)發(fā)兩項基本功能。下面將分別實現(xiàn)這兩項功能。
1.客戶端登錄驗證功能
服務(wù)器消息處理子系統(tǒng)客戶端登錄驗證功能實現(xiàn)的界面,可以看見當(dāng)前的一個IP為192.168.1.13的主控機正登錄進來。
服務(wù)器消息處理子系統(tǒng)客戶端登錄驗證功能實現(xiàn)的界面
客戶端登錄驗證功能的代碼如下:
在上面的代碼中,線程thread用于監(jiān)聽客戶端的連接。當(dāng)客戶端連接服務(wù)器時,線程thread監(jiān)聽到請求后,驗證登錄客戶端的用戶名和密碼,按照TCP協(xié)議建立連接線程talk用于客戶端和服務(wù)器端的交互。線程talk在客戶端和服務(wù)器建立TCP后啟動,建立數(shù)據(jù)的輸入和輸出流,并和客戶端進行一對一的TCP交互。
2.消息儲存轉(zhuǎn)發(fā)功能
服務(wù)器消息處理子系統(tǒng)的消息儲存轉(zhuǎn)發(fā)功能有兩種工作方式:當(dāng)叉車發(fā)送查詢請求時,將儲存的客戶端發(fā)來的指令發(fā)送給叉車;對叉車發(fā)來的指令狀態(tài)信息或LED顯示屏信息的消息進行組播,將其傳遞給各個客戶端,客戶端再按照指令狀態(tài)信息或LED顯示屏信息進行刷新指令,監(jiān)控界面指令狀態(tài)或更新LED顯示屏信息。消息儲存轉(zhuǎn)發(fā)功能的代碼如下:
2、出庫管理模塊的實現(xiàn)
出庫管理模塊用來完成出庫的各種操作,如出庫單據(jù)的管理、出庫貨位的分配、出庫指令的生成及監(jiān)控。出庫單據(jù)的管理功能主要是指完成單據(jù)的導(dǎo)入/手工錄入,未處理單據(jù)的修改和刪除。系統(tǒng)界面中會顯示所有當(dāng)日未處理的單據(jù),并可以對顯示單據(jù)進行修改。在完成單據(jù)的生成后,就需要使用出庫貨位分配功能。出庫貨位分配需要按照一定的規(guī)則進行。這些規(guī)則要實現(xiàn)優(yōu)先出暫存區(qū),防止暫存區(qū)堆積;貨位的先進先出,防止貨物積壓;出庫貨位少,提高作業(yè)效率等目標(biāo)。實現(xiàn)出庫貨位分配的界面如圖所示。界面上矩形框標(biāo)出來的地方是系統(tǒng)按照出庫貨位分配規(guī)則分配的貨位。在庫管認為貨位不合理時,系統(tǒng)也提供手工修改分配貨位的功能,由此可提高系統(tǒng)的靈活性。出庫貨位分配界面中分配的貨位是按出庫貨位算法得出的。
出庫貨位分配規(guī)則的核心有以下幾個方面。
(4)出庫指令的生成及監(jiān)控功能:出庫貨位核對,生成作業(yè)指令和指令監(jiān)控。主控機在開啟時,便已和服務(wù)器端建立TCP連接,使用TCP協(xié)議將指令傳到服務(wù)器上,便于叉車查詢,指導(dǎo)叉車到指定的貨位作業(yè)。系統(tǒng)保證了貨物的先進先出,使用算法優(yōu)先出同品牌的、入庫時間早的卷煙。
4、 叉車電子貨位導(dǎo)航子系統(tǒng)的實現(xiàn)
4、1.叉車客戶端通信模塊的實現(xiàn)叉車的客戶端通信模塊需要兩種通信模式:和服務(wù)器一對一的交互;接收服務(wù)器組播的消息。
連接服務(wù)器時調(diào)用的函數(shù)代碼如下:
這段代碼的功能是:在叉車電子貨位導(dǎo)航子系統(tǒng)運行時,將建立與服務(wù)器的TCP連接,用于叉車客戶端查詢服務(wù)器消息處理系統(tǒng)儲存的出/入庫指令,以及向服務(wù)器發(fā)送指令狀態(tài)和LED屏所需信息。同時開辟一個線程監(jiān)聽服務(wù)器組播的消息,用于更新指令狀態(tài)。
4、2.叉車電子貨位導(dǎo)航模塊的實現(xiàn)
叉車電子貨位導(dǎo)航模塊的功能是指導(dǎo)叉車司機的作業(yè),給叉車司機進行直觀的電子貨位圖導(dǎo)航。叉車電子貨位導(dǎo)航子系統(tǒng)導(dǎo)航模塊的執(zhí)行流程如圖所示。
叉車司機打開叉車計算機后,叉車計算機會自動運行叉車電子貨位導(dǎo)航子系統(tǒng)。單擊“查詢”后,叉車電子貨位導(dǎo)航子系統(tǒng)會從服務(wù)器上查詢出所有的指令。
叉車電子貨位導(dǎo)航模塊的核心問題有以下幾個方面。
1)叉車指令樹表中指令狀態(tài)的互鎖問題
2)叉車指令優(yōu)先級算法
叉車指令選擇界面如圖所示,框中的指令即為在展開樹形指令表時指令優(yōu)先級算法自動選中的指令。
在選中一項作業(yè)后,叉車電子貨位導(dǎo)航子系統(tǒng)的指令優(yōu)先級算法會自動算出優(yōu)先級最高的指令。叉車上查詢到的指令是同出庫貨位分配的貨位順序相同;在出庫貨位分配時,分配的貨位是按照貨位地址降序排列的。因此,出庫第一條狀態(tài)為“未處理”的指令優(yōu)先級最高。在選中一條指令時,會完成下列動作:將指令選擇界面上的指令狀態(tài)改為“正在處理”;將指令的背景顏色改為黃色;將“正在處理”的指令狀態(tài)發(fā)送給服務(wù)器。叉車指令優(yōu)先級算法的代碼如下:
上述代碼中的search()方法用于將樹形指令表展開,查找第一條未完成的指令并選中,然后發(fā)送“正在處理”的指令狀態(tài)給服務(wù)器組播并使選中的指令背景顏色為黃色。recover()方法用于還原指令狀態(tài),即把先前選中的指令狀態(tài)改為“未處理”,并發(fā)送給服務(wù)器組播。在選中指令,單擊“執(zhí)行”后,會出現(xiàn)電子貨位地圖界面,如圖所示。
(2)S[6]=“2”:表示庫區(qū)的最后一條,LED屏幕由動態(tài)作業(yè)信息變成靜態(tài)庫存信息。
(3)S[6]=“3”:表示中間的指令,LED屏幕由動態(tài)作業(yè)信息變成動態(tài)作業(yè)信息,刷新數(shù)量。
(4)S[6]=“4”:庫區(qū)的最后一條,同時又是通道的第一條,也就是說該庫區(qū)的該通道只有一條指令。S[6]的具體算法流程如圖所示。
如圖=所示是基于RFID的數(shù)字化倉庫管理系統(tǒng)在一號成品庫的運行實景圖。
該系統(tǒng)實現(xiàn)了以托盤為單位的可視化的電子貨位管理、貨物先進先出,自 動的出入庫管理和實時庫存信息查詢,并通過電子顯示屏顯示庫區(qū)貨位信息及其產(chǎn)品信息。同時,它在數(shù)字化倉庫管理系統(tǒng)的基礎(chǔ)上,通過各種網(wǎng)絡(luò)建立了實時的物流信息共享平臺,可實現(xiàn)物流信息的共享。