历史上的今天
返回首页

历史上的今天

今天是:2025年02月02日(星期日)

2021年02月02日 | ARM7的MVB_CAN网关设计方案

2021-02-02 来源:eefocus

0 引言

随着网络技术和控制技术的发展,机车信息化控制技术向着更高的方向发展。为此,IEC制定出新的列车通信网路国际标准TCN(机车通信网络),以满足列车微机控制系统中对车载数据通信网提出的新要求。


按照TCN标准,列车通信网可分为两级:第一级是WTB绞线式列车总线(Wired Train Bus),可实现车辆间的数据通信;第二级是MVB(Mul-tifunction Vehicle bus)多功能车辆总线,主要实现同一个车辆内各个功能控制单元之间的数据通信。


多功能车辆总线(MVB)是主要用于有互操作性和互换性要求的互连设备之间进行串行数据通信的一种总线,MVB以其高实时性、高可靠性及可管理性等多方面的优势而广泛的应用在列车总线控制当中。


控制器局部网(CAN-CONTROLLER AREANETWORK)是BOSCH公司为现代汽车应用推出的一种多主机局部网。由于该网的卓越性能,现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多领域。


对于现在的机车总线通信,MVB总线主要应用在单台机车内的车载设备间的通讯,而CAN总线则用于车载设备内部模块间的数据通讯。因此,实现CAN总线与MVB总线之间的通信就成为工程实践中一个必须解决的问题。


1 报文

1.1 CAN报文

CAN报文主要包括数据帧、远程帧、出错帧、超载帧等四种帧。


在总线中传送的报文,每帧一般由7部分组成。CAN协议支持两种报文格式,它们之间唯一的不同是标识符(ID)长度不同。它们的标准格式为11位,扩展格式为29位。


在标准格式中,报文的起始位通常也称为帧起始(SOF),之后,一般是由11位标识符和远程发送请求位(RTR)组成的仲裁场。RTR位用于标明是数据帧还是请求帧,请求帧中没有数据字节。控制场的包括的标识符扩展位(IDE)用于指出是标准格式还是扩展格式。此外,它还包括一个保留位,以便为将来扩展使用。它的最后四个字节用来指明数据场中数据的长度(DLC)。数据场范围为0~8个字节,其后有一个检测数据错误的循环冗余检查(CRC)。CAN的标准帧格式如图1所示。

应答场通常(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时,正确接收报文的接收站会发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。报文的尾部应由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,则总线将处于空闲状态。


1.2 MVB报文

MVB报文主要包括两种帧:主帧和从帧。其中主帧只能由总线主设备发送,而从帧则为响应主帧而由从设备发送。


主帧应传送16位数据字,发送的数据字的第一位应为它的最高有效位,用bit0来表示,其内容为16位字中的最高前四位,应为FCODE。次有效的后12位用于表示Focde所指定的地址或参数。因此,主帧有固定的格式,为34 bit(9 bit主帧分界符+16 bit数据位+8 bit校验位+1bit终止分界符)。一个主帧应以主起始分界符开始,其后为16位帧数据,接着为8位校验序列。MVB的主帧格式如图2所示。

一个从帧应以从帧起始分界符开始,接着为16、32、64、128或256位帧数据,在每64个数据位后还包含一个8位的校验序列或当帧数据只有16或32位时将一个8位的校验序列附在其后,其MVB的从帧格式如图3所示。

2 CAN总线与MVB总线协议转换

CAN总线和MVB总线都属于现场总线范畴,因此,它们都有自己的网络分层结构。对于大多数现场总线,它们都包括物理层,数据链路层和应用层。


MVB有过程数据和消息数据之分。基于过程数据的网络分层是三层(物理层、数据链路层、应用层),而基于消息数据的网络分层则有7层。由于消息数据比较复杂且应用场合较少,因此,本文只讨论过程数据。但实际上,有时也可以将MVB视为一个三层协议的网络。


CAN网络分层结构按照CAN总线协议来说,就只有两层即物理层和数据链路层。但是涉及到具体的应用,它实际上也包括应用层。


为了实现两种总线问的协议转换,通常需要首先对他们的帧格式进行转换,其主要原因是帧字节数大小不同,而帧的编码解码部分是由网卡硬件完成的;其次是对应用层的转换,即通过一定的形式将CAN总线中表示过11位标志符的数据含义和MVB总线中过程变量的数据集对应起来,以实现数据之间的传输。


3 MVB-CAN网关的硬件实现


为了设计方便,本设计的CAN侧采用三星公司生产的S3C4480微控制器,MVB侧则采用MVBC01 ASIC专用芯片。


MVB通信控制器选用的MVBC01 ASIC专用芯片采用的是16 bit数据总线,该芯片同时可提供丰富的接口控制信号(如RDY、TMRDY等待信号),因此,可用于简化与各种宿主CPU以及通信存储器的接口设计。此外,MVBC01还内嵌有完整的MVB1类设备协议,其中,MVB物理层接口采用电气短距离介质ESD+接口,系统信号通道则使用光耦来实现主系统与外界的电隔离,从而提高了系统的可靠性。另外,系统还使用RS 485芯片作为收发器,并使用过压保护模块来防止瞬间过压对器件造成的损坏。MVB侧的接口单元如图4所示。

MVBC01端口ICA (MVB Input Data ChannelA)和ICB(MVB Input Data Channel B)分别为MVB输入数据通道A和输入数据通道B,来自物理层收发器的MVB信号可由此端口送入MVBC01中。MVBC01的端口OC (MVB Output Data Channel)是MVB的数据输出端口,数据经此端口可发送至物理层收发器。MVBC端口SF(Send Frame)的输出信号可作为物理层的使能信号,该信号有效时,表示一个报文正在通过MVBC端口OC(MVB Output Data Channel)输出。


本系统CAN侧采用的是三星公司生产的S3C44BOX微控制器,S3C44BOX是韩国三星公司推出的一款基于arm7TDMI核的16/32位RISC高性价比、低功耗的嵌入式微处理器。该芯片的片上资源非常丰富,因为它本身带有可满足CAN2.0B协议的CAN控制器,故可省去CAN控制器和单片机之间的硬件连接。


CAN收发器采用PHILIPS公司的PCA82C250。主要提供对总线的差动发送能力和对CAN控制器的差动接收能力。当微处理器对CAN控制器进行相应配置后,收发器即可自动完成相应的CAN总线动作。


MVBC01的引脚除在MVBC01复位时作为复位完成信号外,还可作为MVBC01接收到网络数据时的通知信号。它的状态通过s3c44b0x的传送给S3C44BOX。S3C44BOX轮询检测,若检测到跳变发生且MVBC01判断此信号为网络控制数据接收事件,则通过I2C接口读取MVBC01的数据。MVBC01的复位可通过微控制器的PA0端口触发。当MVBC01复位完成后,再通过/INT通知微控制器。MVBC01的控制口配置成串行方式的I2C接口,S3C44BOX通过该接口对MVBC01的寄存器进行初始化和其它控制操作。其网关硬件连接图如图5所示。

4 软件实现

由于MVB-CAN网关两侧连接的是两个现场总线,因此,它们实际的工作就是通过对信息的重新封装以使MVB总线和CAN总线能够读取和传输。


由于CAN数据帧包含8个字节的数据,而MVB从帧最多包含256个字节的数据,因此,从CAN侧接收到的数据要通过MVB传输,就需要按照一定的格式把CAN帧中的数据组合成MVB帧的数据格式;同样,从MVB侧接收到的数据要通过CAN传输,也需要按照一定的格式对MVB帧中的数据进行分帧处理。另外,为了实现透明传输,还需要把MVB侧的过程数据的数据集与CAN侧11位标志符对应起来。


本文采用的方案是建立一种规范的方式来定义MVB端的MVB各种变量的含义,如所在端的端口地址、长度、以及变量在数据集中的偏移量等。而后再将这些信息按照一定的规则和CAN总线侧的帧的标识符等信息对应成一个表格,这样,在CAN侧的数据接收就可以借助这个表格来完成。这样做的优点在于把一些必要的信息(位偏移、长度等)按照约定的形式来实现共享,因而不再需要在数据集中分出空间来传输一些(包括长度和偏移等)信息。本文把表格定义为应用层转换表(inbus-to-outbus或者out-to-inhus)。这里的端口指的是一种既可以被总线访问,又可以被应用处理器访问的存储器,它在MVB中是用来寻址的,数据的发送是通过应用将数据放入端口,数据的接收则是从端口中取数据放到应用中去。至于端口与端口间的数据拷贝,则是通过主轮询方式来实现的。当主节点轮询到需要发送数据的端口(源端口)时,便会产生从源端口到宿端口(数据接收端口)的数据拷贝。数据集在MVB中其实就是一般的纯数据,之所以称它为集,主要是因为MVB中一帧的数据较长,通常我们把多个变量的信息放在一个集中一个帧中1来传输,这样做较为经济。


本系统的软件模块主要有CAN模块、MVB控制模块、总任务处理模块、以及数据缓冲模块。其中CAN控制模块主要负责从CAN数据包中解析出完整的CAN协议报文,并存入数据缓冲区2,同时将数据缓冲区A中的CAN数据封装成完整的CAN协议报文后发送到CAN总线上;MVB控制模块主要负责从MVB数据包中解析出完整的MVB协议报文,并将其存人数据缓冲区1,同时再将数据缓冲NB中的MVB数据封装成完整的MVB协议报文后发送到MVB上;总任务处理模块主要起综合调度和监控作用,同时,它还用于整个传输过程中的中断响应;缓冲区模块主要负责将CAN侧和MVB侧接收的数据存储到缓冲区中。


网关程序的整体设计思路是当CAN侧数据发往MVB侧时,首先使CAN侧检测到有数据传过来,总处理模块通过调用CAN模块处理函数来接收数据,并通过对CAN帧的解码来获取CAN标志符,然后调用应用层转换表(inbus-to-outbus)以查询出相应的MVB端口的相关变量,接着再把相应的数据发送到数据缓冲区2中,最后由总任务处理模块通知MVB控制模块将缓冲区2中数据取走,并对数据进行MVB帧格式的编码,再发送到MVB总线上后释放缓冲区。


同样,当MVB侧数据发往CAN侧时,首先将数据发送到MVB上,然后由总任务处理模块检测MVB上是否有数据传输,并通知MVB控制模块接收数据,同时对信息进行解码分析,从中获取端口相关变量,依据端口相关变量查询应用层转换表(out-to-inbus),找出对应CAN标识符,同时将数据发送到数据缓冲区1。此时,总任务处理模块可通过CAN控制模块从缓冲区1中提取数据并进行完整的CAN报文封装,再发送到CAN总线上并释放缓冲区A。其中,MVB侧发往CAN侧的主程序流程如图6所示。


5 结束语

本文主要介绍了MVB-CAN网关的硬件和软件实现方法。其中,应用层协议的转换是整个网关的主要工作所在,所以,设计时必须建立尽量完善的关系对应列表,同时应提供友好的用户接口函数。


通过MVB-CAN网关的设计可以实现机车内车载设备间不同接口单元之间的通讯,从而为列车通信网络的多元化发展提供有力的支持。

推荐阅读

史海拾趣

Anritsu公司的发展小趣事

Anritsu公司是一家在电子行业内拥有悠久历史的领军企业,以下是关于该公司发展的五个相关故事:

  1. 成立与早期发展: Anritsu公司成立于1895年,最初名为Anritsu Electric Corporation。起初,该公司主要从事日本和国际市场的电信设备制造和销售业务。20世纪中叶,随着日本电信技术的发展,Anritsu开始专注于电信测试与测量领域,并开发了一系列先进的测试仪器。

  2. 技术创新与产品线扩展: 随着电信技术的迅速发展,Anritsu不断进行技术创新,推出了一系列领先的测试与测量仪器,包括频谱分析仪、网络分析仪、光通信测试设备等。这些产品在电信、无线通信、半导体等领域得到了广泛应用,为行业的发展提供了强大支持。

  3. 国际化发展: 在日本国内市场取得成功后,Anritsu逐渐将业务拓展到国际市场。公司在世界各地设立了分支机构和办事处,建立了完善的销售与服务网络,以更好地满足全球客户的需求。特别是在美国、欧洲和亚洲等地区,Anritsu建立了广泛的合作伙伴关系,拓展了市场份额。

  4. 对5G技术的贡献: 随着5G技术的快速发展,Anritsu积极投入到了5G测试与验证领域。该公司推出了一系列针对5G通信系统的测试仪器和解决方案,包括5G网络分析仪、5G基站仿真器等。Anritsu的技术和产品为全球5G网络的部署和优化提供了重要支持。

  5. 持续创新与发展: Anritsu一直以来致力于技术创新和产品研发,不断推出符合市场需求的新产品和解决方案。公司与全球领先的通信运营商、设备厂商和研究机构保持密切合作,不断优化产品性能和功能,为客户提供更高水平的技术支持和服务。

通过持续的创新和国际化发展,Anritsu已经成为了电子行业中的知名品牌,为全球通信技术的进步和发展做出了重要贡献。

振华(CEC)公司的发展小趣事

中国振华电子集团有限公司(简称振华)自成立之初,就致力于电子产品的研发与生产。初期,公司面临着技术落后、资金短缺等诸多困难,但创始人及团队凭借坚定的信念和不懈的努力,成功开发出了一系列具有市场竞争力的电子产品。随着产品质量的提升和市场份额的扩大,振华逐渐在电子行业中崭露头角。

Alpha (Taiwan)公司的发展小趣事

Alpha (Taiwan)公司自创立之初,便致力于电子技术的研发与创新。面对日益激烈的市场竞争,公司不断投入资金,引进先进设备,吸引了一批优秀的研发人才。这些人才凭借深厚的专业知识和敏锐的市场洞察力,成功开发出一系列具有竞争力的电子产品,如高性能的芯片、精密的传感器等。这些产品的推出,不仅提升了公司的市场地位,也为公司的快速发展奠定了坚实基础。

Fabrimex AG公司的发展小趣事

1979年,Fabrimex AG接管了ARCO-Solar(美国)的代表处,标志着公司正式进入光伏领域。这一举措为公司带来了新的增长点,并推动了相关产品的研发和生产。随着光伏技术的不断发展,Fabrimex AG在光伏领域逐渐取得了显著的成绩,为公司带来了可观的收益。

安森德(Ascend)公司的发展小趣事

安森德公司自创立之初,便以技术创新为核心竞争力。在半导体工艺领域,公司研发团队不断攻坚克难,成功研发出具有自主知识产权的超结MOSFET技术。这一技术的导通损耗和开关损耗均达到行业领先水平,为电源设备带来了更高的效率和更低的能源消耗。凭借这一技术突破,安森德的产品迅速在市场上获得认可,为公司的快速发展奠定了坚实基础。

Dawning Precision Co Ltd公司的发展小趣事

随着市场竞争的加剧,Dawning意识到只有不断创新才能在行业中立于不败之地。公司加大了对研发的投入,聘请了一批在电子制造领域具有丰富经验的专家。在专家团队的带领下,Dawning成功开发出了多款具有自主知识产权的高精度电子产品,这些产品不仅在性能上领先同行,而且在价格上也更具竞争力。这些创新产品的推出,极大地提升了Dawning在市场上的竞争力。

问答坊 | AI 解惑

常用电子元器件的识别(1)

常用元器件的识别 电阻 电阻在电路中用“R”加数字表示,如:R1表示编号为1的电阻。电阻在电路中的主要作用为 分流、限流、分压、偏置等。 1、参数识别:电阻的单位为欧姆(Ω),倍率单位有:千欧(KΩ),兆欧(MΩ)等。换算 方法是:1兆欧 ...…

查看全部问答>

三极管的实际工作功率如何确定?

一般三极管厂家的产品手册上都会有三极管的最大耗散功率Pcm,那三极管在具体电路里工作的时候,我如何确定它的实际消耗功率呢?怎么保证选用的三极管功率够用?有没有计算公式? 如果没有具体的计算公式,那三极管实际消耗的功率和什么参数有关系 ...…

查看全部问答>

STM32 函数说明

很有用的STM32 开发函数说明…

查看全部问答>

FPGA-SOPC开发快速教程.pdf

FPGA-SOPC开发快速教程.pdf…

查看全部问答>

图像处理与视频编、解码

CCD与CMOS图像传感器,你了解吗? 图像处理算法的硬件实现你试过吗? 犹如洪水般滚滚而来的高速、高流量的视频你怎么应付啊?…

查看全部问答>

第一个WINCE的项目,有两个问题要请教大家

第一个WINCE的项目,有两个问题要请教大家。 前提是,我只负责软件部分。 1 分辨率问题 显示屏幕尺寸是640*480,我做的程序要满屏幕显示。我在模拟器上通过GetClientWindow确定了窗口大小为640*480.而且我还通过MoveWindow,再次将窗口设置为0,0, ...…

查看全部问答>

【求助】keil中使用lib文件中的问题

LIB_VER2.0.LIB(1): error C100: unprintable character 0x07 skipped LIB_VER2.0.LIB(1): error C141: syntax error near \',\' LIB_VER2.0.LIB(2): error C100: unprintable character 0xFD skipped LIB_VER2.0.LIB(3): error C129: missing \ ...…

查看全部问答>

关于地址分配

西门子PLC,各模块的地址是固定分配的,可是他的地址又不是连贯的(比如做组态时,两块相同的16路DI模块分别插入两个相邻的SLOT  中,可是两块模块之间的地址不连续。第一块开始0,结束1,;第二块开始4,结束5)。系统默认选项去掉后可以 ...…

查看全部问答>

承接项目

由于现在工作比较清闲,想在此论坛可以找到类似兼职。说明:自己不是很懂,愿意跟从师傅,打杂跑腿,只要是有关DSP相关的工作都可以。 有意者请联系:media.28@163.com 我会一直关注我的邮箱。…

查看全部问答>