分布式工業測控系統需要有現場總線來連接各現場設備及處理控制單元。CAN總線就是一種具有較高性能價格比、能滿足分布式控制要求的現場總線,具有廣泛的應用前景。它實際上是一種簡化型網絡結構,在構造單片處理器網絡中極為有用。為了使上位機也能和CAN總線相連,使微機成為系統的上位機,增強控制系統的功能,從而進一步延伸CAN總線連通范圍,就需要提供一個微機和CAN總線的接口。本文介紹作者設計制作的一種CAN總線PCI適配器。 接口的硬件設計 PCI接口的實現 目前市面上有些CAN總線的適配器,但大多都是基于PC/104或者ISA總線,傳輸速度較慢,效率低下。作者在設計中使用高效的PCI總線,實現了數據的高速傳輸。與ISA總線相比較,PCI總線具有如下特點: ①傳輸速度高。PCI總線寬度為32位(可擴展為64位)。時鐘頻率為0~33MHz。并且支持突發傳送,傳輸速度可以達到132Mb/s。相比較,ISA總線寬度為8/16位,時鐘頻率為132Mb/s。相比較,ISA總線為8位/16位,時鐘頻率為8MHz,不支持突發傳送,傳輸速率僅為8Mb/s; ②即插即用。PCI實現了真正的即插即用。系統可以實現對PCI設備的自動配置; ③生命周期長。PCI總線與處理器無關(通過橋或直接集成),可支持多種系列處理器,包括將來會出現的新一代處理器。 由于PCI總線規范十分復雜,其接口設計難度較大,但目前有許多廠商提供了專用的PCI接口芯片。這些接口芯片大多對PCI總線規范2.1、2.2版完全兼容,從而大大減輕了PCI板卡設計的工作量。PCI設備可以分為主模式和從模式。主模式可以執行DMA操作,而從模式只可以執行讀寫操作。根據PCI提供的傳輸數據帶寬(最大132Mb/s)和CAN總線(最大1Mbps)的要求,加上經濟和開發難度與周期上的考慮(主模式橋芯片較昂貴,開發難度較大),又因不需要DMA功能,采用從模式橋芯片足以滿足傳輸數據的需要。此外,選擇芯片不僅考慮性能和經濟上的要求,而且還需要考慮硬件開發和驅動程序開發的難易。如不提供足夠的芯片說明和應用樣例及開發工具,將大大增加開發難度和延長開發周期。這里我們采用PLX公司的PCI總線目標接口芯片PCI9052作為CAN總線適配器的PCI總線接口芯片,負責與計算機之間的數據通信。9052是PLX公司開發的低價格PCI總線從模式接口芯片,低功耗,符合PCI2.1規范,提供的局部總線可通過編程設置為8/16/32位的(非)復用總線。 CAN總線接口的實現 CAN總線之所以在國內乃至全球范圍內一直保持高速發展,完全取決于其卓越的性能。最早CAN總線主要應用在汽車領域,隨著集成工藝的發展和成本的降低,被越來越多的控制領域內的軟硬件工程師所接受,廣泛的應用于各行各業的控制領域網中。其主要性能指標如下: ①多站仲裁結構(分地址優先級,非破壞方式仲裁); ②支持主從廣播方式; ③不加任何擴展最多110個節點; ④最高通信速率1Mbps,最遠通信距離5km; ⑤通常CAN控制器內部設有接收和發送緩沖; ⑥通信以幀為單位,最多8個字節的數據; ⑦硬件自動進行16位CRC校驗; ⑧具有極強的總線和通信錯誤的管理能力。 由于PCI9052可以啟動局部總線的讀寫,CAN卡不再需要微控制器,采用CAN通信控制器即可,本卡采用SJA1000。SJA1000支持基本CAN(Bisic-CAN)和增強CAN(PeliCAN)兩種工作模式,支持具有新功能的CAN2.0B協議規范。具有FIFO、支持熱插拔等功能,不但可以實現CAN總線接口功能,而且芯片可以根據晶振的頻率,輸出可編程的信號CLKOUT,該信號正好可作為PCI9052局部總線的總線頻率,節省了器件,方便了設計。CAN總線的總線頻率可為12MHz、6MHz或24MHz,PCI9052自動實現局部總線與PCI總線的訪問同步。CAN總線收發器采用82C250。該芯片是CAN總線控制器和物理總線的接口,可以提供對CAN總線的差動發送和接收能力,具有抗瞬間干擾、保護總線的能力,可以通過調整CAN總線上通訊脈沖的邊沿斜率來降低射頻干擾。其速度可以達到1Mbps,最多節點數可以達到110個。地址譯碼和邏輯控制是由EPM7064S完成的。 EPM7064S是ALTERA出品的MAX7000系列的一種。它主要實現兩路獨立的CAN總線通道的地址譯碼、實現控制信號的驅動和電平轉換。通過EPM7064S可以提高系統的可靠性,縮小板卡的尺寸,方便以后板卡功能的擴展。為了在每個CAN總線通道出現故障時能夠重新初始化,在接口卡中使用了兩片復位芯片MAX811。由EPM7064S產生控制信號,當CAN總線通道出現異常時,控制MAX811復位SJA1000控制器。其總線接口原理圖如圖1所示。 PCI為每一個PCI設備提供了一個配置空間來實現設備的即插即用(PnP)。在PC機上電自檢時,配置軟件掃描PCI總線,檢測所有的PCI設備,讀取配置信息,并為每一個PCI設備分配系統資源,實現PCI設備的即插即用。每一個PCI功能設備都有一個64個雙字的配置空間,以特定的格式存儲設備支持的功能。PCI協議定義了開頭的16個雙字的格式和用途,稱為設備的配置頭區域。其它48個雙字是設備特定的。CAN卡的硬件資源為映射SJA1000內部寄存器的內存映射空間和一個中斷源。 PCI9052提供了5個局部地址空間,可以選用其中的一個作為SJA1000的地址空間,分配32個8位地址空間。同時設置相應的初始化,PCI配置寄存器中的寄存器PCIBAR2設置為0XFFFFFFE0,向系統請求分配內存的數量為32,類型為不可預讀,其它寄存器的值可設置為0。設置局部地址空間的范圍為0X00000000~0X00000020。對中斷的配置是把PCI中斷請求線分配到系統的某一ISA中斷請求(IRQ)線上。在本控制卡中利用一塊串行EEPROM(93C46B)存放控制卡的PCI配置信息。上電后訪問93C46B,實現本控制卡的自動配置。 圖1總線接口原理圖 接口的軟件設計 軟件的設計包括PCI驅動程序的設計和COM組件的設計。由于PCI設備的中斷、I/O端口、映射內存等資源都是動態分配的,必須編寫驅動程序管理硬件,才能供用戶編程使用。CAN卡驅動程序的開發工具采用WINDRIVER。由于CAN卡上沒有微控制器,因此對總線端口的所有操作都是由驅動程序來完成的。這不僅可以由計算機來實現復雜的功能,例如,錯誤檢測、斷點續傳等,同時節省了硬件,而且有利于卡的升級———只要更換驅動程序即可。驅動程序的功能主要是配置SJA1000的接口、收發CAN總線上的數據、對總線進行實時監測、接收用戶程序的收發命令。收發數據和CAN總線錯誤均采用中斷處理,驅動程序可以快速響應,通過事件(Event)內核對象直接通知給用戶程序。CAN總線通信適配器的初始化是CAN總線設計的重要環節,也是設計的難點。在其初始化過程中需要設置的參數有時鐘、總線配置、標志標識符屏蔽段、擴展標識符屏蔽段、信息塊、定時器0、定時器1、信息塊的控制段、信息塊的工作方式等。CAN總線適配器簡化流程圖如圖2所示。 圖2CAN總線適配器簡化流程圖 結束語 本文設計的CAN總線適配器結構簡單,可用于分布的現場總線控制系統。在WIN2000下經過長時間的運行測試,運行穩定可靠。它可以適應不同的傳輸速率和距離,有效保證了工業過程監控的實時性,同時也減輕了上位機的工作負擔,滿足不同的用戶要求。 |