發電機狀態監測儀中CAN適配卡的設計方案
摘要:文中介紹了發電機狀態監測儀中CAN智能適配卡的功能和硬件組成,針對ISA和哼單片機同時對雙口RAM讀寫數據時的仲裁問題,提出了一種硬件判優的實現方法,并對適配卡的軟件設計進行了總體的闡述。
??? 關鍵詞:適配卡 IDT7132 雙口RAM SJA1000
CAN(Controller Area Network)控制局域網絡是一種串行通信網絡。它采用了許多新技術和獨特的設計,因而使其在可靠性、實時性和靈活性方面具有突出的優點。這些卓越的性能使CAN總線得以在全球范圍內一直保持高速發展。考慮到CAN總線的成長性及許多單片機中集成有CAN總線控制器,且CAN總線專用控制器IC術易從市場上得到,因此,在筆者設計的發電機狀態監測儀中采用CAN總線技術。
1 CAN總線系統的組成模式
基于現場總線的發電機狀態監測儀由智能數據采集模塊、工控機(IPC)、CAN總線三部分組成。其系統結構如圖1所示。每個模塊通過CAN總線與一臺工控機系統。工控機的主要功能是對智能數據采集模塊的參數進行設置,并通過現場總線網絡實時獲取智能數據采集模塊的數據,如發電機事件記錄、故障錄波;監測數據的實時顯示、趨勢分析、異常報警和完成報表輸出等功能。CAN總線部分主要是由CAN總線適配卡、通訊介質以及相應的通訊軟件構成。
2 CAN智能適配卡的硬件結構
CAN總線的卓越性能為發電機狀態監測系統的高速數據通訊提供了保障,但很多工業PC機并不帶有CAN總線接口,為了在IPC上擴展CAN總線的監控和管理功能,筆者設計了一塊適配卡插隊IPC的擴展插槽內,以完成CAN接口與IPC的擴展功能。
CAN總線PC適配卡的硬件電路如圖2所示,它主要包括89C52單片機(內含8K E2PROM、256字節RAM)、地址譯碼與中斷信號控制邏輯電路EPM7128S、共享存儲器雙口RAM(IDT7132)、CAN控制器SJA1000芯片和光電隔離電路(6N137)以及CAN驅動器82C520等部分組成。
要實現PC機和CAN控制器之間的數據傳送,必須在PC機和適與卡上的MPC之間建立起雙向的數據交換通道。通過ISA總線實現單片機系統與主機之間交換數據有以下兩種實現方法:一是靜態數據傳送,這種方法采用并行接口器件(如8255)或鎖存器(如74LS373)等構成一字節深度的FIFO。該方法較為簡單,但一次傳輸的數據量小,因而只適應數據量小、速度要求不高的場合;二是共用單片機系統外部數據存儲器。此時可直接采用集成雙端口RAM或在通用RAM加上一些控制邏輯組成雙口RAM電路。集成雙口RAM是一種性能優良的快速快通器件,適用于多CPU分布式系統及高速數字系統中。它提供了兩路完全獨立的端口,每個端口都有完整的地址、數據和控制線。對器件的使用者而言,它與一般RAM并無大的區別,只有在兩邊同時讀寫同一地址單元時,才發生爭用現象。利用雙口RAM提供指示信號,采用適當的通信規則就可避免爭用,以實現快速數據的交換。集成雙口RAM不僅易于實現,而且價格也不高。CAN信號傳輸采用短幀結構(8個字節),適配卡對雙口RAM的容量要求并不大,故可選用IDT7130、IDT7132、IDT71231等。本文選用2k×8位的帶忙信號BUSY的IDT7132。CAN通信控制器選用Philips公司生產的能支持CAN2.0B協議并與82C200完全兼容的SJA1000,如把它視為存儲器映射的寄存器,則易于與89C52接口。為增強CAN總線的差動發送和接收能力,本設計采用了CAN總線收發接口電路82C250。在SJA1000與從機的82C250之間接入光電耦合器可增強系統的抗干擾能力。光耦可采用高速光耦6N137。光耦兩側應用采用DC-DC隔離電源,可選用力源公司生產的PS250DC5D5S。
3 伸裁方式
雙口RAM通信方式的關鍵是處理好爭用現象,避免因此而產生的讀寫錯誤。IDT7132能夠提供硬件判優方式,并可利用BUSY引腳的信號來提高系統的靈活性。在圖2的硬件電路中,由于IDT7132內含硬件判優電路且兩邊端口都有BUSY引腳。因此為兩端口爭用同一地址單元時,其片內硬件電路可根據兩邊的地址、片選以及讀寫信號到達選后順序來裁決哪個端口有使用權。
由此可知,BUSY信號可直接至支持插入等待時序的CPU如80C196的READY引腳,而無需軟件支持。在本卡中,由于89C52沒有READY信號,因而在89C52發出讀寫IDT7132命令時將鎖存BUSYR信號,而只需讀P1.6口的值就可判斷剛才對IDT7132讀寫時是否存在沖突。當P1.6的值為1時,剛才詢門不存在沖突;當1.6的值為0時,剛才詢問存在沖公安廳。此時要重發讀寫IDT7132的命令。由于ISA總線沒有READY信號,也沒有通用的I/O引腳,因而可將來自IDT7132的BUSYL信號接至數據線的最低位D0。但因為除了查詢BUSYL引腳電平時外,BUSYL不應接到D0,因而應采用三態門74L125。BUSYL接三態門的輸入端,三態門輸出端接ISA總線數據線D0位,其門控信號由A9~A5產生,故將占用ISA總線一個I/O端口。設計時應該選用一個空閑的端口號,這里選用330H(雙口RAM側,PC機則需換碼),即將A9~A5譯碼為11001.具體電路如圖3所示。
4 適配卡的軟件設計
適配卡主要用來承擔上位計算機和CAN節點之間的數據轉發任務,其軟件設計也包括兩部分:第一部分是PC機端的應用程序接口(API)函數,負責完成PC機端與雙口RAM之間的通信,該部分可以采用可視化的編程工具如C++Builder編寫。PC機端軟件功能主要包括向適配卡上的雙口RAM發送控制命令、數據命令和請求數據命令,還將接收到的數據進行后處理(如,顯示、報表等);第二部分是卡上單片機端的程序設計,負責單片機與雙口RAM以主導CAN控制器之間的通信,該部分可以采用匯編語言ASM51或Franklin C51編寫.軟件設計的主要任務是向CAN控制器轉發來自PC機的命令,并由CAN控制器進一步轉發至CAN節點;同時,將CAN控制器接收的來自CAN節點的數據、狀態信息送到雙口RAM。
5 需要說明的問題
CAN的協議規范(CAN Specification 2.0A/B)只是一個低層的規范。因而還需要一個高層/應用層的協議,CAN的能力是由高層協議來選定和限制的。目前國際上CAN的應用層協議很多,如DeviceNet、CANopen、CANKingdom等,但用戶可以定制更簡單的應用層協議。應用層協議的任務一方面是對將要發送的數據進行分類、拆卸、合并,并確定發送對象,然后根據CAN的數據鏈路層協議規范填寫CAN的各個信息幀。另一方面是解釋接收到的數據的具體含義并對其進行相應的處理。
評論
查看更多