新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一種CAN總線與以太網(wǎng)互連系統(tǒng)的設計方案

一種CAN總線與以太網(wǎng)互連系統(tǒng)的設計方案

作者: 時間:2016-11-21 來源:網(wǎng)絡 收藏

  1.前言

本文引用地址:http://m.butianyuan.cn/article/201611/319437.htm

  在大型企業(yè)自動化系統(tǒng)中,在上層企業(yè)管理層和生產(chǎn)監(jiān)控層采用的都是以太網(wǎng)和PC機,而在下層車間現(xiàn)場都是采用現(xiàn)場總線,如RS-485($14.5000)、CAN、lonWorks等,而連接上下兩層的溝通通常采用工業(yè)控制機加以太網(wǎng)卡再加上PC機插槽上的與現(xiàn)場總線對應的接口卡或并行打印口的EPP接口卡來實現(xiàn),這種連接方式成本高,開發(fā)周期長,接口卡成為系統(tǒng)上下兩層的通信瓶頸一旦出現(xiàn)故障上下兩層的聯(lián)系就將中斷;為此利用廉價的基于單片機的以太網(wǎng)-CAN網(wǎng)橋取代昂貴的工控機加接口卡,實現(xiàn)以太網(wǎng)和CAN總線網(wǎng)的直接連接具有重要意義。

  2.系統(tǒng)方案設計

  由于系統(tǒng)中有以太網(wǎng)網(wǎng)和CAN總線數(shù)據(jù)處理,因此需要采用大容量RAM進行暫存網(wǎng)絡數(shù)據(jù),采用集成有8KRAM和64K Flash的P89C668型高速控制器,如圖1所示,系統(tǒng)采用芯片RTL8019進行網(wǎng)絡數(shù)據(jù)收發(fā),采用芯片SJA1000($2.8080)處理CAN總線數(shù)據(jù),同時為了方便對轉(zhuǎn)換橋系統(tǒng)調(diào)試和進行參數(shù)設置(CANID、CAN波特率,以太網(wǎng)物理地址,IP地址,網(wǎng)關地址,子網(wǎng)掩碼)和保存,增大系統(tǒng)使用的范圍和使用靈活性,系統(tǒng)還擴展串口通信RS232($780.5000)接口和24C256串口存儲電路。

  

  3.系統(tǒng)硬件設計

  3.1 以太網(wǎng)接口電路設計

  以太網(wǎng)接口電路如圖2所示,電路中36腳~43腳為數(shù)據(jù)輸入輸出口直接連接到單片機P0口。RTL8019AS有三個分別反映其工作狀態(tài)的輸出腳,分別LED0、LED1、LED2,分別輸出網(wǎng)絡的連接性、數(shù)據(jù)發(fā)送和數(shù)據(jù)輸出狀態(tài);IOCS16是16位或8位I/O的選擇腳,當上電復位的時,該引腳為低電平時,網(wǎng)卡將選擇8位模式,為高電平時,網(wǎng)絡控制器將選擇16位的模式,電路用了個電阻R9(27K)下拉,在復位時引腳為低電平,因此網(wǎng)卡選擇8位模式。由于RTL8019AS每個引腳(除AEN外)內(nèi)部都有100K的下拉電阻置地,故當各引腳懸空時內(nèi)部檢測為低電平,由圖2可知85腳、84腳、82腳、81腳分別懸空,從而選擇了基地址300H,因此電路擴展就要以此為基準來進行配置,RTL8019AS地址線A19~A10固定接地,A9、A8定接P2.5作為地址選擇端有單片機來控制而不是用34腳AEN(直接接地)來作為地址選擇斷,將A7,A6,A5固定接地,A4~A0要根據(jù)所要訪問的RTL8019AS寄存器地址不同而不同,從而由由P89C668的P2.0~P2.4來選擇RTL8019300H~31FH,因此對應P2口地址線變化范圍為0xE0-0xFF,由于僅有P2口來選擇地址,而P0口并沒有參與地址編址電路中單片機對RTL8019AS的尋址I/O并不是連續(xù),程序中分別定義Reg00~Reg1F來分別對應300H~31FH端口,定義如下:

  

  

  3.2 CAN總線的接口電路設計

  如圖3所示,CAN總線的接口電路主要由P89C668處理器、CAN通信控制器SJA1000、CAN總線驅(qū)動器82C250、高速光電耦合器6 N 1 3 7電路組成,微處理器P 8 9 C 6 6 8負責SJA1000初始化,通過控制SJA1000實現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務;為了增強CAN總結(jié)點的抗干擾能力,SJA1000的TX0和RX0通過高速光耦6N137($0.2160)后與82C250相連,實現(xiàn)了本節(jié)點在CAN總線上的電氣隔離,提高了本系統(tǒng)的硬件的穩(wěn)定性和安全性;82C250的CANH和CANL引腳之間串連60歐姆(兩個120歐姆電阻并聯(lián))的電阻以消除電路中信號的反射等干擾,CANH和CANL與地之間并聯(lián)兩個30pF的小電容,起到濾除總線上的高頻干擾和一定的電磁輻射的能力,兩根CAN總線輸入端與地之間分別接了一個防雷擊管,當兩端輸入端與地之間出現(xiàn)瞬變干擾時,通過防雷擊管的放電起到一定的保護作用,R18則為斜率電阻。

  

  4.系統(tǒng)軟件設計

  4.1 系統(tǒng)軟件總體設計

  如圖4所示,根據(jù)以太網(wǎng)與現(xiàn)場總線CAN協(xié)議轉(zhuǎn)換功能可知系統(tǒng)軟件包括TCP/IP協(xié)議程序、CAN協(xié)議程序、RS232串行數(shù)據(jù)收發(fā)程序以及對以上三種協(xié)議程序進行協(xié)議轉(zhuǎn)換和監(jiān)控管理的應用管理程序;TCP/IP協(xié)議包括ARP(地址解析協(xié)議)、IP協(xié)議(網(wǎng)際協(xié)議)、ICMP(Internet互聯(lián)網(wǎng)控制報文協(xié)議)、TCP(傳輸控制)協(xié)議和UDP(用戶數(shù)據(jù)報)協(xié)議,ARP協(xié)議用于負責把一個IP地址映射成物理地址,即獲取對方或通知對方本主機物理地址的一個協(xié)議;IP協(xié)議主要功能是把源主機上的數(shù)據(jù)分組發(fā)送到互聯(lián)網(wǎng)中的任何一臺目標主機上;ICMP用于差錯報告和報文控制的協(xié)議,在本系統(tǒng)種主要完成ping命令請求和應答功能;UDP和TCP協(xié)議在工作時是建立在IP協(xié)議之上,UDP協(xié)議對每次輸出都生成一個UDP數(shù)據(jù)報,然后把生成的UDP數(shù)據(jù)報直接封裝在IP數(shù)據(jù)報中進行傳輸,提供無連接的不可靠的數(shù)據(jù)報文服務,而TCP協(xié)議提供面向連接的、可靠的數(shù)據(jù)流服務;CAN協(xié)議用于將接收到的以太網(wǎng)數(shù)據(jù)轉(zhuǎn)換成一定格式的CAN協(xié)議格式的數(shù)據(jù)并轉(zhuǎn)發(fā)到目標節(jié)點以及從其他目標節(jié)點受到的數(shù)據(jù)轉(zhuǎn)換成TCP/IP協(xié)議格式數(shù)據(jù);而RS232串口協(xié)議功能主要為系統(tǒng)調(diào)試和IP地址等參數(shù)進行設置;各功能模塊由應用管理程序進行監(jiān)控和管理完成整個系統(tǒng)功能的協(xié)調(diào)運行。

  

  4.2 CAN總線擴展協(xié)議制定

  以太網(wǎng)數(shù)據(jù)轉(zhuǎn)CAN總線數(shù)據(jù)時,由于CAN總線數(shù)據(jù)比較少,能滿足以太網(wǎng)數(shù)據(jù)格式,而以太網(wǎng)向某CAN節(jié)點發(fā)送數(shù)據(jù)時,由于以太網(wǎng)數(shù)據(jù)據(jù)較多,遠超出CAN總線一幀數(shù)據(jù)格式,因此需要設計CAN應用層協(xié)議對以太網(wǎng)數(shù)據(jù)進行管理,CAN現(xiàn)場總線僅定義物理層和數(shù)據(jù)鏈路層,實際應用中,這兩層完全由硬件實現(xiàn),由于CAN總線底層協(xié)議沒有規(guī)定應用層,本身并不完整,而在基于CANBUS的分布式控制系統(tǒng)中,有些附加功能需要一個高層協(xié)議來實現(xiàn),結(jié)合CAN總線數(shù)據(jù)傳輸是按幀(11bit/29bit控制場+8字節(jié)數(shù)據(jù)場)傳輸?shù)奶攸c,應用于CAN總線的應用層協(xié)議可以適當?shù)睾喕捎脗鹘y(tǒng)的源/目的模式格式,結(jié)合CAN特有的雙濾波特性,可以實現(xiàn),點對點,以及多播或廣播等通信功能,其協(xié)議要素如圖5所示。

  

  結(jié)合協(xié)議模型,CAN控制器采用采用PeliCAN模式,充分利用其29位標示符,采用其中14位作為尋址標識符(包括目標地址,源地址各7位),其中8位標示符作為分段碼,以及剩余5位作為功能碼,如果用戶還需要其他功能的標示位則對各位自行定義可適當調(diào)整,具體格式如圖6所示。

  

  目標節(jié)點地址和源節(jié)點地址由7位二進制標示,最大可以訪問128個CAN節(jié)點,分段碼主要是完成數(shù)據(jù)傳輸過程中對命令請求、應答以及所傳輸?shù)臄?shù)據(jù)在整個報文中的序號及其標志等,具體格式如圖7所示,ACK為應答位,0表示本幀數(shù)據(jù)需要應答,一般用于命令幀,1表示應答幀,用于不需要應答的命令幀,SegPolo由2位二進制組成,表示分段表示符,SegNum用于記錄分段數(shù),SegPolo=00b表示本次數(shù)據(jù)傳輸沒有分段,此時SegNum=0×00,SegPolo=01b時表示為接到以太網(wǎng)批量數(shù)據(jù)的第一個分段,此時SegNum=0×01,SegPolo=10b時表示為中間數(shù)據(jù)段,SegNum沒傳輸一個數(shù)據(jù)加1,以記錄分段數(shù),SegPolo=11b時表示最后分段;功能碼由5位二進制數(shù)組成,共有32種情況,表示對報文功能的規(guī)定,可有用戶根據(jù)情況自行規(guī)定所表示的意義,報文數(shù)據(jù)由8個字節(jié)組成表示每幀CAN數(shù)據(jù)包中所載的數(shù)據(jù)。

  4.3 以太網(wǎng)與CAN總線數(shù)據(jù)轉(zhuǎn)換主程序設計

  主程序流程圖如圖8所示,以太網(wǎng)與CAN總線數(shù)據(jù)轉(zhuǎn)換主程序主要完成串口輸入程序、ARP網(wǎng)關解析程序、TCP數(shù)據(jù)處理程序、UDP數(shù)據(jù)處理程序、CAN總線數(shù)據(jù)處理程序,串行口程序主要完成對網(wǎng)絡相關參數(shù)的設置以及通過串口完成的網(wǎng)絡調(diào)試程序,如手工完成對其他網(wǎng)絡主機的Ping命令、UDP數(shù)據(jù)通信命令、TCP數(shù)據(jù)通信命令及ARP解析命令等;主程序還實時監(jiān)測對TCP協(xié)議的超時處理、TCP連接處理以及斷開處理,當有以太網(wǎng)數(shù)據(jù)接收時,首先判斷是否為ARP報文還是IP報文,如是ARP請求報文則需進行ARP應答等操作,如為IP報文則進一步區(qū)分是ICMP報文(PING命令)還是TCP報文或UDP報文;

  

  如有以太網(wǎng)數(shù)據(jù)接收,則轉(zhuǎn)換成相應CAN幀格式數(shù)據(jù)并轉(zhuǎn)發(fā)至對應地址的CAN節(jié)點,同時如有CAN節(jié)點發(fā)送數(shù)據(jù)則轉(zhuǎn)換成以太網(wǎng)數(shù)據(jù)格式并轉(zhuǎn)發(fā)至以太網(wǎng)服務器,從而完成以太網(wǎng)與CAN局域網(wǎng)數(shù)據(jù)相互轉(zhuǎn)換橋功能。

  5.小結(jié)

  在分布式控制系統(tǒng)中,隨著測控技術與網(wǎng)絡技術日益緊密的結(jié)合,測控系統(tǒng)接入互聯(lián)網(wǎng)己經(jīng)成為大勢所趨,這也促成了近年來嵌入式網(wǎng)絡技術的飛速發(fā)展,本文系統(tǒng)地提出了一種CAN總線與以太網(wǎng)互連系統(tǒng)的設計方案,轉(zhuǎn)換器通過CAN總線接口CAN局域網(wǎng)連接,通過以太網(wǎng)接口與計算機連接,可以實現(xiàn)可靠的CAN總線協(xié)議與以太網(wǎng)協(xié)議的高速數(shù)據(jù)通信。




關鍵詞: CAN總線以太

評論


技術專區(qū)

關閉