《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 基于PIC單片機的CAN-以太網協議轉換器的設計

基于PIC單片機的CAN-以太網協議轉換器的設計

2009-02-23
作者:蘇義鑫1, 王 軍1, 何 力2

??? 摘??要: 為了通過以太網遠程監控基于CAN總線的工業控制系統,設計了一個CAN-以太網協議轉換器。TCP/IP傳輸層的協議選擇UDP協議,用單片機實現CAN與UDP協議之間的轉換。
??? 關鍵詞: CAN; UDP; 協議轉換; 單片機

?

  隨著計算機技術、現場總線技術及信息技術的發展,CAN(Controller Area Network)總線在工業控制中的應用越來越普遍。CAN總線能實現現場各類儀表相互間的通信,但其遠程通信能力較弱。而以太網作為當今的主流網絡,具有很強的遠程通信能力。為了融合這兩類網絡的技術優勢,實現CAN總線網絡與以太網的數據互聯,必須設計CAN-以太網協議轉換器。
  本文提出一種設計CAN-以太網協議轉換器的方法,用16位PIC單片機設計一種CAN總線協議與TCP/IP協議的轉換網關。由于所針對的傳輸層協議是UDP(User Datagram Protocol),因此,實際上設計的是CAN總線協議與UDP協議的轉換網關。
1 CAN-以太網協議轉換器的系統結構
  系統主要由CAN通信模塊以太網通信模塊和協議轉換模塊三部分構成,通過一個16位的PIC單片機相連。CAN通信模塊主要用于采集現場儀表的數據和與協議轉換模塊之間的數據傳遞;以太網通信模塊主要負責協議轉換模塊與以太網之間的數據傳輸;協議轉換模塊是將CAN協議數據包與UDP協議數據包進行轉換。
  當現場儀表有數據要傳送到以太網上的工控機時,CAN通信模塊會采集CAN節點的數據,放入數據緩沖區;協議的轉換由PIC單片機完成,它將數據緩沖區CAN協議數據包轉換成UDP協議數據包,最后由以太網通信模塊發送給以太網。當控制命令或數據要從以太網傳送給現場儀表時,以太網通信模塊將接收以太網上的數據包,并放入數據緩沖區;然后協議轉換模塊把從以太網上接收到的UDP協議數據包轉換成CAN協議數據包;最后通過CAN通信模塊,將數據包發送給相應的現場儀表,從而實現對現場儀表的遠程控制。
2 硬件設計
  CAN-以太網協議轉換器的硬件主要由兩部分組成:CAN通信模塊接口電路和以太網通信接口電路。協議轉換主要通過單片機進行編程實現。
2.1 CAN通信模塊接口電路設計
  CAN通信接口電路主要由主控芯片PIC24FJ64GA008、CAN總線控制器SJA1000、CAN總線收發器82C250和高速光耦6N137組成,其接口電路如圖1所示。PIC24FJ64GA008單片機初始化CAN總線控制器SJA1000,并通過讀寫SJA1000的數據緩沖區實現CAN幀信息的接收和發送。CAN總線控制器SJA1000實現CAN總線數據鏈路層協議。總線收發器82C250將CAN協議控制器與物理通信線路連接在一起。高速光耦6N137用于隔離,起到保護SJA1000型CAN總線控制器的作用。接口電路主要用到了單片機的并行主控端口模塊,它能夠很方便地實現與并行外設的連接。通過對并行端口控制寄存器(PMCON)和并行端口模式寄存器(PMMODE)進行適當的配置,使并行主控端口模塊的8位地址線與數據線復用,并提供鎖存信號PMALL、片選信號、讀信號、寫信號PMWR[1]。連接時將SJA1000的AD7~AD0腳與單片機的PMD[7..0]相連,用于傳送地址和數據。單片機通過引腳PMALL、控制SJA1000的ALE、引腳,實現對SJA1000的讀寫控制。若片選信號與SJA1000的片選引腳相連,使SJA1000的基地址為0X8000,則SJA1000內部的32個寄存器的地址為:0X8000~0X801F。單片機的引腳與SJA1000的引腳INT相連,由于SJA1000的引腳是集電極開路輸出,因此需要加上拉電阻,這樣單片機就可以通過中斷方式讀寫SJA1000中的數據緩沖區[2]

?

2.2 以太網接口電路設計
  以太網接口電路用到的主要芯片有單片機PIC24FJ64GA008、以太網控制器RTL8019AS、鎖存器74LS373、存儲器93LC46、隔離濾波器20F001N。RTL8019AS是臺灣Realtek公司生產的以太網控制器,符合Ethernet II和IEEE802.3標準,收發速率可同時達到10Mb/s,內部有16K BRAM。接收數據和發送數據需通過DMA(Direct Memory Access)讀寫RTL8019AS的內部RAM來實現,單片機讀寫RAM時使用的是遠程DMA,RTL8019AS讀寫RAM時使用的是本地DMA。其接口電路如圖2所示[3],圖中,RTL8019AS的數據線SD[7..0]與單片機的PMD[7..0]相連,地址線SA9、SA8與PMCS1相連,低五位地址SA4~SA0與74LS373的Q[4..0]相連。93LC46是三線SPI串行接口EEPROM,主要保存RTL8019AS的配置信息,其00H~03H地址空間用于存儲RTL8019AS的配置寄存器CONFIG1~4的初始化值;04H~11H地址空間存儲網絡節點的地址;12H~7FH地址空間存儲即插即用的配置信息。若00H單元的值為0X00,RTL8019AS在復位后會自動讀取93LC46,這樣配置寄存器CONFIG1的值為00H,低四位IOS3~0的值為0,而當IOS[3..0]=0時,RTL8019AS的I/O端口的基地址為300H。因為RTL8019AS的地址為20位,所以其I/O口的地址空間為00300H~0031FH。據此,在接線時將SA19~SA10直接接地,SA9~SA8與PMCS1相連,SA7~SA5接地,當PMCS1=1時就可以選中芯片RTL8019AS。PMCS1是單片機的ADDR14,因此,RTL8019AS的內部地址空間00300H~0031FH的外部映射地址是4000H~401FH。RTL8019AS的IOCS16B引腳通過27k?贅的電阻下拉接地,將數據總線定義為8位[2,4]

?

  RTL8019AS內置了10BASE-T收發器,可以通過雙絞線進行以太網通信。TPIN±為接收線,TPOUT±為發送線,經隔離濾波器20F001N后分別與RJ-45的RX±、TX±相連接。
??? LED0和LED1各接一個發光二極管以反映通信狀態,LED0被點亮表示通信沖突,LED1被點亮表示收到了網上的數據包。
3 軟件設計
??? 軟件主要分為三部分:CAN通信程序、以太網通信程序和CAN-UDP協議轉換程序。軟件設計的整體思路為:當現場儀表有數據要發送到以太網時,首先由CAN通信程序采集現場儀表的CAN協議數據包,并存放在緩沖區Buffer1中,然后調用CAN-UDP協議轉換程序將CAN協議數據包封裝成UDP數據包,最后由以太網通信程序發送到以太網的應用層。反之,當以太網上的數據要發送給某個CAN節點時,以太網通信程序首先將以太網傳輸層的UDP數據包放入緩沖區Buffer2,然后調用協議轉換程序將UDP數據包轉換成CAN協議數據包,最后調用CAN通信程序將緩沖區Buffer2中的數據發送到CAN總線上的指定節點。
3.1 CAN通信程序
??? CAN通信網絡是根據CAN協議2.0A構建的,SJA1000工作在BasicCAN模式。CAN通信程序主要由以下幾部分構成:SJA1000初始化程序Config_SJA1000( )、讀寫SJA1000內部寄存器程序Read_SJA1000( )和Write_SJA1000( )、CAN發送程序BCAN_DATA_SEND( )、CAN接收程序BCAN_DATA_RECEIVE( )。
??? Config_SJA1000( )程序主要完成波特率的設置、CAN節點地址的設定、驗收屏蔽寄存器AMR的設置、中斷寄存器IR的設置以及命令寄存器CMR的設置。為了確保CAN通信正常,CAN總線所有節點的波特率必須相同。當發送CAN協議數據包給CAN節點時,執行BCAN_DATA_SEND( )函數,該函數通過調用Write_SJA1000( )子程序,將待發送的數據寫入CAN的數據發送寄存器,從而實現發送。當SJA1000接收到CAN節點的數據時,通過單片機的外部中斷INT2向單片機申請中斷,單片機在INT2的中斷服務程序中會調用CAN接收程序,由CAN接收程序調用Read_SJA1000( ),將SJA1000數據接收緩沖區中的數據讀到單片機的數據緩沖區Buffer1中。
3.2 CAN-UDP協議轉換程序
??? CAN-UDP協議轉換程序主要負責將數據緩沖區Buffer1中的CAN協議數據包封裝成UDP數據包;同時也會從以太網的傳輸層上接收UDP數據包,然后封裝成CAN協議數據包,存入數據緩沖區Buffer2。UDP協議的幀格式如圖3所示。

?


  源端口號(2B):發送進程的端口,即假定在沒有其他信息的情況下,返回信息應該向什么地方發送。

??? 目標端口號(2B):UDP數據包的接收端號。
  數據報長度(2B):包括報頭和數據報在內的總字節數。
  校驗值(2B):對IP頭、UDP頭和數據中信息包頭的數位取反之和再取反。源端口號、目標端口號、數據報長度和校驗值構成UDP報頭。
  UDP數據:是實際的傳輸信息,數據的最大長度可達到65 527 字節。在傳輸過程中數據字節設為8B,且第一個數據字節為CAN節點的地址。CAN數據包幀格式如圖4所示。

?

  地址(1B):8位標識符,表示發送數據或接收數據的節點地址。字節數(1B):數據報和校驗和的字節數之和,固定值設為8。數據報(8B):前7個字節為傳送的實際信息,第8個字節為校驗和。
  將UDP協議數據包轉換成CAN協議數據包時,單片機將UDP數據包的報頭去掉,將第1個數據字節作為CAN協議包的第1個字節,UDP的第3個數據字節~第10個數據字節作為CAN協議包的第3字節~第10字節,UDP的第2個數據字節作為CAN協議包的第2個字節,固定值設為8,最后將轉換好的數據包發送出去。將CAN協議數據包轉換成UDP協議數據包時,單片機要給UDP協議數據包加上報頭。數據報的轉換過程與上述過程類似,不再贅述。
3.3 以太網通信程序
  以太網通信程序主要由RTL8019AS的初始化程序、數據接收函數和數據發送函數組成。系統上電后,先執行RTL8019AS的初始化程序,該子程序主要是對RTL8019AS中第0頁和第1頁的相關寄存器進行設置;然后程序對RTL8019AS數據發送寄存器、接收寄存器進行檢測,當數據緩沖區Buffer1有數據向以太網發送時,單片機通過遠程DMA通道將數據送到RTL8019AS的RAM中,然后發出傳送命令;之后RTL8019AS啟動本地DMA,將數據發送到以太網上。 反之,當以太網上有數據要傳給CAN節點時,先啟動本地DMA,將網上的數據讀到RTL8019AS的RAM中,然后單片機通過遠程DMA通道將RAM中的數據讀到緩沖區Buffer2。
  本文設計了一款價格低廉、性能可靠的CAN—以太網協議轉換器,為部分工業控制系統的遠程監控設計提供了一種新的選擇方案。


參考文獻
[1]?Microchip Technology Inc.PIC24FJ128GA系列數據手冊.2006.
[2]?Philips Semiconductors. SJA1000 datasheet.2000.
[3]?曹宇,魏豐,胡士毅.用51單片機控制RTL8019AS實現以太網通訊[J]. 電子技術應用,2003,29(1):21-23.
[4]?REALTEK. Realtek RTL8019AS datasheet.2005.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
91久久亚洲| 欧美在线观看网址综合| 国产日韩欧美在线| 欧美网站在线观看| 欧美午夜理伦三级在线观看| 欧美激情小视频| 久热这里只精品99re8久| 欧美在线视频网站| 羞羞漫画18久久大片| 亚洲综合视频在线| 亚洲在线一区二区| 亚洲欧美在线高清| 午夜精品久久久久久久久 | 亚洲国产一区二区三区在线播| 亚洲欧美日韩区| 亚洲男人影院| 午夜在线精品| 久久av二区| 亚洲第一在线综合在线| 亚洲日韩视频| 一二美女精品欧洲| 亚洲欧美日韩一区二区三区在线观看| 亚洲欧美不卡| 欧美一区亚洲| 久久乐国产精品| 欧美aa国产视频| 欧美精品自拍偷拍动漫精品| 欧美日韩一区二区三区在线视频| 欧美日韩视频一区二区| 国产精品久久久久久久久果冻传媒 | 亚洲欧美日韩一区在线| 午夜精品久久久久影视| 久久国产一区| 日韩一区二区精品葵司在线| 亚洲香蕉伊综合在人在线视看| 亚洲欧美日韩区| 久久精品国产第一区二区三区最新章节 | 欧美精品黄色| 国产精品大全| 国产日产亚洲精品| 在线观看日产精品| 99精品欧美一区二区三区| 亚洲伊人色欲综合网| 亚洲高清毛片| 亚洲一区二区三区四区视频| 欧美在线观看一区二区三区| 美女图片一区二区| 欧美午夜一区二区福利视频| 国产女主播在线一区二区| 在线成人av| 亚洲天堂成人在线视频| 亚洲第一综合天堂另类专| 亚洲最新合集| 久久精品123| 欧美精品久久久久久久免费观看| 欧美性理论片在线观看片免费| 国产欧美一区二区精品性色| 亚洲电影天堂av| 这里只有视频精品| 亚洲国产精品精华液2区45| 国产精品99久久99久久久二8| 欧美伊人精品成人久久综合97 | 欧美岛国激情| 国产精品日日摸夜夜添夜夜av| 影音先锋一区| 亚洲一区二区高清| 亚洲精品午夜精品| 久久国产直播| 欧美视频在线一区| 在线免费日韩片| 亚洲免费在线观看| 亚洲六月丁香色婷婷综合久久| 欧美专区在线播放| 欧美日韩一二三四五区| 精品不卡一区| 亚洲欧美日产图| 夜夜爽av福利精品导航| 久久在线视频在线| 国产精品久久看| 亚洲娇小video精品| 欧美一区二区精品在线| 国产精品99久久久久久久女警| 久久理论片午夜琪琪电影网| 欧美网站在线观看| 亚洲国产小视频| 久久精品女人的天堂av| 亚洲欧美在线一区| 欧美日本一区| 1024国产精品| 久久精品99无色码中文字幕| 亚洲在线免费| 欧美日韩久久不卡| 亚洲欧洲精品一区二区| 久久精品久久99精品久久| 欧美一区成人| 欧美亚州在线观看| 亚洲美女黄网| av成人福利| 欧美成人四级电影| 一区视频在线看| 欧美一区激情视频在线观看| 午夜精品久久久久久久白皮肤| 欧美日韩一区二区免费在线观看| 亚洲国产精品高清久久久| 亚洲大胆女人| 久久久久久久久久久成人| 国产伦精品一区二区三区在线观看| 一本综合精品| 亚洲视频在线观看视频| 欧美日韩激情网| 亚洲日本一区二区| 亚洲精品偷拍| 欧美成人一区二区三区在线观看| 激情久久影院| 久久精品夜夜夜夜久久| 久久久亚洲国产美女国产盗摄| 国产日韩欧美亚洲一区| 欧美亚洲视频| 久久激五月天综合精品| 国产日韩欧美成人| 欧美一区二区视频在线| 久久久久www| 激情五月***国产精品| 亚洲国产成人av好男人在线观看| 久久久免费精品视频| 国内视频一区| 亚洲国产欧美国产综合一区| 欧美成人精品| 亚洲人人精品| 亚洲一区在线直播| 国产精品免费小视频| 亚洲欧美日韩精品一区二区| 亚洲欧美日韩人成在线播放| 国产精品青草久久久久福利99| 亚洲女女做受ⅹxx高潮| 久久成人精品无人区| 国内精品视频一区| 亚洲人成精品久久久久| 欧美激情在线有限公司| 99精品热视频| 欧美亚洲免费| 激情综合色综合久久综合| 亚洲区中文字幕| 欧美日韩黄视频| 亚洲自拍偷拍网址| 久久亚洲私人国产精品va媚药| 亚洲第一视频| 亚洲亚洲精品三区日韩精品在线视频 | 亚洲免费在线观看视频| 国产欧美一区二区三区在线看蜜臀| 欧美伊人久久久久久久久影院 | 欧美日韩一区在线观看视频| 一区二区三区四区精品| 欧美一区国产在线| 国内揄拍国内精品久久| 亚洲九九九在线观看| 欧美日韩在线直播| 性欧美video另类hd性玩具| 蜜桃精品一区二区三区 | 一区二区三区欧美| 欧美一区二区三区在线播放| 国语精品中文字幕| 一区二区三区成人精品| 国产精品自拍网站| 91久久精品网| 国产精品电影网站| 亚洲高清久久网| 国产精品wwwwww| 亚洲国产成人tv| 欧美午夜www高清视频| 欧美一级免费视频| 欧美理论视频| 亚洲欧洲av一区二区| 免费在线观看日韩欧美| 宅男噜噜噜66一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 99re这里只有精品6| 久久人体大胆视频| 一区二区三区免费观看| 美女网站久久| 亚洲主播在线观看| 欧美激情一区三区| 欧美一区二区观看视频| 欧美精品免费在线| 欧美一区二区三区在线视频 | 欧美成人精品在线观看| 亚洲伊人色欲综合网| 欧美国产精品劲爆| 欧美一级淫片aaaaaaa视频| 欧美日韩高清不卡| 久久精品一区二区三区四区| 国产精品www994| 亚洲精品视频二区| 国产主播精品| 午夜精品福利视频| 亚洲精品永久免费精品| 美女视频网站黄色亚洲| 午夜日韩在线| 国产精品久久久久高潮| 亚洲美女免费精品视频在线观看|