PXF0183-CAN总线到Ethernet网的网关研究实现

Shanghai Passiontech Tech, 021-51870017, sales@51Lm.cn

     
     
     

CAN总线到Ethernet网的网关研究实现


型号: PXF0183


简介:/* Generator: eWebEditor */p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph;font-size:10.5pt;font-family:"Times New Roman";}div.Section1 {page:Section1;}/* Generator: eWebEditor */p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph;font-size:10.5pt;font-f...
品牌 葩星 葩星
产地中国
型号PXF0183
折扣其他电询

引言

CAN总线是一种开放式、数字化、多点通信的控制系统局域网络,是当今自动化领域中最具有应用前景的技术之一。由于CAN总线具有通信速率高、开放性好、报文短、纠错能力强以及控制简单、扩展能力强、系统成本低等特点,越来越受到人们的关注。以太网具有快速、灵活、方便、可靠的特长,如果把现场总线与以太网互联的话,可实现过程控制中从设备层到管理层的一体化,使得企业可以广泛地应用如互联网、无线通信、智能设备和决策支持系统等新技术,以达到提高效率和降低成本的目的。

硬件设计

硬件选择
要实现现场总线设备接入Internet,关键就是要实现TCP/IP 协议、以及传输信息介质的选择。笔者用SX52微控制器作为处理器, 以太网驱动芯片RTL8019AS经耦合隔离滤波器HR61101GRJ45接口接入以太网,配有RS232CAN总线两个扩展接口,可以将具有RS232接口的设备或采用CAN总线协议通信的设备连到以太网上。RS232接口采用MAX232CPE芯片,CAN总线控制器采用Philips公司的SJA1000芯片,CAN收发器采用PCA82C250芯片。硬件结构框图见图1

1  硬件结构框图
工作原理为:当以太网中发送数据和请求,通过RJ45送到RTL8019ASRTL8019AS 负责将处理后的以太网帧送入SX52TCP/IP协议栈,由协议栈对数据报进行解析,得到原始的请求和控制信息。请求和控制信息再经过SJA1000进行CAN协议格式的数据封装,然后和现场的CAN总线设备进行通信。请求和控制的回复信息到局域网的过程与上面正好相反。

硬件电路图
CANEthernet网关的硬件设计中,在确保通信功能顺利实现的同时,充分利用了SX52芯片I/O口灵活配置的特点,最大程度地节约了微控制器SX52的硬件资源。其电路简图见图2

2  电路简图

SX52
5I/O口共40个引脚,在设计中利用SX52C口的RC0RC7连接RTL8019AS的数据口SD0SD7SX52B口兼顾选址和读写控制功能,在开发中用它与RTL8019AS 的地址及读写控制引脚连接。RTL8019AS 基地址选择引脚IOS0 IOS3接地,此时I/O基地址为300H,即001100000000,所以地址线SA9SA8+ 5V。又因为寄存器地址偏移量为00H1FH 32个,对应地址从300H31FH,所以只需将地址线SA0SA4SX52 RB0RB4,其余地址线接地即可。芯片IORBIOWB引脚为读写信号线,接SX52RB6RB5读写控制引脚。RTL8019AS 可以兼容8位和16位操作。图2IOCS1616I/O的选择脚,当RTL8019AS上电复位的时候,如果这个脚为低电平,选择8位模式,为高电平选择16位模式。由于SX528位的数据总线,因此要用8位总线模式,所以将这个脚接地。RTL8019AS3种工作方式,笔者采用第一种工作方式,此时JP 引脚接高电平。AUI引脚决定使用AUI还是BNC接口。高电平时使用AUI 接口,低电平时使用BNC接口,支持8线双绞线或同轴电缆。设计中采用双绞线为通信介质,将该引脚接地。RTL8019AS 使用引脚TPIN+ TPIN- TPOUT+TPOUT-连接耦合隔离滤波器HR61101G,通过RJ45插头实现与以太网的连接。SJA1000是独立的CAN 通信控制器, 支持CAN2.0B协议。它的AD0AD7为地址数据复用线,与SX52DRD0RD7相连。当远程用户通过Web服务器查询现场的CAN总线数据时,SJA1000将现场控制单元的CAN 总线数据解析,发送到SX52,再传到InternetPCA82C250对总线提供发送能力并对CAN控制器提供接收能力,它支持1Mbps的速度。为保证SX52SJA1000协同工作,在硬件设计中将两个芯片共用一个硬件复位线,以确保SX52SJA1000硬件同步复位。MAX232CPE完成232电平与TTL电平转换。用于提供一个本地接口,为调试和维护提供方便。TXDSX52RA2脚,RXDSX52RA3脚,RS—RXDRS—TXDRS232电平,为标准串口电平。数据可以从串口输入到单片机SX52SX52再把数据送到RTL8019AS

网关的软件设计

  整个互联系统的软件设计可以分为3个部分:CAN总线设备接口通信程序、网关协议转换程序和基于以太网的TCP/IP协议的程序实现。

网关协议转换程序
网关协议转换程序的整体设计思路为:当以太网应用层有数据要发送到CAN节点时,首先,数据发送到网关,由以太网控制器协议转换模块从UDP数据报文中解析出完整的CAN 协议数据包,存放在数据缓冲区A,再调用CAN 控制器协议模块将它发送到CAN 总线上。反过来,当CAN 设备有数据要发送到用户层时,首先数据发送到网关,由CAN控制器协议模块将完整的CAN 协议数据包存放在数据缓冲区B,再调用以太网控制器协议转换模块将完整的CAN协议数据包作为应用层数据封装发送到以太网应用层。CAN 控制器协议模块
CAN
控制器协议转换模块程序主要由SJA1000的寄存器读、写程序,初始化程序和发送、接收程序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片选清零;置位ALERd 引脚设为输出;输出地址;ALE位清零;/wr位清零;输出数据;延时20nsCS片选置位; 返回。

(3) SJA1000
初始化子程序CANInit()选用CAN2.0A协议构建CAN总线控制网络,对SJA1000的初始化主要完成控制寄存器CR、验收代码寄存器ACR、验收屏蔽寄存器AMR、总线定时寄存器BTR01和输出控制寄存器OCR的设置。

(4)
发送接收子程序txdsub()rxdsub()发送子程序负责节点报文的发送,由CAN控制器SJA1000独立完成。主控制器SX52只需将数据缓冲区A中已按CAN2.0A协议格式组合成的一帧报文送入SJA1000 发送缓冲区中,然后将命令寄存器里的发送请求标志置位,即可发送报文。

接收子程序负责节点报文的接收。SJA1000自动接收发往该节点的数据并将收到的数据放到它的接收缓冲器中。SJA1000 的报文接收主要有两种方式:中断接收方式和查询接收方式。该系统采用查询接收方式。可以发送给主控制器SX52的接收信息由状态寄存器的接收缓冲器状态标志RBS和接收中断标志RI 标出。SX52将会把这一帧数据包存入数据缓冲区B中,然后释放接收缓冲器,再通知总调度程序,由总调度程序调用以太网控制器协议转换模块转发。

以太网控制器协议转换模块
以太网控制器协议转换模块主要负责从UDP数据包中解析出完整CAN协议报文,存入数据缓冲区A。同时,将数据缓冲区B中的完整CAN协议报文封装成UDP数据报后发送到以太网上。采用UDP协议是考虑到CAN 协议数据报为短帧形式(每个数据帧最多为8个字节),因为TCP协议要进行3次握手建立连接,这对网络来说无疑是一种资源的浪费。而UDP是无连接的传输,这样可以提高网络传输效率,同时,也减轻网关的处理任务。当然,UDP是不可靠的传输协议。为了提高通信的可靠性,在应用层建立回传校验机制,通过实验
测试表明这种方式是行之有效的。以太网控制器协议转换模块主要由若干个ARPUDP协议的API函数组成。

TCP/IP
应用层程序设计
基于以太网的高层通信协议一般采用TCP/IP协议。这里采用流行的SOCKET套接字编程,传输层协议选择UDP(用户数据报协议),通过VisualC++编写应用层程序。WinSock提供了对UDP的支持,通过UDP协议可以向指定IP 地址的网关发送CAN 协议数据,同时也可以从它接收CAN协议数据,发送和接收方处于相同的地位没有主次之分。利用CAsyncSocket类操纵无连接的数据发送较简单,首先生成一个本地套接口,然后利用int CAsyncSocket : : SendTo ( constvoid 3 1pBuf int nBufLen UINT nHostPort LPCTSTR1pszHostAddress = NULL int nFlags = 0) 发送数据,intCAsyncSocket : : ReceiveFrom ( void 3 1pBuf int nBufLen CString & rSocketAddess UINT & rSocketPort intnFlags = 0) 接收数据。利用UDP 协议发送和接收都可以是双向的,即管理主机和SX52网关都可以发送和接收数据。在程序设计中,创建了一个CAsyncSocket 派生类CCanSocket ,该派生类CCanSocket 有若干成员函数,通过这些类成员函数,可以很方便地实现CAN总线到Internet 的通信。

结 论

  随着Internet技术的日益成熟测控系统网络和以太网将渐渐融合。CAN总线到Internet的互联网关的设计研究是一项具有重要意义的工作,它有非常广阔的应用前景。

 

免责声明/版权申明 Passiontech

所有文章为网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果由您自己承担!

本站仅仅提供一个观摩学习的环境,将不对任何资源负法律责任。所有资源请在下载后24小时内删除。

若无意中侵犯到您的版权利益,请来信联系我们,我们会在收到信息三天内给予处理!

 

 


url: http://www.51lm.cn/p/templates/cn/show.php?cid=80&aid=183

 

电话400-878-1895, 传真:021-51561359 邮箱:sales@51LM.cn
sales@51LM.cn 上海徐汇区斜土路2601号嘉汇广场T1-11B