運(yùn)輸場地磅稱量系統(tǒng)設(shè)計與實現(xiàn)
地磅稱量系統(tǒng)通過RS232串口實現(xiàn)地磅稱量設(shè)備與計算機(jī)之間的數(shù)據(jù)通信.利用Win-dows API函數(shù)實現(xiàn)串口編程,完成稱量數(shù)據(jù)采集.與后臺數(shù)據(jù)庫交換數(shù)據(jù),實現(xiàn)對地磅稱量數(shù) 據(jù)的實時顯示、自動采集、安全存儲、多方式查詢、統(tǒng)計匯總和打印輸出等工作,最大限度地防 止舞弊行為的發(fā)生.
安置在地面以下稱量較大噸位的稱叫地磅, 專用于稱量汽車的地磅又稱為汽車衡.地鎊屬于 衡器的一種,是廠礦、商家等用于大宗貨物計量的 主要稱重設(shè)備,廣泛應(yīng)用于林業(yè)、煤炭、冶金、電 力、港口、倉儲等行業(yè)[1—2].黑龍江省鶴北林業(yè)局 使用電子汽車衡稱量系統(tǒng)進(jìn)行木材檢驗控制,不 僅保證了檢驗質(zhì)量及檢驗速度,減少了人為檢驗 誤差,還提高了勞動生產(chǎn)率,獲得了顯著的經(jīng)濟(jì)效 益[3].在我國,許多運(yùn)輸場采用地磅儀表顯示計量 數(shù)據(jù),司磅員手工填寫單據(jù)、報表的人工操作,工 作安全性差,容易出錯,效率低,難以快速統(tǒng)計,不 能滿足生產(chǎn)經(jīng)營的要求.當(dāng)前,用戶對用衡器完成 測管控稱一體化功能的要求日益高漲,稱重技術(shù) 得以與控制系統(tǒng)和信息管理系統(tǒng)同步發(fā)展,實現(xiàn) 了衡器管理的計算機(jī)化、網(wǎng)絡(luò)化和智能化.
針對國內(nèi)地鎊系統(tǒng)自動化程度應(yīng)用不高的現(xiàn)狀, 通過開發(fā)一套地磅稱量計算機(jī)管理系統(tǒng),將稱量設(shè) 備、if賓機(jī)、數(shù)據(jù)庫有效地結(jié)合起來,實現(xiàn)稱量信息的 自動采集、自動處理,最大限度地防止舞弊行為的發(fā) 生,為企業(yè)的現(xiàn)代化管理提供有力的幫助.
1.系統(tǒng)目標(biāo)
通過項目實施使地磅稱量設(shè)備與計算機(jī)連 接,通過計算機(jī)軟件編程讀取稱量設(shè)備數(shù)據(jù),與后 臺數(shù)據(jù)庫交換數(shù)據(jù),實現(xiàn)對稱量數(shù)據(jù)的實時顯示、 自動采集、安全存儲、多方式查詢、匯總統(tǒng)計和打印 輸出等工作.根據(jù)企業(yè)管理上的要求,所設(shè)計的稱 量管理軟件需達(dá)到以下幾個目標(biāo):符合運(yùn)輸場的業(yè) 務(wù)流程和要求,程序流程清晰、嚴(yán)密;獲取稱重數(shù)據(jù) 快速、準(zhǔn)確;操作簡便,自動化程度高,能有效防止舞 弊行為;數(shù)據(jù)查詢、報表制作方便快捷;系統(tǒng)長時間 運(yùn)行穩(wěn)定可靠;數(shù)據(jù)安全性和可靠性高.
2.需求分析
2.1運(yùn)輸場硬件條件
運(yùn)輸場硬件要求:1臺地磅;1臺計算機(jī)(能流 暢運(yùn)行Win98及其以上操作系統(tǒng),100 M以上硬盤 剩余空間);1個條碼閱讀器;1臺打印機(jī).
2.2運(yùn)輸場稱量業(yè)務(wù)流程
運(yùn)輸場稱量業(yè)務(wù)流程:重車上磅,記錄重車質(zhì) 量;重車下鎊,到指定地點卸貨并領(lǐng)取回執(zhí)單;空車 上磅,交回回執(zhí)單并記錄空車質(zhì)量;空車下磅,結(jié)束.
2.3功能分析
根據(jù)運(yùn)輸場的條件和要求,項目開發(fā)的地磅 稱量系統(tǒng)主要功能包含:稱量數(shù)據(jù)自動采集;歷史 稱量數(shù)據(jù)維護(hù);多方式查詢;報表統(tǒng)計及打印;代 碼維護(hù);系統(tǒng)參數(shù)設(shè)置;用戶權(quán)限設(shè)置;數(shù)據(jù)備份 與恢復(fù).同時,為將來網(wǎng)絡(luò)化環(huán)境中實現(xiàn)數(shù)據(jù)共享 預(yù)留接口.
2.4系統(tǒng)功能詳細(xì)設(shè)計
根據(jù)功能分析,地磅稱量系統(tǒng)主要包含稱量數(shù) 據(jù)管理、系統(tǒng)設(shè)置兩大模塊,系統(tǒng)總體結(jié)構(gòu)見圖1.
稱量數(shù)據(jù)管理:主要是對稱量數(shù)據(jù)進(jìn)行管理,包 含“稱量數(shù)據(jù)采集”、“稱量數(shù)據(jù)維護(hù)”、“報表打印”、 “數(shù)據(jù)備份”、“數(shù)據(jù)恢復(fù)”5個子模塊.
“稱量數(shù)據(jù)采集”用于自動采集車輛稱量數(shù)據(jù)-
“稱量數(shù)據(jù)維護(hù)”用于維護(hù)車輛稱量歷史數(shù) 據(jù),可以對稱量數(shù)據(jù)進(jìn)行添加、修改、刪除、査詢、統(tǒng)計 等操作.
“報表打印”用于打印年報表、月報表、臨時 報表和回執(zhí)卡.
“數(shù)據(jù)備份”用于將系統(tǒng)數(shù)據(jù)備份到指定的 文餘
“數(shù)據(jù)恢復(fù)”用于從指定文件夾恢復(fù)系統(tǒng)數(shù)
據(jù).
系統(tǒng)設(shè)置:主要用于維護(hù)系統(tǒng),包含“員工信息 維護(hù)”、“車輛信息維護(hù)”、“系統(tǒng)參數(shù)設(shè)置”、“通信參 數(shù)設(shè)置”、“操作員管理”、“更改密碼”等6個模塊.
“員工信息維護(hù)”用于維護(hù)員工信息,可以 對員工信息進(jìn)行添加、修改、刪除等操作’
“車輛信息維護(hù)”用于維護(hù)車輛信息,可以 對車輛信息進(jìn)行添加、修改、刪除等操作?
“系統(tǒng)參數(shù)設(shè)置”用于設(shè)置系統(tǒng)參數(shù),如地 磅無車的判定質(zhì)量、月報表的開始和結(jié)束時間等.
“通信參數(shù)設(shè)置”用于設(shè)置地磅的通信參數(shù) 和稱量數(shù)據(jù)格式,如串口號、波特率等.
“操作員管理”用于系統(tǒng)操作員的管理,包 括添加、刪除操作員,授予操作員權(quán)限等.
“更改密碼”用于更改當(dāng)前用戶的登錄密碼.
3.數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫設(shè)計(Database Design)包括數(shù)據(jù)庫設(shè) 計和數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計兩個方面,在設(shè)計過程 中,應(yīng)把數(shù)據(jù)庫的結(jié)構(gòu)設(shè)計和數(shù)據(jù)處理的操作設(shè) 計緊密結(jié)合起來,相互參照和相互補(bǔ)充地磅稱
量系統(tǒng)的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計按以下步驟進(jìn)行:
根據(jù)已收集的原始數(shù)據(jù)和系統(tǒng)設(shè)計需 要,確定系統(tǒng)應(yīng)包含的數(shù)據(jù)表.
確定數(shù)據(jù)表應(yīng)包含的數(shù)據(jù)項和這些數(shù)據(jù) 項的定義,如內(nèi)容、長度、類型等.
按照 3NF(Third Normal Form)標(biāo)準(zhǔn)對數(shù) 據(jù)表進(jìn)行標(biāo)準(zhǔn)化,即表內(nèi)的每一個值都只能被表 達(dá)一次.表內(nèi)的每一行都應(yīng)該被唯一標(biāo)識(有唯一 鍵).表內(nèi)不應(yīng)該存儲依賴于其他鍵的非鍵信息.
由于標(biāo)準(zhǔn)化可能給數(shù)據(jù)庫引人太高的復(fù) 雜性,降低系統(tǒng)效率,因此需要對數(shù)據(jù)表結(jié)構(gòu)進(jìn)行 調(diào)整,允許數(shù)據(jù)適量冗余,使其在性能、擴(kuò)展性和 數(shù)據(jù)完整性方面達(dá)到最好的平衡.
建立數(shù)據(jù)字典.數(shù)據(jù)字典是數(shù)據(jù)庫應(yīng)用 設(shè)計的重要內(nèi)容,它是描述數(shù)據(jù)庫中各數(shù)據(jù)屬性 與組成的數(shù)據(jù)集合,在數(shù)據(jù)庫的整個生命周期里 都起著重要的作用.
地磅稱量系統(tǒng)包含的主要數(shù)據(jù)表及其用途見 表1,系統(tǒng)實體-聯(lián)系圖(E-R圖)見圖2.
4.系統(tǒng)實現(xiàn)
地磅稱量系統(tǒng)包括稱量設(shè)備與計算機(jī)的通信 和稱量數(shù)據(jù)管理的MIS系統(tǒng)兩部分.稱量設(shè)備通 過RS232串口與計算機(jī)的串口連接,并向計算機(jī) 的串口發(fā)送數(shù)據(jù);MIS系統(tǒng)定時掃描串口獲取數(shù) 據(jù),經(jīng)格式轉(zhuǎn)換后通過事件驅(qū)動調(diào)用相關(guān)模塊對 數(shù)據(jù)進(jìn)行處理.
4.1硬件組成
系統(tǒng)硬件組成框圖見圖3.
4.2開發(fā)工具與數(shù)據(jù)庫管理系統(tǒng)選擇
前端開發(fā)工具采用PowerBuilder;后臺數(shù)據(jù)庫 管理系統(tǒng)采用 ASA 7.0 ( Adaptive Server Any-where). 當(dāng)局域網(wǎng)建成后,可采用SQLServer2000 等大中型數(shù)據(jù)庫管理系統(tǒng)作為后臺數(shù)據(jù)庫管理系 統(tǒng),以獲得更高的數(shù)據(jù)安全性和實現(xiàn)網(wǎng)絡(luò)環(huán)境中 的數(shù)據(jù)共享.
4.3關(guān)鍵技術(shù)
數(shù)據(jù)通信與采集的實現(xiàn)是系統(tǒng)實現(xiàn)的關(guān)鍵. 串行通信因其線路簡單,開發(fā)相對比較容易,所以 經(jīng)常應(yīng)用于各種監(jiān)控、測試和自動化設(shè)備中.系統(tǒng) 中,稱量設(shè)備與計算機(jī)之間通過RS232串口連接, 數(shù)據(jù)通信的核心就是如何實現(xiàn)串口編程,通過串 口進(jìn)行數(shù)據(jù)通信,從而實現(xiàn)數(shù)據(jù)的采集.在Win-dows 環(huán)境下,不能直接對硬件進(jìn)行讀寫,實現(xiàn)串口 編程一般采用以下兩種方法:一是利用Windows 本身提供的通信API函數(shù);二是利用微軟公司提 供的通信控件MSComm.關(guān)于利用MSComm控件 實現(xiàn)串口編程的方法前人做了很多研究Ue-14’16], 本文給出了對串口進(jìn)行讀寫的一種簡化步驟,降 低了程序的復(fù)雜性.下面是利用Windows API函數(shù) 實現(xiàn)串口編程的程序?qū)崿F(xiàn)U5-17].
外部函數(shù)定義
Windows API函數(shù)在PowerBuilder中使用之前 必須先聲明為外部函數(shù),下面是系統(tǒng)中用到的 Windows API函數(shù)的聲明:
Function Boolean CloseHandle (ulong hOb- ject ) Library "kemel32.dll" //關(guān)閉串口
FUNCTION Boolean ReadFile(ulong fhand, ref blob lpbuffer, ulong numbyte, ref ulong bytes- read, ulong lpover) LIBRARY ” kemel32, dll" //讀 取串口數(shù)據(jù)
(3 ) FUNCTION ulong CreateFileA ( ref stringfname, ulong f一access,ulong f—share,ulong f_sec, ulong f一create,ulong f_flag, ulong f_attrib) LI-BRARY "kemel32.dll" //打開串口
Function Boolean WriteFile(uLong handle, ref blob lpbuffer, ulong numbytes, ref ulong bytes- read, ulong lpOverLaped) Library M Kemel32. dll” //寫人串口數(shù)據(jù)
Function Boolean GetCommProperties(ulong hFile,ref COMMPROP lpCommProp ) Library " Ker- neB2. dll” //返回COMM設(shè)備屬性
(6 ) Function Boolean BuildCommDCBA ( ref string lpDef,ref DCB lpDCB ) Library " Kemel32. dll" //向DCB中傳送設(shè)備定義字符串
(7 ) Function Boolean SetCommState ( ulong hCommDev, ref DCB lpdcb ) Library "Kemel32. dll” //設(shè)置串口狀態(tài)
(8 ) Function Boolean GetCommState ( ulong hCommDev,ref DCB lpdcb ) Library "Kemel32, dll” //讀取顯示設(shè)置參數(shù)
(9 ) Function ulong GetLastError ( ) Library "Kemel32.dll" //返回擴(kuò)充出錯代碼
(10) Function Boolean SetCommTimeouts ( ulong hCommDev, ref COMMTIMEOUTS lpctmo ) Library M Kemel32. dll" //設(shè)置通信讀寫時間范圍
(11 ) Function Boolean PurgeComm ( ulong hCommDev,ulong fdwAction ) Library ?? Keme!32. dll” //消除通信隊列
Windows API通信函數(shù)的串口通信程序?qū)?/span> 現(xiàn)方法在Windows系統(tǒng)中,串行通信是作為文 件讀寫來處理的,其串口讀寫的一般過程為:
配置串口 ■—?串口讀寫—關(guān)閉串口
打開串口.在Windows環(huán)境下,使用Cre-ateFileA 函數(shù)打開串口,若成功打開則串口通信端 口即可使用,并返回一個Handle值,程序中將使用 此Handle值進(jìn)行相關(guān)的串口操作.
配置串口.包括初始化端口、設(shè)置DCB結(jié) 構(gòu)和設(shè)置超時值.使用SetCommState函數(shù)設(shè)置串 口狀態(tài),包括波特率、字節(jié)長度、校驗位、停止位亭;使用SetCommTimeouts函數(shù)設(shè)置超時值.
串口讀寫.Windows環(huán)境下對串口的讀寫 長用ReadFile函數(shù)和WriteFile函數(shù).讀寫方式有 兩種:重疊模式和非重疊模式(或稱為異步模式和 司步模式).
串口關(guān)閉?串口使用完畢,應(yīng)使用Close- landle函數(shù)關(guān)閉串口,釋放串口資源.
根據(jù)運(yùn)輸場稱量業(yè)務(wù)流程,稱量數(shù)據(jù)采集模 弁主要程
系統(tǒng)設(shè)置了自助査詢功能.當(dāng)?shù)匕跎蠠o車時, 吾工在稱量數(shù)舍采集窗口中輸入員工編號(使用 君工卡,通過條碼閱讀器輸人),“已完成數(shù)據(jù)”欄 戶只顯示該員工當(dāng)天的所有記錄,方便員工查閱? 為了防止作弊行為發(fā)生,系統(tǒng)在程序流程中 3;置了一些檢查。
iD稱重時,必須是前 >,妁質(zhì)量值小于設(shè)定的稱—備 (缸系統(tǒng)參數(shù)設(shè)置模塊設(shè)置)時,下 上地磅,否則系統(tǒng)會認(rèn)為員工企#重復(fù) 數(shù)據(jù)而拒絕接受數(shù)據(jù).
$防止員工通過各種手段增,重 或減少空★量來提高凈質(zhì)值,系統(tǒng)通過¥ 工信息表和#信息表,查詢該車型的_ 限和空車上下與稱量數(shù)據(jù)比較,判斷車^ 于重車狀態(tài)還是#狀態(tài).系統(tǒng)拒絕接收不: 的稱量數(shù)據(jù),并顯示栩應(yīng)信息提示員工.
系統(tǒng)設(shè)置了兩次稱重車的間隔時間?機(jī) 果兩次稱重車的時間間陶、小于設(shè)定的間隔時間 (在系統(tǒng)參數(shù)設(shè)置模塊設(shè)置系統(tǒng)拒絕接受后一 次稱量的數(shù)據(jù),并顯示相應(yīng)信¥示員工?
員工在稱量空車時,員工編號后,還 需要輸入卸貨時獲得的回執(zhí)卡卡重車數(shù)據(jù)、空 車數(shù)據(jù)和回執(zhí)卡號齊全,記錄才會~加到稱量 信息表中,并參與統(tǒng)計匯總(計算工作夂?
5.結(jié)束語
地磅稱量系統(tǒng)將稱量設(shè)備、計算機(jī)、數(shù)據(jù)¥ 效地結(jié)合起來,實現(xiàn)了對稱量數(shù)據(jù)的實時顯示、 動采集、安全存儲、多方式查詢、匯總統(tǒng)計和打印 輸出等工作,為運(yùn)輸場運(yùn)力調(diào)節(jié)提供科學(xué)、準(zhǔn)確、 及時的數(shù)據(jù).同時還減輕了工作人員的勞動強(qiáng)度, 提高了工作效率和經(jīng)濟(jì)效益,最大限度地防止舞 弊行為的發(fā)生,在企業(yè)的生產(chǎn)和管理中發(fā)揮了積 極作用.
地磅稱量系統(tǒng)從硬件、軟件和通信等方面進(jìn) 行了研究設(shè)計,其結(jié)構(gòu)簡單實用,操作簡便,安全 可靠,具有較好的通用性、開放性、擴(kuò)展性、可維護(hù) 性,充分保護(hù)企業(yè)的投資.系統(tǒng)已在昆明市五華區(qū) 環(huán)衛(wèi)處廢棄物運(yùn)輸場運(yùn)行1年多,性能穩(wěn)定可靠, 效果良好,有顯著的經(jīng)濟(jì)效益和社會效益,具有一 定的推廣價值