[導讀]CAN總線到Ethernet網的網關研究實現
引言
CAN總線是一種開放式、數字化、多點通信的控制系統(tǒng)局域網絡,是當今自動化領域中最具有應用前景的技術之一。由于CAN總線具有通信速率高、開放性好、報文短、糾錯能力強以及控制簡單、擴展能力強、系統(tǒng)成本低等特點,越來越受到人們的關注。以太網具有快速、靈活、方便、可靠的特長,如果把現場總線與以太網互聯的話,可實現過程控制中從設備層到管理層的一體化,使得企業(yè)可以廣泛地應用如互聯網、無線通信、智能設備和決策支持系統(tǒng)等新技術,以達到提高效率和降低成本的目的。
硬件設計
硬件選擇
要實現現場總線設備接入Internet,關鍵就是要實現TCP/IP 協議、以及傳輸信息介質的選擇。筆者用SX52微控制器作為處理器, 以太網驅動芯片RTL8019AS經耦合隔離濾波器HR61101G和RJ45接口接入以太網,配有RS232和CAN總線兩個擴展接口,可以將具有RS232接口的設備或采用CAN總線協議通信的設備連到以太網上。RS232接口采用MAX232CPE芯片,CAN總線控制器采用Philips公司的SJA1000芯片,CAN收發(fā)器采用PCA82C250芯片。硬件結構框圖見圖1。
圖1 硬件結構框圖
工作原理為:當以太網中發(fā)送數據和請求,通過RJ45送到RTL8019AS,RTL8019AS 負責將處理后的以太網幀送入SX52的TCP/IP協議棧,由協議棧對數據報進行解析,得到原始的請求和控制信息。請求和控制信息再經過SJA1000進行CAN協議格式的數據封裝,然后和現場的CAN總線設備進行通信。請求和控制的回復信息到局域網的過程與上面正好相反。
硬件電路圖
在CAN到Ethernet網關的硬件設計中,在確保通信功能順利實現的同時,充分利用了SX52芯片I/O口靈活配置的特點,最大程度地節(jié)約了微控制器SX52的硬件資源。其電路簡圖見圖2。
圖2 電路簡圖
SX52有5個I/O口共40個引腳,在設計中利用SX52的C口的RC0~RC7連接RTL8019AS的數據口SD0~SD7,SX52的B口兼顧選址和讀寫控制功能,在開發(fā)中用它與RTL8019AS 的地址及讀寫控制引腳連接。RTL8019AS 基地址選擇引腳IOS0~ IOS3接地,此時I/O基地址為300H,即001100000000,所以地址線SA9、SA8接+ 5V。又因為寄存器地址偏移量為00H~1FH 共32個,對應地址從300H到31FH,所以只需將地址線SA0~SA4接SX52 的RB0~RB4,其余地址線接地即可。芯片IORB、IOWB引腳為讀寫信號線,接SX52的RB6、RB5讀寫控制引腳。RTL8019AS 可以兼容8位和16位操作。圖2中IOCS16是16位I/O的選擇腳,當RTL8019AS上電復位的時候,如果這個腳為低電平,選擇8位模式,為高電平選擇16位模式。由于SX52是8位的數據總線,因此要用8位總線模式,所以將這個腳接地。RTL8019AS有3種工作方式,筆者采用第一種工作方式,此時JP 引腳接高電平。AUI引腳決定使用AUI還是BNC接口。高電平時使用AUI 接口,低電平時使用BNC接口,支持8線雙絞線或同軸電纜。設計中采用雙絞線為通信介質,將該引腳接地。RTL8019AS 使用引腳TPIN+ 、TPIN- 、TPOUT+和TPOUT-連接耦合隔離濾波器HR61101G,通過RJ45插頭實現與以太網的連接。SJA1000是獨立的CAN 通信控制器, 支持CAN2.0B協議。它的AD0~AD7為地址數據復用線,與SX52的D口RD0~RD7相連。當遠程用戶通過Web服務器查詢現場的CAN總線數據時,SJA1000將現場控制單元的CAN 總線數據解析,發(fā)送到SX52,再傳到Internet。PCA82C250對總線提供發(fā)送能力并對CAN控制器提供接收能力,它支持1Mbps的速度。為保證SX52與SJA1000協同工作,在硬件設計中將兩個芯片共用一個硬件復位線,以確保SX52與SJA1000硬件同步復位。MAX232CPE完成232電平與TTL電平轉換。用于提供一個本地接口,為調試和維護提供方便。TXD接SX52的RA2腳,RXD接SX52的RA3腳,RS—RXD和RS—TXD是RS232電平,為標準串口電平。數據可以從串口輸入到單片機SX52,SX52再把數據送到RTL8019AS。
網關的軟件設計
整個互聯系統(tǒng)的軟件設計可以分為3個部分:CAN總線設備接口通信程序、網關協議轉換程序和基于以太網的TCP/IP協議的程序實現。
網關協議轉換程序
網關協議轉換程序的整體設計思路為:當以太網應用層有數據要發(fā)送到CAN節(jié)點時,首先,數據發(fā)送到網關,由以太網控制器協議轉換模塊從UDP數據報文中解析出完整的CAN 協議數據包,存放在數據緩沖區(qū)A,再調用CAN 控制器協議模塊將它發(fā)送到CAN 總線上。反過來,當CAN 設備有數據要發(fā)送到用戶層時,首先數據發(fā)送到網關,由CAN控制器協議模塊將完整的CAN 協議數據包存放在數據緩沖區(qū)B,再調用以太網控制器協議轉換模塊將完整的CAN協議數據包作為應用層數據封裝發(fā)送到以太網應用層。[!--empirenews.page--]
CAN 控制器協議模塊
CAN 控制器協議轉換模塊程序主要由SJA1000的寄存器讀、寫程序,初始化程序和發(fā)送、接收程序5 個子程序組成。之所以要編寫單獨的SJA1000寄存器讀、寫子程序,這是由SX52 芯片只有I/O端口的特點所決定的。
(1) 讀SJA1000 寄存器子程序CANRead()其過程為:Re引腳設為輸出;CS片選清零;Rd引腳設為輸出;輸出地址;置位ALE;延時20 ns ;ALE位清零;Rd 引腳設為輸入;/Read 位清零;讀入數據;延時20ns ;/Read 位置位;CS片選置位;返回。
(2) 寫SJA1000寄存器子程序CANWrite()其過程為:Re引腳設為輸出;CS片選清零;置位ALE;Rd 引腳設為輸出;輸出地址;ALE位清零;/wr位清零;輸出數據;延時20ns;CS片選置位; 返回。
(3) SJA1000初始化子程序CANInit()選用CAN2.0A協議構建CAN總線控制網絡,對SJA1000的初始化主要完成控制寄存器CR、驗收代碼寄存器ACR、驗收屏蔽寄存器AMR、總線定時寄存器BTR0,1和輸出控制寄存器OCR的設置。
(4) 發(fā)送接收子程序txdsub(),rxdsub()發(fā)送子程序負責節(jié)點報文的發(fā)送,由CAN控制器SJA1000獨立完成。主控制器SX52只需將數據緩沖區(qū)A中已按CAN2.0A協議格式組合成的一幀報文送入SJA1000 發(fā)送緩沖區(qū)中,然后將命令寄存器里的發(fā)送請求標志置位,即可發(fā)送報文。
接收子程序負責節(jié)點報文的接收。SJA1000自動接收發(fā)往該節(jié)點的數據并將收到的數據放到它的接收緩沖器中。SJA1000 的報文接收主要有兩種方式:中斷接收方式和查詢接收方式。該系統(tǒng)采用查詢接收方式??梢园l(fā)送給主控制器SX52的接收信息由狀態(tài)寄存器的接收緩沖器狀態(tài)標志RBS和接收中斷標志RI 標出。SX52將會把這一幀數據包存入數據緩沖區(qū)B中,然后釋放接收緩沖器,再通知總調度程序,由總調度程序調用以太網控制器協議轉換模塊轉發(fā)。
以太網控制器協議轉換模塊
以太網控制器協議轉換模塊主要負責從UDP數據包中解析出完整CAN協議報文,存入數據緩沖區(qū)A。同時,將數據緩沖區(qū)B中的完整CAN協議報文封裝成UDP數據報后發(fā)送到以太網上。采用UDP協議是考慮到CAN 協議數據報為短幀形式(每個數據幀最多為8個字節(jié)),因為TCP協議要進行3次握手建立連接,這對網絡來說無疑是一種資源的浪費。而UDP是無連接的傳輸,這樣可以提高網絡傳輸效率,同時,也減輕網關的處理任務。當然,UDP是不可靠的傳輸協議。為了提高通信的可靠性,在應用層建立回傳校驗機制,通過實驗
測試表明這種方式是行之有效的。以太網控制器協議轉換模塊主要由若干個ARP、UDP協議的API函數組成。
TCP/IP應用層程序設計
基于以太網的高層通信協議一般采用TCP/IP協議。這里采用流行的SOCKET套接字編程,傳輸層協議選擇UDP(用戶數據報協議),通過VisualC++編寫應用層程序。WinSock提供了對UDP的支持,通過UDP協議可以向指定IP 地址的網關發(fā)送CAN 協議數據,同時也可以從它接收CAN協議數據,發(fā)送和接收方處于相同的地位沒有主次之分。利用CAsyncSocket類操縱無連接的數據發(fā)送較簡單,首先生成一個本地套接口,然后利用int CAsyncSocket : : SendTo ( constvoid 3 1pBuf , int nBufLen , UINT nHostPort , LPCTSTR1pszHostAddress = NULL ,int nFlags = 0) 發(fā)送數據,intCAsyncSocket : : ReceiveFrom ( void 3 1pBuf , int nBufLen ,CString & rSocketAddess ,UINT & rSocketPort , intnFlags = 0) 接收數據。利用UDP 協議發(fā)送和接收都可以是雙向的,即管理主機和SX52網關都可以發(fā)送和接收數據。在程序設計中,創(chuàng)建了一個CAsyncSocket 派生類CCanSocket ,該派生類CCanSocket 有若干成員函數,通過這些類成員函數,可以很方便地實現CAN總線到Internet 的通信。
結 論
隨著Internet技術的日益成熟測控系統(tǒng)網絡和以太網將漸漸融合。CAN總線到Internet的互聯網關的設計研究是一項具有重要意義的工作,它有非常廣闊的應用前景。
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
汽車電子系統(tǒng)架構發(fā)生了顛覆性變化。它已經持續(xù)了近十年,現在正在加快速度。這主要發(fā)生在 BEV 初創(chuàng)公司中,因為它們沒有歷史限制或根深蒂固的喜愛設計,并且可以從電子架構的零基礎開始。
關鍵字:
CAN總線
電動汽車
在電子產品的設計中,電磁兼容EMC性能對系統(tǒng)的影響非常大,關系到其能正常穩(wěn)定運轉。世界上已經開始對電子產品的電磁兼容性做強制性限制,電磁兼容性能已經成為產品性能的一個重要指標。
電磁兼容主要有兩方面的內容,一個是產...
關鍵字:
CAN總線
電磁兼容EMC
CAN 是Controller Area Network 的縮寫(以下稱為CAN),是ISO國際標準化的串行通信協議。在汽車產業(yè)中,出于對安全性、舒適性、方便性、低功耗、低成本的要求,各種各樣的電子控制系統(tǒng)被開發(fā)了出來。...
關鍵字:
CAN總線
CAN 抗噪
CAN總線首先在汽車上得到了廣泛應用,之后又在工業(yè)生產領域有了很大發(fā)展,那么面對不同的應用場景和工況,如何選擇合適的網絡拓撲結構慢慢成為一個讓人頭疼的問題。在這篇文章中,我將重點介紹用于驅動這些總線電壓的 CAN 驅動器...
關鍵字:
CAN總線
CAN總線拓撲
本文來源面包板社區(qū)現在,工程師做SMT貼片已經越來越方便,但是,對SMT中的各項工藝,作為工程師的你真的了解“透”了嗎?本文整理了“五大SMT常見工藝缺陷”,幫你填坑,速速get吧!缺陷一:“立碑”現象即片式元器件發(fā)生“...
關鍵字:
SMT
GE
元件
引腳
本文來源于信號完整性作者:Hank?ZumbahlenHankZumbahlen1989年進入ADI公司,最初擔任駐加州的現場應用工程師。在過去數年中,他還作為高級應用工程師,參與了培訓和研討會發(fā)展工作。此前,他在Sig...
關鍵字:
接地
引腳
ADC
混合信號
在進行CAN總線通信前,應保證正確的總線配置,比如終端電阻。它是影響總線通信的重要組件,下面我們不考慮信號的完整性,只從信號幅度和時間常數方面分析不加終端電阻時的影響。??終端電阻添加要求根據ISO11898-2對終端電...
關鍵字:
電阻
終端
CAN總線
電平
大家好,我是小麥。最近在調試一個CAN總線的設備遇到一些問題,簡單總結一下。本文會對CAN總線進行簡單介紹,CAN的硬件鏈路層,協議層,以及調試的一些心得。目錄什么是CAN總線?物理層差分信號連接方式CAN節(jié)點CAN協議...
關鍵字:
CAN總線
大家好,我是小麥。最近在調試一個CAN總線的設備時遇到了一些問題,在此簡單總結一下。本文將對CAN總線進行簡單介紹,包括CAN的硬件鏈路層、協議層,以及調試的一些心得。目錄什么是CAN總線?物理層差分信號連接方式CAN節(jié)...
關鍵字:
CAN總線
雙列直插封裝(英語:dual in-line package) 也稱為DIP封裝或DIP包裝,簡稱為DIP或DIL,是一種集成電路的封裝方式,集成電路的外形為長方形,在其兩側則有兩排平行的金屬引腳,稱為排針。DIP包裝的...
關鍵字:
DIP
引腳
通孔插裝
摘要:介紹了基于STC12C5A60S2單片機、SJA1000型CAN接口控制器以及PCA82C250串行收發(fā)器構成的總線通信網絡。該網絡中遠端的CAN節(jié)點可監(jiān)測現場環(huán)境,并實現數據收發(fā)和串行通信,上位PC機利用VB6....
關鍵字:
單片機
CAN總線
VB6.0
環(huán)境參數
關注、星標公眾號,直達精彩內容來源:整理與網絡素材最近在搞一個can協議,本文爭對一些can底層細節(jié)很到位,分享一下。1.簡介CAN總線由德國BOSCH公司開發(fā),最高速率可達到1Mbps。CAN的容錯能力特別強,CAN控...
關鍵字:
CAN總線
關注、星標公眾號,直達精彩內容來源:周立功嵌入式的工程師一般都知道CAN總線廣泛應用到汽車中,其實船艦電子設備通信也廣泛使用CAN,隨著國家對海防的越來越重視,對CAN的需求也會越來越大。這個暑假,通過參加蘇州社會實踐,...
關鍵字:
嵌入式
CAN總線
摘要:以Microchip公司的PIC18F45K80芯片為核心,給出了具有低成本、高擴展,性的實用型多功能汽車開關電器盒的設計方法。該開關電器盒除了具有對汽車啟動過程和行駛狀態(tài)參數實時監(jiān)測的功能外,與其他同類產品相比,...
關鍵字:
開關電器盒
CAN總線
J1939協議
汽車電器
CAN總線應用廣泛,但是,很多朋友卻疑惑為何大家總是使用CAN總線。為了幫助排除這個CAN總線疑惑,本文將對CAN總線的特點以及CAN總線的優(yōu)勢予以介紹。如果你對CAN總線具有興趣,不妨和小編共同繼續(xù)往下閱讀哦。
關鍵字:
CAN總線
芯片
指數
CAN總線具有重要應用,我們所說的CAN總線,便是現場總線的一種。上篇文章中,小編對CAN總線的發(fā)展趨勢有所闡述。為增進大家對CAN總線的認識,本文將對CAN總線數據幀的組成,以及CAN總線的診斷方法予以介紹。如果你對C...
關鍵字:
CAN總線
局域網
指數
?點擊上方“小麥大叔”,選擇“置頂/星標公眾號”福利干貨,第一時間送達CAN(“ControllerAreaNetwork”,控制器局域網)作用:將整車中各種不同的控制器連接起來,實現信息的可靠共享,并減少整車線束數量。...
關鍵字:
控制
CAN總線
CC2530 是用于2.4-GHz IEEE 802.15.4、ZigBee 和RF4CE 應用的一個真正的片上系統(tǒng)(SoC)解決方案。它能夠以非常低的總的材料成本建立強大的網絡節(jié)點。
關鍵字:
cc2530
引腳
本文主要介紹CAN總線的EMC設計。CAN總線多用于汽車、工業(yè)控制等領域,用于數據的傳輸控制。采用差分信號傳輸,通常情況下只需要兩根信號線(CAN-H和CAN-L)就可以進行正常的通信。但在實際應用的過程中通訊線纜容易耦...
關鍵字:
EMC
CAN總線
C設計