孟繁江
摘要:本文提出一種新的適配卡設(shè)計(jì)方案,采用ISA接口,使用89C52微處理器,SJA1000作為通信控制器,并利用雙口RAM作為PC機(jī)與控制器之間的數(shù)據(jù)交換通道,使用EPLD器件作為雙口RAM的控制和中斷信號(hào)處理。最后簡(jiǎn)要闡述了適配卡的軟件設(shè)計(jì)。
關(guān)鍵詞:局域控制網(wǎng) 總線適配卡 設(shè)計(jì)
1 概述
現(xiàn)場(chǎng)總線技術(shù)將專用的微處理器置入傳統(tǒng)的測(cè)量控制儀表中,使它們各自都具有數(shù)字計(jì)算和數(shù)字通信能力,采用可進(jìn)行簡(jiǎn)單連接的雙絞線作為總線,把多個(gè)測(cè)量控制儀表連接成網(wǎng)絡(luò)系統(tǒng),并按公開、規(guī)范的通信協(xié)議,在現(xiàn)場(chǎng)的多個(gè)微機(jī)化測(cè)量控制設(shè)備之間以及現(xiàn)場(chǎng)儀表與遠(yuǎn)程監(jiān)控計(jì)算機(jī)之間,實(shí)現(xiàn)數(shù)據(jù)傳輸與信息交換,形成適應(yīng)各種實(shí)際需要的自動(dòng)控制系統(tǒng)。目前,在變電站綜合自動(dòng)化系統(tǒng)中CAN總線已有少量應(yīng)用,其中的通信適配卡多為非智能型的,即在卡上未采用微處理器。本文所介紹的適配卡采用89C52作為微控制器,將大大減少PC主機(jī)的通信負(fù)擔(dān)。且在設(shè)計(jì)中使用最新的EPLD器件作為雙口RAM的邏輯控制和中斷信號(hào)控制,使得電路比較簡(jiǎn)單,而且具有很好的可擴(kuò)展性。
2 現(xiàn)場(chǎng)總線的技術(shù)特點(diǎn)
CAN現(xiàn)場(chǎng)總線的技術(shù)特點(diǎn):①CAN總線是到目前為止唯一有國(guó)際標(biāo)準(zhǔn)的現(xiàn)場(chǎng)總線;②CAN為多主工作方式,網(wǎng)絡(luò)上的任一節(jié)點(diǎn)均可在任意時(shí)刻主動(dòng)的向網(wǎng)絡(luò)上其它節(jié)點(diǎn)發(fā)送信息,而不分主從;在報(bào)文標(biāo)識(shí)符上,CAN上的節(jié)點(diǎn)分成不同的優(yōu)先級(jí),可滿足不同的實(shí)時(shí)要求,優(yōu)先級(jí)高的數(shù)據(jù)最多可在134μs內(nèi)得到傳輸;a.數(shù)據(jù)的轉(zhuǎn)發(fā),適配卡把總線上各個(gè)節(jié)點(diǎn)的信息轉(zhuǎn)發(fā)給PC機(jī),并將PC機(jī)的命令和數(shù)據(jù)轉(zhuǎn)發(fā)給各個(gè)節(jié)點(diǎn);b.用于完成CAN總線上用戶的部分監(jiān)控和管理任務(wù)。
3 適配卡的結(jié)構(gòu)
這里研制的CAN適配卡由ISA接口、雙口RAM、微控制器89C52、CAN通信控制器SJA1000、CAN收發(fā)器82C250、數(shù)據(jù)緩存器、地址譯碼與控制邏輯和中斷信號(hào)控制邏輯等部分組成。
3.1 雙口RAM及控制電路 PC機(jī)與CAN控制器之間要進(jìn)行數(shù)據(jù)的傳送,必須在PC機(jī)和適配卡上的微處理器之間建立雙向的數(shù)據(jù)通道。這里采用共用外部數(shù)據(jù)存儲(chǔ)器的方法。集成雙口RAM是一種性能優(yōu)良的快速通信器件,適用于多CPU分布式系統(tǒng)及高速數(shù)字系統(tǒng)中,它有兩路完全獨(dú)立的端口,每個(gè)端口都有完整的地址和數(shù)據(jù)控制線,這里采用IDT7006雙口RAM。對(duì)于雙口RAM的應(yīng)用,一個(gè)很重要的問題就是必須避免兩個(gè)端口的爭(zhēng)用,兩邊同時(shí)讀/寫同一地址單元。但只要遵循一定的通信規(guī)則,使用合理的控制邏輯電路是可以避免爭(zhēng)用現(xiàn)象的。這里采用可編程邏輯器件EPM7128S來實(shí)現(xiàn)。EPN171285是一種典型的EPLD器件,采用了先進(jìn)的CMOSEEPROM技術(shù),內(nèi)含2500個(gè)邏輯門和128個(gè)宏單元,可以在PCB板上直接對(duì)芯片進(jìn)行編程。在該適配卡中,EPM7128S主要完成數(shù)據(jù)總線的驅(qū)動(dòng)、中斷信號(hào)處理以及共享存儲(chǔ)器和數(shù)據(jù)緩沖器的地址譯碼。適配卡上的雙口RAM使用內(nèi)存映像的方式直接映射到主機(jī)內(nèi)存空間,實(shí)現(xiàn)適配卡與主機(jī)的數(shù)據(jù)交換。內(nèi)存映象法是將適配卡的數(shù)據(jù)存儲(chǔ)地址配置于PC機(jī)的主存儲(chǔ)器的高端,PC機(jī)可以采用寫主存儲(chǔ)器的方式將數(shù)據(jù)直接寫在適配卡的數(shù)據(jù)存儲(chǔ)器中,PC機(jī)不訪問適配卡的微控制器時(shí)就可以讀寫數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)。
3.2 微控制器電路 微控制器采用ATMEL公司的89C52,它與MCS51系列完全兼容,帶有8k字節(jié)的系統(tǒng)可編程Flash和256B的片內(nèi)RAM。它主要承擔(dān)節(jié)點(diǎn)與PC機(jī)之間的數(shù)據(jù)通信和協(xié)調(diào)管理工作。電保護(hù)電路,可防止因適配卡掉電引起的測(cè)量數(shù)據(jù)丟失。由于適配卡的工作環(huán)境干擾很嚴(yán)重,使得電路調(diào)試比較復(fù)雜且故障率也較高,本卡設(shè)計(jì)了三種復(fù)位方式。一種為上電復(fù)位方式,即在PC機(jī)通電時(shí),同時(shí)對(duì)適配卡也進(jìn)行復(fù)位;第二種為在調(diào)試時(shí)出現(xiàn)故障,使用手動(dòng)復(fù)位鍵進(jìn)行復(fù)位;第三種方式為軟件復(fù)位,這種方法是使用初始化模塊中的軟件指令對(duì)適配卡進(jìn)行復(fù)位。
3.3 通信控制器 CAN通信控制器采用PHILIPS公司的SJA1000,它是一種獨(dú)立的CAN控制器,主要應(yīng)用于移動(dòng)目標(biāo)和一般的工業(yè)環(huán)境中的區(qū)域控制。在本適配卡中SJA1000主要完成具體的報(bào)文發(fā)送和報(bào)文接收。SJA1000的基本特點(diǎn)有:①具有擴(kuò)展的64字節(jié)接受緩沖器,先進(jìn)先出(FIFO);②支持CAN2.0A和CAN2.0B協(xié)議;③支持11位和29位的標(biāo)識(shí)碼;④通信速率可達(dá)1Mbps;⑤24MHz時(shí)鐘頻率;⑥可與不同的微處理器接口;⑦可編程的CAN輸出驅(qū)動(dòng)器配置;可工作于BasicCAN和PeliCAN兩種狀態(tài)。CAN控制器的內(nèi)部采用模塊結(jié)構(gòu),由七個(gè)部分組成:接口管理邏輯(IML)用于解釋來自CPU的命令,控制CAN寄存器的尋址,向主控制器提供中斷信息和狀態(tài)信息;發(fā)送緩沖器(TXB)是CPU與BSP之間的接口,緩沖器可以存儲(chǔ)有13個(gè)字節(jié)的一條完整的報(bào)文;接收緩沖器(RXB)是接收濾波器和CPU之間的接口,用于存儲(chǔ)從CAN總線上接收并被確認(rèn)的信息;驗(yàn)收濾波器(ACF),用于對(duì)接收到的標(biāo)識(shí)碼進(jìn)行驗(yàn)收,以決定是否接收下這條報(bào)文;位流處理器(BSP)是一個(gè)在發(fā)送緩沖器、RXFIFO和CAN總線之間控制數(shù)據(jù)流的隊(duì)列發(fā)生器,它還執(zhí)行總線上的錯(cuò)誤檢測(cè)、仲裁、填充和錯(cuò)誤處理;位時(shí)序邏輯(BTL),用于監(jiān)視串行的CAN總線和位時(shí)序;錯(cuò)誤管理邏輯(EML),用于限制傳輸層模塊的錯(cuò)誤。
3.4 輔助電路 CAN控制器SJA1000并不能直接與總線相連,還要通過總線驅(qū)動(dòng)器才能接于總線上。本適配卡采用82C250總線驅(qū)動(dòng)器,為了增強(qiáng)CAN總線節(jié)點(diǎn)的抗干擾能力,SJA1000的TX0和TX1通過高速光耦6N137后與82C250相連,使得總線上的各節(jié)點(diǎn)具有很好的電氣隔離。
4 CAN通訊適配卡的軟件設(shè)計(jì)
適配卡主要承擔(dān)上位機(jī)和節(jié)點(diǎn)之間的報(bào)文轉(zhuǎn)發(fā)任務(wù)。軟件設(shè)計(jì)包含兩部分:一部分是上位機(jī)的應(yīng)用程序設(shè)計(jì),該程序采用VB6.0開發(fā),用于完成上位機(jī)和雙口RAM之間的通信,主要包括上位機(jī)向適配卡上的雙口RAM發(fā)送控制命令、數(shù)據(jù)命令、請(qǐng)求數(shù)據(jù)命令、請(qǐng)求狀態(tài)命令和接收數(shù)據(jù)等。另一部分是適配卡上的微處理器的程序設(shè)計(jì),使用KeilC編寫,下位機(jī)上的程序負(fù)責(zé)微處理器與雙口RAM以及微處理器與SJA1000之間的通信。其軟件設(shè)計(jì)的主要任務(wù)是向CAN控制器轉(zhuǎn)發(fā)來自PC機(jī)的命令,并由SJA1000進(jìn)一步轉(zhuǎn)發(fā)到CAN節(jié)點(diǎn),并將由控制器接受的來自節(jié)點(diǎn)的數(shù)據(jù)和狀態(tài)信息送到雙口RAM。同時(shí)在程序開發(fā)中還包含對(duì)89C52的初始化,雙口RAM的初始化以及SJA1000的初始化。SJA1000初始化主要是指設(shè)置模式、總線時(shí)序、中斷使能、屏蔽碼和ID信號(hào),這些設(shè)置是通過對(duì)芯片的內(nèi)部寄存器賦值來實(shí)現(xiàn)的,如表中SJA1000寄存器初始化參考。
5 小結(jié)
CAN總線通訊適配卡,不僅可用于變電站測(cè)控系統(tǒng),而且適用于其它分布式現(xiàn)場(chǎng)總線控制系統(tǒng)。它可以適應(yīng)不同的傳輸速率和距離,易于編寫接口程序。由于采用了EPLD技術(shù),可方便地設(shè)計(jì)適配卡的邏輯功能,且易于對(duì)適配卡進(jìn)行擴(kuò)展和升級(jí)。