時(shí)間:2022-06-29 00:17:13
序論:在您撰寫(xiě)接口設(shè)計(jì)論文時(shí),參考他人的優(yōu)秀作品可以開(kāi)闊視野,小編為您整理的7篇范文,希望這些建議能夠激發(fā)您的創(chuàng)作熱情,引導(dǎo)您走向新的創(chuàng)作高度。
1)燃?xì)鉅t、電阻爐上位機(jī)控制系統(tǒng)升級(jí)。對(duì)鑄鐵、鑄鋼、鍛壓三個(gè)分廠的60臺(tái)燃?xì)鉅t、64臺(tái)電阻爐共計(jì)124臺(tái)爐窯進(jìn)行改造,添加實(shí)時(shí)數(shù)據(jù)接口。此項(xiàng)內(nèi)容時(shí)間緊、爐窯設(shè)備多、調(diào)試難度大(軟件新、工控機(jī)老、調(diào)試過(guò)程設(shè)備問(wèn)題復(fù)雜)。在軟件調(diào)試過(guò)程中,對(duì)DCOM配置問(wèn)題比較突出,因?yàn)楝F(xiàn)場(chǎng)工控機(jī)操作系統(tǒng)版本有WIN2000SP1~4、WINXPSP1~3等多個(gè)版本,在同版本中,有些系統(tǒng)的默認(rèn)設(shè)置也不盡相同,所以在設(shè)置時(shí)有些工控機(jī)通過(guò)簡(jiǎn)單設(shè)置就可以,但是有些工控機(jī)卻不能通訊。經(jīng)過(guò)上網(wǎng)查閱大量的文檔、說(shuō)明,并結(jié)合現(xiàn)場(chǎng)測(cè)試結(jié)果才找到了幾個(gè)重點(diǎn)的系統(tǒng)設(shè)置服務(wù)參數(shù)項(xiàng):①配置服務(wù)器和客戶(hù)機(jī)相同的用戶(hù)名和密碼。②關(guān)閉網(wǎng)絡(luò)防火墻,設(shè)置相同的IP段,設(shè)置ICMP允許傳入回顯請(qǐng)求。③在本地安全策略中,本地帳戶(hù)的共享和安全模式設(shè)置為經(jīng)典;讓每個(gè)人權(quán)限限于匿名用戶(hù)啟用。④在組件服務(wù)中,設(shè)置默認(rèn)權(quán)限、OPCEnum、服務(wù)器程序相應(yīng)的權(quán)限。2)對(duì)鍛壓分廠的壓機(jī)設(shè)備、碾環(huán)機(jī)設(shè)備、電力能源設(shè)備和鑄鋼的鋼水測(cè)溫系統(tǒng)、軋輥冷卻測(cè)溫系統(tǒng)、噴淬機(jī)、淬火油池等設(shè)備以及鑄鐵的電阻爐群電力平衡系統(tǒng)進(jìn)行了軟件開(kāi)發(fā)或軟件升級(jí)改造,使其具備相關(guān)控制功能并具有OPC實(shí)時(shí)數(shù)據(jù)接口功能。
2OPC數(shù)據(jù)接口
(1)主要采用OPCServer嵌入控制軟件或單獨(dú)調(diào)用OPCServer程序。程序代碼(略)。(2)燃?xì)鉅t加載OPC接口數(shù)據(jù)見(jiàn)表1,電阻爐、離心機(jī)等設(shè)備的數(shù)據(jù)接口類(lèi)似。
3應(yīng)用效果
在電阻爐群控軟件中,對(duì)每臺(tái)爐窯添加多功能電量表,對(duì)每臺(tái)爐的用電情況(三相電壓、三相電流、瞬時(shí)功率、累計(jì)電量)進(jìn)行實(shí)時(shí)監(jiān)控,并對(duì)每爐次的用電量進(jìn)行統(tǒng)計(jì)。為此,電阻爐的實(shí)時(shí)上傳數(shù)據(jù)為:爐次,爐內(nèi)各控制偶溫度,爐內(nèi)各監(jiān)測(cè)偶溫度,工件上各鎧裝偶溫度,各區(qū)設(shè)定溫度,各區(qū)輸出功率,設(shè)定工藝參數(shù),工藝運(yùn)行參數(shù),設(shè)備報(bào)警信息,電量信息等。在燃?xì)鉅t群控軟件中,對(duì)沒(méi)有煤氣流量計(jì)的爐窯添加了流量計(jì),對(duì)每臺(tái)爐的煤氣用量情況(瞬時(shí)流量、累計(jì)流量)進(jìn)行實(shí)時(shí)監(jiān)控,并對(duì)每爐次的煤氣用量進(jìn)行統(tǒng)計(jì)。為此,燃?xì)鉅t的實(shí)時(shí)上傳數(shù)據(jù)為:爐次,爐內(nèi)各控制偶溫度,爐內(nèi)各監(jiān)測(cè)偶溫度,工件上各鎧裝偶溫度,各區(qū)設(shè)定溫度,各區(qū)輸出功率、設(shè)定工藝參數(shù),工藝運(yùn)行參數(shù),煤氣壓力,助燃風(fēng)壓力,爐膛壓力,設(shè)備報(bào)警信息,每支燒嘴控制大小火情況,每支燒嘴大小火信息,煤氣消耗量信息等。通過(guò)以上實(shí)時(shí)數(shù)據(jù)的統(tǒng)計(jì)、分析和傳遞,在生產(chǎn)管理和設(shè)備管理等方面可達(dá)到以下效果:(1)生產(chǎn)調(diào)度方面。生產(chǎn)管理者可以快速了解各熱處理設(shè)備的使用及運(yùn)行情況,可以?xún)?yōu)化設(shè)備的使用率和生產(chǎn)工藝流程的順暢。(2)能源調(diào)度調(diào)配方面。能源管理者可以快速了解設(shè)備的能源消耗情況,并可對(duì)能源消耗費(fèi)用進(jìn)行控制(對(duì)于電阻爐,可以實(shí)現(xiàn)錯(cuò)峰用電,實(shí)現(xiàn)能源成本的節(jié)約),對(duì)整個(gè)廠內(nèi)耗能的熱處理設(shè)備實(shí)現(xiàn)監(jiān)控與調(diào)配,防止供電負(fù)荷變化過(guò)大和煤氣消耗量不穩(wěn)。(3)設(shè)備管理方面。設(shè)備管理人員可對(duì)爐窯設(shè)備進(jìn)行實(shí)時(shí)監(jiān)控,對(duì)存在的設(shè)備隱患和問(wèn)題及時(shí)發(fā)現(xiàn)并處理,設(shè)備維修保養(yǎng)更快捷,設(shè)備運(yùn)行更順暢。(4)成品管理及質(zhì)量跟蹤方面。對(duì)出現(xiàn)問(wèn)題的工件可以查看其在鍛造加熱和熱處理工藝過(guò)程中各種工藝參數(shù)和溫度參數(shù),追溯到存在問(wèn)題的環(huán)節(jié)。(5)安全管理方面。對(duì)于容易出現(xiàn)安全問(wèn)題的設(shè)備進(jìn)行實(shí)時(shí)監(jiān)控,及時(shí)發(fā)現(xiàn)安全隱患并消除,防止安全事故的發(fā)生。對(duì)于發(fā)生安全事故的設(shè)備,通過(guò)查看其報(bào)警記錄及其它相關(guān)參數(shù),方便查找事故原因,并進(jìn)一步針對(duì)事故原因進(jìn)行分析解決。(6)成本管理方面。通過(guò)對(duì)爐窯設(shè)備的實(shí)時(shí)數(shù)據(jù)記錄,可計(jì)算單支產(chǎn)品在加熱鍛造和熱處理工藝流程中的能源消耗,實(shí)現(xiàn)單支產(chǎn)品的成本統(tǒng)計(jì)分析。(7)通過(guò)個(gè)人辦公室全過(guò)程信息化聯(lián)網(wǎng)計(jì)算機(jī)可以查看任何一個(gè)產(chǎn)品當(dāng)前所在的生產(chǎn)流程位置、狀態(tài)、已消耗費(fèi)用等,另外設(shè)備總體使用率,各產(chǎn)品生產(chǎn)周期和生產(chǎn)成本等也一目了然。從而可根據(jù)生產(chǎn)數(shù)據(jù)信息化分析處理系統(tǒng)了解是否滿(mǎn)足市場(chǎng)及客戶(hù)需求,企業(yè)內(nèi)部的運(yùn)行效率如何,優(yōu)化內(nèi)部管理,企業(yè)系統(tǒng)如何有效的適應(yīng)外部的變化。為企業(yè)發(fā)展管理決策提供第一手參考資料和依據(jù)。
4結(jié)語(yǔ)
1.1接口描述當(dāng)傳感器網(wǎng)絡(luò)的Zigbee網(wǎng)關(guān)節(jié)點(diǎn)不斷地將網(wǎng)絡(luò)節(jié)點(diǎn)中監(jiān)測(cè)到的溫度、煙霧等信息發(fā)送給上位機(jī)時(shí),上位機(jī)的通信模塊必須及時(shí)響應(yīng)接收數(shù)據(jù)。數(shù)據(jù)監(jiān)測(cè)上位機(jī)通信接口采用VB6.0中MSComm控件,利用串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通信功能,具體包括2種處理通訊方式,一種是事件驅(qū)動(dòng)通訊,利用OnComm捕獲并處理通訊時(shí)間;另一種是通過(guò)檢查CommEvent的值,來(lái)查詢(xún)事件和錯(cuò)誤[5]。設(shè)計(jì)中采用第1種方式,在用戶(hù)界面設(shè)置好相應(yīng)的控制參數(shù),如波特率為38400bps、無(wú)校驗(yàn)位、8數(shù)據(jù)位、1位停止位等。當(dāng)傳感器網(wǎng)絡(luò)節(jié)點(diǎn)監(jiān)測(cè)的的溫度、煙霧等信息發(fā)送給上位機(jī)時(shí),將觸發(fā)監(jiān)測(cè)程序中MSComm控件的OnComm事件,進(jìn)而改變ComEvent的值,程序根據(jù)ComEvent的值執(zhí)行相應(yīng)的操作,如解析數(shù)據(jù)、發(fā)送數(shù)據(jù)、錯(cuò)誤分析等,然后更新內(nèi)存節(jié)點(diǎn)樹(shù)中當(dāng)前節(jié)點(diǎn)的實(shí)時(shí)數(shù)據(jù)、采集信息(如溫度、煙霧等)存入數(shù)據(jù)庫(kù)。
1.2實(shí)現(xiàn)方法MSComm控件可以設(shè)置以二進(jìn)制或者以文本方式接收,若設(shè)置為二進(jìn)制接受,控件會(huì)自動(dòng)將其轉(zhuǎn)變成十進(jìn)制。在該系統(tǒng)中,數(shù)據(jù)幀的數(shù)據(jù)是十六進(jìn)制的,設(shè)置以二進(jìn)制方式進(jìn)行接收,從接收緩存中獲取到的是十進(jìn)制的數(shù)據(jù)。
2數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)解析
2.1內(nèi)存中節(jié)點(diǎn)多叉樹(shù)的建立圖2節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)圖通信監(jiān)測(cè)模塊接收數(shù)據(jù)后,為了便于以圖形方式實(shí)時(shí)顯示網(wǎng)絡(luò)拓?fù)浜凸?jié)點(diǎn)監(jiān)測(cè)信息,以及提高查詢(xún)數(shù)據(jù)的運(yùn)行速度,需要在內(nèi)存中構(gòu)建一個(gè)動(dòng)態(tài)多叉樹(shù),用于存儲(chǔ)節(jié)點(diǎn)最新的數(shù)據(jù)信息。節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)圖如圖2所示。在內(nèi)存中建立一個(gè)關(guān)于節(jié)點(diǎn)的動(dòng)態(tài)多叉樹(shù),節(jié)點(diǎn)的唯一標(biāo)識(shí)是它的自身ID,根據(jù)數(shù)據(jù)幀中包含的父子關(guān)系可構(gòu)建出一棵多叉樹(shù)。首先定義一個(gè)名為treeNode的類(lèi),它的每一個(gè)實(shí)例都代表著一個(gè)節(jié)點(diǎn),里面包含節(jié)點(diǎn)的屬性(例如ID、溫度、煙霧等)和方法(例如獲取類(lèi)中節(jié)點(diǎn)數(shù)據(jù)的getData方法)。為了將節(jié)點(diǎn)間的父子關(guān)系表現(xiàn)出來(lái),可在類(lèi)treeNode中定義一個(gè)類(lèi)型為treeNode的動(dòng)態(tài)數(shù)組NodeChild(),用于存放子節(jié)點(diǎn)。如某節(jié)點(diǎn)ID為0000,子節(jié)點(diǎn)ID為0001,將子節(jié)點(diǎn)0001存放在節(jié)點(diǎn)0000的NodeChild()數(shù)組中,即可完成節(jié)點(diǎn)間的連接。當(dāng)需要找某個(gè)節(jié)點(diǎn)時(shí),從根節(jié)點(diǎn)開(kāi)始查找,若根節(jié)點(diǎn)的孩子沒(méi)有要找的節(jié)點(diǎn),則查找根節(jié)點(diǎn)的孩子的孩子,直到遍歷完所有節(jié)點(diǎn)。當(dāng)某數(shù)據(jù)幀發(fā)送到上位機(jī)時(shí),解析出來(lái)的原始數(shù)據(jù)分別放在相應(yīng)的變量,假設(shè)原始的溫度數(shù)據(jù)是3F4A,數(shù)據(jù)結(jié)構(gòu)中溫度變量名為T(mén)emperature,類(lèi)型為String,則直接將3F4A轉(zhuǎn)換為String類(lèi)型存在Temperature中。按上述方法構(gòu)建的動(dòng)態(tài)多叉樹(shù)能夠適應(yīng)網(wǎng)絡(luò)拓?fù)鋭?dòng)態(tài)變化的應(yīng)用場(chǎng)景,相比于定長(zhǎng)的數(shù)組,其更為節(jié)省內(nèi)存,不足之處是查詢(xún)算法較復(fù)雜。
2.2數(shù)據(jù)解析通信監(jiān)測(cè)模塊接收到Zigbee網(wǎng)關(guān)節(jié)點(diǎn)發(fā)送來(lái)的一組數(shù)據(jù)(數(shù)據(jù)幀)后,需要對(duì)收到的數(shù)據(jù)進(jìn)行協(xié)議解析,然后根據(jù)解析數(shù)據(jù)建立當(dāng)前動(dòng)態(tài)多叉樹(shù)。由于通信中難以避免數(shù)據(jù)幀出錯(cuò)、截?cái)?、丟失等情況,故數(shù)據(jù)解析部分根據(jù)數(shù)據(jù)幀的格式制定了一套協(xié)議,丟棄異常數(shù)據(jù)幀。數(shù)據(jù)幀的部分格式如下:FFXXXXXXXXFF01XXXX02XXXX2FF之間,開(kāi)頭2個(gè)字節(jié)為節(jié)點(diǎn)ID,緊跟的2個(gè)字節(jié)節(jié)點(diǎn)的父ID01代表溫度類(lèi)型,后面2個(gè)字節(jié)是溫度數(shù)值02代表煙霧類(lèi)型,后面2個(gè)字節(jié)是煙霧值,依次類(lèi)推…。2個(gè)FF后的字節(jié)都是數(shù)據(jù),其格式如下:數(shù)據(jù)類(lèi)型(01,溫度類(lèi)型)+2個(gè)字節(jié)的數(shù)據(jù)(XXXX)。具體操作流程如圖3所示。首先檢驗(yàn)從串口進(jìn)來(lái)的數(shù)據(jù)幀開(kāi)頭一個(gè)字節(jié)是否FF,若是,則開(kāi)始解析。直到下一個(gè)FF,則節(jié)點(diǎn)ID部分解析結(jié)束,后面都是數(shù)據(jù)。繼續(xù)讀取下一個(gè)字節(jié),若為01,則將后面緊跟的兩個(gè)字節(jié)存進(jìn)相應(yīng)的溫度變量,讀取下一個(gè)字符;若該字節(jié)所表示的數(shù)據(jù)類(lèi)型未定義則跳過(guò)該字節(jié)及后面緊跟的兩個(gè)字節(jié),繼續(xù)讀取下一個(gè)字符。該過(guò)程一直執(zhí)行直到解析完整個(gè)數(shù)據(jù)幀。由于數(shù)據(jù)幀是不定長(zhǎng)的,而且沒(méi)有結(jié)束字符,所以每收到一個(gè)數(shù)據(jù)幀程序便立即從緩存中讀取并解析,以避免多個(gè)幀合并為一個(gè)數(shù)據(jù)幀導(dǎo)致解析錯(cuò)誤。當(dāng)出現(xiàn)多個(gè)數(shù)據(jù)幀并合情況時(shí),則丟棄后繼的幀。在幀解析完畢后,可以對(duì)解析出來(lái)的監(jiān)測(cè)數(shù)據(jù)信息進(jìn)行處理,將數(shù)據(jù)信息一份存進(jìn)內(nèi)存中節(jié)點(diǎn)多叉樹(shù),一份存進(jìn)數(shù)據(jù)庫(kù),實(shí)現(xiàn)實(shí)時(shí)更新數(shù)據(jù)和記錄當(dāng)前信息。以下是有關(guān)串口通信事件響應(yīng)及數(shù)據(jù)解析的部分代碼:
3數(shù)據(jù)庫(kù)的構(gòu)建與連接
3.1數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)關(guān)系圖如圖4所示。由于每個(gè)節(jié)點(diǎn)都有大量歷史數(shù)據(jù),所以每一個(gè)節(jié)點(diǎn)都創(chuàng)建一個(gè)表;USERS表用于保存監(jiān)測(cè)系統(tǒng)的用戶(hù)信息;NodeTran用于保存數(shù)據(jù)幀轉(zhuǎn)發(fā)路徑;Nodelist用于保存節(jié)點(diǎn)列表;Limit用于保存監(jiān)測(cè)系統(tǒng)的閾值管理設(shè)置值;Node_XXXX為節(jié)點(diǎn)XXXX的歷史數(shù)據(jù)表。除了用戶(hù)表,所有數(shù)據(jù)都采用varchar類(lèi)型。
3.2存儲(chǔ)過(guò)程的創(chuàng)建為了提高通信監(jiān)測(cè)模塊與數(shù)據(jù)庫(kù)之間通信的效率,將一些常用且較為復(fù)雜的SQL語(yǔ)句存放在數(shù)據(jù)庫(kù)中,使用時(shí)只需要調(diào)用存儲(chǔ)過(guò)程,輸入必要的參數(shù)即可完成相應(yīng)的SQL語(yǔ)句操作,這樣可以大大減少程序與數(shù)據(jù)庫(kù)之間的通信量。
3.3使用ADO將VB6.0與SQL2005連接ADO是為Microsoft最新和最強(qiáng)大的數(shù)據(jù)訪問(wèn)范例OLEDB而設(shè)計(jì)的,擁有一個(gè)易于使用的應(yīng)用程序?qū)咏涌凇Mㄟ^(guò)使用ADO2.0對(duì)象模型中的Recordset和Connection對(duì)象實(shí)現(xiàn)兩者連接和數(shù)據(jù)的存取。Connection對(duì)象包含關(guān)于某個(gè)數(shù)據(jù)提供程序的信息,如數(shù)據(jù)庫(kù)用戶(hù)、密碼、數(shù)據(jù)庫(kù)名等;Recordset對(duì)象包含某個(gè)查詢(xún)返回的記錄,可以創(chuàng)建一個(gè)Connection對(duì)象,在同一個(gè)連接上打開(kāi)多個(gè)Recordset對(duì)象[8]。操作流程圖如圖5所示。
4結(jié)語(yǔ)
本設(shè)計(jì)采用了Xilinx公司提供的ISE為開(kāi)發(fā)平臺(tái)。ISE軟件是Xilinx公司推出的FPGA/CPLD集成開(kāi)發(fā)環(huán)境,不僅包含了邏輯設(shè)計(jì)所需的一切,還具有大量的簡(jiǎn)便易用的內(nèi)置式工具和向?qū)?,使得I/O分配、功耗分析、時(shí)序驅(qū)動(dòng)設(shè)計(jì)收斂、HDL仿真等關(guān)鍵步驟變得容易而直觀。因此要掌握XilinxFPGA開(kāi)發(fā),就必須掌握ISE。ISE界面友好、操作簡(jiǎn)單、集成度高。利用ISE進(jìn)行FPGA邏輯設(shè)計(jì)的主要流程包括設(shè)計(jì)輸入、功能仿真、設(shè)計(jì)綜合、設(shè)計(jì)實(shí)現(xiàn)和配置下載,簡(jiǎn)易設(shè)計(jì)流程圖如圖1所示。
2ISA總線邏輯接口設(shè)計(jì)
ISA總線:(IndustryStandardArchitecture:工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu))是IBM公司為PC/AT電腦而制定的總線標(biāo)準(zhǔn),也稱(chēng)為AT標(biāo)準(zhǔn),為8/16位體系結(jié)構(gòu),最高工作頻率為8MHz,數(shù)據(jù)傳輸率大約是16MB/S,地址線24條,可尋訪16M字節(jié)地址單元。由于本文使ISA總線工作在8位I/O傳輸模式,使用了ISA總線信號(hào)中的時(shí)鐘線(ISA_CLK)、地址線(ISA_ADDR):A0~A9、數(shù)據(jù)線(ISA_DATA):D0~D7、讀信號(hào)線(ISA_IOR)、寫(xiě)信號(hào)線(ISA_IOW)、地址鎖存使能(ISA_ALE)、地址選通信號(hào)(ISA_AEN)等。本設(shè)計(jì)采用了與C語(yǔ)言較為相似的VERILOGHDL硬件描述語(yǔ)言對(duì)ISA總線邏輯接口進(jìn)行了描述。
本文要實(shí)現(xiàn)的是ISA接口通過(guò)FPGA訪問(wèn)串口芯片16C554,16C554是內(nèi)部帶有16字節(jié)收發(fā)FIFO的通用異步收發(fā)器,具有獨(dú)立的收發(fā)控制電路。4路標(biāo)準(zhǔn)的MODEM接口,通過(guò)軟件可分別設(shè)置允許每一路中斷。波特率、數(shù)據(jù)幀格式等也都可由軟件編程設(shè)置。具體硬件結(jié)構(gòu)如圖。由圖2可知上位機(jī)通過(guò)ISA總線對(duì)串口芯片16C554串口芯片的訪問(wèn)需要FPGA作為橋接媒介,因此串口芯片的控制信號(hào)均由FPGA給出,其邏輯控制信號(hào)的VERILOG描述如下。當(dāng)上位機(jī)對(duì)串口芯片進(jìn)行讀寫(xiě)時(shí),首先需要通過(guò)FPGA將ISA地址信號(hào)譯碼為芯片的片選信號(hào),設(shè)置串口芯片基地址為0x300,由于9位地址線的低三位為串口芯片的內(nèi)部地址,因此芯片的片選信號(hào)由地址總線的高七位決定。
3結(jié)束語(yǔ)
為了驗(yàn)證基于FPGA的ISA邏輯接口的正確性,將上述邏輯接口利用VERILOG硬件描述語(yǔ)言在賽靈思提供的集成開(kāi)發(fā)環(huán)境ISE中實(shí)現(xiàn)。
CY7C68013A固件程序是指在EZ⁃USB芯片內(nèi)部RAM中運(yùn)行的程序代碼,固件程序是USB接口設(shè)計(jì)的核心部分。固件代碼的作用就是控制芯片執(zhí)行指定的設(shè)備功能,即處理上位機(jī)下傳的各種USB設(shè)備請(qǐng)求,控制芯片與電路進(jìn)行數(shù)據(jù)傳輸。EZ⁃USB芯片內(nèi)部集成增強(qiáng)型8051內(nèi)核,USB芯片的固件程序?qū)嶋H上就是單片機(jī)程序文件,可以采用匯編語(yǔ)言或C語(yǔ)言編寫(xiě)。CYPRESS公司提供的EZ⁃USBFX2固件程序開(kāi)發(fā)包中提供了固件程序的基本框架,這為用戶(hù)開(kāi)發(fā)基于EZ⁃USBFX2芯片的USB設(shè)備提供了很大的方便。
1.1固件框架固件程序框架主要包括設(shè)備初始化,處理標(biāo)準(zhǔn)USB設(shè)備請(qǐng)求和USB掛起時(shí)的電源管理等。程序框架使用KeilC51編寫(xiě),它是現(xiàn)成的直接可以編譯為HEX文件的8051程序代碼,使用者只需要改寫(xiě)USB描述表,在一些固定函數(shù)下添加功能代碼,主要是EZ⁃USB芯片的初始化配置和實(shí)現(xiàn)USB外設(shè)功能的代碼。固件框架的流程圖如圖2所示[4]。復(fù)位后固件先初始化一些全局變量,然后調(diào)用初始化函數(shù)TD_Init(),該函數(shù)初始化USB設(shè)備到?jīng)]有配置的狀態(tài),并打開(kāi)中斷。循環(huán)1s進(jìn)行一次設(shè)備重枚舉,直到端點(diǎn)0收到一SETUP包,然后進(jìn)入while循環(huán)語(yǔ)句,開(kāi)始TD_Poll任務(wù)處理函數(shù)。依次執(zhí)行下列過(guò)程:(1)TD_Poll()用戶(hù)任務(wù)調(diào)度函數(shù);(2)如果發(fā)現(xiàn)USB設(shè)備請(qǐng)求,則分析該請(qǐng)求并執(zhí)行;(3)如果收到USB掛起信號(hào),則調(diào)用TD_Suspend()掛起函數(shù),內(nèi)核掛起,直到出現(xiàn)USB遠(yuǎn)程喚醒信號(hào),調(diào)用TD_Resume(),內(nèi)核喚醒,從新進(jìn)入while循環(huán)。固件框架包含的文件如表1所示。
1.2固件代碼編寫(xiě)USB固件程序主要的功能有2個(gè):一是PC機(jī)的Windows系統(tǒng)能夠檢測(cè)與識(shí)別相應(yīng)設(shè)備;二是數(shù)據(jù)的上傳與下傳。Cypress公司為EZ⁃USBFX2系列芯片提供的固件程序框架極大的簡(jiǎn)化了固件開(kāi)發(fā)。一般的固件開(kāi)發(fā)只需要修改用戶(hù)調(diào)度函數(shù)文件Periph.c與USB描述符列表文件Dscr.a51,這兩個(gè)文件在KeilC51編程器中都可打開(kāi)。Periph.c文件中只需要修改TD_Init()與TD_Poll()函數(shù)。在本設(shè)計(jì)中為了能進(jìn)行高速的數(shù)據(jù)傳輸,EZ⁃USB芯片采用SlaveFIFO接口方式。此方式下,USB內(nèi)核不參與數(shù)據(jù)的傳輸,所以TD_Poll()函數(shù)不用寫(xiě)代碼,設(shè)置成空函數(shù)就可以了。這樣USB固件程序的開(kāi)發(fā)主要任務(wù)就是改寫(xiě)TD_Init()函數(shù)與USB描述符列表文件Dscr.a51。在本設(shè)計(jì)中配置端點(diǎn)6傳輸方向?yàn)镮N,傳輸方式為塊傳輸,緩沖大小設(shè)置為1024B,深度為2級(jí),作用是上傳采集的數(shù)據(jù)。配置端點(diǎn)2傳輸方向?yàn)镺UT,傳輸方式為塊傳輸,緩沖大小設(shè)置為1024B,深度為2級(jí),作用是下傳FPGA的命令配置參數(shù)。固件程序的編譯使用KeilμVision2集成編譯環(huán)境,集成編譯環(huán)境中包括有C51編譯器,A51匯編器等工具與調(diào)試器。代碼中還需包含頭文件FX2.h與Fx2regs.h,庫(kù)文件Ezusb.lib。對(duì)修改后的代碼進(jìn)行編譯與鏈接,最后生成HEX文件。HEX文件可直接下載到EZ⁃USB中運(yùn)行。HEX文件也可根據(jù)需要通過(guò)CYPRESS公司提供的EZ⁃USBFX2固件開(kāi)發(fā)包中的Hex2bit.exe應(yīng)用工具生成IIC文件,IIC文件用于燒寫(xiě)到EEPROM中。
2固件程序的裝載
CY7C68013A芯片集成增強(qiáng)型8051內(nèi)核,內(nèi)部無(wú)ROM等永久性存儲(chǔ)器,每次上電后需要從新將固件程序載入到片內(nèi)RAM中。EZ⁃USBFX2固件程序有3種加載方式:(1)如果沒(méi)有片外存儲(chǔ)器連接到EZ⁃USBFX2上,或者所讀取的首字節(jié)不是0xC0或0xC2,則芯片枚舉為缺省的USB設(shè)備,其中描述符,VID,PID由芯片內(nèi)部硬件邏輯提供。然后固件程序與描述符表由主機(jī)下載,EZ⁃USBFX2開(kāi)始執(zhí)行下載的代碼,首先模擬物理電路的斷開(kāi)與連接,此時(shí)EZ⁃USBFX2將再次進(jìn)行設(shè)備枚舉,這稱(chēng)為重枚舉,重枚舉將根據(jù)下載的代碼對(duì)設(shè)備進(jìn)行從新定義。(2)如果USB檢測(cè)到一個(gè)E2PROM,其首字節(jié)為0xC0時(shí),芯片也枚舉為缺省的USB設(shè)備,但VID與PID值將從此EEPROM中讀取,USB描述符由芯片內(nèi)部提供。這種模式稱(chēng)為“C0”加載。主機(jī)根據(jù)讀得的VID與PID值,由固件下載驅(qū)動(dòng)程序?qū)⒅付ǖ墓碳绦蛳螺d到EZ⁃USBFX2,然后再重枚舉。(3)如果USB檢測(cè)到一個(gè)E2PROM,其首字節(jié)為0xC2時(shí),固件程序?qū)拇薊2PROM中自動(dòng)下載到FX2芯片上,CPU通過(guò)復(fù)位后運(yùn)行下載的程序代碼。這種模式稱(chēng)為“C2”加載。其中第一種方式主要是開(kāi)發(fā)階段使用,它需要主機(jī)上有CYPRESS公司提供的開(kāi)發(fā)軟件USBCONTROLPANEL,每次手動(dòng)將程序下載到USB上。第二種方法需要開(kāi)發(fā)者另外再編寫(xiě)一個(gè)固件下載驅(qū)動(dòng)程序,而且也需要在電路中外加一小容量的E2PROM。第3種方法是將固件程序燒寫(xiě)到E2PROM中,每次上電自動(dòng)加載,這種方式簡(jiǎn)單直接。本設(shè)計(jì)采用第3種方式。
3驅(qū)動(dòng)程序及INF文件的編寫(xiě)
設(shè)備驅(qū)動(dòng)程序是應(yīng)用程序和硬件之間的連接,應(yīng)用程序通過(guò)驅(qū)動(dòng)程序與設(shè)備通信,數(shù)據(jù)交換,從而獲取數(shù)據(jù)和對(duì)設(shè)備進(jìn)行控制。CYPRESS公司為EZ⁃USBFX2提供一通用的驅(qū)動(dòng)程序CYUSB.SYS,其功能完備,使用者不需要修改直接使用[5]。USB設(shè)備都具有一個(gè)VID和PID,此處的VID和PID與在固件程序轉(zhuǎn)載階段的值不同,這兩個(gè)值是用來(lái)安裝設(shè)備驅(qū)動(dòng)程序的,VID和PID放到設(shè)備描述符表中,通過(guò)設(shè)備請(qǐng)求讀入到Windows系統(tǒng)中。同時(shí),Win⁃dows操作系統(tǒng)通過(guò)INF文件將一VID和PID綁定到某一設(shè)備驅(qū)動(dòng)程序。當(dāng)設(shè)備連接到主機(jī)上時(shí),讀得設(shè)備的VID和PID,通過(guò)存儲(chǔ)在INF文件中的信息找到設(shè)備驅(qū)動(dòng)。此后,Windows會(huì)將設(shè)備的VID和PID值保存到注冊(cè)表,設(shè)備再次連接時(shí),系統(tǒng)就會(huì)在注冊(cè)表中查找設(shè)備驅(qū)動(dòng)程序信息。具體操作方法是將驅(qū)動(dòng)安裝的模板INF文件的MODEL節(jié)中的VID與PID值修改成與USB設(shè)備的VID和PID值相同。相應(yīng)STRING節(jié)中也修改。
4與應(yīng)用程序的接口
圖3是驅(qū)動(dòng)程序流程圖,從圖中可以看到功能驅(qū)動(dòng)程序的位置。用戶(hù)通過(guò)一種規(guī)范的方式調(diào)用WIN32API函數(shù)來(lái)訪問(wèn)硬件,不用考慮如何控制硬件的具體細(xì)節(jié)。USB開(kāi)發(fā)過(guò)程主要應(yīng)知道應(yīng)用程序調(diào)用驅(qū)動(dòng)程序的接口函數(shù),如下介紹,應(yīng)用程序直接調(diào)用這些函數(shù)來(lái)實(shí)現(xiàn)與硬件設(shè)備的數(shù)據(jù)交換。CREATEFILE通過(guò)設(shè)備名打開(kāi)設(shè)備,獲得設(shè)備句柄,有設(shè)備句柄就可以讀寫(xiě)設(shè)備。通過(guò)下面語(yǔ)句獲得設(shè)備句柄。DEVICEIOCONTROL讀寫(xiě)控制設(shè)備,應(yīng)用程序調(diào)用此函數(shù)并加以不同的I/O控制碼參數(shù),完成應(yīng)用程序與驅(qū)動(dòng)程序?qū)⒌臄?shù)據(jù)交換。主要用到的I/O控制碼有:IOCTL_EZUSB_BULK_READ該控制碼從指定的批量管道中讀取數(shù)據(jù)。讀操作阻塞調(diào)用進(jìn)程,直到數(shù)據(jù)傳送完成。IOCTL_EZUSB_BULK_WRITE該控制碼向指定的批量管道中寫(xiě)入數(shù)據(jù)。寫(xiě)操作阻塞調(diào)用進(jìn)程,直到數(shù)據(jù)傳送完成。CLOSEHANDLE通過(guò)句柄關(guān)閉設(shè)備,設(shè)備請(qǐng)求完成后通過(guò)此函數(shù)關(guān)閉。
5結(jié)語(yǔ)
從結(jié)構(gòu)上,檢測(cè)接口可以分為DAC單元、濾波放大單元、二線接口單元、混合單元、信號(hào)調(diào)理單元、ADC單元和FPGA系統(tǒng)單元。
1.1DAC與濾波放大單元DAC與濾波放大單元用于將數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào),并完成對(duì)信號(hào)的調(diào)理、幅度調(diào)節(jié)與功率放大功能。其硬件電路如圖2所示。該單元由3部分電路組成,分別是DAC芯片電路、無(wú)源濾波電路和差分放大電路。DAC芯片為ADI公司生產(chǎn)的高性能、低功耗CMOS數(shù)模轉(zhuǎn)換芯片AD9762,AD9762為12位分辨率,支持最高125MS/s的更新速率。該芯片使用5V、3.3V可選單電源供電,最高功耗175mW,2mA~20mA差分電流輸出,負(fù)載RLOAD為100Ω時(shí)輸出電壓范圍為0.2V~2V[2]。FSADJ引腳連接外接電阻RSET,用于滿(mǎn)量程電流輸出調(diào)節(jié)。REFIO引腳用于基準(zhǔn)電壓VRFE輸入/輸出,選擇內(nèi)部1.2V基準(zhǔn)電源時(shí)通過(guò)一個(gè)0.1μF電容與模擬地連接。其差分輸出電壓VDOUT與輸入的12位數(shù)字代碼(DCODE)的關(guān)系式為。無(wú)源濾波電路由電感與電容組成截止頻率為20MHz的7階巴特沃斯低通濾波器,用于信號(hào)整形和消除毛刺干擾。差分放大電路以全差分放大器AD8476為核心組成,用于將通過(guò)無(wú)源濾波電路的模擬差分信號(hào)進(jìn)行增益調(diào)節(jié)和功率放大。AD8476是一款功耗極低的全差分精密放大器,其帶寬為6MHz,使用±5V電源供電時(shí)的輸出電壓范圍為-4.845V~4.82V[3]。檢測(cè)激勵(lì)信號(hào)的峰峰值為4.3V和6.2V,而DAC的輸出峰峰值電壓為2V,因而差分放大電路的增益應(yīng)當(dāng)大于3.1,這樣才能使得激勵(lì)生成通道的輸出信號(hào)幅值符合檢測(cè)需求??紤]到DAC的轉(zhuǎn)換效率和可能存在的誤差,可設(shè)計(jì)差分放大電路具有兩個(gè)略大于滿(mǎn)幅度輸出的增益值。圖2中使用外部擴(kuò)展電阻R1~R6組成反饋電阻網(wǎng)絡(luò),其中R1=R2=10kΩ為輸入電阻,R3=R6=24kΩ、R4=R5=33kΩ為兩組反饋電阻。該電路的增益值分別為A1=R3/R1=2.4,A2=R4/R1=3.3。為了提高檢測(cè)接口的自動(dòng)化程度,使用1個(gè)2路2:1電子開(kāi)關(guān)ADG736用于兩組反饋電阻的切換,通過(guò)改變其控制端IN1和IN2的電平邏輯,完成開(kāi)關(guān)動(dòng)作。ADG736使用5V供電時(shí),導(dǎo)通電阻RON為2.5Ω,帶寬大于200MHz,通過(guò)峰值電壓為5V。
1.2二線接口與混合電路單元二線接口與混合電路單元用于為信號(hào)激勵(lì)與數(shù)據(jù)采集提供對(duì)外二線接口和實(shí)現(xiàn)收發(fā)信號(hào)的雙工傳輸。其硬件電路如圖3所示。二線接口電路由電壓比為1的變壓器以及電阻RS1、RS2和電容C9、C10組成,用于提供檢測(cè)電路對(duì)外的二線接口,實(shí)現(xiàn)接收與發(fā)送信號(hào)的傳輸,同時(shí)可以隔離外部直流信號(hào)。RS1、RS2用于與線路負(fù)載阻抗匹配并隔離遠(yuǎn)端反射和提供線路的能量交換,電容C9、C10用于配合組成激勵(lì)發(fā)送端擴(kuò)展濾波電路。混合單元的功能是一階模擬回波抵消,用于抵消本地發(fā)送信號(hào)。圖2中R7~R10為輸入電阻,同時(shí)與C3~C8組成一階低通濾波器。兩個(gè)儀表放大器AD8429用于將二線平衡信號(hào)轉(zhuǎn)換為單端信號(hào)。AD8429為低噪聲、高精度儀表放大器,其增益為1時(shí)增益精度為0.02%、CMRR為80dB、帶寬為15MHz,使用±12V電源供電時(shí)其輸出電壓范圍為-10.1V~10.7V,使用單個(gè)增益控制電阻RG能夠控制其增益范圍為1~1000,其增益控制關(guān)系為G=1+6kΩ/RG[4]。LT6600-10將一個(gè)全差分放大器與一個(gè)近似切比雪夫(Chebyshev)頻率響應(yīng)的四階10MHz低通濾波器集成在一起。芯片為低噪聲全差分輸入/輸出放大器,內(nèi)部集成兩個(gè)運(yùn)算放大器、電阻電容網(wǎng)絡(luò),組成1倍增益放大電路和一個(gè)10MHz低通濾波器,使用±5V電源供電時(shí)其輸出電壓范圍可達(dá)到±5V。若線路電阻RS與負(fù)載電阻RL完全匹配,則第二個(gè)AD8429的增益值為2時(shí),混合電路的輸出U′3=U3??紤]到阻抗失配現(xiàn)象的普遍存在,因此選擇電位器作為第二個(gè)AD8429的增益控制電阻,在線路阻抗失配的條件下,通過(guò)調(diào)節(jié)增益控制電阻來(lái)實(shí)現(xiàn)混合單元消除近端信號(hào)的目的。根據(jù)前文所述,可以得到混合電路輸出信號(hào)U′3與二線輸入信號(hào)U3比值跟增益控制電阻RG之間的關(guān)系。因此只要知道RG的值,就能夠通過(guò)式(5)準(zhǔn)確地對(duì)通過(guò)混合單元造成的輸入信號(hào)幅值的線性誤差進(jìn)行修正。為了提高檢測(cè)接口的自動(dòng)化程度和實(shí)現(xiàn)對(duì)RG值的實(shí)時(shí)感知,選擇數(shù)字電位計(jì)AD5272作為第二個(gè)AD8429的增益控制電阻。AD5272為1024位分辨率、1%電阻容差誤差、I2C接口和50-TP存儲(chǔ)器數(shù)字變阻器,最大阻值為20kΩ,可使用5V電源供電[6],其阻值調(diào)節(jié)步長(zhǎng)為1.95Ω。
1.3信號(hào)調(diào)理與ADC單元信號(hào)調(diào)理與ADC單元用于將混合電路輸出的模擬差分信號(hào)轉(zhuǎn)換為輸入信號(hào)并輸入到FPGA,該部分為數(shù)據(jù)采集的核心單元,其硬件電路如圖4所示。由于被測(cè)信號(hào)的最高頻率不超過(guò)2.048MHz,根據(jù)奈奎斯特采樣定理,使用4.096MHz采樣速率進(jìn)行采樣就能得到信號(hào)完整的信息,但是在工程中,通常使用5~10倍速率進(jìn)行采樣。因此ADC選擇12位、10MS/s采樣速率模/數(shù)轉(zhuǎn)換器AD9220,其為+5V單電源供電,70dB信噪比,86dB無(wú)雜散動(dòng)態(tài)范圍,內(nèi)置片內(nèi)高性能、低噪聲采樣保持放大器和可編程基準(zhǔn)電壓源,并具有滿(mǎn)量程輸出指示功能[7]。使用1V基準(zhǔn)電壓時(shí)其輸入范圍為2V(峰-峰值)。信號(hào)調(diào)理電路應(yīng)當(dāng)具有抗混疊濾波和信號(hào)幅度調(diào)節(jié)的功能。該電路選擇全差分放大器AD8476組成,考慮到檢測(cè)時(shí)輸入信號(hào)的幅值大于ADC的輸入范圍,因而選擇其輸入電阻為10kΩ,選擇數(shù)字電位器AD5272為反饋電阻RF,則其增益值G4=RF/10kΩ,電路的增益值為0.0002~2可調(diào)。放大器輸出經(jīng)過(guò)2個(gè)100Ω電阻和2個(gè)電容組成的低通濾波器后送至ADC。同時(shí),AD8476以ADC的基準(zhǔn)電壓VREF為共模參考電壓。
1.4FPGA單元FPGA單元以Xilinx公司的FPGA芯片XC3S400為核心電路組成,其程序存儲(chǔ)芯片為XCF02S,使用40MHz有源晶振,5V電源供電,使用穩(wěn)壓芯片提供電路所需的3.3V、2.5V和1.2V電源。USB接口作為微處理器常用的外部總線接口,目前已經(jīng)得到了廣泛的應(yīng)用[8],因此考慮選用USB2.0接口作為FPGA與上位機(jī)之間的數(shù)據(jù)接口。同時(shí)采用JTAG接口用于FPGA和其配置芯片的程序燒寫(xiě)。關(guān)于FPGA電路的設(shè)計(jì)、開(kāi)發(fā)技術(shù)已經(jīng)較為成熟,本設(shè)計(jì)相比與其他通用FPGA電路的設(shè)計(jì)并無(wú)獨(dú)特之處,因此不再對(duì)FPGA單元進(jìn)行詳細(xì)描述。
2FPGA程序設(shè)計(jì)
在檢測(cè)接口電路的設(shè)計(jì)中,F(xiàn)PGA是檢測(cè)接口電路的信息傳輸與控制單元的核心,其可編程配置能力和能夠高速、并行處理數(shù)字信號(hào)的能力是檢測(cè)接口的靈活性和升級(jí)性的關(guān)鍵。其內(nèi)部程序使用Xilinx公司的FPGA開(kāi)發(fā)環(huán)境ISE進(jìn)行設(shè)計(jì)并完成燒寫(xiě)。程序設(shè)計(jì)使用模塊化設(shè)計(jì)思想,其結(jié)構(gòu)示意圖如圖5所示,可以分USB傳輸、管理控制、DAC傳輸、輸出增益控制、混合單元控制、信號(hào)調(diào)理控制、ADC傳輸控制和增益補(bǔ)償8個(gè)模塊。下面就各個(gè)模塊的功能分別進(jìn)行介紹。(1)USB傳輸模塊,用于通過(guò)FPGA單元上的USB接口電路實(shí)現(xiàn)FPGA芯片與上位機(jī)的信息傳輸,具有USB電路的配置功能,并實(shí)現(xiàn)標(biāo)準(zhǔn)USB信號(hào)封裝、解封裝功能,將接收到的上位機(jī)信號(hào)解封裝為透明數(shù)據(jù)傳送到管理控制模塊和DAC傳輸模塊,將管理控制模塊、增益補(bǔ)償模塊輸出信號(hào)封裝為標(biāo)準(zhǔn)USB信號(hào)通過(guò)USB接口電路傳輸?shù)缴衔粰C(jī)。(2)管理控制模塊,是整個(gè)程序的主控單元。該模塊用于接收USB傳輸模塊輸出的控制信號(hào),對(duì)其余的通信模塊進(jìn)行控制,并輸出檢測(cè)電路的工作狀態(tài)到USB傳輸模塊,最終傳輸?shù)缴衔粰C(jī)。同時(shí)用于控制其余模塊的工作狀態(tài),接收混合單元控制模塊、信號(hào)調(diào)理控制模塊、ADC傳輸模塊輸出的反饋信息進(jìn)行工作狀判斷,根據(jù)混合單元控制模塊、信號(hào)調(diào)理控制模塊反饋信息控制增益補(bǔ)償模塊的補(bǔ)償量。(3)DAC傳輸模塊,在管理控制模塊的控制下工作,接收USB傳輸模塊輸出的激勵(lì)信號(hào),并將信號(hào)轉(zhuǎn)換為DAC芯片的數(shù)據(jù)輸入信號(hào),同時(shí)為DAC芯片提供轉(zhuǎn)換時(shí)鐘。(4)輸出增益控制模塊,用于在管理控制模塊輸出的控制信號(hào)下工作,根據(jù)需求通過(guò)兩路輸出信號(hào)IN1和IN2分別控制差分放大電路的2個(gè)電子開(kāi)關(guān)ADG736。(5)混合單元控制模塊,用于在管理控制模塊輸出的控制信號(hào)下工作,根據(jù)需求通過(guò)輸出I2C信號(hào)控制混合單元的數(shù)字電位計(jì)AD5272的阻值,完成信號(hào)混合功能,并將AD5272的阻值信息反饋給管理控制單元。(6)信號(hào)調(diào)理控制模塊,用于在管理控制模塊輸出的控制信號(hào)下工作,根據(jù)需求通過(guò)輸出2路I2C信號(hào)控制信號(hào)調(diào)理電路的2個(gè)數(shù)字電位計(jì)AD5272的阻值,完成信號(hào)調(diào)理功能,并將2個(gè)AD5272的阻值信息反饋給管理控制單元。(7)ADC傳輸模塊,在管理控制模塊的控制下工作,接收DAC芯片輸出的采樣數(shù)據(jù),并將數(shù)據(jù)傳輸?shù)皆鲆嫜a(bǔ)償模塊,同時(shí)為ADC芯片提供采樣時(shí)鐘。該模塊同時(shí)接收ADC輸出的滿(mǎn)量程指示信號(hào)和數(shù)據(jù)輸入指示信號(hào),并傳送給管理控制模塊。(8)增益補(bǔ)償模塊,用于接收來(lái)自ADC傳輸模塊的采樣數(shù)據(jù)和管理控制模塊輸出的增益補(bǔ)償信息,對(duì)ADC芯片采樣獲得的信號(hào)進(jìn)行增益補(bǔ)償,實(shí)現(xiàn)檢測(cè)信號(hào)的完整性。
3結(jié)論
船舶導(dǎo)航信息系統(tǒng)處理和儲(chǔ)存多種信息,首先,系統(tǒng)需要處理硬件接口遞交的監(jiān)測(cè)信息,并根據(jù)上層用戶(hù)的需求給予硬件設(shè)備相應(yīng)的反饋;其次,系統(tǒng)需要將處理和合成之后的信息顯示給用戶(hù),同時(shí)從用戶(hù)的輸入設(shè)備中收集用戶(hù)的需求并進(jìn)行處理;最后,系統(tǒng)還需要與GIS、衛(wèi)星通信系統(tǒng)等模塊進(jìn)行交互,實(shí)現(xiàn)信息的分析和更新。因此,導(dǎo)航信息在系統(tǒng)的流動(dòng)過(guò)程中形成3個(gè)閉環(huán),如圖2所示。在硬件信息閉環(huán)中,硬件接口產(chǎn)生的信息主要為經(jīng)緯度、航向、航速等初始信息,并通過(guò)硬件設(shè)備本身接口輸出該信息。然而,由于不同設(shè)備采用不同的標(biāo)準(zhǔn)并由不同的廠商制造,因而其產(chǎn)生的數(shù)據(jù)格式差異較大,無(wú)法被信息接口直接使用,因而需要信息收集與格式化模塊進(jìn)行數(shù)據(jù)的格式化。該模塊從硬件接口中收集數(shù)據(jù),并根據(jù)預(yù)先定義的數(shù)據(jù)結(jié)構(gòu)將數(shù)據(jù)重新組織,并以一定的格式提交給信息接收接口,在信息接收接口中,則對(duì)數(shù)據(jù)的合法性進(jìn)行檢驗(yàn),同時(shí)識(shí)別數(shù)據(jù)的類(lèi)型,交付給相應(yīng)的中央處理功能。在用戶(hù)信息閉環(huán)中,中央處理模塊將處理完畢的信息,按照一定的消息格式,通過(guò)信息交付接口輸出給用戶(hù)界面,并顯示給終端用戶(hù)。因此可以看出,用戶(hù)界面的設(shè)計(jì)需要相應(yīng)的信息交付接口的支持,同時(shí)用戶(hù)根據(jù)自己的需求,通過(guò)用戶(hù)界面對(duì)導(dǎo)航信息系統(tǒng)進(jìn)行相應(yīng)的操作,該請(qǐng)求也通過(guò)信息交付接口遞交給中央處理模塊,進(jìn)行進(jìn)一步的處理。在外部信息閉環(huán)中,中央處理模塊需要借助一些外部系統(tǒng)獲取需要的信息,如通過(guò)GIS可以結(jié)合數(shù)字地圖等平臺(tái),直觀地顯示導(dǎo)航信息,而通過(guò)衛(wèi)星通信網(wǎng)絡(luò),可以將通信功能集成入導(dǎo)航信息平臺(tái)中,實(shí)現(xiàn)多節(jié)點(diǎn)的位置和導(dǎo)航信息交換。在整個(gè)過(guò)程中,中央處理模塊根據(jù)實(shí)際的需要向外部系統(tǒng)提交信息請(qǐng)求,并從外部系統(tǒng)中下載相應(yīng)的信息。需要注意的是,外部系統(tǒng)中采用的消息格式往往有較為明確的標(biāo)準(zhǔn),因而信息擴(kuò)展接口必須具備相應(yīng)的適配機(jī)制,支持相應(yīng)的標(biāo)準(zhǔn),識(shí)別對(duì)應(yīng)格式的數(shù)據(jù)和消息,并將其轉(zhuǎn)換為中央處理模塊能夠處理的數(shù)據(jù)結(jié)構(gòu)。
2信息接口設(shè)計(jì)
在第2節(jié)中,對(duì)系統(tǒng)應(yīng)用的信息接口進(jìn)行了介紹,并對(duì)其功能進(jìn)行了較為詳細(xì)的描述,根據(jù)其功能和作用位置的不同,可以將其分為信息接收接口、信息交付接口和信息擴(kuò)展接口3類(lèi)。
2.1信息接收接口信息接收接口的主要功能是:接收由硬件提交的信息,并對(duì)信息的格式進(jìn)行檢驗(yàn)和分類(lèi),最終遞交給中央處理模塊。其主要結(jié)構(gòu)和工作流程如圖5所示。如圖5所示,在信息接收接口中,收到的信息首先存儲(chǔ)在消息緩沖中,信息格式模式匹配單元通過(guò)預(yù)先定義的合法消息格式,對(duì)消息緩沖中的信息進(jìn)行匹配,監(jiān)測(cè)其合法性,當(dāng)出現(xiàn)異常時(shí),反饋控制單元調(diào)度消息緩沖,根據(jù)異常消息的來(lái)源,向相應(yīng)的硬件接口做出反饋,進(jìn)而將異常消息丟棄或封閉/重置相應(yīng)的硬件接口。合法的消息被送入消息分類(lèi)單元,該單元維護(hù)若干個(gè)列表,列表中存儲(chǔ)格式化的消息數(shù)據(jù)。當(dāng)中央處理模塊或其他模塊,調(diào)用相應(yīng)的功能時(shí),則通過(guò)相應(yīng)的功能子接口,將對(duì)應(yīng)的數(shù)據(jù)取出并交給相應(yīng)的功能。信息接收接口是基礎(chǔ)硬件設(shè)施和軟件處理單元之間的橋梁,通過(guò)擴(kuò)展消息格式化的適配功能,能夠有效拓展支持的硬件種類(lèi),從而使得系統(tǒng)的功能更加強(qiáng)大。
2.2信息交付接口信息接收接口面向的是底層硬件設(shè)備和系統(tǒng),而信息交付接口面向的是上層的用戶(hù)和用戶(hù)界面,其功能是:將中央處理模塊處理完畢的數(shù)據(jù)和信息,按照不同的種類(lèi)遞交給用戶(hù)界面,在用戶(hù)界面中進(jìn)行集成和顯示。其主要結(jié)構(gòu)和工作流程如圖6所示。與信息接收接口的不同之處在于,交付接口擔(dān)負(fù)了雙向的信息傳遞功能。首先,通過(guò)數(shù)據(jù)調(diào)用單元可以將處理完成的數(shù)據(jù)交付給用戶(hù)界面使用,根據(jù)類(lèi)型的不同有圖形化數(shù)據(jù)、字節(jié)化數(shù)據(jù)、GIS數(shù)據(jù)等,用戶(hù)界面通過(guò)調(diào)用這些不同種類(lèi)的數(shù)據(jù),即可按照實(shí)際需求,合成和顯示出包含豐富內(nèi)容的導(dǎo)航信息圖示。同時(shí),用戶(hù)通過(guò)用戶(hù)界面對(duì)導(dǎo)航信息系統(tǒng)進(jìn)行控制、設(shè)置或調(diào)用其需要的單個(gè)數(shù)據(jù),此時(shí)用戶(hù)指令被傳遞到用戶(hù)指令解釋單元,若用戶(hù)指令合法,則通過(guò)編譯器對(duì)指令進(jìn)行解釋?zhuān)a(chǎn)生針對(duì)系統(tǒng)每個(gè)模塊的具體指令,并通過(guò)控制信息產(chǎn)生單元將具體指令轉(zhuǎn)換為系統(tǒng)模塊能夠識(shí)別的具體控制信息。然后利用系統(tǒng)控制接口,對(duì)系統(tǒng)的軟件和硬件進(jìn)行直接的控制或設(shè)置等操作。信息交付接口是實(shí)現(xiàn)用戶(hù)界面的基礎(chǔ),其并不關(guān)心用戶(hù)界面如何實(shí)現(xiàn),終端用戶(hù)有著怎樣的具體需求,僅僅是提供了一系列標(biāo)準(zhǔn)化的數(shù)據(jù)交付接口,這樣就可以根據(jù)不同類(lèi)型的船舶和不同的應(yīng)用場(chǎng)景,設(shè)計(jì)不同的用戶(hù)界面,而不需要受到核心軟件系統(tǒng)的束縛。
2.3信息擴(kuò)展接口與前2種接口不同,信息擴(kuò)展接口是向外部開(kāi)放的接口,通過(guò)這個(gè)接口,例如衛(wèi)星通信網(wǎng)、GIS系統(tǒng)、AIS系統(tǒng)等,均可以連接入導(dǎo)航信息系統(tǒng),為系統(tǒng)提供更加豐富的信息和更加強(qiáng)大的功能。其主要結(jié)構(gòu)和工作流程如圖7所示。信息擴(kuò)展接口同樣需要擔(dān)負(fù)數(shù)據(jù)的雙向傳遞任務(wù),一方面其運(yùn)行有相應(yīng)數(shù)據(jù)交換/傳輸協(xié)議的協(xié)議棧,如AIS數(shù)據(jù)傳輸協(xié)議棧、VSAT衛(wèi)星通信協(xié)議棧等,以便通過(guò)相應(yīng)系統(tǒng)的接口下載和傳輸消息,同時(shí)將接收到的消息轉(zhuǎn)換為系統(tǒng)能夠識(shí)別的數(shù)據(jù)結(jié)構(gòu),供中央處理模塊處理。另一方面,系統(tǒng)根據(jù)需要,提出相應(yīng)的信息下載請(qǐng)求,該請(qǐng)求通過(guò)請(qǐng)求處理單元,轉(zhuǎn)換為相應(yīng)系統(tǒng)的控制和請(qǐng)求指令,封裝為合適的控制消息后,發(fā)送給對(duì)應(yīng)的外部系統(tǒng)。信息擴(kuò)展接口可以通過(guò)擴(kuò)展外部數(shù)據(jù)交換協(xié)議棧來(lái)擴(kuò)展其可以支持的外部系統(tǒng)種類(lèi),從而能夠綜合更多的外部信息,豐富導(dǎo)航信息系統(tǒng)的內(nèi)容。
3仿真與實(shí)現(xiàn)
根據(jù)以上研究和設(shè)計(jì),本文采用軟件實(shí)現(xiàn)的方法對(duì)導(dǎo)航信息系統(tǒng)進(jìn)行仿真和模擬。采用的環(huán)境是Corei31.8GHz,4G內(nèi)存,Win764bit,采用Java作為程序開(kāi)發(fā)語(yǔ)言。仿真的重點(diǎn)在于實(shí)現(xiàn)各個(gè)接口的功能,驗(yàn)證各個(gè)接口工作的有效性和高效性,依托當(dāng)前較為成熟的中央處理模塊[7],實(shí)現(xiàn)對(duì)信息的處理和存儲(chǔ),并使用Java語(yǔ)言開(kāi)發(fā)整個(gè)模擬系統(tǒng),模擬系統(tǒng)界面如圖8所示。通過(guò)編寫(xiě)相應(yīng)的代碼,模擬各種硬件設(shè)備,信息接收接口成功地收集和轉(zhuǎn)換了不同種類(lèi)的消息,并通過(guò)信息交付接口遞交給用戶(hù)界面,從圖8可以看出其成功地實(shí)現(xiàn)了信息的收集和顯示。如圖9所示,進(jìn)行信息設(shè)置的測(cè)試,通過(guò)設(shè)計(jì)控制面板,設(shè)置相應(yīng)的參數(shù),觀察能否對(duì)系統(tǒng)進(jìn)行有效控制。通過(guò)以上實(shí)踐證明,在理論上本文所設(shè)計(jì)的接口能夠發(fā)揮相應(yīng)的功能,實(shí)現(xiàn)導(dǎo)航信息的收集、處理和交付等功能,說(shuō)明了本文提出的方案具有一定的可行性。
4結(jié)語(yǔ)
在HTTP上執(zhí)行遠(yuǎn)程方法調(diào)用的方法,通過(guò)這一機(jī)制在線為用戶(hù)提供應(yīng)用服務(wù)。SOAP技術(shù)基于XML標(biāo)準(zhǔn),詳細(xì)描述了在分布式環(huán)境下利用HTTP以可靠安全的方式進(jìn)行方法調(diào)用的機(jī)制。利用WebService實(shí)現(xiàn)分布式系統(tǒng),首先需要由服務(wù)提供者定義并創(chuàng)建其能夠?qū)ν馓峁┑姆?wù)組件;其次需要利用WSDL(WebServicesDescriptionLanguage)來(lái)描述服務(wù)訪問(wèn)入口和遠(yuǎn)程調(diào)用接口,并將其到網(wǎng)絡(luò)上的UDDI(UNIVERSALDESCRIPTION,DISVOVERYINTEGRATION)注冊(cè)中心,服務(wù)入口由URL唯一確定,以提供給用戶(hù)使用。用戶(hù)通過(guò)注冊(cè)中心找到服務(wù),并根據(jù)WSDL文件中規(guī)定的遠(yuǎn)程過(guò)程名和參數(shù)格式調(diào)用遠(yuǎn)程過(guò)程。WEB服務(wù)接受請(qǐng)求后執(zhí)行該過(guò)程,執(zhí)行完畢后向用戶(hù)返回執(zhí)行結(jié)果。由此可見(jiàn),WEB服務(wù)為用戶(hù)和服務(wù)提供者提供了系統(tǒng)集成的松散耦合的方式,用戶(hù)和服務(wù)提供者相互獨(dú)立,一端改變不需要通知另一方。此外,WEB服務(wù)基于XML的開(kāi)放協(xié)議,能夠被廣泛接受并向前兼容,適于系統(tǒng)之間的相互集成。
2基于HIS系統(tǒng)的CDD集成的接口設(shè)計(jì)
HIS系統(tǒng)需要支持醫(yī)院醫(yī)護(hù)人員的臨床活動(dòng),收集和處理病人的臨床醫(yī)療信息,豐富和積累臨床醫(yī)學(xué)知識(shí),并提供臨床咨詢(xún)、輔助診療、輔助臨床決策等功能,提高醫(yī)護(hù)人員工作效率和診療質(zhì)量。為達(dá)到這一目的,需將CDD中的知識(shí)單元有機(jī)嵌入到臨床醫(yī)療信息中,以期為臨床的疾病、用藥、手術(shù)等提供權(quán)威準(zhǔn)確的知識(shí)服務(wù)。Webservices接口使用基于XML的消息處理作為基本數(shù)據(jù)通訊方式,可方便集成異類(lèi)系統(tǒng)。由于CDD系統(tǒng)有清晰的分層結(jié)構(gòu)和良好的可擴(kuò)展性及獨(dú)立的檢索模塊,利用Webservices安裝HIS系統(tǒng)的需求封裝檢索模塊即可實(shí)現(xiàn)CDD與HIS系統(tǒng)的集成。
2.1CDD與HIS系統(tǒng)集成架構(gòu)CDD與HIS系統(tǒng)集成架構(gòu)如圖1所示。CDD的數(shù)據(jù)庫(kù)包括疾病、手術(shù)等9個(gè)模塊,利用NHibernate將關(guān)系數(shù)據(jù)庫(kù)封裝為對(duì)象。CDD接口對(duì)數(shù)據(jù)的檢索建立在LUCENCE索引上,以疾病庫(kù)為例,對(duì)疾病名、英文名、標(biāo)準(zhǔn)名、并發(fā)癥、實(shí)驗(yàn)室檢查、輔助檢查、診斷、鑒別診斷、治療、臨床表現(xiàn)、科室分類(lèi)這些字段建立LUCENCE索引。查詢(xún)可在上述字段內(nèi)全文檢索,也可對(duì)固定字段精確檢索。LUCENCE[3]對(duì)查詢(xún)結(jié)果做了優(yōu)化,使得查詢(xún)更加快速高效。在Spring.NET的框架中,利用IDAL數(shù)據(jù)層接口完成對(duì)數(shù)據(jù)層的操作并實(shí)現(xiàn)了業(yè)務(wù)邏輯。Webservice接口利用IDAL接口完成數(shù)據(jù)的檢索與獲取。
2.2應(yīng)用分析目前已完成系統(tǒng)接口開(kāi)發(fā),試用良好。HIS系統(tǒng)可通過(guò)配置文件設(shè)置CDD系統(tǒng)接口地址及綁定協(xié)議等信息。由C#多態(tài)性實(shí)現(xiàn)用戶(hù)名密碼登陸或者IP登陸后,可通過(guò)檢索函數(shù)獲取檢索結(jié)果。用戶(hù)通過(guò)函數(shù)按照疾病名和疾病分類(lèi)準(zhǔn)確查找相關(guān)疾病,也可通過(guò)SearchDisease(stringicd)函數(shù)按照ICD號(hào)準(zhǔn)確查找相關(guān)疾病,亦可通過(guò)SearchDiseaseFromFullText(stringkeyword)函數(shù)在索引字段中全文檢索,檢索支持英文及中文檢索詞。需輸入多個(gè)檢索詞時(shí),根據(jù)檢索需要選擇布爾邏輯運(yùn)算符“()”、“或者(OR)”和“不包含(NOT)”,檢索結(jié)果由LUCENCE優(yōu)化排序后返回給用戶(hù)。以疾病為知識(shí)軸,HIS系統(tǒng)可將疾病的12個(gè)知識(shí)單元和與之相關(guān)的相關(guān)藥品、循證、輔助檢查、手術(shù)、疾病進(jìn)展等知識(shí)點(diǎn)與HIS的信息流有機(jī)結(jié)合。手術(shù)、藥品、循證、輔助檢查、疾病進(jìn)展、操作規(guī)范、手術(shù)圖譜、醫(yī)保藥品的分庫(kù)檢索,如疾病庫(kù)檢索一樣。通過(guò)測(cè)試工具測(cè)試CDD的WEB接口。以心血管內(nèi)科的假性高血壓為例,疾病reguest的SOAP以及response的SOAP如圖2所示。從圖2可見(jiàn),假性高血壓的疾病信息完整地封裝在XML格式的SOAP中。
3結(jié)語(yǔ)