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