999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于以太網CAN模塊的總線協議轉換網關設計

2018-07-05 03:50:50左登超
鐵路通信信號工程技術 2018年5期
關鍵詞:設備

左登超 賈 濤

(中車青島四方車輛研究所有限公司,山東青島 266031)

現階段我國動車組數量龐大、種類繁多,不同車型使用的車體通訊總線也有差異。不同方式的通訊設備目前尚不能相互兼容。

為使當前已有的以太網通訊設備能夠適應CAN車體總線,以減少重新開發軟硬件系統的成本,本文提出基于以太網CAN模塊的總線協議網關設計。

1 CAN與以太網簡介

1.1 CAN簡介

控制器局域網絡(Controller Area Network,CAN),由德國BOSCH公司研發并成為國際標準——ISO11898[1]。其被廣泛應用在計算機控制系統、嵌入式控制設備局域網等領域中[2]。

CAN總線協議幀格式有兩種類型:CAN標準幀、CAN擴展幀[3]。CAN標準幀由11個字節組成,包括幀信息、幀數據兩部分內容。前3個字節為幀信息部分,后8個字節為幀數據部分。CAN協議標準幀格式如表1所示。

表1 標準幀格式Tab.1 Standard frame format

在表1中,字節1代表幀信息,其第7位——FF代表幀格式,在CAN協議標準幀格式中,FF的值為0;其第6位——RTR代表幀類型,RTR=0時為數據幀,RTR=1時為遠程幀;其第0~3位表示幀類型為數據幀的數據部分總長度。字節2與字節3表示幀識別碼,其低11位有效,高5位則無效。字節4到字節11代表數據幀的數據部分,幀類型為遠程幀時,字節4到字節11無效。

CAN擴展幀由13個字節組成,包括幀信息、幀數據兩部分內容。前5個字節為幀信息部分,后8個字節為幀數據部分。CAN擴展幀格式如表2所示。

表2 擴展幀格式Tab.2 Extended frame format

在表2中,字節1代表幀信息,其第7位——FF代表幀格式,在CAN協議擴展幀格式中,FF的值為1;其第6位——RTR代表幀類型,RTR=0時為數據幀,RTR=1時為遠程幀;其第0到3位表示數據幀的實際數據部分總長度。字節2到字節5為幀識別碼,其低29位有效,高3位則無效。字節6到字節13代表數據幀的數據部分,幀類型為遠程幀時,字節6到字節13無效。

1.2 以太網

以太網通信協議中常用UDP 與TCP協議。

用戶數據報協議(User Datagram Protocol UDP):是一種無連接的通信協議[4]。在OSI模型中,UDP在第四層——傳輸層,是IP協議的上一層。UDP常用于需要在計算機之間進行數據交互的網絡應用程序中[5]。UDP主要將網絡應用之間傳輸的數據流量壓縮轉換成數據包[6]。

傳輸控制協議(Transmission Control Protocol TCP):是一種面向連接、可靠、基于字節流的通信協議[7]。在OSI模型中,TCP完成第四層——傳輸層所指定的功能,是與用戶數據報協議在同一層內的另一個重要傳輸協議[8]。

2 模塊簡介、轉換原理及配置

2.1 模塊簡介

以太網CAN模塊如圖2所示。該模塊帶有2路CAN接口和一路RJ45以太網接口,可進行雙向數據傳送。以太網設備可以通過RJ45接口連接一個標準的CAN網絡。以太網CAN模塊可以作為一個標準的CAN節點。利用該模塊,用戶可以方便快速地開發出CAN總線應用軟件產品。

以太網CAN模塊共有3組對外接口:一個標準的RJ45以太網接口;一個7pin接線端子(電源輸入接口),端子定義如表3所示;一個10pin的接線端子(CAN總線信號接口),端子定義如表4所示。

圖1 以太網-CAN轉換模塊Fig. 1 Ethernet-CAN conversion module

表3 7pin接線端子Tab.3 7pin connection terminal

表4 10pin接線端子Tab.4 10pin connection terminal

該模塊性能如下:

1)以太網與CAN總線協議轉換;

2)具備2路獨立CAN接口;

3)以太網通訊采用UDP協議,透明轉換;

4)兼容CAN2.0A、CAN2.0B、標準幀、擴展幀;

5)可進行雙向數據交互,CAN發送與接收;

6)兼容數據幀、遠程幀格式;

7)波特率可調范圍5 Kbit/s~1 Mbit/s;

8)最大幀轉換流量1 200幀/秒;

9)數據接收緩沖區大小可達100 幀,共1 300 Byte;

10)可檢索、配置模塊網絡參數;

11)外部直流工作電源7~24 V;

12)隔離模塊絕緣電壓1 000 Vrms;

13)工作溫度為-20~85℃;

14)機械外殼尺寸100*70 mm,支持DIN導軌安裝。

2.2 協議轉換原理

網絡設備將一包或多包CAN幀數據填充到UDP包中發向模塊網口,模塊接收到網絡數據后,將UDP數據包中的CAN幀數據提取出來,發向CAN設備。協議轉換如圖2所示。

圖2 以太網-CAN協議轉換過程Fig.2 Ethernet-CAN protocol conversion process

1)幀信息

幀信息Frame Info占一個字節,該字節的bit定義如表5所示。

表5 幀信息定義Tab.5 Definition of frame information

FF:標準幀和擴展幀的標識,0為標準幀,1為擴展幀。

RTR:遠程幀和數據幀的標識,0為數據幀,1為遠程幀。除非特殊應用,一般客戶都是用數據幀,填0即可。

DLC3~DLC0:標識該CAN消息幀中的有效數據長度,最多8個。

2)ID域

CAN消息幀的ID填充域共4個字節,如表6所示。

表6 幀ID定義Tab.6 Definition of frame ID

當為標準幀時,占用后2個字節。ID2的高5位無效,補0。例:當ID=0x03FF時,按表7方式填充。

表7 標準幀ID實例Tab.7 Example of standard frame ID

當為擴展幀時,占用4個字節。ID0的高3位無效,補0。例:當ID=0x12345678時,按表8方式填充

表8 擴展幀ID實例Tab.8 Example of extended frame ID

3)數據域

根據CAN消息的定義,一個CAN幀中,最多可以包含8個字節的數據。當該CAN幀不需要8個字節時,余下的字節補0。注意:需要在FrameInfo字節中指明有效數據個數。例:FrameInfo中的DLC3~DLC0=8,表明有8個數據有效,如表9所示。

表9 數據域實例Tab.9 Example of data domain

4)CAN消息幀舉例

如表10所示,是一個標準數據幀,ID為0x3ff,包含6個數據字節,為11h,22h,33h,44h,55h,66h的CAN幀的表示方式。

表10 標準數據幀實例Tab.10 Example of standard data frame

2.3 模塊配置

該模塊可人工配置參數,配置步驟如下。

1)修改模塊網口一側設備的IP地址為192.168.0.55,子網掩碼255.255.255.0,默認網關192.168.0.1。

2)將R+與R-用導線短接,接入終端電阻,并打開參數配置軟件,如圖3所示。

圖3 以太網-CAN模塊參數配置界面Fig.3 Interface of Ethernet-CAN module parameters configuration

3)點擊“設備型號”,選擇NET-CAN200,然后點擊“設備操作”→“啟動設備”,會在彈出的窗口將網絡中NET-CAN設備列表顯示。顯示信息包括該設備的主機IP,主機端口,設備IP和設備端口。運行菜單“設置”→“獲取NET-CAN信息”,得到當前模塊的參數,并可以進行修改,如圖4所示。

主要參數含義如下:

1)主機IP:用于通訊轉發的主機IP地址;

圖4 設備參數配置界面Fig.4 Interface of equipment parameters configuration

2)主機端口:用于通訊轉發的主機IP端口;適配器只有接收到從這個IP地址和端口發來的數據,才能轉發到CAN總線;同時,CAN總線端過來的數據,將通過以太網UDP方式發到這個IP地址和端口;

3)設備IP:模塊的IP地址;

4)設備端口:模塊用于UDP通訊的端口號。主機必須通過UDP協議發送數據到這個IP地址和端口,設備才能接收到;

5)波特率:CAN總線的波特率,支持5k~1Mbit/s的15種常規速率供選擇;

6)自接收使能:在使能方式下,設備向CAN總線發送的消息都可以被收回,該模式用于設備的自測試。

3 軟件實現

采用Windows操作系統下的vc6.0集成開發環境編寫通訊代碼,步驟如下。

3.1 初始化網絡套接字

1)定義網絡套接字及相關變量

SOCKET socket1,socket2;

SOCKADDR_IN sockDest,sockDest2,sockDest3;

SOCKADDR_IN sockFrom;

SOCKADDR_IN sockSrc;

CString strDevIpAddress;

int SockAddrlen=sizeof(SOCKADDR);

2)綁定主機IP和端口

socket1=socket(AF_INET, SOCK_DGRAM, 0);

SOCKADDR_IN sockSrc;

sockSrc.sin_family=AF_INET;

sockSrc.sin_port=htons(4060);

sockSrc.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

bind(socket1,(SOCKADDR *)&sockSrc,sizeof(SOCKADDR));

3)生成SockDest用于連接測試

sockDest.sin_family=AF_INET;

sockDest.sin_port=htons(3000);

sockDest.sin_addr.S_un.S_addr=inet_addr(“192.168.0.101”);

4)生成SockDest2通訊用CAN0通道

sockDest2.sin_family=AF_INET;

sockDest2.sin_port=htons(4001);

sockDest2.sin_addr.S_un.S_addr=inet_addr(“192.168.0.101”);

5)生成SockDest3 通訊用CAN1通道

sockDest3.sin_family=AF_INET;

sockDest3.sin_port=htons(4002);

sockDest3.sin_addr.S_un.S_addr=inet_addr(“192.168.0.101”);

3.2 設備連接測試

為便于用戶進行通信前測試,以太網CAN模塊提供了一組連接測試的命令字CDh,0Dh。當模塊收到這個命令后,將回送當前設備中的DevIP 和HostIP等網絡參數。

1)定義并賦值相關變量

char SendData[15];

char rbuf[100];

BYTE rbuf2[100];

SendData[0]=0xCD;//連接測試命令字

SendData[1]=0x0D;//連接測試命令字

2)發送連接測試請求

if(send to(socket1, Send Data,2,0,(SOCKADDR*)&sockDest,sizeof(SOCKADDR))==SOCKET_ERROR)

{

MessageBox(“udp發送失敗");

return;

}

3)接收數據,連接成功

int datalen=recvfrom(socket1, rbuf, 1024,0, (SOCKADDR*)&sockFrom,&SockAddrlen);

if(datalen!=13) return;

for(i=0;i

rbuf2[i]=rbuf[i];//格式轉換

for(i=0;i<4;i++)

DevIP[i]=rbuf2[1+i];//設備IP地址

for(i=0;i<4;i++)

HostIP[i]=rbuf2[5+i];//主機IP地址

DevUdpPort=rbuf2[9]*256+rbuf2[10];//設備UDP 端口號

HostUdpPort=rbuf2[11]*256+rbuf2[12];//主機UDP端口號

3.3 CAN數據發送

1)定義并賦值相關變量

char SendData[1500];

char rbuf[1000];

BYTE rbuf2[1000];

for(int i=0;i<40;i++)//UDP攜 帶40個CAN數據

{

SendData[i*13]=0x08;//幀信息

SendData[i*13+1]=0x00;//ID0

SendData[i*13+2]=0x00;//ID1

SendData[i*13+3]=0x02;//ID2

SendData[i*13+4]=0x15;//ID3

SendData[i*13+5]=i*8;//數據1

SendData[i*13+6]=i*8+1;//數據2

SendData[i*13+7]=i*8+2;//數據3

SendData[i*13+8]=i*8+3;//數據4

SendData[i*13+9]=i*8+4;//數據5

SendData[i*13+10]=i*8+5;//數據6

SendData[i*13+11]=i*8+6;//數據7

SendData[i*13+12]=i*8+7;//數據8

}

2)發送攜帶CAN數據的UDP包

if(sendto(socket1,SendData,40*13,0,(SOCKADDR*)&sockDest2,

sizeof(SOCKADDR))==SOCKET_ERROR)

{

MessageBox(“udp 發送失敗”);

return;

}

3.4 CAN接收

1)開啟線程處理UDP數據接收

AfxBeginThread(ReceiveThread,0);

2)定義相關變量

char rbuf[1000];

int datalen;

3)接收攜帶CAN數據的UDP包

datalen=recvfrom(socket1, rbuf, 1024, 0,(SOCKADDR*)&sockFrom, &SockAddrlen);

4)CAN數據解析與處理

if((datalen%13)==0)//如果該字節數是13 的整數倍,表示UDP包字節完整。

{

//CAN消息都在rbuf[datalen]數組中

//該部分進行處理或顯示收到的CAN消息

}

4 結束語

使用以太網CAN模塊作為以太網通訊設備和CAN總線設備的網關進行實時協議轉換,使以太網通訊設備能夠兼容通訊方式不同的 CAN車體總線。減少開發成本,滿足功能需求,增強設備的可移植性與兼容性,實用性較強。

[1]付亮,李偉.CAN總線技術及其在現代汽車中的應用[J].中國汽車制造,2006 (1):23-26.Fu Liang,Li Wei.CAN bus technology and its application in modern automobile[J].China Automotive Manufacturing.2006 (1):23-26.

[2]葉加青,李軍.CAN總線與Ethernet互連嵌入式研究與實現[J].計算機與現代化,2010(9):45-47.Ye Jiaqing, Li Jun.Embedded research and implementation of CAN bus and Ethernet interconnection[J].Computer and Modernization. 2010(9):45-47.

[3]李加升,李寧,曾哲.基于CAN總線與以太網的嵌入式網關設計[J].現代電子技術,2009(14):69-71.Li Jiasheng,Li Ning,Zeng Zhe.Design of Embedded Gateway Based on CAN bus and Ethernet[J].Modern Electronics Technique,2009(14):69-71.

[4]劉濱,耿雪貞.CAN與以太網數據交換的研究與分析[J].單片機與嵌入式系統應用,2003(12):16-18.Liu Bin,Geng Xuezhen.Research and analysis of data exchange between CAN and Ethernet[J].Microcontroller&Embedded Systems. 2003(12):16-18.

[5]李正軍.現場總線及其應用技術[M].北京:機械工業出版社,2005.

[6]劉曉莉,高軍,趙延明.基于ARM的以太網與CAN總線互聯網關的設計[J].工業控制計算機, 2007(4):15-16.Liu Xiaoli,Gao Jun,Zhao Yanming.Design of Ethernet-CAN Gateway Based on ARM[J].Industrial Control Computer,2007(4):15-16.

[7]陽憲惠.現場總線技術及其應用[M].北京: 清華大學出版社,1999.

[8]林士兵,袁焱,楊煜普.TCP/IP網絡與CAN網絡網關的設計與實現[J].計算機工程.2007(3):243-244.Lin Shibing,Yuan Yan,Yang Yupu.Design and Realization of Gateway Between TCP/IP Network and CAN Network[J].Computer Engineering,2007(3):243-244.

猜你喜歡
設備
諧響應分析在設備減振中的應用
調試新設備
當代工人(2020年13期)2020-09-27 23:04:20
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
廣播發射設備中平衡輸入與不平衡輸入的轉換
電子制作(2018年10期)2018-08-04 03:24:48
食之無味,棄之可惜 那些槽點滿滿的可穿戴智能設備
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
HTC斥資千萬美元入股虛擬現實設備商WEVR
IT時代周刊(2015年8期)2015-11-11 05:50:37
Automechanika Shanghai 2014 之“看” 汽保設備篇
如何在設備采購中節省成本
主站蜘蛛池模板: 婷婷五月在线| 好紧太爽了视频免费无码| 欧美日韩资源| 国产国产人成免费视频77777| 久久国产V一级毛多内射| 91小视频版在线观看www| 伊人天堂网| 国产日韩欧美中文| 久久久久青草线综合超碰| 亚洲成人77777| 九九免费观看全部免费视频| 国产极品美女在线| 天天综合网色| 亚洲男人的天堂在线观看| 综合久久五月天| 夜夜爽免费视频| 人妻丰满熟妇αv无码| 免费jizz在线播放| 亚洲精品波多野结衣| 亚洲品质国产精品无码| 欧美高清三区| 国产高清在线观看91精品| 亚洲国产成人精品无码区性色 | 国产丝袜无码精品| 亚洲人成网站18禁动漫无码| a在线亚洲男人的天堂试看| 99热国产在线精品99| 国产无码性爱一区二区三区| 欧美国产日产一区二区| 伊人久久福利中文字幕| 91成人在线观看视频| 成人免费视频一区| 国产成人一区二区| 亚洲无码91视频| 欧洲亚洲一区| 日韩在线第三页| 人与鲁专区| 91视频青青草| 国产亚洲欧美日韩在线一区二区三区 | 国产天天色| 国产91全国探花系列在线播放 | 国产波多野结衣中文在线播放| 国产美女自慰在线观看| av一区二区人妻无码| 亚洲国内精品自在自线官| 高h视频在线| 五月天久久婷婷| 国产精品毛片一区视频播| 日韩人妻少妇一区二区| 亚洲日本中文综合在线| 不卡无码h在线观看| 日韩第一页在线| 亚洲Av综合日韩精品久久久| 国产清纯在线一区二区WWW| 人禽伦免费交视频网页播放| 日韩精品成人网页视频在线| 日本一区二区三区精品国产| 欧美一区福利| 无码'专区第一页| 精品国产成人a在线观看| 日本午夜三级| 国产无套粉嫩白浆| 国产在线精彩视频论坛| 91精品国产丝袜| 国产在线视频自拍| 精品小视频在线观看| 区国产精品搜索视频| 亚洲国产成人久久77| 一本色道久久88综合日韩精品| 极品国产在线| 国产一级裸网站| 丁香五月激情图片| 国产永久免费视频m3u8| 青草精品视频| 99久久精品久久久久久婷婷| 黑人巨大精品欧美一区二区区| 国产成人综合网| 国产精品999在线| 国产成人1024精品下载| 色成人综合| jizz在线观看| 东京热av无码电影一区二区|