从CAN总线到VXI总线的数据传输

上传人:ji****72 文档编号:37570468 上传时间:2018-04-18 格式:DOC 页数:10 大小:289.50KB
返回 下载 相关 举报
从CAN总线到VXI总线的数据传输_第1页
第1页 / 共10页
从CAN总线到VXI总线的数据传输_第2页
第2页 / 共10页
从CAN总线到VXI总线的数据传输_第3页
第3页 / 共10页
从CAN总线到VXI总线的数据传输_第4页
第4页 / 共10页
从CAN总线到VXI总线的数据传输_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《从CAN总线到VXI总线的数据传输》由会员分享,可在线阅读,更多相关《从CAN总线到VXI总线的数据传输(10页珍藏版)》请在金锄头文库上搜索。

1、从 CAN 总线到 VXI 总线数据传输的实现彭琪琪, 陈 光(电子科技大学自动化学院 CAT 实验室,四川 成都 610054)摘要:在 VXI 总线系统中,为了能够获得大量实时数据,需要利用 CAN 总线快速可靠的传输数据的性能,设计一种混合 VXI 总线和 CAN 总线的系统。在这种混合系统中要实现 CAN 总线上各个节点采集并传输实时数据,采用 VXI-CAN 这样一个消息基模块完成数据到 VXI 总线上的传输。通过这种 VXI 总线和 CAN 总线互相通讯获得实时数据的基本原理和方法,实现了实时数据的采集。这种数据传输的实现为 VXI 总线系统的设计拓宽了新的思路。关键词:CAN 总

2、线;VXI 总线;数据传输;VXI-CAN 模块1引言控制器局部网(CANController Area Network)是一种有效支持分布式控制或实时控制的串行通信网络。自从它的问世以来,由于其高速通信速率、高可靠性、连接方便和高的性价比等突出优点成为工业应用领域的生力军。其应用已从最开始的汽车工业扩展到农业机械、医疗器械等各个领域。由于, CAN 总线上的数据占用总线时间很短,能够保证通信的实时性; CAN 协议中规定数据传递有错误处理功能,能够保证通信的可靠性。因此在我们所研究的VXI 总线系统中,将 CAN 总线作为实时数据采集传输线,发挥了其独有的优势,弥补了VXI 总线的局限。一条

3、 CAN 总线上可以有 256 个节点,每一个节点都可以从 CAN 总线上接收数据,也可以向 CAN 总线发送数据。由于 CAN 总线的系统灵活,其节点可以在不要求所有现存节点及其应用层改变任何软件或硬件的情况下,接入CAN 网络。对于一个VXI 总线的实时系统来说,想增添或减少一个VXI 模块必须重新初始化模块。又由于一个 VXI 机箱的槽数很有限,若采用 VXI 总线则采集模块个数也就受到限制了,但是若采用 CAN 总线传输实时数据,节点数量则大大增加。因此,要构造一个实时的多数据采集传输系统,选择 CAN 总线作为实时数据的传输总线也不失为一种实际有效的方法1。2VXI 总线与 CAN

4、总线数据传输的比较2.1 传输速率VXI 总线有较大的数据吞吐量,传输速率可达40Mbps,而 CAN 总线的位速率只有1Mbps。虽然 CAN 总线作为串行数据通信总线已有较高的传输速率,但相对于VXI 总线来说,它仍然只能算作低速总线。2.2 传输协议在 VXI 总线系统中,实现命令者 -从者的通讯和控制遵循 “字串行协议” 。 “字串行协议”是串行地从一个固定地址向另一个固定地址传送数据的通讯协议。这个协议是消息基器件最基本的通讯方法,所有的消息基器件都应实现这个协议2。而在 CAN 总线中,数据传输则遵循 CAN 技术规范 2.0。该版本包括 A、B 两部分,A 描述了报文格式, B

5、中描述了标准格式和扩展格式。在技术规范2.0 版中规定了发送报文的 4 种帧格式:数据帧、远程帧、出错帧以及超载帧。每种帧格式都有各自不同的位场,通过每一个位场上位的标识,来控制该帧传输的信息及传输方式。要实现这两种数据传输速率、传输协议完全不同的两种总线上的数据传输,下面介绍了一种切实可行的方法。3数据传输的基本原理通过上面的比较,数据在 CAN 总线与 VXI 总线上传输分别遵循不同的规约,同时又存在低速总线与高速总线之间数据缓冲处理的问题。因此要使数据在两条总线上畅通有效地进行传输,这里引入了一个 VXI 消息基器件 VXI-CAN 模块。整个系统结构如下图:图 1 VXI 总线和 CA

6、N 总线混合系统结构其中零槽控制机是采用的 NI 公司的 872B 嵌入式的零槽控制机,所装系统为Windows 2000,并且在该操作系统上已经安装了 NI 的 VISA 库,能够支持基于 VISA库函数的编程。4 路 CAN-VXI 卡是一个 VXI 消息基器件,它的每一个接口都可以连一条CAN 总线,故该模块允许连接 4 条 CAN 总线。CAN 总线上用一个仿真计算机作为 CAN 的一个节点,它与 CAN 总线的接口是一块PCI-CAN 卡。在上面的 VXI 系统中,基本传输原理如下图。背板总线 CAN PCI 总线 总线 图 2 数据传输硬件结构当零槽控制机想通过 CAN 总线向 C

7、AN 节点发送命令或数据时,数据或命令首先通过背板总线到 VXI-CAN 模块(图 2 虚线框内部分) 。为了支持字串行协议,在该消息基模块中包含了 VXI 总线接口电路(可采用专用的接口芯片如: Interface IT9010M,也可以采用可编程逻辑器件自行设计 ) 。通过这种专用 I/O 电路,从硬件上完成了对字串行命令译码。获得字串行协议的译码后,再 采用 80C196 来控制 CAN总线控制器(PHILIPS 的 SJA1000) 。SJA1000 是一种支持 CAN 协议 2.0B 的芯片,带有验收滤波器,可支持 11 位和 29 位的标识符的滤波。通过该 CAN 总线接口电路最后

8、完成向 CAN 总线帧格式的转化。接着数据或命令再通过CAN 总线到达各个 CAN 节点。在上面的结构中即数据到达 PCI-CAN 卡的接收数据缓冲区,仿真计算机读取缓冲区数据即可。同样,若仿真计算机想通过 CAN 总线向 VXI 总线的零槽控制机发送数据,则将经过仿真计算机发送数据帧到 PCI-CAN 卡发送数据缓冲区, CAN 总线将数据帧串行送入VXI-CAN 模块的 CAN 总线接口电路进行解析,存储到模块双口RAM 中,最后通过零槽控制机控制消息基模块的命令,读取缓冲区数据的过程。根据 CAN 协议 2.0B,数据传输有两种帧格式,标准帧和扩展帧。二者不同仅仅在于标识符的长度,所以下

9、面只具体介绍采用扩展帧发送数据,而不再描述标准帧的传输了。就发送数据而言,若以扩展帧格式发送数据帧,包括一个RTR 位和一个 29 位的标识符。RTR 位用来区别标准格式或是扩展格式。 29 位标识符标识了不同数据帧的含义,可以用来区别一条 CAN 总线上 256 个不同节点发送的不同数据。就接收数据而言, CAN 协议 2.0B 分别为标准帧和扩展帧提供了两种滤波方式。SJA1000 支持 CAN 协议 2.0B,它提供了 4 个 8 位的验收码寄存器( ACR0ACR3)和零 槽 控 制 机VXI 总线接 口电路控制数据缓冲及数据读写的单片机CAN 总线接口控制电路PCI-CAN卡仿 真

10、计 算 机接收 VXI 总线命令及数据向 VXI 总线发送命令及数据验收屏蔽寄存器( AMR0AMR3)用以完成报文滤波,实现对带有特定标识符的数据帧的接收3。其滤波方式如图 3 所示。OR 接收,放入数据缓冲区图 3 CAN 协议的单滤波方式因此在编写程序实现数据传输的时候,数据发送设置的标识符和数据接收设置的接收码和屏蔽码也是完成数据传输的一个关键。4数据传输的程序设计4.1 数据传输系统描述按照上面所讲的数据传输基本原理,编写程序完成如图4 的一个数据传输系统。完成由 CAN 总线 1 上节点 A 发送数据到零槽控制机,在由零槽控制机将数据处理后发送到 CAN 总线 2 上的节点 B。同

11、时 CAN 总线 2 上节点 A 直接通过转发将数据发送到该总线上节点 B。VXI-CAN 模块CAN 总线节点 1-ACAN 总线节点 2-ACAN 总线节点 1-BCAN 总线节点 2-BACR0ACR2ACR3AMR0ACR0ACR0ACR0ACR1滤 波 器11 位标识符18 位标识符RTR扩展帧 29 位标识符VXI 总线CAN 总 线 1 接收 CAN 总线命令及数据 向 CAN 总线发送命令及数据CAN 总 线 2 图 4 数据传输结构完成上述数据传输,其方式主要有以下 3 种:CAN 总线 1 上的节点 A 向 VXI 总线零槽发送数据。所发数据帧中 29 位标识符对应的 4

12、个识别码分别为 00H、01H、00H、00H。识别码 2 用来区别这条 CAN 总线上256 个不同节点。因此在不和其他节点识别码冲突时,当然可以用00HffH 中任意数字表示该节点。将设置好的 4 个识别码作为发送数据函数的参数,调用PCI-CAN卡的驱动函数,将数据发送到 VXI-CAN 的数据接收缓冲区。当它接收到含有这样识别码的帧时,则将该帧所含的 8 个数据再通过 VXI 接口电路发到 VXI 上,指定零槽控制机接收。这一过程可由中断和查询两种方式完成。若采用中断则将识别码4 设置为 50H,VXI-CAN 将自动解析,并控制中断线产生中断。若采用查询方式,则调用VXI-CAN 模

13、块的函数查询接收缓冲区是否有数据。VXI 总线上的零槽控制机向 CAN 总线上某一节点发送数据(如向 CAN 总线 2 上的节点 B) 。则零槽控制机程序调用 VXI-CAN 模块的驱动函数,将数据发送到 VXI-CAN 模块上的 CAN 总线 2 对应的数据缓冲区内,直到节点 B 执行接收命令将数据从缓冲区内取回。另外,若此时 CAN 总线 2 上其他节点也希望接收到数据,只需要直接向缓冲区发送读取数据的命令即可。CAN 总线 2 上的节点 A 向该总线上其他站点发送数据。则所发数据帧中标识符对应的识别码分别为 02H、01H、00H、02H。识别码 1 的 02H 代表 CAN 总线 2

14、上的节点 B,识别码 2 的 01H 代表 CAN 总线 2 上的节点 A,识别码 4 的 02H 标示 CAN 总线2。因有 初始化 VXI-CAN 模 块设置接收参数并允许中断等待中断执行中断服务程序是否有中断无此最后一个识别码 01H04H 对应得就是 4 个 CAN 接口。同样地,仿真计算机通过调用 PCI-CAN 卡的驱动函数,将带有这 4 个识别码的数据发送到 VXI-CAN 的数据接收缓冲区。当 VXI-CAN 的数据接收缓冲区接收到含有这样识别码的帧时,则不再向VXI 总线发送接收数据的信息,而直接将数据送到识别码指定的另一节点。在接收数据时要考虑报文滤波,在编程时用两个数组来

15、对应ACR0ACR3 和AMR0AMR3 寄存器。在以下的编程中,我们将 4 个屏蔽码全设为 0。接收码与发送数据帧中的识别码一致就可以了。a)零槽控制机及各节点仿真计算机程序流程如图5 所示。图 6 CAN 总线 1 上节点 A 的程序流程收取 VXI-CAN 模块数据缓冲区内数据调用 VXI-CAN 模块发送数据函数,发送 数据到 CAN 总线 2 上节点 A 的缓冲区初始化节点 A 设置接收参数接收在缓冲区的帧查询缓冲区接收数据标志初始化节点 A 设置发送参数发送指定标识码的帧图 5 零槽控制机的程序流程无数据在缓冲区有数据在缓冲区图 7 CAN 总线 2 上节点 B 的程序流程b)核心

16、程序 零槽控制机程序若采用监听模式接收数据,主要代码如下:int main () int canname4 = 1,0,0,0;int acceptcode4 = 0,1,0,0; /用数组表示4个接收码int screen4 = 0,0,0,0; /用数组表示4个屏蔽码AMC3401_init(“VXI0:224:INSTR“,1,0, /初始化VXI-CAN模块AMC3401_reset(AMC3401,canname);AMC3401_UpdataFre(AMC3401,canname,41920);AMC3401_inceptcode(AMC3401,0,acceptcode,screen); /设置屏蔽码和接收码while (n!=1)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号