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