論利用OOP設(shè)計思想的通訊接口類的設(shè)計與應(yīng)用
0 引言
隨著電子技術(shù)的發(fā)展,嵌入式控制系統(tǒng)進入了各個行業(yè),而友善的人機交互決定了臺式機和控制系統(tǒng)的結(jié)合不可避免。同時,隨著虛擬儀器技術(shù)的發(fā)展,硬件軟件化的趨勢愈加明顯,在測控系統(tǒng)中,一般的系統(tǒng)構(gòu)架都采用前端是數(shù)據(jù)采集系統(tǒng),然后將采集到的數(shù)據(jù)通過傳輸協(xié)議傳輸?shù)胶笈_臺式機中進行更加靈活的處理和顯示,比方說現(xiàn)在TI的CVS或者LabVIEW 就是專門用于方便地設(shè)計虛擬儀器的開發(fā)工具。這個一方面是降低成本的方式;另一方面,系統(tǒng)的構(gòu)架上靈活,適應(yīng)性得到了加強。
1 硬件構(gòu)架
嵌入式的測控系統(tǒng),結(jié)合臺式機靈活的軟件設(shè)計,可以提供給用戶多樣的虛擬儀器的人機交互界面,以及復(fù)雜的數(shù)據(jù)管理功能。圖1就是一個典型的測控系統(tǒng)的基于虛擬儀器構(gòu)架的抽象系統(tǒng)框圖。
整個系統(tǒng),分成了3 個邏輯部分:第一部分就是待測控的系統(tǒng),可能是某個系統(tǒng)的溫度,或者是某個工業(yè)控制過程的流量等;第2部分是數(shù)據(jù)采集和控制執(zhí)行單元,這個部分負責(zé)了數(shù)據(jù)的采樣和來自工控機的命令的執(zhí)行,關(guān)于數(shù)據(jù)采集單元,可以簡單的由傳感器加A/D轉(zhuǎn)換電路組成,也可以是諸如頻譜儀等專門的測量儀器。由于有些系統(tǒng)是開環(huán)系統(tǒng),所以未必有控制執(zhí)行單元,所以這個單元在圖中用了虛線的方式表示,負責(zé)工控機經(jīng)過某些算法運算之后,執(zhí)行控制命令;第3部分就是工控機所在的儀器界面的部分,這個部分可以使對原始數(shù)據(jù)的形象圖形化表示(即虛擬儀器,完成人機交互),也可以負責(zé)執(zhí)行諸如一些特殊的信號處理功能,然后將處理結(jié)構(gòu)進行顯示或者將處理結(jié)果作為算法控制的輸入,進行產(chǎn)生控制信號,一邊對被控對象進行及時的控制。
系統(tǒng)的工作過程,首先是由被測控系統(tǒng)的需要檢測的數(shù)據(jù)決定了所需要的數(shù)據(jù)采用硬件進行采用原始的數(shù)據(jù),然后又采用系統(tǒng)將數(shù)據(jù)直接轉(zhuǎn)換為原始數(shù)據(jù)信號,如果采樣后需要立即進行必要的數(shù)據(jù)處理,就可以使用DSP對數(shù)據(jù)進行一次加工,然后作為初始數(shù)據(jù),通過標(biāo)準(zhǔn)的傳輸協(xié)議(如串口,網(wǎng)口,藍牙,或者USB等),將數(shù)據(jù)傳輸給工控PC,然后通過編寫工控軟件,將數(shù)據(jù)進一步進行深層次的處理,顯示,存儲,如果需要對系統(tǒng)進行控制,就可以在工控機上對信號使用如濾波,變換或者控制PID 等的各種算法,然后通過標(biāo)準(zhǔn)協(xié)議,將處理的控制信號傳輸?shù)娇刂茍?zhí)行單元,對測控系統(tǒng)中所關(guān)心的參數(shù)進行控制。
本文關(guān)注的就是各種傳輸協(xié)議在工控PC上的編程時代碼的適應(yīng)性,擴展性以及代碼的復(fù)用性。
2 接口類的設(shè)計
2.1 基于面向?qū)ο蟮慕涌陬惖脑O(shè)計
本文利用了面向?qū)ο蟮脑O(shè)計思想,將圖1中的各種標(biāo)準(zhǔn)工業(yè)傳輸協(xié)議進行抽象,提供統(tǒng)一的接口,這樣設(shè)計的接口類,不但可以保證數(shù)據(jù)的安全性,使用的靈活性,還能實現(xiàn)良好的可擴充性。圖2就是依照面向?qū)ο蟮脑O(shè)計思路,利用UML表示的類族的關(guān)系[7].
在圖2的UML表示類的關(guān)系中,是對圖1的系統(tǒng)的在傳輸觀點來看的一個抽象,其中,Device類是對設(shè)備的抽象,COM類是對通訊接口的抽象,這兩個類都是抽象類,在應(yīng)用軟件看來,一個具體的測量設(shè)備,只關(guān)注設(shè)備打開,傳輸數(shù)據(jù),和關(guān)閉,其他的細節(jié),不需要應(yīng)用程序知道太多。而面向?qū)ο蟮某绦虻脑O(shè)計思想,可以很好地滿足這樣的需求,基于此,Device類是一個用于后續(xù)實現(xiàn)多態(tài)機制的虛類,這個抽象類,是任何具體測量設(shè)備的父類,而派生自這個Device的任何類,都需要實現(xiàn)父類中的4 個基本操作方法Open,Close,SendCmd 和RecvData;至于是否需要其他的接口方法,用戶可以根據(jù)需要進行添加。抽象類COM和Device是一種聚合的關(guān)系,任何一個Device 都有一個用于傳輸數(shù)據(jù)的通訊口,一個抽象的通訊類,需要提供的接口方法有Open,Close,Write 和Read,其中,Open 主要用于打開通訊口,包含了對通訊口的初始化,之后,就可以進行數(shù)據(jù)的傳輸了。Close用于釋放通訊口所占用的資源,如果可能,包含了對通訊口的下電操作。而Read 和Write 就是完成數(shù)據(jù)緩沖區(qū)數(shù)據(jù)的接受和發(fā)送,其中,方法簽名中的*pBuff是指向待發(fā)送或者接受到數(shù)據(jù)的緩沖區(qū),iCount-ToWrite和iCountToRead分別是要發(fā)送或者接受的數(shù)據(jù)的字節(jié)數(shù),這兩個方法的返回值,是實際發(fā)送或者接受到的數(shù)據(jù)的字節(jié)數(shù)。如果出錯,則返回小于0 的錯誤代碼。
對于具體的通訊協(xié)議接口,比如串口、網(wǎng)口或者GPIB,甚至其他的芯片的接口[8-9]等,都是繼承自通訊類COM 的,在COM 類中,各個接口方法可以定義成虛方法,這樣,有利于在具體的派生類中對其進行重載,從而有利于動態(tài)多態(tài)機制的實現(xiàn),而具體的差異統(tǒng)統(tǒng)放到每個具體類的擴展部分。例如,對于串口,關(guān)注的是串口名稱,串口數(shù)據(jù)傳輸速率,有無校驗,數(shù)據(jù)位數(shù)以及停止位等信息,而網(wǎng)卡則關(guān)注的IP 地址和端口號,這些信息可以利用封裝機制,封裝到每個具體的接口類中,他們代表著不同類之間的差異與個性,這些差異信息完全由具體類自己控制操作。通過重載父類COM類的公有方法,就提供了通用的接口。
2.2 該構(gòu)架的使用模型
采用圖2類族設(shè)計了各個類之后,就可以使用圖3所示的流程來應(yīng)用這樣的一些類。在具體的使用過程中,如果是用測量儀器進行來承擔(dān)原始數(shù)據(jù)的采集的,那么用戶一定是明了儀器所使用的與控制機進行聯(lián)機的接口類型的,或者是串口,或者是網(wǎng)口,或者是其他的新標(biāo)準(zhǔn)的工業(yè)控制接口,在應(yīng)用編程時,就需要先創(chuàng)建一個這樣的通訊口的對象,然后把這個對象的引用傳遞給儀器類,產(chǎn)生一個儀器對象出來,由于儀器是繼承Device抽象類的,所以在產(chǎn)生出具體儀器類之后,利用面向?qū)ο蟮亩鄳B(tài)技術(shù),可以將這個儀器對象傳給一個上層應(yīng)用的Device指針,上層應(yīng)用就可以通過Device 類提供的通用接口,來對設(shè)備進行打開,讀寫等操作,在應(yīng)用層,用戶可以利用線程技術(shù),來提高系統(tǒng)的整體性能。
pid控制相關(guān)文章:pid控制原理
通信相關(guān)文章:通信原理
評論