嵌入式CAN-Ethernet接入网关的设计与实现

发布者:精品古钱斋最新更新时间:2012-11-30 来源: 维库关键字:CAN-Ethernet  网关  S3C2410A 手机看文章 扫描二维码
随时随地手机看文章

  1引言

  现场总线 CAN-bus最早由德国 Bosch公司提出,主要用于汽车内部单元与控制中心之间的数据通信[1],由于其在网络开放性、通讯可靠性、数据传输实时性、系统设计成本、系统扩展能力、纠错能力等方面具有强大的优势,使得 CAN现场总线越来越受到人们的关注。而且基于开放的现场总线 CAN-bus技术,构建煤矿行业的通讯网络,或开发特定功能的通讯设备,都已经不会存在技术上的门槛。CAN-bus本身也是符合本质安全要求的,所以当 CAN-bus应用于煤矿通讯系统时,也立即获得了广大设备用户的认可,成为煤矿行业中首选的设备通信网络,通过由 CAN-bus构建的煤矿现场设备网络,管理者和主控设备能即时了解、处理当前的矿井情况,发觉事故隐患,避免危机的发生。同时,煤矿系统中工业以太网技术也日趋成熟。CAN-bus现场总线与以太网互连,既能保证工业现场数据的可靠实时传输,又能满足数据信息的分析、记录、管理以及远程共享管理,推进煤矿监测监控系统的标准化和开放性,实现现代化煤矿的综合自动化。而 CAN-bus和以太网采用的是不同的通信标准,要实现它们之间的互联就要通过总线标准转换设备(即网关)来实现。

  本文设计开发 CAN-Ethernet网关,实现了煤矿安全监控系统中的井下 CAN总线设备与以太网的互连互通,从而将现场总线设备接入到无处不在的 Internet网络,实现数十公里以外,乃至整个地区的数据采集和管理满足煤矿行业现场数据的现代化管理要求。2硬件设计

  本网关的硬件部分主要由协议转换模块、CAN总线接口模块和以太网接口模块等部分组成。本网关系统还提供了 RS232接口模块,用来在调试过程中与 PC机进行通信,串口作为控制台输入调试命令,显示调试结果。内置工业级电源系统,支持扩展电源输出,用于为其他设备提供电源。系统硬件结构如图 1所示。


  图1硬件结构图

  2.1协议转换模块

  协议转换模块是嵌入式网关的核心,由嵌入式微处理器及大容量的存储系统组成。微处理器采用 S3C2410A,S3C2410A是三星公司推出的基于 ARM920T内核的 16/32位 RISC嵌入式微处理器。配置了两片 HY57V561620并联构成的 32位 64MB SDRAM存储系统,存放系统运行时的用户数据、堆栈等信息。FLASH选用一片 64M的 K9F1208U0B,它是一款 NAND flash存储器,用来存放用户应用程序、嵌入式操作系统及现场总线传输来的数据

  2.2 CAN总线接口模块

  CAN总线接口模块实现网关与 CAN总线设备的互联。网关的 CAN总线接口采用的是两片SJA1000CAN总线控制器和两片 TJA1050高速 CAN收发器。此外,在煤矿井下环境中,为提高系统的抗干扰能力,电路中要采用光电隔离技术将嵌入式网关内部电路与现场总线进行电气隔离,保护网关的正常准确工作,因此在 CAN控制器与收发器之间使用光耦 6N137进行隔离,在光耦前后需要采用 2个相互隔离的 DC5V电源,本系统选用 B0505S-1W DC-DC变换器,实现系统与外界的真正隔离,抑制干扰的串入。SJA1000与微处理器的接口是以外部存储器的方式,数据线与地址线共用,基地址由 SJA1000的片选信号 CS决定,本设计中其地址定义在 BANK5中,因此使用此基地址加上 SJA1000内部寄存器地址的偏移量就可以访问 SJA1000内部 RAM空间;SJA1000的模式输入引脚(MODE)接正 5V电源,使其在 intel模式下工作;将 SJA1000的中断输出 INT引脚分别接 S3C2410A的 INT16和 17,使得数据接收采用了中断方式。

  2.3以太网接口模块

  自适应以太网接口模块提供了网关接入以太网的接口。以太网控制器采用DM9000,它具有高度的集成性,具有独特的 Packetpage结构可自动适应网络通信量模式的改变和现有系统资源,使网关以 10Mb/s或 100Mb/s的速率接入以太网网络。DM9000与 CPU按照16位方式连接,以太网控制芯片复位后默认工作方式为 I/O连接。[page]

  3软件设计

  本网关的设计采用了基于消息队列的多线程以及多进程的方式,实现了CAN总线数据收发和以太网通信的同步;以太网通信程序采用流行的 socket套接字编程,传输层协议选择UDP(用户数据报协议)。要实现进程间通信,可以通过管道、信号量、消息队列及共享内存区等多种方式,在不同的系统中使用时各有优点,文献[2]中提出,经测试,对于小消息(100字节左右),在除了darwin6.6以外的所有系统中,system Ⅴ消息队列性能最好。而网关中每次收发的数据也在 100个字节以内。所以本设计中使用system Ⅴ消息队列在进程间传送数据。

  在软件设计上可将其分为两大部分:CAN总线设备通信程序进程(主程序)和协议转换及以太网通信程序进程(server)。

  3.1 CAN总线设备通信程序

  主程序中,初始化包括模式寄存器MOD、命令寄存器CMR、状态寄存器SR、总线定时寄

  存器BTR0,BTR1、验收代码寄存器ACR、验收屏蔽寄存器 AMR和输出控制寄存器 OCR等的设置。下面将创建 3个线程,CAN数据接收线程(CAN.receive)、CAN数据发送线程(CAN.send)和调用 server进程的线程。这就保证了两个 CAN口能分别同时接收和发送数据,网关同时也能与上位机软件通信。

  CAN.receive线程 : for(;;) {if CAN0口有数据

  break;} read(ca,rcvbuf,0);//从底层现场总线网络中接受各种智能设备采集的实时数据或报警信息,将其存入缓冲区,然后将 rcvbuf中数据放入 msg0.buffer

  msgsend(msgid,&msg0,sizeof(struct msgtype0),0);//将数据发送到消息队列 0中。这里发送到消息队列上的数据包括 CAN报文的 ID识别码,RTR帧等信息,即不解析收到的CAN数据包内容,直接将其发送到消息队列 0

  CAN.send线程: msgrecv(msgid,&msg1,sizeof(struct msgtype1),2,0);//从消息队列1中读取数据 添加本地 CAN地址,写入发送缓冲区sendbuf; write(ca,sendbuf,1);//将从缓冲区中读取的数据通过 CAN1口发送到目的CAN节点当然,也可以只用一个 CAN口实现CAN数据收发,但这时要注意防止 CAN口的收发冲突,

  这就要加入互斥锁[3]。 CAN总线设备通信程序主要流程如图 2所示。


  3.2协议转换及以太网通信程序

  我们知道,CAN协议为了提高实时性采用了短帧结构,而以太网帧相对要长得多;CAN协议采用载波侦听多路存取/消息优越仲裁(CSMA/AMP)机制解决冲突,而以太网帧采用CSMA/CD机制。这两点构成了 CAN与以太网之间的主要差异,也使得 CAN-Ethernet网关的转换协议复杂度提高,但由于本系统中采用了 Server/Client的通信服务模式,网关即作为服务端,相对于文献[4]省去了网关与服务器通信这一过程,所以转换协议也相对较简单。

  在本系统中,由于网关实现的是 CAN总线报文和 UDP报文的数据转发,任务相对简单,因此传输层协议选择较为简洁的 UDP协议,建立无连接的服务端。服务端首先确立端口号,通过调用 socket建立套接字,然后使用 bind绑定本地地址,通过调用 sendto()和 recvfrom()就可以向以太网发送和接收数据。 定义 Socket地址常用的是 sockaddr_in结构,该结构如下所示: struct sockaddr_in {

  在本系统中,Socket地址定义为gatewayAddr,端口号设置为8888。不同的计算机存放多字节值的顺序不同,有的计算机在起始地址存放低字节,有的则起始存放高字节,为了程序的可移植性,需要将主机字节顺序转换成网络字节顺序。调用htons()将端口号 8888转换成网络字节顺序,然后赋值给 gatewayAddr.sin_port。gatewayAddr.sin_addr. s_addr定义了主机的 IP地址,在本系统中并不关心主机的 IP地址,故将主机的 IP设置为INADDR_ANY,即可以侦听局域网内的任一主机的报文。[page]

  协议转换与以太网通信程序流程如图 3所示。


  if有udp报文到达{ recvfrom(gatewayfd,&rcvbuf1,sizeof(rcvbuf1),0,(structsockaddr *)&cliaddr, &clilen);//接收以太网报文

  将rcvbuf1内数据放入消息队列msg1.buffer;}

  else if 消息队列 0有 CAN报文 //通过判断 CAN报文标志位来实现

  { msgrcv(msgid,&msg0,sizeof(struct msgtype0),1,0);//接受消息队列 0中数据

  置位 CAN报文标志位;

  将消息队列值读入rcvbuf0;

  sendto(gatewayfd,rcvbuf0,sizeof(struct rcvbuf0),(struct sockaddr *)&cliaddr,clilen); }//将 UDP报文发送到以太网

  else return;

  4应用

  该网关应用于基于 CAN总线的监测监控系统和测控设备接入以太网的场合,已经在江苏徐州大屯煤电公司姚桥煤矿得到了应用,目前设备运行良好。应用本网关可以解决现场总线设备接入以太网的问题,真正实现了大范围的数据采集和管理,满足了煤矿企业的现代化管理要求。CAN-Ethernet网关在井下监测监控系统中的位置如图 4所示。


  5结束语

  本文的创新点:本文设计的 CAN-Ethernet网关,采用ARM 处理器,软件上采用消息队列机制实现不同进程间通信,实现了基于CAN总线的煤矿井下监控系统与矿井综合业务数字网的互联,为煤矿企业信息化建设奠定了基础。本设计实现的 CAN-Ethernet通信程序,无须另外添加转换接口设备,在原有硬件基础上仅通过软件修改即可实现 CAN与以太网的互联。

关键字:CAN-Ethernet  网关  S3C2410A 引用地址:嵌入式CAN-Ethernet接入网关的设计与实现

上一篇:基于ARM的FIR数字滤波器的软件实现
下一篇:基于嵌入式系统的GPRS的设计

推荐阅读最新更新时间:2024-03-16 13:14

Modbus转Profinet网关将变频器接入PLC
项目案例操作: 本案例是通过耐特森的Modbus转Profinet网关设备将丹佛斯变频器的数据接入到西门子的1200PLC,用到的设备为西门子1200PLC一台,Modbus转Profinet网关一个,丹佛斯变频器一台。 Modbus转Profinet网关配置方法: 打开博图,新建项目并添加GSD文件。 建立Profinet连接,设定Modbus转Profinet网关的IP地址和设备名称,IP要和Modbus转Profinet网关保持在同一网段。 进入Modbus转Profinet网关设备视图选择输入输出的总数据长度, 从右侧硬件目录中添加所选长度, 下载配置到PLC,打开Modbus转Profinet网关配置
[嵌入式]
Modbus转Profinet<font color='red'>网关</font>将变频器接入PLC
MODBUS转PROFIBUS网关将变频器接入PROFIBUS总线
本文详细介绍了英威腾CHF100A变频器接入西门子CPU315-2DP的PROFIBUS的方法,微硬MODBUS转PROFIBUS网关在STEP7中的具体配置过程。 该方案应用在湖南一化工厂的煤气炉控制系统中。该系统主要是生产用于生产过程中的蒸汽。控制的主要对象是煤气炉的风机、炉条机、以及蒸汽的控制以及现场各项参数的显示与报警。系统主PLC选用西门子CPU 315-2DP,通过ET200 IO模块控制现场设备并监控数据。变频器采用英威腾CHF100A变频器,将英威腾CHF100A变频器接入CPU315-2DP的网关采用北京微硬创新科技公司的PBMD485-K20的MODBUS转PROFIBUS网关。本文主要讲该MODBUS转
[嵌入式]
TI正专注于下一代汽车网关的研发
汽车架构正在快速演进,车辆逐步从半自动驾驶向最终的完全自动驾驶发展。汽车制造商还加入了多种功能,例如智能访问、车辆共享、预测性维护、车辆跟踪、车队管理和空中(OTA) 升级,以增强互联能力和车载通信。这些高级功能生成的数据量不断增加,需要通过高性能处理器进行处理,并在 CAN、LIN 和高速网络(如以太网)等接口之间安全可靠地进行通信。因此,汽车制造商正在重新评估汽车网关和远程信息处理控制单元系统(TCU)的架构。 汽车网关 汽车网关是一种核心功能为在车辆内安全可靠地传输数据的系统。车辆中可以存在多种网关:中央网关和域网关(或域控制器)。 中央网关可以在TCU、动力传动系统、车身、信息娱乐系统、数字驾驶舱和
[汽车电子]
TI正专注于下一代汽车<font color='red'>网关</font>的研发
聊一下汽车嵌入式开发中的ECU网关节点
汽车嵌入式开发中,开发ECU网关节点(GW:Gateway)时,难度会提升不少,这些难度中就包含对时间参数的解读问题。本文着重给大家聊一下P2Client、▲P2 = ▲P2Request + ▲P2Response、N_As时间参数。 1 背景介绍 假设 :Tester发送功能寻址指令Request01给GW::VCU,因为VCU的GW属性,VCU需要将Request01转发,即由Flexray总线路由到Can总线,进而将Request01发送给Ecu::Xx,Request01路由示意如如下所示: 注意 :诊断路由,需要通过Xx_Tp层。 VCU既然是GW,相对于ECU::Xx,就是一个Tester。 2 P2Client
[嵌入式]
聊一下汽车嵌入式开发中的ECU<font color='red'>网关</font>节点
凌华科技物联网网关产品线全面支持Intel®物联网网关技术
2016年7月20日,北京讯。 全球智能云计算服务平台、网关、嵌入式计算机及行业应用平台供应商 凌华科技推出三款物联网网关产品,全面支持Intel 物联网网关技术。MXE-110i,MXE-202i和MXE-5400i分别采用了Intel QuarkTM, Intel AtomTM 和 Intel CoreTM 处理器,进一步丰富了凌华科技基于物联网网关的可扩展计算平台产品系列。从节能应用到智能分析,凌华科技的物联网网关全面支持Intel 物联网网关技术,为各种各样的应用提供了理想的物联网工业平台。 Intel 物联网网关技术可以协助智能网关的开发,而智能网关对于将系统连接到下一代智能基础架构中非常重要,围绕智能网关构建的
[物联网]
凌华科技物联网<font color='red'>网关</font>产品线全面支持Intel®物联网<font color='red'>网关</font>技术
恩智浦携手广汽集团共同开发新一代车载网关平台
恩智浦半导体今日宣布携手广汽集团共同开发基于以太网和安全的新一代车载网关平台,从而推动国内首个整车制造企业自主研发的以太网网关项目落地。恩智浦将为该平台的开发提供参考设计和完整的网关解决方案,涵盖微控制器和网络接口等半导体器件。双方将通过半导体企业与整车制造企业直接开展技术合作的形式,实现我国汽车产业生态合作模式的突破及创新。 恩智浦为广汽集团提供的网关解决方案在硬软件开发中具有独特优势。该解决方案实现了基于以太网、CAN/CAN FD的网络架构,有效降低了网络成本,提升了网关的性能与可靠性。同时,该解决方案支持最新的车用以太网技术(100Base-T1)、汽车开放系统架构(AutoSAR)以及空中固件升级(FOTA)技术,并提供
[汽车电子]
智能家居安防系统网关解决方案
随着生活节奏的不断加快和经济水平的不断提高,家庭用户对安全感的需求正在逐渐增加,在不少大中城市,人们选择高档公寓和别墅的同时,对家居安防的意识地不断提高。除了由房地产商和建筑工程商设计施工的安防工程和已有的“小区安防,保安人防”模式的基础上,逐渐融入了人们的自主选择与购买。作为智能家居不可或缺的组成部分家庭安防系统也将像家庭房屋装修一样,成为选择购房和购房后必须考虑的一项家庭开支。应运而生的智能家居系统,不但能够实现智能家电、智能照明、智能窗帘等控制,便利了生活,提高了品质,还能实现全天候立体式的安防监控,为住户构建立体安防体系,保障了家庭的生命和财产安全。 智能家居安防系统工作原理和结构分布  
[安防电子]
智能家居安防系统<font color='red'>网关</font>解决方案
基于ARM9的嵌入式网关的研究
   摘 要: 介绍了一种基于ARM9的嵌入式以太网的设计方案。基于ARM内核微处理器S3C2410的功能特点及其外扩组成部分,分析了以太网控制器芯片RTL8019AS的性能以及与S3C2410的接口。在软件设计上,分析了BootLoader的作用,介绍了Linux的移植,并给出了通信程序的流程图,实现了嵌入式以太网的数据传输。    引 言   无所不在的网络给网络接入设备带来了巨大的发展机遇。而随着网络接入市场的迅速增长,嵌入式网络接入开始成为嵌入式系统技术中最令人关注的一个领域。在嵌入式网络技术的推动下将会形成这样一个局面:在网络上传输的信息中,将有70%的信息来自嵌入式系统,也许将有数以亿计的汽车、通信设备、家用电气以
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved