一種CAN總線(xiàn)與以太網(wǎng)互連系統的設計方案
1.前言
本文引用地址:http://dyxdggzs.com/article/201611/319437.htm在大型企業(yè)自動(dòng)化系統中,在上層企業(yè)管理層和生產(chǎn)監控層采用的都是以太網(wǎng)和PC機,而在下層車(chē)間現場(chǎng)都是采用現場(chǎng)總線(xiàn),如RS-485($14.5000)、CAN、lonWorks等,而連接上下兩層的溝通通常采用工業(yè)控制機加以太網(wǎng)卡再加上PC機插槽上的與現場(chǎng)總線(xiàn)對應的接口卡或并行打印口的EPP接口卡來(lái)實(shí)現,這種連接方式成本高,開(kāi)發(fā)周期長(cháng),接口卡成為系統上下兩層的通信瓶頸一旦出現故障上下兩層的聯(lián)系就將中斷;為此利用廉價(jià)的基于單片機的以太網(wǎng)-CAN網(wǎng)橋取代昂貴的工控機加接口卡,實(shí)現以太網(wǎng)和CAN總線(xiàn)網(wǎng)的直接連接具有重要意義。
2.系統方案設計
由于系統中有以太網(wǎng)網(wǎng)和CAN總線(xiàn)數據處理,因此需要采用大容量RAM進(jìn)行暫存網(wǎng)絡(luò )數據,采用集成有8KRAM和64K Flash的P89C668型高速控制器,如圖1所示,系統采用芯片RTL8019進(jìn)行網(wǎng)絡(luò )數據收發(fā),采用芯片SJA1000($2.8080)處理CAN總線(xiàn)數據,同時(shí)為了方便對轉換橋系統調試和進(jìn)行參數設置(CANID、CAN波特率,以太網(wǎng)物理地址,IP地址,網(wǎng)關(guān)地址,子網(wǎng)掩碼)和保存,增大系統使用的范圍和使用靈活性,系統還擴展串口通信RS232($780.5000)接口和24C256串口存儲電路。
3.系統硬件設計
3.1 以太網(wǎng)接口電路設計
以太網(wǎng)接口電路如圖2所示,電路中36腳~43腳為數據輸入輸出口直接連接到單片機P0口。RTL8019AS有三個(gè)分別反映其工作狀態(tài)的輸出腳,分別LED0、LED1、LED2,分別輸出網(wǎng)絡(luò )的連接性、數據發(fā)送和數據輸出狀態(tài);IOCS16是16位或8位I/O的選擇腳,當上電復位的時(shí),該引腳為低電平時(shí),網(wǎng)卡將選擇8位模式,為高電平時(shí),網(wǎng)絡(luò )控制器將選擇16位的模式,電路用了個(gè)電阻R9(27K)下拉,在復位時(shí)引腳為低電平,因此網(wǎng)卡選擇8位模式。由于RTL8019AS每個(gè)引腳(除AEN外)內部都有100K的下拉電阻置地,故當各引腳懸空時(shí)內部檢測為低電平,由圖2可知85腳、84腳、82腳、81腳分別懸空,從而選擇了基地址300H,因此電路擴展就要以此為基準來(lái)進(jìn)行配置,RTL8019AS地址線(xiàn)A19~A10固定接地,A9、A8定接P2.5作為地址選擇端有單片機來(lái)控制而不是用34腳AEN(直接接地)來(lái)作為地址選擇斷,將A7,A6,A5固定接地,A4~A0要根據所要訪(fǎng)問(wèn)的RTL8019AS寄存器地址不同而不同,從而由由P89C668的P2.0~P2.4來(lái)選擇RTL8019300H~31FH,因此對應P2口地址線(xiàn)變化范圍為0xE0-0xFF,由于僅有P2口來(lái)選擇地址,而P0口并沒(méi)有參與地址編址電路中單片機對RTL8019AS的尋址I/O并不是連續,程序中分別定義Reg00~Reg1F來(lái)分別對應300H~31FH端口,定義如下:
3.2 CAN總線(xiàn)的接口電路設計
如圖3所示,CAN總線(xiàn)的接口電路主要由P89C668處理器、CAN通信控制器SJA1000、CAN總線(xiàn)驅動(dòng)器82C250、高速光電耦合器6 N 1 3 7電路組成,微處理器P 8 9 C 6 6 8負責SJA1000初始化,通過(guò)控制SJA1000實(shí)現數據的接收和發(fā)送等通信任務(wù);為了增強CAN總結點(diǎn)的抗干擾能力,SJA1000的TX0和RX0通過(guò)高速光耦6N137($0.2160)后與82C250相連,實(shí)現了本節點(diǎn)在CAN總線(xiàn)上的電氣隔離,提高了本系統的硬件的穩定性和安全性;82C250的CANH和CANL引腳之間串連60歐姆(兩個(gè)120歐姆電阻并聯(lián))的電阻以消除電路中信號的反射等干擾,CANH和CANL與地之間并聯(lián)兩個(gè)30pF的小電容,起到濾除總線(xiàn)上的高頻干擾和一定的電磁輻射的能力,兩根CAN總線(xiàn)輸入端與地之間分別接了一個(gè)防雷擊管,當兩端輸入端與地之間出現瞬變干擾時(shí),通過(guò)防雷擊管的放電起到一定的保護作用,R18則為斜率電阻。
4.系統軟件設計
4.1 系統軟件總體設計
如圖4所示,根據以太網(wǎng)與現場(chǎng)總線(xiàn)CAN協(xié)議轉換功能可知系統軟件包括TCP/IP協(xié)議程序、CAN協(xié)議程序、RS232串行數據收發(fā)程序以及對以上三種協(xié)議程序進(jìn)行協(xié)議轉換和監控管理的應用管理程序;TCP/IP協(xié)議包括ARP(地址解析協(xié)議)、IP協(xié)議(網(wǎng)際協(xié)議)、ICMP(Internet互聯(lián)網(wǎng)控制報文協(xié)議)、TCP(傳輸控制)協(xié)議和UDP(用戶(hù)數據報)協(xié)議,ARP協(xié)議用于負責把一個(gè)IP地址映射成物理地址,即獲取對方或通知對方本主機物理地址的一個(gè)協(xié)議;IP協(xié)議主要功能是把源主機上的數據分組發(fā)送到互聯(lián)網(wǎng)中的任何一臺目標主機上;ICMP用于差錯報告和報文控制的協(xié)議,在本系統種主要完成ping命令請求和應答功能;UDP和TCP協(xié)議在工作時(shí)是建立在IP協(xié)議之上,UDP協(xié)議對每次輸出都生成一個(gè)UDP數據報,然后把生成的UDP數據報直接封裝在IP數據報中進(jìn)行傳輸,提供無(wú)連接的不可靠的數據報文服務(wù),而TCP協(xié)議提供面向連接的、可靠的數據流服務(wù);CAN協(xié)議用于將接收到的以太網(wǎng)數據轉換成一定格式的CAN協(xié)議格式的數據并轉發(fā)到目標節點(diǎn)以及從其他目標節點(diǎn)受到的數據轉換成TCP/IP協(xié)議格式數據;而RS232串口協(xié)議功能主要為系統調試和IP地址等參數進(jìn)行設置;各功能模塊由應用管理程序進(jìn)行監控和管理完成整個(gè)系統功能的協(xié)調運行。
4.2 CAN總線(xiàn)擴展協(xié)議制定
以太網(wǎng)數據轉CAN總線(xiàn)數據時(shí),由于CAN總線(xiàn)數據比較少,能滿(mǎn)足以太網(wǎng)數據格式,而以太網(wǎng)向某CAN節點(diǎn)發(fā)送數據時(shí),由于以太網(wǎng)數據據較多,遠超出CAN總線(xiàn)一幀數據格式,因此需要設計CAN應用層協(xié)議對以太網(wǎng)數據進(jìn)行管理,CAN現場(chǎng)總線(xiàn)僅定義物理層和數據鏈路層,實(shí)際應用中,這兩層完全由硬件實(shí)現,由于CAN總線(xiàn)底層協(xié)議沒(méi)有規定應用層,本身并不完整,而在基于CANBUS的分布式控制系統中,有些附加功能需要一個(gè)高層協(xié)議來(lái)實(shí)現,結合CAN總線(xiàn)數據傳輸是按幀(11bit/29bit控制場(chǎng)+8字節數據場(chǎng))傳輸的特點(diǎn),應用于CAN總線(xiàn)的應用層協(xié)議可以適當地簡(jiǎn)化,采用傳統的源/目的模式格式,結合CAN特有的雙濾波特性,可以實(shí)現,點(diǎn)對點(diǎn),以及多播或廣播等通信功能,其協(xié)議要素如圖5所示。
結合協(xié)議模型,CAN控制器采用采用PeliCAN模式,充分利用其29位標示符,采用其中14位作為尋址標識符(包括目標地址,源地址各7位),其中8位標示符作為分段碼,以及剩余5位作為功能碼,如果用戶(hù)還需要其他功能的標示位則對各位自行定義可適當調整,具體格式如圖6所示。
目標節點(diǎn)地址和源節點(diǎn)地址由7位二進(jìn)制標示,最大可以訪(fǎng)問(wèn)128個(gè)CAN節點(diǎn),分段碼主要是完成數據傳輸過(guò)程中對命令請求、應答以及所傳輸的數據在整個(gè)報文中的序號及其標志等,具體格式如圖7所示,ACK為應答位,0表示本幀數據需要應答,一般用于命令幀,1表示應答幀,用于不需要應答的命令幀,SegPolo由2位二進(jìn)制組成,表示分段表示符,SegNum用于記錄分段數,SegPolo=00b表示本次數據傳輸沒(méi)有分段,此時(shí)SegNum=0×00,SegPolo=01b時(shí)表示為接到以太網(wǎng)批量數據的第一個(gè)分段,此時(shí)SegNum=0×01,SegPolo=10b時(shí)表示為中間數據段,SegNum沒(méi)傳輸一個(gè)數據加1,以記錄分段數,SegPolo=11b時(shí)表示最后分段;功能碼由5位二進(jìn)制數組成,共有32種情況,表示對報文功能的規定,可有用戶(hù)根據情況自行規定所表示的意義,報文數據由8個(gè)字節組成表示每幀CAN數據包中所載的數據。
4.3 以太網(wǎng)與CAN總線(xiàn)數據轉換主程序設計
主程序流程圖如圖8所示,以太網(wǎng)與CAN總線(xiàn)數據轉換主程序主要完成串口輸入程序、ARP網(wǎng)關(guān)解析程序、TCP數據處理程序、UDP數據處理程序、CAN總線(xiàn)數據處理程序,串行口程序主要完成對網(wǎng)絡(luò )相關(guān)參數的設置以及通過(guò)串口完成的網(wǎng)絡(luò )調試程序,如手工完成對其他網(wǎng)絡(luò )主機的Ping命令、UDP數據通信命令、TCP數據通信命令及ARP解析命令等;主程序還實(shí)時(shí)監測對TCP協(xié)議的超時(shí)處理、TCP連接處理以及斷開(kāi)處理,當有以太網(wǎng)數據接收時(shí),首先判斷是否為ARP報文還是IP報文,如是ARP請求報文則需進(jìn)行ARP應答等操作,如為IP報文則進(jìn)一步區分是ICMP報文(PING命令)還是TCP報文或UDP報文;
如有以太網(wǎng)數據接收,則轉換成相應CAN幀格式數據并轉發(fā)至對應地址的CAN節點(diǎn),同時(shí)如有CAN節點(diǎn)發(fā)送數據則轉換成以太網(wǎng)數據格式并轉發(fā)至以太網(wǎng)服務(wù)器,從而完成以太網(wǎng)與CAN局域網(wǎng)數據相互轉換橋功能。
5.小結
在分布式控制系統中,隨著(zhù)測控技術(shù)與網(wǎng)絡(luò )技術(shù)日益緊密的結合,測控系統接入互聯(lián)網(wǎng)己經(jīng)成為大勢所趨,這也促成了近年來(lái)嵌入式網(wǎng)絡(luò )技術(shù)的飛速發(fā)展,本文系統地提出了一種CAN總線(xiàn)與以太網(wǎng)互連系統的設計方案,轉換器通過(guò)CAN總線(xiàn)接口CAN局域網(wǎng)連接,通過(guò)以太網(wǎng)接口與計算機連接,可以實(shí)現可靠的CAN總線(xiàn)協(xié)議與以太網(wǎng)協(xié)議的高速數據通信。
評論