李 蓓
Super-ID系統(tǒng)即超聲波定位系統(tǒng),簡(jiǎn)稱S-ID系統(tǒng),是利用超聲波對(duì)移動(dòng)物體所在的三維位置進(jìn)行實(shí)時(shí)準(zhǔn)確、并且非接觸性地檢測(cè)和定位的高性能系統(tǒng)。三維實(shí)現(xiàn)的超聲波定位系統(tǒng),比以往系統(tǒng)更加直觀和精確。
S-ID系統(tǒng)是通過實(shí)時(shí)檢測(cè)、控制現(xiàn)場(chǎng)作業(yè)對(duì)象的移動(dòng)狀況,從而,具體且準(zhǔn)確地指導(dǎo)作業(yè)現(xiàn)場(chǎng)人員的操作,實(shí)現(xiàn)對(duì)存儲(chǔ)貨位過程中無差錯(cuò)管理的系統(tǒng)。系統(tǒng)通過監(jiān)測(cè)作業(yè)狀態(tài),從而改善設(shè)備的位置和布局,提高作業(yè)效率和倉庫利用率,無需人工的貨位確認(rèn),徹底排除了人為過失。
一、基于.NET的超聲波定位系統(tǒng)的關(guān)鍵技術(shù)介紹
(一)系統(tǒng)技術(shù)簡(jiǎn)介
S-ID技術(shù)的原理是在固定的三個(gè)空間坐標(biāo)上設(shè)置三個(gè)超聲波接收點(diǎn),即受信機(jī),被測(cè)物(發(fā)信機(jī))間斷發(fā)射超聲波,通過測(cè)量三個(gè)接收點(diǎn)超聲波到達(dá)的時(shí)間,換算為距離,從而得到被測(cè)物的空間坐標(biāo)。系統(tǒng)構(gòu)成圖如圖1所示。
利用鋰電池供電。每隔一定時(shí)間向受信機(jī)發(fā)送超聲波,當(dāng)收到受信機(jī)發(fā)回的紅外線后,再發(fā)送超聲波。
2受信機(jī)
在接收到發(fā)信機(jī)發(fā)送的超聲波后,將位置信息傳回控制器,然后發(fā)送紅外線,確定收到信息,此時(shí)發(fā)信機(jī)再發(fā)送超聲波。
3控制器
控制程序通過控制器可以向發(fā)信機(jī)和受信機(jī)發(fā)送指令,也可以通過控制器接收來自發(fā)信機(jī)和受信機(jī)的信息。然后將信息發(fā)送給上位PC進(jìn)行處理。
(二)3D編程技術(shù)
1D3D
D3D通過HAL(硬件抽象層)提供設(shè)備獨(dú)立;HAL是由設(shè)備制造商提供的設(shè)備指定接口,D3D直接使用顯示硬件來工作,程序才能不需要和HAL交互。應(yīng)用程序使用D3D暴露的一系列接口和方法而不是HAL提供的機(jī)制來使用顯示設(shè)備。設(shè)備制造商在WINDOWS的各個(gè)平臺(tái)上(XP,2000,98等)實(shí)現(xiàn)32位編程。HAL可以是顯示驅(qū)動(dòng)器的一部分,或和設(shè)備驅(qū)動(dòng)器通過一個(gè)驅(qū)動(dòng)器生產(chǎn)商定義的接口來通訊的獨(dú)立DLL(動(dòng)態(tài)鏈接庫)。
D3D HAL由芯片制造商、主板生產(chǎn)商或OEM實(shí)現(xiàn)。HAL僅僅實(shí)現(xiàn)設(shè)備依賴的代碼并不競(jìng)爭(zhēng)的執(zhí)行。如果硬件沒有執(zhí)行一個(gè)功能,HAL就不會(huì)將其作為硬件功能來報(bào)告。另外。HAL并不驗(yàn)證參數(shù),D3D在調(diào)用HAL之前執(zhí)行參數(shù)驗(yàn)證。在微軟DirectX 9。HAL可以有三種不同的頂點(diǎn)處理模式:軟件頂點(diǎn)處理、硬件頂點(diǎn)處理和同一個(gè)設(shè)備上的混合頂點(diǎn)處理。純?cè)O(shè)備模式是HAL設(shè)備的變量。純?cè)O(shè)備類型僅僅支持硬件頂點(diǎn)處理,并僅僅允許應(yīng)用程序查詢狀態(tài)的一個(gè)小的子集。另外,純?cè)O(shè)備僅僅在有最小化容量級(jí)別的適配器上使用。
2OpenGL
OpenGL是用于開發(fā)簡(jiǎn)捷的交互式二維和三維圖形應(yīng)用程序的最佳環(huán)境,任何高性能的圖形應(yīng)用程序,從3D動(dòng)畫、CAD輔助設(shè)計(jì)到可視化仿真,都可以利用OpenGL高質(zhì)量、高性能的特點(diǎn)。OpenGL已成為獨(dú)立于應(yīng)用平臺(tái)的圖形標(biāo)準(zhǔn),一個(gè)典型的OpenGL應(yīng)用程序可以在任何平臺(tái)上運(yùn)行一只需要使用目標(biāo)系統(tǒng)的OpenGL庫重新編譯一下。
OpenGL非常接近硬件,是一個(gè)圓形與硬件的接口,包括了100多個(gè)圖形函數(shù)用來建立三維模型和進(jìn)行三維實(shí)時(shí)交互。QpenGL強(qiáng)有力的圖形函數(shù)不要求開發(fā)人員把三維物體模型的數(shù)據(jù)寫成固定的數(shù)據(jù)格式,也不要求開發(fā)人員編寫矩陣變換、外部設(shè)備訪問等函數(shù)。大大地簡(jiǎn)化了編寫三維圖形的程序。由于微軟在Windows中包含了OpenGL,所以O(shè)penGL可以與Visual系列開發(fā)工具緊密接臺(tái),簡(jiǎn)單快捷地實(shí)現(xiàn)有關(guān)計(jì)算和圖形算法,并保證算法的正確性和可靠性。簡(jiǎn)單地說。OpenGL具有建模、變換、色彩處理、光線處理、紋理影射、圖像處理、動(dòng)畫及物體運(yùn)動(dòng)模糊等功能。
OpenGL的作用機(jī)制是客戶(client)/控制器(sever)機(jī)制,即客戶(用OpenGL繪制景物的應(yīng)用程序)向控制器(即OpenGL內(nèi)核)發(fā)布OpenGL命令,控制器則解釋這些命令。大多數(shù)情況下,客戶和控制器在同一機(jī)器上運(yùn)行。正是OpenGL的這種客戶/控制器機(jī)制,OpenGL可以十分方便地在網(wǎng)絡(luò)環(huán)境下使用。因此Windows NT下的OpenGL是網(wǎng)絡(luò)透明的。OpenGL圖形庫被封裝在一個(gè)動(dòng)態(tài)鏈接庫內(nèi)(OpenGL,DLL)。受客戶應(yīng)用程序調(diào)用的QpenGL函數(shù)都先在OpenGL32.DLL中處理,然后傳給控制器Winsrv.DLL。OpenGL的命令再次得到處理并且直接傳給Win32的設(shè)備驅(qū)動(dòng)接口(De-vice Drive Interface。DDI),這樣就把經(jīng)過處理的圖形命令傳送給視頻顯示驅(qū)動(dòng)程序。
而在三維圖形加速卡的GLINT圖形加速芯片的加速支持下,兩個(gè)附加的驅(qū)動(dòng)程序被加入這個(gè)過程中。一個(gè)OpenGL可安裝驅(qū)動(dòng)程序(Installable Client Driver,ICD)被加在客戶這一邊,一個(gè)硬件指定DDI (Hard—ware-specific DDI)被加在控制器這邊,這個(gè)驅(qū)動(dòng)程序與Win32 DDI是同一級(jí)別的。
(三)3DSTATE引擎介紹
3DSTATE 3D圖形引擎是一套3D圖形開發(fā)環(huán)境,其為通用3D軟件開發(fā)提供了所有的底層支持。使用此開發(fā)環(huán)境開發(fā)3D軟,件,用戶不必了解引擎的工作原理,只需將精力放在自身軟件的邏輯處理上,剩下的工作將由引擎來完成。
13D STATE3D引擎的特性
(1)高性能
3D STATE 3D引擎可獲得較高的FPS(Frames Per Second)值,它在渲染速度(FPS)已接近硬件的理論值。它的畫面質(zhì)量屬藝術(shù)級(jí)的,引擎內(nèi)部還帶有許多特效制作函數(shù),用它們可制作出諸如半透明彩色板、爆炸、水下、水面波紋、3D動(dòng)畫、燈光、影子等特效。
(2)新技術(shù)
引擎在渲染速度和圖像質(zhì)量上具有高于其它基于PC機(jī)上的引擎的性能。使用3D STATE的3D引擎使得向任意程序添加3D內(nèi)容變得簡(jiǎn)單。
(3)簡(jiǎn)單易用
在引擎SDK中,沒有任何新的數(shù)據(jù)結(jié)構(gòu)和類,都只是基本的APl函數(shù),綜合使用這些API函數(shù)。即可在較短的時(shí)間里開發(fā)出高性能的8D程序來。
(4)完全的自我控制
在引擎中,只需通過其API函數(shù)在位或字節(jié)級(jí)別上控制引擎的各方面行為,且在使用本引擎時(shí),仍然可以繼續(xù)使用其他引擎。
(5)通用性
引擎可用于任何需要3D內(nèi)容的程序。且針對(duì)戶內(nèi)和戶外式的程序都做過了優(yōu)化處理。
(6)完整的開發(fā)工具包
引擎的開發(fā)包中。附帶以下工具:
SDK:在用戶所熟悉的開發(fā)環(huán)境中,可以使用它的API函數(shù)集對(duì)3D世界進(jìn)行完整的控制。
World Builder:用它可以通過簡(jiǎn)單的鼠標(biāo)拖放操作直接設(shè)計(jì)出復(fù)雜的3D世界。
Terrain Builder:用它可將位圖直接轉(zhuǎn)換
為真實(shí)的3D地形。
World Text Editor:用它可直接編輯3D世界文件。
World Viewer:用它直接可以打開并看到3D世界文件的內(nèi)容,便于對(duì)世界文件的修改。
(7)DLL技術(shù)
由于3D STATE的3D圖形引擎采用DLL技術(shù),當(dāng)引擎版本升級(jí)時(shí),用戶只需用新的DLL替換老的DLL即可,而不需要重新編譯程序。
2.3DSTATE3D引擎基礎(chǔ)
(1)3D坐標(biāo)系
3D坐標(biāo)系表示為:X軸——其正方向從屏幕里指向屏幕外;Y軸一其正方向從左指向右:z軸——其正方向從下指向上;原點(diǎn)——為(0.0.0)此坐標(biāo)系也就是引擎中的世界坐標(biāo)系,它屬于絕對(duì)坐標(biāo)系。所有其它坐標(biāo)系將相對(duì)于此坐標(biāo)系定義,如組的坐標(biāo)系、目標(biāo)的坐標(biāo)系以及攝像機(jī)的坐標(biāo)系,他們都是相對(duì)坐標(biāo)系。在實(shí)際使用時(shí),使用相對(duì)坐標(biāo)系往往比絕對(duì)坐標(biāo)系更方便。
(2)句柄
在引擎中,所有目標(biāo)均有一個(gè)句柄(DWORD值),用它來標(biāo)識(shí)一個(gè)特定的目標(biāo)。所有面向特定目標(biāo)操作的APl函數(shù)均接收這個(gè)句柄,以確定要操作的對(duì)象。引擎API函數(shù)中,幾乎各組API中均有一個(gè)函數(shù)STATEZ_is(…),我們可用此函數(shù)來判定給定的句柄是否指定類型目標(biāo)的標(biāo)識(shí)。
(3)編輯器模式(Editor Mode)與觀察者模式(Viewer Mode)
引擎有兩種運(yùn)行模式,即編輯器模式和觀察者模式。這兩種模式的選用由世界文件加載函數(shù)STATE_engine_load_world在啟動(dòng)引擎時(shí)一次性設(shè)置。并且不可實(shí)時(shí)切換,缺省為觀察者模式。引擎運(yùn)行時(shí)可由STATE engine_is_editor mode來識(shí)別正在運(yùn)行的模式。
二、基于.NET的超聲波定位系統(tǒng)的實(shí)現(xiàn)
(一)設(shè)備與控制器之間的技術(shù)連接
1C/S模型
即客戶端,服務(wù)器模型,是一種非對(duì)稱式編程模式。對(duì)于這種模式而言,其中一部分需要作為服務(wù)端,用來響應(yīng)并為客戶提供固定的服務(wù);另一部分則作為客戶端用來向服務(wù)端提出請(qǐng)求或要求某種服務(wù)。在實(shí)際應(yīng)用中,程序可以同時(shí)包含客戶端和服務(wù)端。在此系統(tǒng)中。服務(wù)端即控制器。
2連接方式
服務(wù)器套接口連接中,考慮采用賦給控制器專用端口(50D3)來實(shí)現(xiàn)連接。在建立了與控制器套接口的連接后,應(yīng)用程序會(huì)打開客戶端的配置文件,對(duì)數(shù)據(jù)庫信息進(jìn)行讀取。在與控制器建立連接時(shí),如果連接未成功,則結(jié)束連接請(qǐng)求,并提示連接失??;若連接成功,就會(huì)對(duì)客戶端消息進(jìn)行處理并等待控制器的響應(yīng)。
(二)數(shù)據(jù)庫操作實(shí)現(xiàn)
系統(tǒng)實(shí)現(xiàn)中的應(yīng)用程序頁面與數(shù)據(jù)庫之間的操作主要是通過DataTable完成的。DataTable是ADO,NET中的一個(gè)類,可用于在程序中以臨時(shí)表的形式填充數(shù)據(jù)。程序員可以對(duì)DataTable進(jìn)行定制,通過Spread表格工具實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的在線編輯、更新、刪除,以及對(duì)顯示數(shù)據(jù)進(jìn)行排序、打印等,這些都方便了系統(tǒng)編程工作。
(三)系統(tǒng)流程
系統(tǒng)的主要工作包括:入庫管理、出庫管理、庫存管理等。
入庫作業(yè)流程包括:設(shè)備連接、確定入庫明細(xì)、進(jìn)行入庫操作、完成入庫。如圖2所示。
出庫作業(yè)流程包括:設(shè)備連接、確定出庫明細(xì)、進(jìn)行出庫操作、完成出庫。
(四)系統(tǒng)功能實(shí)現(xiàn)
1系統(tǒng)界面
當(dāng)用戶初次使用本系統(tǒng)時(shí),需要分別對(duì)控制器、發(fā)信機(jī)、受信機(jī)進(jìn)行設(shè)置,此時(shí)系統(tǒng)會(huì)把這些值存入數(shù)據(jù)庫中,下次使用時(shí),上一次設(shè)置的值即為默認(rèn)值。點(diǎn)擊默認(rèn)設(shè)置以后,用戶需要確定要進(jìn)行的操作。即入庫作業(yè)或出庫作業(yè),選擇后下拉菜單和文本框被激活,可以通過它們確定貨物的種類及數(shù)量,點(diǎn)擊“OK”,進(jìn)入作業(yè)監(jiān)控界面。如圖3所示。
2連接界面
用戶輸入欲連接控制器的IP地址及端口號(hào)。然后點(diǎn)擊“Connect”按鈕,如已連接,則提示已連接控制器;如連接成功,則提示連接成功并返回系統(tǒng)界面;如未連接成功,則提示連接失?。蝗酎c(diǎn)擊“Close”按鈕,則關(guān)閉與控制器的連接。如圖4所示。
3發(fā)信機(jī)界面
用戶輸入要使用的發(fā)信機(jī)數(shù)量,發(fā)送時(shí)間間隔。點(diǎn)擊“Set”按鈕確定。然后逐一設(shè)置發(fā)信機(jī)地址,以“Finish”按鈕完成設(shè)置。如圖5所示。
4受信機(jī)界面
先設(shè)置受信機(jī)地址,然后該地址所對(duì)應(yīng)的受信機(jī)會(huì)自動(dòng)在下面的下拉菜單中出現(xiàn),在下拉菜單中選擇受信機(jī),并逐一設(shè)置坐標(biāo),以“Finish”按鈕完成設(shè)置。如圖6所示。
5在庫管理界面
用戶可以通過此界面查詢、修改或刪除貨物。如圖7所示。
(1)查詢
在文本框中輸入一個(gè)貨物名稱。然后意擊“Search”按鈕,如存在。則在表格中顯示其明細(xì);如不存在,則提示貨物不存在;若直接點(diǎn)擊“Search”按鈕,則在表格中顯示所有貨物明細(xì)。
(2)修改
在表格中有內(nèi)容的情況下,修改內(nèi)容,然后點(diǎn)擊“Modify”按鈕,如修改成功,則提示修改成功并修改數(shù)據(jù)庫;否則修改失敗。
(3)刪除
在文本框中輸入一個(gè)貨物名稱,然后點(diǎn)擊“Delete”按鈕,如該貨物存在,則提示是否確定要?jiǎng)h除,選擇“是”,則刪除,選擇“否”。則返回;如該貨物不存在,則提示貨物不存在。或者在表格中有內(nèi)容的情況下,選擇一行,然后點(diǎn)擊“Delete”按鈕。也可進(jìn)行刪除操作。
6作業(yè)監(jiān)控界面
用戶可以利用光標(biāo)鍵或鼠標(biāo)控制鏡頭在三維空間內(nèi)的移動(dòng),也可以單擊鼠標(biāo)左鍵切換跟蹤對(duì)象,或單擊鼠標(biāo)右鍵切換自由移動(dòng)和跟蹤兩種視角。在屏幕左上角顯示了當(dāng)前兩個(gè)發(fā)信機(jī)的坐標(biāo)(兩發(fā)信機(jī)在圖中分別以紅、藍(lán)兩種顏色色塊表示)和用戶要的貨物,在此例中為一臺(tái)顯示器,當(dāng)發(fā)信機(jī)移動(dòng)到顯示器位置時(shí),會(huì)彈出提示,詢問是否要入庫,選擇“是”,則操作完成,同時(shí)修改數(shù)據(jù)庫,程序返回系統(tǒng)設(shè)置界面;如選擇“否”,則繼續(xù)監(jiān)控作業(yè),如圖8所示。出庫情況與此相同,不再贅述。
研究與開發(fā)超聲波定位系統(tǒng),必將豐富和完善物流管理系統(tǒng)的業(yè)務(wù)功能,簡(jiǎn)化庫存管理工作程序,大大提高工作效率,改善工作質(zhì)量,對(duì)促進(jìn)物流信息化建設(shè)具有一定的應(yīng)用價(jià)值。