張忠民,王艷龍
(哈爾濱工程大學 信息與通信工程學院,黑龍江 哈爾濱 150001)
?
基于VxWorks的CAN與千兆以太網互聯(lián)設計
張忠民,王艷龍
(哈爾濱工程大學 信息與通信工程學院,黑龍江 哈爾濱 150001)
隨著千兆網絡的逐步全面積覆蓋,現(xiàn)用的百兆網關工業(yè)設備將被淘汰。為改進現(xiàn)用的網關設備,文中提出了一種千兆網與現(xiàn)場總線的互聯(lián)設計。在硬件設計中,分為CAN模塊電路和千兆網模塊電路兩部分。AX88180和M88E1111為構成千兆網關模塊的主體器件;在軟件設計中,以VxWorks操作系統(tǒng)作為軟件平臺。利用Socket編程完成了網絡協(xié)議和CAN總線協(xié)議的相互轉化。通過測試證明,設計千兆網關的可實用性。
CAN;千兆以太網;協(xié)議轉換;VxWoks
ZHANG Zhongmin, WANG Yanlong
(School of Information and Communication Engineering, Harbin Engineering University, Harbin 150001, China)
控制器局域網(Contrller Area Network,CAN)技術最早由德國BOSCH研發(fā),最后形成了國際化標準ISO11898。國內引進CAN總線技術起始用于汽車領域。隨著技術的研究不斷加深,現(xiàn)在CAN總線已廣泛應用于自動化領域。由于現(xiàn)場總線的傳輸受到距離的制約。而由于網絡傳輸距離廣、成本低等特點。將以太網和現(xiàn)場總線互聯(lián)已是當今研究的熱題。隨著網絡發(fā)展的大幅度邁進,40/100 G標準的成功確立,現(xiàn)在千兆網幾乎全覆蓋,千兆網的應用覆蓋大多控制領域。百兆網會像十兆網一樣將面臨全面淘汰?,F(xiàn)在的工業(yè)設備網關還停留在十兆網網關或百兆網網關,這將和上層服務器造成嚴重的不匹配。所以,現(xiàn)有的網關設備必然面臨著淘汰的命運。本設計提出了CAN-千兆網網關的互聯(lián)。實現(xiàn)了CAN協(xié)議和網絡協(xié)議之間的轉換。為將來工業(yè)網關設備和上層服務器實現(xiàn)對等通信奠定了基礎[1]。
系統(tǒng)以模塊化為設計思路,本文設計的千兆網關模塊由嵌入式最小系統(tǒng)、CAN模塊電路、千兆網模塊電路組成,以VxWorks操作系統(tǒng)為平臺,實現(xiàn)TCP/IP協(xié)議和CAN總線協(xié)議的轉換。為了解析方便CAN和千兆網的傳輸方式采用透明的傳輸方式。系統(tǒng)的結構原理如圖1所示。
圖1 系統(tǒng)硬件原理圖
S3C2440最小系統(tǒng)由電源電路、時鐘電路、JTAG電路、存儲電路、Flash電路和串口電路6部分組成。在此不做過多介紹。本設計只對CAN模塊電路和千兆網模塊電路做出說明。
1.1 CAN接口電路設計
由于S3C2440內部不具有CAN控制器,需外部總線擴展CAN控制器。設計采用SPI總線外擴CAN控制器,所用芯片MCP2510[2-3]。CAN收發(fā)器采用CTM8250T,主要用作CAN控制器的邏輯電平轉換為CAN總線的差分電平,與常用的TJA1050T相比CTM8250T能將CAN總線的節(jié)點手法與高速光耦、電源隔離集成在一個電路模塊中,隔離電壓高達2 500 V,電路接口簡單、操作簡便[4]。具體接法是MCU SP1CS0和 /CS0 , SPICLK0接SCK,SPIMOSI接MCP2510的SI,SPIMISO接SO、RXCAN、TXCAN和CTM8250T的引腳對應相連,最為關鍵是對兩個單端信號單獨在末端并聯(lián)接到GND,由于每一條傳輸線上的差分信號分量傳輸?shù)钠婺W杩筞odd=60 Ω。進行阻抗傳輸匹配,吸收總線回波,保證最小的共模噪聲,確保CAN通信網絡的可靠性[5]。系統(tǒng)采用冗余CAN總線,增加的可靠性,用另一路SPI總線擴展CAN總線,與上述接法類似,不在贅述。
1.2 千兆網模塊電路設計
本設計千兆網采用總線形式的接入方式,即微處理器的數(shù)據總線、地址總線、控制線與MAC對應相連接。MAC與PHY采用RGMII(Reduced Gigabit Media Independent Interface)接口以減少接口引腳數(shù)量進而減少電路成本。采用VxWorks操作系統(tǒng)為平臺軟件部分主要編寫網絡驅動和CAN驅動,進而實現(xiàn)互聯(lián)。
S3C2440作為核心處理器,負責數(shù)據與控制處理,其與MAC層芯片AX88180(ASIX)采用16位總線形式連接。減少16根數(shù)據線,MAC層與PHY層芯片M88E1111采用RGMII接口[6],原理如圖2所示。
系統(tǒng)由AX88180 non-pci 千兆以太網控制器,千兆PHY M88E1111和千兆網絡變壓器H5062以及RJ45接口,組成千兆網絡電路,共有兩路網口實現(xiàn)可靠冗余,其中一路是總網口,另一路是冗余網口。其中,MCU到MAC采用同步16位總線模式,即MAC 的主時鐘HCLK由MCU 的clkout0提供,時鐘頻率100 MHz,片選CSN接MCU的/CS1,地址空間位0x08000000~0x10000000 。中斷引腳INTN接MCU eint0。GPIO 0接4.7 kΩ上拉。
圖2 千兆網接口原理圖
GPIO 1接地配置成16 bit little-endidan mode。MAC 采用2.5 V自供電模式。AX88180的REG_EN引腳接4.7 kΩ電阻上拉。使V25OUT輸出穩(wěn)定2.5 V電壓保持自供電。MCU 到MAC其他數(shù)據線、控制線的接法參照AX88180 datasheet 接法即可。MAC到Giga-PHY 采用RGMII接口,系統(tǒng)的125 MHz時鐘由PHY提供 保證同步,主網卡的PHY 地址為0x1f;模式為千兆百兆自適應。其余數(shù)據線控制線參照Datasheet接法即可。PHY 到Gigabit Ethernet Magnate 的接法四對差分對接到對應的差分對,中間抽頭總100 Ω的阻抗匹配,PHY到RJ45接口四對差分對。150 Ω的阻抗匹配,其余引腳的接法按照Datasheet 接法即可。冗余網卡的設計參照主網卡。
2.1 CAN總線驅動的實現(xiàn)
設計采用Vxworks操作系統(tǒng),CAN總線控制器MCP2510是SPI接口,SPI總線設備是以字節(jié)流的方式進行操作,可等效成字符設備進行驅動。對MCP2510寄存器的讀寫是通過SPI總線進行的。為防止發(fā)生報文競爭緩沖區(qū)的現(xiàn)象,編寫時宏定義兩個互斥信號量,一個作為接收緩沖區(qū)的接收信號量,另一個作為發(fā)送緩沖區(qū)的發(fā)送信號量,在每次讀寫之前必須先獲得信號量才能進行讀寫,保證前一次數(shù)據幀能讀寫完成[7],這樣做確保了幀數(shù)據的完整性和連續(xù)性。
2.1.1 CAN總線的數(shù)據接收
MCP2510有兩個接收緩沖區(qū),當獲得接收信號量時,若數(shù)據幀的ID符合內部接收濾波器的要求,同時將數(shù)據寫入接收緩沖區(qū)的數(shù)據,釋放信號量,清除硬件中斷,激活報文接收任務,并將接收到的數(shù)據拷貝到SDRAM中的循環(huán)緩沖區(qū)。當上層應用程序調用read()函數(shù)時,對接收緩沖區(qū)的數(shù)據進行讀寫[8-9]。
2.1.2 CAN報文發(fā)送流程
MCP2510 有3個發(fā)送緩沖區(qū), MCP2510的發(fā)送過程是被動過程,當發(fā)送任務獲取寫信號量,啟動MCP2510的發(fā)送過程,將數(shù)據發(fā)送到發(fā)送緩沖區(qū)。函數(shù)在返回前激活發(fā)送任務,通過SPI送入MCP2510內部的發(fā)送緩沖區(qū),然后令其發(fā)送。當上層應用程序調用 write()函數(shù),獲取發(fā)送互斥信號量。對發(fā)送緩沖區(qū)的數(shù)據進行發(fā)送報文[8-9]。
2.2 AX88180驅動的實現(xiàn)
網絡驅動的編寫,按照Vxworks END驅動模型編寫ax88180的驅動函數(shù),包括以太網的數(shù)據發(fā)送流程函數(shù)、網絡驅動裝載函數(shù)、網絡設備啟動函數(shù)、網絡中斷處理函數(shù)和網絡控制函數(shù)等。其中,中斷處理函數(shù)是整個驅動函數(shù)的核心。首先檢測是何觸發(fā)中斷,引起中斷觸發(fā)源有接收溢出、接收中斷、PHY中斷、發(fā)送不采用中斷模式,在任務中就進行發(fā)送處理[10]。
2.2.1 網絡報文的發(fā)送
數(shù)據幀的發(fā)送處理函數(shù),發(fā)送過程從底層看是被動過程,當上冊協(xié)議有要發(fā)送的數(shù)據時,立即進入發(fā)送函數(shù),發(fā)送的數(shù)據幀作為傳遞參數(shù),為增大發(fā)送效率在內部硬件建立發(fā)送緩沖區(qū),使用netMblkToBufCopy獲得發(fā)送的幀長度,完成blBlk等封裝結構和Cluster底層緩沖區(qū)的釋放工作,即將結構和Cluster重新放入“池”中[11],然后判斷環(huán)形緩沖區(qū)中tx_dec和txbs是否相等,相等表示緩沖區(qū)可用,可向緩沖區(qū)中發(fā)送數(shù)據。完成發(fā)送數(shù)據后要更新tx_dec和txbs的值,便于下次發(fā)送,圖3為發(fā)送函數(shù)的具體流程。
圖3 網絡報文的發(fā)送流程
2.2.2 網絡報文的接收
圖4 網絡報文的接收流程
通過netJobAdd注冊的函數(shù)ax88180_rx_handler完成數(shù)據幀的具體接收工作,當環(huán)形緩沖區(qū)有數(shù)據接收時,當數(shù)據有效,啟動度接收緩沖區(qū)命令,得到接收緩沖區(qū)的數(shù)據長度,要對數(shù)據長度進行有效的判定。更新邊界指針和接收指針的值,在遞交上層程序之前要將數(shù)據幀以mBlk,clBlk,Cluster的形式,期間涉及到mBlk,clBlk,Cluster的結構分配,然后完成底層數(shù)據幀向Cluster的復制,使用netclblktoJoin 和netMblkClJoin 完成mBlk,clBlk,Cluster連接成串,以便于向MUX層進行數(shù)據幀的傳遞[12-13],如圖4所示的接收流程顯示了數(shù)據幀的處理和上傳的詳細過程。
2.3 主程序設計
主程序主要完成協(xié)議的轉換,當上位機要檢查現(xiàn)場設備時,將網絡報文發(fā)送出去,對網絡報文進行處理,發(fā)送到CAN總線的緩沖區(qū),并發(fā)送至現(xiàn)場設備。當現(xiàn)場設備發(fā)送報文到上位機時。由CAN總線設備對報文進行發(fā)送,發(fā)送至主控制器,主控制器將CAN數(shù)據報文進行網絡封包處理,然后調用網絡發(fā)送程序,將報文發(fā)送至上位機,這樣就完成了協(xié)議的轉換[14],圖5具體轉換流程。
圖5 主程序流程
使用ZLG CANtest軟件,參數(shù)設置完成后,發(fā)送CAN報文,對CAN數(shù)據發(fā)送千兆網做測試。圖6表示CAN報文發(fā)送數(shù)據。
圖6 CAN發(fā)送的數(shù)據
對CAN數(shù)據接收到網絡緩沖區(qū),然后將CAN數(shù)據封裝成網絡包發(fā)送到服務器,圖7顯示了接收的網絡報文。
圖7 接收的網絡報文
用TCP&UDP工具發(fā)送報文,圖8表示報文。
圖8 發(fā)送的網絡報文
將網絡報文解析通過CAN口發(fā)出,用軟件抓到的數(shù)據如圖9所示。
圖9 CAN報文數(shù)據
圖6~圖9說明以太網和CAN協(xié)議轉換成功,完成了千兆以太網和CAN網絡的通信。
本設計是以經典的TCP/IP網絡協(xié)議、CAN總線協(xié)議、嵌入式理論和VxWorks理論為基礎,實現(xiàn)千兆網和CAN總線的互聯(lián)。完成了協(xié)議之間的轉換,并對工業(yè)設備網關進行了可靠地升級。
[1] 韋娟.工業(yè)以太網接入網關研究與應用[D].南京:南京理工大學,2010.
[2] 唐相龍,牛振波,劉振宇.在S3C2440AL擴展CAN總線接口電路的設計[J].中國新技術新產品,2010(21):34-34.
[3] 陶志東,周純杰,宋明權,等.基于S3C2410的CAN總線通信設計與開發(fā)[J].可編程控制器與工廠自動化,2006(1):68-71.
[4] 張忠民,鄔曉靜.基于LPC2294的CAN與以太網網關互聯(lián)的設計[J].電子科技,2013,26(6):140-144.
[5] 劉濤.CAN總線接口電路設計中的關鍵問題[J].工礦自動化,2007(1):100-101.
[6] 張磊,何昕,魏仲慧,等.基于千兆網接口的星敏感器圖像顯示與存儲[J].液晶與顯示,2015, 30(1):114-119.
[7] 李延偉,陳欠根,朱毅.嵌入式操作系統(tǒng)VxWorks下CAN驅動程序開發(fā)[J].Industrial Control Computer,2006(10):30-32.
[8] 江海峰,張劍英,孔明坤.基于VxWorks的CAN-Ethernet嵌入式網關的設計與實現(xiàn)[J].計算機工程與應用,2007,43(29):107-109.
[9] 楊君,孫漢旭,賈慶軒,等.Vxworks下的冗余CAN通訊模塊設計[J].微計算機信息,2007,23(29):43-44.
[10] 呂佳彥,楊志義,於志文,等.VxWorks增強型網絡驅動程序(END)的分析與實現(xiàn)[J].計算機應用研究,2005,22(4):200-202.
[11] 張曉華,李智濤,徐釗.VxWorks網絡協(xié)議棧的MUX接口[J].單片機與嵌入式系統(tǒng)應用, 2002(5):22-24.
[12] 張宇坤,袁冬莉,黃鑫鑫,等.基于 VxWorks 的網卡驅動程序開發(fā)[J].計算機技術與發(fā)展,2013,23(1):18-20,24.
[13] 曹桂平. VxWorks設備驅動開發(fā)詳解[M].北京:電子工業(yè)出版社,2011.
[14] 徐建寧,劉衛(wèi)東,姬巖鵬,等.基于CAN總線與以太網的嵌入式網關設計[J].測控技術,2006, 25(10):49-52.
Design of the Interconnecting Gateway Between CAN and Gigabit Ethernet Based on VxWorks
A design of the interconnection between Gigabit ethernet and CAN bus is proposed to improve the performance of current industrial gateway equipment. The hardware consists of the CAN circuit module and the Gigabit gateway circuit module with ax88180 and m88e1111 as the major components. The software is based on the VxWorks RTOS platform. The socket programming is employed to realize the protocol conversion between Ethernet and CAN Bus. Tests verify that the design of Gigabit gateway is feasible.
CAN; gigabit ethernet; protocol conversion; VxWorks
2016- 01- 04
王艷龍(1989-),男,碩士研究生。研究方向:電路與系統(tǒng)。
10.16180/j.cnki.issn1007-7820.2016.10.019
TP393.11
A
1007-7820(2016)10-065-04