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