基于DDE通訊的地磅計(jì)算機(jī)計(jì)量管理系統(tǒng)
介紹了以DDE通訊方式來(lái)獲取儀表上傳數(shù)據(jù)的地磅計(jì)算機(jī)計(jì)量管理系統(tǒng)的實(shí)現(xiàn).由于采用 動(dòng)態(tài)改變MSComm控件的Rthreshold屬性值的技術(shù),與同類型軟件產(chǎn)品相比較,系統(tǒng)反應(yīng)及時(shí)、穩(wěn)定性 強(qiáng)、可適應(yīng)各種儀表類型.
0.引言
某化工廠的地磅房地磅擔(dān)負(fù)著全廠的物資進(jìn) 出的計(jì)量任務(wù),每年有上百種、數(shù)百萬(wàn)噸的產(chǎn)品和原 材料經(jīng)地磅房地磅系統(tǒng)計(jì)量后,進(jìn)出廠區(qū),供貨提 貨的客戶和單位有數(shù)百個(gè)之多,地磅房的工作質(zhì)量 和效率對(duì)企業(yè)有著非常重要的意義.影響地磅房工 作質(zhì)量和效率的的主要因素是計(jì)量數(shù)據(jù)的準(zhǔn)確、快 速、可靠和計(jì)量數(shù)據(jù)的快速傳遞.過(guò)去該廠的地磅房地磅由手工操作,通過(guò)配備的稱重顯示儀,人工記 錄車號(hào),讀取空車、重車重量并進(jìn)行凈重計(jì)算并填寫 稱重單據(jù).這種稱重儀器的缺點(diǎn)主要是存儲(chǔ)容量小、 工作效率低,不能進(jìn)行分類統(tǒng)計(jì),數(shù)據(jù)不容易進(jìn)入企 業(yè)管理數(shù)據(jù)庫(kù).計(jì)量數(shù)據(jù)的傳遞和處理由人工完成, 每天磅房操作人員將前一天的計(jì)量數(shù)據(jù)報(bào)送計(jì)量主 管部門,再由統(tǒng)計(jì)人員進(jìn)一步歸類統(tǒng)計(jì),送到有關(guān)處 室.造成工作量大,且處理周期長(zhǎng),容易發(fā)生司稱人 員與汽車司機(jī)串通作弊的事情,因此非常不適應(yīng)現(xiàn) 代企業(yè)管理方式.
針對(duì)以上情況我們?cè)O(shè)計(jì)了地磅計(jì)算機(jī)計(jì)量管 理系統(tǒng),其目的是利用先進(jìn)的計(jì)算機(jī)技術(shù)來(lái)提高地磅計(jì)量系統(tǒng)可靠性、準(zhǔn)確性以及自動(dòng)化程度,最大 限度地防止作弊現(xiàn)象的發(fā)生,為企業(yè)的現(xiàn)代化管理 提供有力的幫助.
1.系統(tǒng)組成原理
地磅計(jì)算機(jī)計(jì)量管理系統(tǒng)的硬件結(jié)構(gòu)框圖如 圖1所示.
壓力傳感器將稱重平臺(tái)的壓力轉(zhuǎn)換成電信號(hào)送往稱 重儀表,由稱重儀表的A/D轉(zhuǎn)換電路轉(zhuǎn)換成數(shù)字信 號(hào),稱重儀表具有計(jì)算、顯示重量的功能.同時(shí)稱重 儀表配有RS — 232接口,以連續(xù)發(fā)送方式將重量數(shù) 據(jù)直接發(fā)送到上位的管理計(jì)算機(jī)上,形成稱重管理 系統(tǒng).管理計(jì)算機(jī)通過(guò)稱重管理軟件接收RS — 232 串行口上傳的稱重?cái)?shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行顯示、存儲(chǔ)和管 理,打印過(guò)磅單及各種統(tǒng)計(jì)報(bào)表,可以實(shí)現(xiàn)對(duì)與稱重 有關(guān)的數(shù)據(jù)進(jìn)行查詢、維護(hù).管理計(jì)算機(jī)還可以與企 業(yè)內(nèi)部網(wǎng)絡(luò)相連,將稱重過(guò)程中形成的各種數(shù)據(jù)方 便地傳送到企業(yè)的管理數(shù)據(jù)庫(kù),以作為管理決策、財(cái) 務(wù)結(jié)算的基礎(chǔ)數(shù)據(jù).
2.計(jì)量管理軟件系統(tǒng)的設(shè)計(jì)
根據(jù)企業(yè)管理上的要求,所設(shè)計(jì)的計(jì)量管理軟 件獲取稱重?cái)?shù)據(jù)必須快速準(zhǔn)確;系統(tǒng)長(zhǎng)時(shí)間工作必 須穩(wěn)定可靠;操作簡(jiǎn)便,能有效地防止作弊行為;數(shù) 據(jù)保密性要強(qiáng).
系統(tǒng)主要功能應(yīng)包括:皮重和毛重的稱量數(shù)據(jù) 通過(guò)RS — 232接口傳輸?shù)接?jì)算機(jī),計(jì)算機(jī)收到數(shù)據(jù)后,撿核車號(hào),根據(jù)皮重、毛重計(jì)算各種貨物的凈重, 確定憑證代碼、物資代碼和名稱、供方代碼和名稱、 需方代碼和名稱、物資流向、稱重時(shí)間和司稱人員等 信息,并打印過(guò)磅單據(jù);以多種方式統(tǒng)計(jì)各種物資的 稱重?cái)?shù)據(jù),生成由原始數(shù)據(jù)得到的日?qǐng)?bào)表、月報(bào)表和 年報(bào)表,計(jì)算每種物資的日、月、年的累計(jì)重量;可對(duì) 運(yùn)輸車輛、物資、供方、需方、稱重記錄、司稱人員等 信息進(jìn)行維護(hù)、備份和查詢并打印輸出查詢結(jié)果;對(duì) 系統(tǒng)的有關(guān)參數(shù)(如串行口參數(shù)、計(jì)量單位、儀表類 型)進(jìn)行配置等.
針對(duì)以上的要求,我們采用模塊化設(shè)計(jì)方法進(jìn) 行地磅計(jì)算機(jī)計(jì)量管理軟件的設(shè)計(jì).將整個(gè)系統(tǒng) 按功能要求劃分為若干個(gè)功能模塊,各功能模塊之 間既相互獨(dú)立以便于調(diào)試和修改,為系統(tǒng)的維護(hù)和 修改提供了方便;同時(shí)各模塊又通過(guò)數(shù)據(jù)庫(kù)構(gòu)成有 機(jī)的整體,相互協(xié)助,共同完成管理任務(wù).系統(tǒng)軟件 主要功能模塊結(jié)構(gòu)如圖2所示,各主要功能模塊又 由若干子模塊組成.
(1)系統(tǒng)登錄模塊.為了保證數(shù)據(jù)的安全性,只 有被授權(quán)的有關(guān)人員才能夠操作該管理軟件.各操 作人員可以根據(jù)崗位需要被授予不同的權(quán)限,如系 統(tǒng)管理權(quán)、參數(shù)設(shè)置權(quán)、數(shù)據(jù)維護(hù)權(quán)、稱重操作權(quán)、數(shù) 據(jù)查詢權(quán)、統(tǒng)計(jì)報(bào)表權(quán)、司稱員管理權(quán)等.系統(tǒng)管理 權(quán)是最高權(quán)限,往往由企業(yè)或單位指定一人負(fù)責(zé),他 可以對(duì)所有的數(shù)據(jù)進(jìn)行查看、更新或配置.進(jìn)入系統(tǒng) 都要由登錄模塊來(lái)確認(rèn)使用者的身份和密碼,防止 非法人員的操作.
(2)稱重處理模塊.稱重模塊主要負(fù)責(zé)接收儀表 上傳的稱重?cái)?shù)據(jù),根據(jù)皮重和毛重?cái)?shù)據(jù)計(jì)算出凈重, 并將稱重?cái)?shù)據(jù)與車號(hào)、憑證代碼、物資代碼、供方代 碼、需方代碼、物資流向、發(fā)票號(hào)碼、稱重時(shí)間和司稱 員代碼等信息形成一條完整記錄存入數(shù)據(jù)庫(kù).稱重 數(shù)據(jù)的獲取由DDE通訊程序完成.
為適應(yīng)企業(yè)內(nèi)部和外部汽車稱重的不同需要, 稱重處理設(shè)置了兩種方式,一種是固定皮重方式,其 主要針對(duì)企業(yè)內(nèi)部車輛和一部分經(jīng)過(guò)企業(yè)相關(guān)負(fù)責(zé) 以縮短稱重時(shí)間,提高稱重效率;第二種是非固定皮 重方式,即進(jìn)出車輛必須經(jīng)過(guò)稱皮、稱毛兩次稱量以 獲得物資凈重?cái)?shù)據(jù),皮重?cái)?shù)據(jù)僅用一次,下回稱重時(shí) 須重新稱皮重.
(3)數(shù)據(jù)查詢模塊.該模塊用于查詢稱重記錄、 物資、供方、需方、憑證、車輛和司稱員等信息.可按 任意字段查詢,數(shù)據(jù)表的每個(gè)字段都可以作為查詢 條件,同時(shí)還提供二次查詢功能,即在上次查詢結(jié)果 的基礎(chǔ)上做進(jìn)一步細(xì)化查詢.查詢結(jié)果可打印輸出.
(4)數(shù)據(jù)維護(hù)模塊.主要是對(duì)稱重?cái)?shù)據(jù)、憑證信 息、供需方信息、車輛信息、司稱員信息進(jìn)行添加、刪 除、修改等操作.對(duì)于不同的用戶,其權(quán)限不同,所維 護(hù)的數(shù)據(jù)也不一樣.如一般的司稱員只能維護(hù)憑證 信息、物資信息、供需信息等數(shù)據(jù),無(wú)權(quán)修改稱重記 錄、司稱員信息,而系統(tǒng)管理員卻可以對(duì)所有數(shù)據(jù)進(jìn) 行維護(hù).
(5)統(tǒng)計(jì)報(bào)表模塊.進(jìn)行年報(bào)表、月報(bào)表、日?qǐng)?bào)表 的生成和打印,可進(jìn)行日、月、年的各種物資的累計(jì). 報(bào)表類型分為稱重統(tǒng)計(jì)總表、分類分戶統(tǒng)計(jì)、分戶分 類統(tǒng)計(jì)、稱重統(tǒng)計(jì)清單等統(tǒng)計(jì)形式,使企業(yè)的日常管 理更為方便快捷.
(6)參數(shù)設(shè)置模塊.為計(jì)算機(jī)與儀表實(shí)現(xiàn)通訊, 以及數(shù)據(jù)轉(zhuǎn)換進(jìn)行一些基本設(shè)置,包括:串口參數(shù)配 置、計(jì)量單位配置、儀表類型配置.
用戶設(shè)置模塊.對(duì)使用該系統(tǒng)的司稱員、管 理員的代碼、姓名、密碼和權(quán)限進(jìn)行配置,可執(zhí)行增、 刪、改操作.
整個(gè)管理系統(tǒng)軟件采用VB6.0開發(fā),數(shù)據(jù)庫(kù)采 用數(shù)據(jù)庫(kù).同時(shí)系統(tǒng)也可以根據(jù)需要很方便 地移植到網(wǎng)絡(luò)環(huán)境下,實(shí)現(xiàn)多臺(tái)地磅連網(wǎng)運(yùn)行.
3.系統(tǒng)的主要技術(shù)特點(diǎn)
(1)采用DDE通訊方式獲取稱重?cái)?shù)據(jù)以方便系 統(tǒng)適應(yīng)各種稱重儀表.
管理計(jì)算機(jī)獲取稱重儀表上傳數(shù)據(jù)的任務(wù)由專 門開發(fā)的DDE通訊程序完成,該DDE通訊程序 (Server)作為數(shù)據(jù)的提供者將實(shí)時(shí)重量數(shù)據(jù)提供給 Windows環(huán)境下的稱重處理程序(Client). DDE (動(dòng) 態(tài)數(shù)據(jù)交換)是Windows平臺(tái)上一個(gè)完整的通信協(xié) 議,它使應(yīng)用程序能夠彼此交換數(shù)據(jù)和發(fā)送指令.系 統(tǒng)數(shù)據(jù)流向圖如下:
由于不同廠家的稱重儀表,其與上位機(jī)接口的 通訊協(xié)議都不一樣,如TOLEDO腳的稱重儀表和耀華的稱重儀表;即使是同一廠家的不同系列、不同 種類的稱重儀表,它們各自的通訊協(xié)議也可能不一 樣,如XK3190系列的D2表和A1表.采 用DDE通訊方式的最大好處就是,使系統(tǒng)管理軟件 可以非常方便地適應(yīng)各種稱重儀表,例如,當(dāng)更換了 一種管理軟件原本并不支持的稱重儀表時(shí),只需對(duì) DDE通訊程序進(jìn)行更新,增加對(duì)新儀表通訊協(xié)議的 支持,而不必對(duì)整個(gè)管理軟件進(jìn)行修改和重新編譯, 這就大大增強(qiáng)了系統(tǒng)的適應(yīng)性.
(2)動(dòng)態(tài)改變MSComm控件的Rthreshold屬性 值,確保接收數(shù)據(jù)過(guò)程迅速、穩(wěn)定可靠.
在DDE通訊程序中,使用了 MSComm控件來(lái) 實(shí)現(xiàn)對(duì)串口的編程.為了識(shí)別接收數(shù)據(jù)的格式,提取稱重?cái)?shù)據(jù),通常的做法是:用MSComm控件的On- Comm事件接收上傳的各字節(jié)數(shù)據(jù),并將它們放入 一個(gè)應(yīng)用程序設(shè)置的緩沖區(qū),如一個(gè)數(shù)組,另外用一 個(gè)定時(shí)器Timer控件定時(shí)掃描緩沖區(qū)以提取實(shí)時(shí)稱 重?cái)?shù)據(jù).通過(guò)實(shí)踐我們發(fā)現(xiàn)這種方式在實(shí)際中間存 在一些問題,主要是反應(yīng)不夠及時(shí)、有時(shí)有丟失數(shù)據(jù) 的現(xiàn)象.因此我們采用只利用MSComm控件,不使 用Timer控件,通過(guò)在MSComm控件的OnComm 事件中動(dòng)態(tài)改變MSComm控件的Rthreshold屬性 值的方法,來(lái)實(shí)現(xiàn)對(duì)實(shí)時(shí)稱重?cái)?shù)據(jù)的提取.實(shí)踐證 明,這種方法程序短小精干、反應(yīng)及時(shí)、無(wú)數(shù)據(jù)丟失 現(xiàn)象,效果非常好.現(xiàn)介紹如下.
通過(guò)調(diào)查發(fā)現(xiàn),目前大多數(shù)與上位計(jì)算機(jī)相連 的稱重儀表都能以連續(xù)發(fā)送方式將實(shí)時(shí)稱重?cái)?shù)據(jù)發(fā) 送到上位機(jī)的,其每個(gè)數(shù)據(jù)包都為固定長(zhǎng)度.以XK3190—A1表為例,串行口設(shè)置為:1位啟始 位、1位停止位、8位數(shù)據(jù)位,無(wú)奇偶校驗(yàn)位.XK3190 一 A1稱重儀表的上傳實(shí)時(shí)稱重?cái)?shù)據(jù)的幀格式為:
每幀數(shù)據(jù)由12個(gè)字節(jié)組成,所有數(shù)據(jù)均為A SC II字符.小數(shù)點(diǎn)位數(shù)按從右到左取0 ~ 4的數(shù)值,異 或校驗(yàn)為每幀的第2個(gè)字節(jié)到第九個(gè)字節(jié)依次進(jìn)行 異或運(yùn)算的結(jié)果.異或校驗(yàn)結(jié)果占2個(gè)字節(jié),高四位 放在第一個(gè)字節(jié)中,底四位放在第二個(gè)字節(jié)中.
動(dòng)態(tài)改變MSComm控件的Rthreshold屬性值 方法的思路是:由于Rthreshold屬性值是說(shuō)明在產(chǎn) 生OnComm事件之前要接收的字符數(shù),故可以利用 動(dòng)態(tài)改變Rthreshold屬性的值的方式來(lái)控制觸發(fā) OnComm事件的時(shí)機(jī),以保證在讀取串口時(shí)能讀到 一個(gè)完整的數(shù)據(jù)幀.而如果采用定時(shí)器方式,則有可 能由于沒能讀到完整的數(shù)據(jù)幀而產(chǎn)生丟數(shù)據(jù)的現(xiàn) 象,特別是在有干擾時(shí)尤其嚴(yán)重.其次采用定時(shí)器方 式,由于受定時(shí)間隔的限制,上位機(jī)數(shù)據(jù)刷新往往與 儀表顯示有一個(gè)較明顯的滯后,即反映不夠及時(shí).以 常用的1200波特率的連續(xù)方式為例,串口發(fā)送一幀 數(shù)據(jù)需要100ms,那么理論上定時(shí)器的定時(shí)間隔至 少需要200ms,才可能保證能讀取到一幀完整的數(shù) 據(jù),實(shí)際中一般至少要將定時(shí)器的定時(shí)間隔設(shè)為 300ms到400ms以上.這樣一來(lái)上位機(jī)數(shù)據(jù)顯示要 比儀表顯示滯后0.3 ~ 0. 4s以上,這種滯后可以明 顯地察覺出來(lái),而采用在OnComm事件中動(dòng)態(tài)改變Rthreshold屬性值的方法,一般情況下其滯后時(shí)間 只有0. 1s,幾乎察覺不出來(lái),即使在受到干擾的情 況下,其滯后時(shí)間也要比定時(shí)器方式少得多,從而做 到反應(yīng)及時(shí).其OnComm事件處理程序流程圖如下 所示:
4.結(jié)束語(yǔ)
我們開發(fā)的地磅計(jì)算機(jī)計(jì)量管理系統(tǒng)雖然是針對(duì)地磅稱重管理的,略加修改也可以適用于其 它的稱重管理中,如軌道衡、平臺(tái)稱系統(tǒng).該軟件己 應(yīng)用在多個(gè)企業(yè)之中,從反饋的信息來(lái)看,系統(tǒng)反應(yīng) 迅速,運(yùn)行過(guò)程穩(wěn)定可靠,無(wú)數(shù)據(jù)丟失現(xiàn)象,使用效 果非常好.同時(shí),由于采用了 DDE通訊方式,在對(duì)各 種稱重儀表的支持方面表現(xiàn)出了很大的靈活性.系 統(tǒng)還可以很方便地查詢各種稱重?cái)?shù)據(jù),可根據(jù)需要 進(jìn)行多種形式的統(tǒng)計(jì)并打印統(tǒng)計(jì)報(bào)表,實(shí)現(xiàn)了數(shù)據(jù) 的標(biāo)準(zhǔn)化管理,減輕了工作人員的勞動(dòng)強(qiáng)度,提高了 工作效率和經(jīng)濟(jì)效益,基本杜絕了人為作弊現(xiàn)象,符 合企業(yè)現(xiàn)代化管理的要求.