MVB与CAN总线协议转换的研究与实现
CAN总线接口在单片机网络通信中的实现方法

CAN总线接口在单片机网络通信中的实现方法CAN(Controller Area Network)总线是一种广泛应用于汽车、工业控制和机器人等领域的串行通信协议。
它在单片机网络通信中具有重要的作用,可以实现高效可靠的数据传输。
本文将介绍CAN总线接口在单片机网络通信中的实现方法。
一、CAN总线的基本原理CAN总线是一种多主机、多从机的总线系统,其基本原理是基于广播方式进行通信。
CAN总线上的每个节点都可以发送和接收数据,它们通过共享线路传递信息。
在CAN总线中,每个节点都有一个唯一的标识符。
当某个节点发送一帧数据时,其他节点会接收到该帧数据并进行处理。
这种广播方式可以实现节点之间的高效通信。
二、CAN总线接口的硬件实现为了在单片机网络通信中实现CAN总线接口,我们需要使用一种具备CAN功能的单片机芯片,并连接相应的硬件电路。
1. CAN控制器:CAN控制器是实现CAN总线通信的核心部件,它负责发送和接收数据,并进行错误检测和纠正。
CAN控制器通常集成在专门的CAN芯片中,也可以作为单片机的一部分。
2. CAN收发器:CAN收发器是将CAN控制器产生的数字信号转换为物理信号,以便在CAN总线上进行传输。
它可以将接收到的差分信号转换为单端信号,并将发送的单端信号转换为差分信号。
3. 终端电阻:CAN总线上的终端电阻用于抵消传输线上的反射信号,并确保正确的信号传输。
终端电阻一般放置在CAN总线的两端。
4. 过滤器电路:过滤器电路用于过滤掉不需要的数据帧,只接收需要的数据帧。
它可以根据CAN帧的标识符进行过滤,提高系统的响应速度。
三、CAN总线接口的软件实现在硬件电路连接完成后,我们还需要编写相应的软件程序来实现CAN总线接口的效果。
1. 硬件驱动:首先,我们需要编写硬件驱动程序,通过设置单片机的寄存器配置CAN控制器和收发器。
这些寄存器包括CAN控制寄存器、接收缓冲区寄存器和发送数据寄存器等。
2. 初始化配置:在使用CAN总线前,我们需要进行初始化配置,包括设置波特率、模式选择、过滤器设置等。
CAN总线详细教程精心编制

CAN总线布置、构造和基本特点
考虑到信号旳反复率及产生出旳数据量,CAN总线系统分为 三个专门旳系统
• CAN驱动总线(高速),500Kbit/s,可基本满足实时要求。 • CAN舒适总线(低速),100 Kbit/s,用于对时间要求不高 旳情况。 • CAN“infotainment”总线(低速),100Kbit/s,用于对 时间要求不高旳情况。
Canbus旳收发器如图所示,使用一种电路进行控制,这么也就 是说控制单元在某一时间段只能进行发送或接受一项功能。 逻辑“1”:全部控制器旳开关断开;总线电平为5Vor3.5V; Canbus未通讯。 逻辑“0”:某一控制器闭合;总线电平为0伏; Canbus进行通
所以总线导线上就会出现两种状态: 状态1: 截止状态,晶体管截止(开关未接合) 无源: 总线电平=1,电阻高
◆ 基于CAN旳应用层协议应用较通用旳有两种:DeviceNet(适合于工厂底层自动 化) 和 CANopen(适合于机械控制旳嵌入式应用)。 ◆ 任何组织或个人都可以从DeviceNet供货商协会(ODVA)获得DeviceNet规范。 购买者将得到无限制旳、真正免费旳开发DeviceNet产品旳授权。 ◆ DeviceNet自2023年被确立为中国国家原则以来,已在冶金、电力、水处理、乳
汽车电子技术发展旳特点:
汽车电子控制技术从单一旳控制逐渐发展到 综合控制,如点火时刻、燃油喷射、怠速控 制、排气再循环。
电子技术从发动机控制扩展到汽车旳各个构 成部分,如制动防抱死系统、自动变速系统、 信息显示系统等。技术旳分类:
单独控制系统:由一种电子控制单元(ECU)控制 一种工作装置或系统旳电子控制系统,如发动机控 制系统、自动变速器等。
求
总之,使用汽车网络不但能够降低线束,而且 能够提升各控制系统旳运营可靠性,降低冗余 旳传感器及相应旳软硬件配置,实现各子系统 之间旳资源共享,便于集中实现各子系统旳在 线故障诊疗。
can芯片电平转换原理

can芯片电平转换原理Can芯片电平转换原理一、引言Can芯片是一种常用于工业控制和汽车领域的通信协议,其具有高可靠性和抗干扰能力强的特点。
Can芯片电平转换是指将Can总线上的信号转换为与其他设备兼容的信号电平,以实现Can总线与其他设备的通信。
本文将介绍Can芯片电平转换的原理和实现方式。
二、Can芯片电平转换的原理Can总线上的信号电平通常为差分信号,即CAN_H和CAN_L两根线上的电平差为2.5V。
而其他设备常用的信号电平一般为0V和5V。
因此,需要将Can总线上的信号电平转换为0V和5V的信号电平,以便与其他设备进行通信。
Can芯片电平转换主要通过电平转换电路来实现。
电平转换电路通常由电平转换芯片和电阻网络组成。
电平转换芯片是一种专门用于电平转换的集成电路,其内部包含差分输入和单端输出的电平转换功能。
电阻网络用于调整电平转换芯片的电阻值,以适应不同设备之间的电平差异。
三、Can芯片电平转换的实现方式Can芯片电平转换的实现方式主要有以下两种:1. 使用外部电平转换芯片这种方式需要在Can芯片和其他设备之间添加一块外部电平转换芯片。
外部电平转换芯片通常具有多个差分输入和单端输出,可以同时转换多个Can总线信号。
将Can总线上的差分信号连接到外部电平转换芯片的差分输入端,将转换后的单端信号连接到其他设备的信号引脚上即可实现电平转换。
2. 使用内部电平转换功能一些高端的Can芯片内部已经集成了电平转换功能,可以直接将Can总线上的差分信号转换为其他设备兼容的单端信号。
这种方式省去了外部电平转换芯片的使用,简化了电路设计。
使用内部电平转换功能只需将Can芯片的单端输出连接到其他设备的信号引脚上即可。
四、Can芯片电平转换的注意事项在进行Can芯片电平转换时,需要注意以下几点:1. 电平转换芯片的选择要符合系统要求,包括转换的电平范围、转换速度和功耗等方面。
2. 电阻网络的设计要根据系统需求进行合理选择,以确保信号的稳定性和可靠性。
电机mcu can协议

电机mcu can协议
电机MCU CAN协议是指电机控制单元(MCU)使用控制器局域网(CAN)总线进行通信的协议。
CAN总线是一种串行通信协议,广泛应用于汽车、工业控制和其他领域的实时控制系统中。
在电机控制系统中,MCU通过CAN总线与其他设备(如传感器、控制器等)进行数据交换和通信。
电机MCU CAN协议的实现通常涉及以下几个方面:
1. 数据帧格式,CAN总线使用数据帧进行通信,包括标准帧和扩展帧两种格式。
在电机控制系统中,需要定义数据帧的结构,包括标识符、数据域和控制字段等。
2. 通信协议,电机MCU需要遵循一定的通信协议来进行数据交换,包括数据传输的时序、错误处理、数据帧的优先级等。
3. 数据解析,接收到的CAN数据需要进行解析和处理,以便MCU能够理解和使用这些数据。
这涉及到数据格式的解析、数据校验和错误处理等。
另外,电机MCU CAN协议的实现还需要考虑以下几点:
1. 实时性要求,电机控制系统通常对实时性有较高的要求,因此CAN通信的时序和响应时间需要进行严格的控制。
2. 数据安全性,在CAN总线上进行通信时,需要考虑数据的安全性和保密性,防止数据被非法获取或篡改。
3. 网络管理,在多个设备共享同一条CAN总线的情况下,需要进行网络管理和冲突处理,以确保通信的稳定性和可靠性。
总的来说,电机MCU CAN协议的实现涉及到通信协议、数据帧格式、实时性要求、数据安全性和网络管理等多个方面,需要综合考虑系统的整体需求和特点,以确保通信的稳定性和可靠性。
CAN总线详细教程可修改全文

功能
2个以上控制器所组成的Canbus系统 当用2个以上的控制器连接在Canbus总 线上(如图所示),用逻辑1来表示断开 和用逻辑0表示闭合。不考虑其他总线规 则情况下,总线会出现下图的情况: 1.任何开关闭合,总线上的电压为0伏 2.所有开关断开,总线上的电压为5伏
集中控制系统:由一个电子控制单元(ECU)同时 控制多个工作装置或系统的电子控制系统。如汽车 底盘控制系统。
控制器局域网络系统(CAN总线系统):由多个电 子控制单元(ECU)同时控制多个工作装置或系统, 各控制单元(ECU)的共用信息通过总线互相传递。
带有中央控制单元的车
带有三个中央控制单元的车
基于CAN总线的汽车电器网络结构
发动机 自动变 ABS/TCS 安全气 电控悬 巡航控 动力转 电机控 电池管
ECU 速器ECU ECU
囊ECU 架ECU 制ECU 向ECU 制ECU 理ECU
高速总线
E整EC整CU车U(车(控网控网制关制关器)器)
低速总线
故障诊断 ECU
灯光控 刮雨洗涤 电动座 门锁防 电动车 后视镜 气候控 警告信 仪表显 制ECU 控制ECU 椅ECU 盗ECU 窗ECU 喇叭ECU 制ECU 号ECU 示ECU
求Байду номын сангаас
总之,使用汽车网络不仅可以减少线束,而且 能够提高各控制系统的运行可靠性,减少冗余 的传感器及相应的软硬件配置,实现各子系统 之间的资源共享,便于集中实现各子系统的在 线故障诊断。
Canbus的发展历史
大众公司首次在97年PASSAT的舒适系统 上采用了传送速率为62.5Kbit/m的 Canbus。
can总线接法

can总线接法CAN总线是Controller Area Network的缩写,它是一种应用广泛的串行通信协议。
CAN总线通信技术可以用于自动控制领域,例如汽车、工业自动化以及航空航天等领域。
CAN总线网络的设计和接法对于系统的性能和可靠性非常重要。
下面将从CAN总线接法的基本原理和注意事项等方面进行相关参考内容的描述。
首先,对于CAN总线的接法设计,正确选择传输速率非常重要。
CAN总线有多种传输速率选项,常见的有10Kbps、100Kbps、500Kbps、1Mbps等。
传输速率的选择应该根据实际应用需求来确定。
通常情况下,数据量较小的系统可以选择较低的传输速率,而数据量较大或实时性要求较高的系统则需要选择较高的传输速率。
其次,对于CAN总线的接法设计,物理层的电缆选择也是关键。
CAN总线的物理层通常采用双绞线作为传输介质,而CAN总线使用的双绞线一般为屏蔽双绞线。
在实际应用中,应该选择合适的规格和质量的双绞线,以确保数据的可靠传输。
此外,在实际应用中,应该注意CAN总线的连接方式和拓扑结构。
常见的CAN总线连接方式有直接连接和通过网桥连接两种。
直接连接方式即将CAN节点通过CAN线连接在一起,形成一个总线网络。
而通过网桥连接方式则是将多组CAN节点通过网桥相互连接在一起,网桥可以实现CAN总线之间的数据传输。
在选择连接方式时,应该根据实际应用需求和网络拓扑结构的复杂程度来确定。
另外,还需要注意CAN总线节点的电气特性匹配和总线长度的限制。
在设计CAN总线接法时,各个节点的电气特性应该匹配,避免因电气特性不匹配而导致通信故障。
此外,CAN总线的长度也有限制,通常为几十到几百米不等,如果长度超过限制,则需要通过使用CAN总线中继器或增加电平转换器等手段来解决。
最后,为了确保CAN总线的可靠性和稳定性,需要在设计中考虑电磁兼容性与抗干扰性。
CAN总线通常存在与其他电子设备和电磁信号源的干扰,因此需要在设计中采取一定的抗干扰措施,例如对CAN总线进行屏蔽,合理布置CAN节点等,以减少外界干扰对CAN总线通信的影响。
CAN总线的原理及使用教程

CAN总线的原理及使用教程CAN总线的基本原理是基于广播通信和多主机通信机制。
多个节点可以同时发送和接收消息,消息被广播到所有其他节点,每个节点根据消息中包含的标识符来判断该消息是否与自己相关。
如果消息与节点相关,节点将处理该消息;如果消息与节点不相关,节点将忽略该消息。
这种机制使得多个节点可以在同一个总线上同时进行通信,大大提高了总线的利用率。
CAN总线的传输速率通常为1Mbps或以上,并且支持长距离传输。
它采用差分信号线进行传输,其中CAN_H和CAN_L线分别携带正向和负向信号,通过比较CAN_H和CAN_L之间的电压差来判断数值。
差分信号线的使用可以有效地抑制电磁干扰和噪声,提高传输的可靠性。
在CAN总线中,每个节点都有一个唯一的标识符用于区分不同的节点。
当节点需要发送消息时,它会将消息封装成一个帧,包括标识符、数据和一些控制字段。
帧被发送到总线上,其他节点可以接收到该帧并进行相应的处理。
节点还可以发送错误帧来检测和纠正总线上的错误。
为了保证多个节点之间的通信顺序和优先级,CAN总线采用了基于优先级的仲裁机制。
当多个节点同时发送消息时,节点根据自己的标识符计算一个仲裁值,仲裁值越小的节点具有较高的优先级,可以发送消息。
其他节点将立即停止发送,并等待仲裁完成后再发送。
这种仲裁机制保证了消息的有序发送,避免了冲突。
除了基本的消息传输外,CAN总线还支持远程帧和错误帧等功能。
远程帧用于请求其他节点发送指定标识符的消息,而错误帧用于报告总线上的错误情况。
这些功能使得CAN总线更加灵活和可靠。
在使用CAN总线时,首先需要选取合适的硬件设备和控制器。
接下来,需要进行总线的布线和连接,保证差分信号线的正确连接和屏蔽的使用。
然后,需要编写相应的软件程序来控制节点的行为,包括发送和接收消息、处理错误等。
最后,进行系统的调试和测试,确保CAN总线的正常工作。
总之,CAN总线是一种高性能的串行通信协议,具有多节点同时通信、高速传输、抗干扰能力强等优势。
CAN总线详细教程

CAN总线详细教程CAN总线是一种高速串行通信协议,广泛应用于自动化控制系统、汽车电子、工业设备等领域。
它具有高速传输、可靠性强和抗干扰能力强等优点。
本篇文章将介绍CAN总线的基本原理、通信方式、帧格式以及应用示例等内容。
一、CAN总线基本原理CAN(Controller Area Network)总线是一种多主机、多从机的通信系统,包括一个主控器和多个节点。
主控器负责决定总线上的通信速率和优先级,节点之间的通信通过总线上发送和接收的消息进行。
二、CAN总线通信方式1.基于广播的通信方式:主控器发送的消息会被总线上的所有节点接收。
节点根据消息的标识符判断是否需要对其进行处理。
2.基于点对点的通信方式:主控器发送的消息只会被消息的接收者节点接收。
消息的接收者是通过消息的标识符来确定的。
在实际应用中,一般会结合这两种通信方式来实现复杂的通信需求。
三、CAN总线帧格式1.数据帧:用于实际传输数据。
数据帧包括标识符、控制字段、数据字段和校验字段等。
2.远程帧:用于请求节点发送数据。
远程帧只包括标识符和控制字段。
标识符用于标识消息的类型和优先级,控制字段用于进行错误检测和数据传输的控制。
数据字段包含要传输的数据,校验字段用于检测数据传输过程中是否出现错误。
四、CAN总线应用示例以汽车电子控制系统为例,介绍CAN总线的应用。
在汽车上,CAN总线被广泛应用于发动机控制、刹车系统、空调系统等各种电子控制单元之间的通信。
通过CAN总线,这些电子控制单元可以实现信息的共享和协同工作。
例如,发动机控制单元可以将发动机的运行状态通过CAN总线发送给其他控制单元,供其他控制单元进行相应的控制。
刹车系统可以通过CAN总线获取发动机控制单元的信息,判断是否需要进行制动操作。
空调系统可以根据发动机控制单元的信息,调整空调的工作状态等。
总结:CAN总线是一种高速串行通信协议,具有高可靠性和抗干扰能力强的特点。
它采用差分传输技术,实现多主机、多从机的通信。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
18 MVB与CAN总线协议转换的研究与实现 MVB与CAN总线协议转换的研究与实现 谢 芳 同济大学电子与信息学院(200331) AbstraCt This paper introduces a protocol converter,which complete the protocol conversion between MVB Bus and CAN Bus,ad—
ditionally including its functional principle。hardware block and software design The problem of the speed disaccord and the conversion of application layer S protocol is emphasised in this paper. Keywords:fieldBus,protocol converter,MVB,CAN gateway 摘 要 本文介绍了一种协议转换器,它主要完成MVB和CAN现场总线之间的协议转换。文中还包括了它的设计思路,硬件框 图和软件设计。对于速率不匹配的处理和应用层协议的转换上,作了重点的阐述。 关键词:现场总线,协议转换,MVB,CAN网关
随着技术的进步和市场的需求变化,铁路机车车辆工业对 列车微机控制系统中的车载数据通信网提出了新的要求,期望 建立一个在机车车辆内部及列车和地面控制系统之间交换控制 命令、状态信息、故障诊断及旅客信息等的数据通信网络。为此, IEC制定的列车通信网路国际标准TCN(Train Communication Network)将成为一个标准的数据通信平台。 按照TCN标准,列车通信网分为两级,第一级绞线式列车 总线 B(Wired Train Bus)实现车辆间的数据通信,第二级 多功能车辆总线MVB(Multifunction Vehicle Bus)主要实现同 个车辆内各个功能控制单元之间的数据通信。CAN总线则主 要完成现场设备间的数据通信。而我们所要做的就是通过协议 转换在MVB总线和CAN总线之间建立可靠的数据连接。 1 CAN总线及MVB总线概述 CAN是一种多主方式的串行通讯总线,它的MAC(媒体访 问控制)是通过非破坏性按位仲裁技术实现的。 MVB是一种主从方式的串行通讯总线,是为快速的过程控 制优化的总线,能提供最佳的响应速度,适合用作车辆总线。它 的MAC(媒体访问方式)是通过总线主进行轮询实现的。MVB 总线中有一个重要的角色就是总线管理器,称为总线主,负责通 信的发起,总线主在每一个特征周期里通过发主帧的方式对进 程数据进行轮询,相应的从设备发送从帧进行真正的数据传输。 2总线之间的协议转换 MVB和CAN都属于现场总线范畴,既然是现场总线,分层 结构和要求较以太网就会有所不同。具体来讲,由于现场总线强 调的是实时性,以太网强调的是可靠性,所以用于以太网的OSI 的7层分层是不优化的。大多数现场总线的分层结构都是j.层: 物理层,数据链路层,应用层。当然也个别的,如LONWORKS、 因此在讨论总线之间协议转换的时候,我们一般不涉及网络层 除了数据链路层的协议转换以外,总线之间的协议转换还包括 了对应用层的协议转换工作。 我们知道应用层定义的针对用户应用的接口协议。在计算 机网络中,我们所涉及到的应用有很多普遍性,从而产生了一些 通用的标准应用层协议,如FTP、HTrP等。然而,在现场总线的 应用场合,存在着多样性,针对不同的应用场合,可以产生不同 的应用协议。但是有一点可以肯定,具体现场总线的应用层协议 肯定要比计算机网络的应用 协议简单的多,其主要也是为了 缩短数据包的长度,以体现实时性。 MVB有过程数据和消息数据之分,这是MVB协议的一大 特色。基于过程数据的网络分层是3层(物理层、数据链路层、应 用层),而基于消息数据的网络分层则有7层(OSI 7层),由于 消息数据的复杂性,和较少的应用场合,我们这里只讨论过程数 据,所以也可以将MVB视为一个三层协议的网络。 CAN的网络分层结构严格来说就只有两层,物理层和数据 链路层,但由于涉及到具体应用,必须需要定义应用层。De— viceNet就规范地定义了CAN总线的应用层,比如说它利用了 CAN的11位标示符,对每一位都作了详细的功能划分,和具体 的表示规范。但由于它涉及的面比较广,从而造成了也比较复 杂。在此,可以借鉴它其中一些适用于具体应用场合的一些定义 来构建自己的应用层协议,如第几位表示单帧或多帧等,甚至还 可以利用数据场的部分字节来做一些应用方面的定义。 为了实现MVB—CAN的协议转换,需要做以下工作: 1)帧格式的转换(主要是帧字节数大小的不同,帧的编码解 码部分由网卡硬件完成); 2)应用层的转换(通过一定的形式将MVB总线当中表示过 程数据的数据集与CAN的11位表示数据含义的标志符联系 起来,实现透明的传输); 3)数据传输速率的匹配。 3 MVB和CAN之间协议转换的实现 3.1帧长度处理及应用层的转换 CAN的数据帧中数据场的字节数是8个字节,而MVB从 帧中的数据长度为32字节(取其中一种)。从MVB侧传送到 CAN侧的数据就需要进行分帧处理,同样从CAN侧传到MVB 侧的数据也需要按照一定的规则组合成一个MVB帧。在这里可 以有两种方案来解决: 第一种我们可以采取建立一种规范(协议)的方式来预先定 义MVB的各种变量的含义(应用层的协议),所在端口的端口地 址,长度,以及在端口中数据集的偏移位置等等,而后将这些信 息按照一定的规则和CAN侧的帧的标志符等信息对应成一个 表格,这样在CAN侧的数据接收就可以借助这个表格来完成。 这样做的优点在于把一些必要的信息(位偏移、长度等)按照约 定的形式来实现共享,那么就不需要再在数据集中分出空间来 传输一些包括长度,和偏移等的信息了。缺点就是用户使用的时 候必须熟读这个表格,在发送端和接收端都要按照表格来编程 以完成数据的传输,且表格一旦生成,就不易产生很大的变动, 灵活性较差。这里的端口指的是一种既可以被总线又可以被应 用处理器访问的一种存储器,它在MVB中是用来寻址的,数据
维普资讯 http://www.cqvip.com 《工业控制计算机))2004年17卷第2期 19 的发送是通过应用将数据放入端口,数据的接收则是从端13中 取数据放到应用中去。至于端口与端口间的数据拷贝则是通过 主轮询方式,当主节点轮询到需要发送数据的端口(源端口)时, 便产生了从源端口到宿端口(数据接收端口)的数据拷贝。数据集 在MVB中其实就是一般的纯数据,之所以称它为集是因为 MVB中一帧的数据较长,通常我们就把多个变量的信息放在一 个集中(一个帧中)来传输,这样做较为经济。 第二种我们可以利用MVB从帧中的部分字节来表示变量 含义,端口刷新标志等信息,而变量长度和偏移等其他信息则可 以放在表格中通过变量含义来查找获得。只是这里的表格由于 是基于查找方式的,而不是纯粹的规范,所以简单也灵活的多 端口刷新标志是用于标志是否该从宿端口取数据到缓冲区,借 用它我们可以知道宿端口中是不是有新数据。 我们采用的是第二种方式,上面所说的表格其实有两个,一 个是基于MVB过程变量含义来查找的,我们称为LIST1(其人 口参数为LIST1一INDEX),其由以下几个要素组成:MVB过程变 量的含义,MVB端口地址(宿端口),MVB过程变量在数据集中 的偏移地址,MVB过程变量长度,CAN帧的标志符。另一个表 格是基于CAN帧标志符来查找的,我们称为LIST2(其入口参 数为LIST2_INDEX),其由以下几个要素组成:CAN帧的标志 符,CAN帧的长度,CAN帧在MVB数据集中的偏移地址,MVB 端口地址(源端口),MVB过程变量含义。 3.2不同的数据传输速率 CAN总线的最大数据传输速率是1MbiVs,而MVB总线的 传输速率则是1.5 MbiVs。由于CAN的传输速率是与传输线长 度密切相关,1MbiVs的速率所支持的传输线长度太短,在实际 应用场合是很难实现的,在较为理想的情况下,传输线总长度仅 为100m的情况下只能支持500kbiVs的传输速率。而MVB的 数据传输速率则是定值。所以CAN总线与MVB总线的数据传 输速率差异是很大的。 传输速率的不一致必然造成数据的积压和丢失。这个问题 可以通过设立数据缓冲区加上一定的机制来解决。那么缓冲区 设多大才比较合适呢?如果设的太大,必然造成资源的浪费,提 升成本,如果设的太小,又容易造成数据的溢出。下面我给出一 个算法来说明缓冲器的大小取值(假定CAN侧速率为500kbit/ s,传输距离为10o米,MVB侧传输速率为1.5Mbit/s)。 MVB侧:MVB有主帧和从帧之分,所以说完成一个完整32 字节数据帧的传输需要一个报文(一个主帧加一个从帧),主帧的 帧头帧尾再加上从帧的帧头帧尾,还有主帧和从帧的帧间间隔, 加起来一个报文的传输需要2631J,s的时间(具体过程不做计 算),而在MVB的一个基本周期中(主帧进行轮训的基本单位, 假设为1ms)分配给过程数据传输的就只有6501xs,也就是说在 1ms当中,我最多可以完成两个32字节完整数据帧的传输,总 共为64字节。 CAN侧:CAN侧采用的媒体访问方式本质上是一种类似 于CSMA/CD的争用方式.只不过加上了一个优先级罢了。争 用期也就是发生了冲突导致无法正常传输有效数据的时段,我 们知道争用期的最大值是4T(T是端到端的传播延时): f=2(芯片延时+收发器接收延时+收发器发送延时+电缆造 成的延时):2(62.5+100+1o0+100 5.5):1625ns 其中的芯片延时和收发器延时都是固定的,电缆造成的延 时计算如下:电缆传播系数(这里为5.5ns/m)¥最大传输距离 (100米)。由上得出最大争用期为=4f=4¥1625=6.51xS.发送 个数据帧所需的时间=帧长度/数据传输速率=107biV500 kbiVs=2141xs(这里的帧长度是发送一个完整的数据帧所需的 所有bit,具体见CAN协议规范),也就是说完成一个8字节 CAN帧的发送所需时间214p,s+6 51xs=220.5 s。那么在1ms 当中,大约可以完成4个8字节的CAN帧(即使每帧都遇到最 长的争用期),总共为32个字节。 由此我们可以看出虽然在速率上MVB总线是CAN总线 的三倍,相差较大,但是从整个传输的有效bit数来看,MVB总 线则是CAN总线的两倍,也就是说当网关的MVB侧接收了64 字节数据的时候,同样时间内网关的CAN侧只成功地发送了这 64字节当中的32字节的数据,剩下的32个字节还未能发送出 去。因此我们把缓冲区的大小设为320个字节(32字节¥10个 基本周期),这样的大小能够保证在MVB的十个基本周期内,如 果每个基本周期都连续成功发送两个报文给网关节点,而且 CAN侧网关节点的优先级始终最高的话,不会产生数据丢失的 情况。当然MVB不一定每个基本周期都会发送两个报文这么多 的数据,也不一定全部发向网关节点,所以大小已经足够了。 缓冲区的软件实现采用数据结构中的循环队列结构来实现, 队列有着先进先出的特点,用与作数据缓冲区有其独到优势。而 这里的循环是为了防止假溢出现象而采用的更加优化的结构。 4协议转换器的原理结构 基于开发方便考虑,我们采用一块主控处理器(486DX),来 主持网关两边数据的收发,CAN侧我们采用一块宿CPU+CAN 控制器构成,MVB网络接口单元NIU中包含MVB控制器 (PLD),和一个CPU内核(ARM)。 CAN侧和主控CPU之间的数据交换采用双口RAM方式。 要实现主控CPU和CAN控制器之间的数据传送,就必须在主 控CPU与CAN侧的宿CPU之间建立起双向的数据交换通 道,双口RAM就是提供了两路完全独立的端口。其每个端口都 有完整的地址、数据和控制线,利用一些中断标志来解决双 CPU的争用问题,从而实现数据快速的交换。 而主控CPU与D113网卡之间的数据交换则采用UART 仿真方式。UART(通用异步收发器),是一种基于异步串行通信 机理的接收和发送装置,现在用的比较普遍的是16C450,我们 PC机串口采用的就是这个器件。为了便于与具有这种串口接口 的器件进行通讯(如PC等),同时也为了提高数据传输的速率, 所以在D113的PLD中模拟出了这个一个寄存器组(取的是 16C450寄存器组的一个子集),以便能和主控CPU进行速度 较快,且较为可靠的数据传输。 其硬件框图如图1所示。