Windows 2K平臺下多機通信卡
摘要:在工業(yè)現場(chǎng),監控系統經(jīng)常采用RS-485/423/422通信標準。然而,在Windows2K平臺下,復雜的多機通信和大數據量的傳輸會(huì )加重計算機的負擔。作者采用自制的多機通信卡解決了這一問(wèn)題。本文介紹了Windows2K平臺下多機通信的基本原理,論述了多機通信卡的設計方法,進(jìn)一步闡述了驅動(dòng)程序設計的一般原則。
本文引用地址:http://dyxdggzs.com/article/149062.htm關(guān)鍵詞:RS-485,單片機,多機通信,WDM
1引言
在電力監控系統中,為保證數據通信的可靠性,從機經(jīng)常采用RS-485標準接口同主機進(jìn)行通信。通常,主機是一臺安裝有Windows9X、WinNT或Windows2K等操作系統的計算機。從機為8051單片機系統,8051串行口的輸入輸出為T(mén)TL電平,抗干擾性較差,只能在幾米的范圍之內傳輸數據。
為了增強抗干擾性,提高串地通信的可靠性,增加傳輸距離,必須采用標準串行總線(xiàn)接口。若將串行口的輸入輸出電平轉換成目前流行的RS-485標準串行總線(xiàn)接口,那么主機也必須完成相應的RS-485轉換接口。普遍采用的做法是給計算機外接一個(gè)RS-485/232轉換接口卡,利用現有的RS-232接口完成主機同從機之間的通信。
在單機通信的情況下,這種做法是可以的。但是在多機通信中,實(shí)現起來(lái)非常麻煩,而且會(huì )大量占用計算機CPU的時(shí)間。下面介紹Windows平臺實(shí)現通信的幾種基本方式,以及開(kāi)發(fā)多機通信卡的方法和技巧。
2Windows平臺下多機通信方式
利用計算機的串行通信適配器,其核心為可編程異步收發(fā)器UART8250芯片,8250由10個(gè)可尋址寄存器供CPU讀/寫(xiě),實(shí)現與外界的數據通信,制動(dòng)通信協(xié)議和提供通信狀態(tài)信息。這樣,可以滿(mǎn)足單機通信的要求。
8051單片機的串行通道是一個(gè)全雙工的串行通信口,既可以實(shí)現雙機通信,也可以實(shí)現多機通信。當串行口工作在方式2或方式3時(shí),若特殊功能寄存器SCON的SM2由軟件置為“1”,則為多機方式;若SM2置為“0”,則為9位異步通信方式。
在多機通信時(shí),8051的幀格式是11位,其中第9位是SCON中的TB8,它是多機通信時(shí)發(fā)送地址(TB8=1)或發(fā)送數據(TB8=0)的標志。
計算機的串行通信接口芯片8250并不具有多機通信的功能,也不能產(chǎn)生類(lèi)似8051的TB8。為了完成多機通信的功能,一般的實(shí)現方式是:
計算機給每臺8051單片機系統發(fā)送9位數據,查詢(xún)是否有要發(fā)送的數據,并等待應答。若有,則接收數據;沒(méi)有,則繼續查詢(xún)下一臺。由此可以看出,這種通信方式速度是很慢的(如果有一臺8051長(cháng)時(shí)間沒(méi)有響應,則耗時(shí)更長(cháng)),而且也并不可靠,從機的臺數越多則計算機的資源浪費就會(huì )越嚴重。這種實(shí)現方式效率不高,不能滿(mǎn)足我們的通信要求。
因此,直接利用計算機串口的方式進(jìn)行通信是行不通的。為了盡可能減輕CPU的負擔,采用自行設計的智能通信卡,利用中斷方式的通信(這里指的是從機與通信卡之間的通信方式),來(lái)解決這個(gè)問(wèn)題。
3通信卡與多個(gè)8051通信的原理
為完成異步串行通信,首先就需要實(shí)現異步收發(fā)器的功能,其次還要實(shí)現多機通信時(shí)發(fā)送的幀格式??紤]到8051除了實(shí)現異步收發(fā)的功能外,還可以編制控制程序,使用起來(lái)更加靈活、方便,因此,用8051來(lái)實(shí)現異步收發(fā)器。為了提高通信速度,從機與通信卡之間采用中斷通信方式。
具體的實(shí)現方案如圖1所示。

圖示的這種硬件結構,使從機解放出來(lái),平時(shí)不必處于監聽(tīng)狀態(tài)。當計算機要求通信時(shí),可以利用多機通信卡的處理器向從機發(fā)出中斷信號,即通信卡通過(guò)3487(TTL電平轉換為RS-485電平),從機通過(guò)3486(RS-485電平轉換為T(mén)TL電平)進(jìn)行從機中斷信號聯(lián)系。從機進(jìn)入中斷服務(wù)程序后,則關(guān)閉外部中斷,保護現場(chǎng),監聽(tīng)主機發(fā)送的地址信號,并對其進(jìn)行識別,如果與本機地址相符,取消監聽(tīng),進(jìn)入通信狀態(tài)。
通信卡與計算機進(jìn)行通信是通過(guò)數據接口和譯碼電路實(shí)現的。該接口卡利用中斷方式與計算機通信,即通信卡向計算機發(fā)出中斷請求,計算機接收到相應中斷請求后,執行數據收發(fā)的任務(wù)。其中,計算機對通信卡的訪(fǎng)問(wèn)是利用內存映射方式實(shí)現的。
4通信卡設計
該通信卡基于ISA總線(xiàn)工業(yè)標準。它的設計主要分為三個(gè)部分:地址譯碼電路、數據接口電路和控制邏輯電路。
(1)地址譯碼電路
由于采用的是端口統一編址的方式(也就是給每一個(gè)I/O端口分配一個(gè)存儲器地址),I/O端口的尋址信號由地址總線(xiàn)通過(guò)譯碼得到。CPU用存儲器讀寫(xiě)指令對I/O接口進(jìn)行讀寫(xiě),此時(shí),I/O端口的讀寫(xiě)操作控制信號采用存儲器讀(MEMR)和存儲器寫(xiě)(MEMW)信號。而在通信卡上為實(shí)現內存映射就必須完成相應的譯碼轉換,也就是將對應的雙口RAM地址與分配的地址空間對應起來(lái),實(shí)現地址的轉換。
實(shí)現時(shí),采用動(dòng)態(tài)配置內存映射設備,改變內存映射端口的地址也相對方便,比老式的ISA[1]接口用跳線(xiàn)配置要優(yōu)越些。該雙口RAM為8K,但計算機能夠訪(fǎng)問(wèn)的只有4K。其中CTRL線(xiàn)是8KRAM的控制線(xiàn),通過(guò)該線(xiàn)可以實(shí)現“乒乓”結構[1]的數據傳輸。
(2)數據接口電路
數據接口電路實(shí)現數據線(xiàn)的驅動(dòng)功能。盡管很多計算機主板的數據總線(xiàn)都經(jīng)過(guò)驅動(dòng),但為了確??煽啃?,數據總線(xiàn)不應直接與雙口RAM相連接,而是通過(guò)數據驅動(dòng)器件與數據線(xiàn)相連。
(3)控制邏輯電路
控制邏輯電路是與計算機通信的核心部分,該部分主要是實(shí)現“乒乓”結構的硬件控制部分。當存儲器中的RAM達到HALFREADY(半滿(mǎn)狀態(tài))時(shí)發(fā)出中斷申請實(shí)現數據的傳輸,同時(shí),將CTRL狀態(tài)取反,使得計算機訪(fǎng)問(wèn)的是其中的一半,即實(shí)現了數據傳輸的“乒乓”結構。此外,數據的讀寫(xiě)控制也通過(guò)控制邏輯實(shí)現。
89C52實(shí)現與從機多機通信,同時(shí)將得到的數據存入雙口RAM中,控制邏輯協(xié)調RAM的數據讀寫(xiě)工作。
5設備驅動(dòng)程序的設計
在Windows9x下的VxD(虛擬設備驅動(dòng)程序)相比,Windows2K下的WDM(Windows設備驅動(dòng)模型)驅動(dòng)程序要復雜一些。
WDM驅動(dòng)程序是分層的,不同層上的驅動(dòng)程序有著(zhù)不同的優(yōu)先級[2]。此外,WDM還引入了FDO(功能設備對象)與PDO(物理設備對象)兩個(gè)新類(lèi)來(lái)描述硬件。
評論