一種CAN總線(xiàn)—PROFIBUS-DP總線(xiàn)網(wǎng)關(guān)的實(shí)現方法
為了增強CAN總線(xiàn)節點(diǎn)的抗干擾能力,SJA1000的TX0和RX0并不是直接與82C250的TXD和RXD相連,而是通過(guò)高速光耦6N137后與82C250相連,這樣就很好的實(shí)現了總線(xiàn)上各CAN節點(diǎn)間的電氣隔離,其中光耦部分電路所采用的兩個(gè)電源VCC和VDD完全隔離。另外82C 250與 CAN總線(xiàn)的接口部分也采用了一定的安全和抗干擾措施。82C250的CANH和CANL引腳各自通過(guò)一個(gè)5Ω的電阻與CAN總線(xiàn)相連電阻可起到一定的限流作用,保護82C250免受過(guò)流的沖擊。CANH和CANL與地之間并聯(lián)了2個(gè)30P的小電容,可以起到濾除總線(xiàn)上的高頻干擾和一定的防電磁輻射的能力,另外在兩根CAN總線(xiàn)接入端與地之間分別反接了一個(gè)保護二極管,當CAN總線(xiàn)有較高的負電壓時(shí)通過(guò)二極管的短路可起到一定的過(guò)壓保護作用, 82C250的Rs腳上接有一個(gè)斜率電阻。
3.2 PROFIBUS-DP總線(xiàn)接口電路
PROFIBUS-DP總線(xiàn)接口的硬件電路也由四部分所構成,微控制器89C52(2),PROFIBUS-DP通信控制器協(xié)議芯片SPC3,光耦 HCPL7101和6N137,RS485總線(xiàn)驅動(dòng)電路。圖2為PROFIBUS-DP通信控制器到RS485總線(xiàn)驅動(dòng)器的硬件電路圖。
89C52(2)主要負責控制SPC3,實(shí)現PROFIBUS-DP總線(xiàn)數據的轉換與共享。
SPC3已集成了PROFIBUS-DP物理層的數據收發(fā)功能,可獨立處理PROFIBUS DP協(xié)議,另外SPC3內部還集成有1.5k的雙口RAM,作為SPC3與用戶(hù)程序之間的接口,并且AT89C52(2)可對SPC3內部RAM訪(fǎng)問(wèn)。
盡管SPC3已經(jīng)集成了物理層的數據傳輸功能,但它不具備RS-485的驅動(dòng)接口,因此添加了RS-485的驅動(dòng)電路。
另外為了避免總線(xiàn)上的信號對電路的影響,在SPC3與RS485總線(xiàn)驅動(dòng)電路之間采用光電隔離。TxD、RxD信號的隔離器件選用Hewlett Packard公司的12M高速光耦HCPL710,RTS信號的隔離器件選用了6N137。
兩種總線(xiàn)數據的共享與傳遞是通過(guò)雙口RAM實(shí)現的,系統里選用了器件IDT7130。它是高速的1K雙口靜態(tài)RAM。該器件提供兩個(gè)獨立的端口,分別有獨立的控制、地址和I/O引腳,并允許獨立的異步讀寫(xiě)訪(fǎng)問(wèn)內存的任何地址,自動(dòng)的電源管理特性由CE控制,允許芯片上的每一個(gè)端口電路進(jìn)入一個(gè)非常低的電源模式。IDT7130的片內總線(xiàn)仲裁電路具有BUSY和INT兩種總線(xiàn)仲裁方式?;谒捎玫膯纹瑱C型號,在系統里采用了中斷仲裁方案,這種方式的工作原理是一個(gè)內存地址(郵箱或者信息中心)被指派給每個(gè)端口。左端口的中斷標志被宣稱(chēng)當右端口寫(xiě)到內存地址3FEH時(shí),左端口通過(guò)訪(fǎng)問(wèn)3FE內存地址清除中斷。相似的,當左端口寫(xiě)內存地址3FFH時(shí)右端口標志被宣稱(chēng),為了清除這個(gè)中斷標志,右端口必須訪(fǎng)問(wèn)內存地址3FFH,系統里3FE和3FF兩個(gè)單元的內容賦予新的內涵,即定義兩個(gè)碼0FFH和00H。其中0FFH代表發(fā)送命令要求對方傳送數據,而00H代表發(fā)送的是對方所要求的數據。系統里兩個(gè)CPU與雙口RAM的連接如圖3。雙口RAM的剩余的存儲單元被分為四大部分,其中0000H-00FFH這256個(gè)單元用來(lái)存儲CAN總線(xiàn)上傳來(lái)的數據或地址,并且相鄰的兩個(gè)單元用于存儲一個(gè)CAN子站的數據信息;0100H-01F9H這250個(gè)單元用來(lái)存儲PROFIBUS總線(xiàn)上傳來(lái)的數據或地址,相鄰的兩個(gè)單元用于存儲一個(gè)PROFIBUS子站的信息,另外03FCH單元用于存放CAN總線(xiàn)設備所要讀的PROFIBUS站點(diǎn)的ID號,03FDH單元用于存放PROFIBUS總線(xiàn)設備所要讀的CAN站點(diǎn)的ID號。
由圖可知雙口RAM在負責CAN總線(xiàn)通信的微處理器的映射地址為0x7C00H-0x7FFFH,在負責PROFIBUS總線(xiàn)通信的微處理器的映射地址為0x2C00H-0x2FFFH。
4 系統軟件設計
網(wǎng)關(guān)的軟件可 分為兩大部分,一部分用于負責CAN總線(xiàn)的數據通信,另一部分用于負責PROFIBUS總線(xiàn)的數據通信。
每側的程序根據功能又可以分為三個(gè)子模塊:協(xié)議芯片初始化程序,接受數據接受子程序,數據發(fā)送子程序。其中數據接受子程序考外部中斷觸發(fā)執行。下面以網(wǎng)關(guān)的CAN總線(xiàn)接口側程序為例,列出程序流程圖,PROFIBUS側的接口程序與之相似,就不再贅述。
CAN總線(xiàn)側的初始化與發(fā)送程序流程如圖4:
評論