基于CAN总线的长帧数据传输卡和长帧数据传输方法技术

技术编号:7786400 阅读:845 留言:0更新日期:2012-09-21 07:28
本发明专利技术属于计算机应用技术领域,为一种基于CAN总线的长帧数据传输卡和长帧数据传输方法。长帧数据传输卡由DSP芯片、双端口RAM、FLASH存储器、CAN收发器、PCI转换器组成。长帧数据传输方法步骤如下:①将长帧传输卡通过PCI总线连接到计算机上,安装驱动程序;②创建共享内存映射开辟通信缓冲区;③通过调用DLL接口函数进行相应参数的设置;④广播在线信息;⑤与在线节点建立连接,创建接收线程和发送线程;⑥当用户节点断开连接时,关闭与它的连接,并结束相应的线程。计算机通过本发明专利技术可实现在CAN总线上进行长帧数据传输,使用方便简洁,且具有良好的扩展性和实时性,适合在各类电子信息系统中使用。

【技术实现步骤摘要】

本专利技术属于计算机应用
,尤其涉及电子信息系统中所需的基于CAN总线的长帧数据传输卡和长帧数据传输方法
技术介绍
目前在电子信息系统,中特别是在车辆电子信息系统中,CAN总线技术得到了越来越多的应用,而现有技术只局限于短帧数据在CAN总线上的传输,目前在车电系统中通过CAN总线连接的计算机和外部设备很难进行长帧数据的传输。现有的解决办法多是对应用层协议进行处理,将长帧数据通过应用层软件进行拆分,为了保证拆分后数据包的同一性,必须给拆分后的每一帧数据加上时标。该方法最大的缺点是通用性差、实时性不强、会过多占用有限的CPU资源。随着对电子信息系统的数据量、数据复杂性与数据访问的实时性要求的提高,旧有的处理方法很难满足要求。因此本设计提出一种基于CAN总线的长帧数据 传输方法,在板卡上通过DSP实现CAN总线长帧数据的传输,在保证实时性的同时,又不占用上位机的资源。
技术实现思路
本专利技术的技术方案是为了解决现有技术中无法通过CAN总线进行长帧数据的传输,提供一种能够支持CAN总线长帧数据传输的方法,该方法适合于各种电子信息系统,特别是车辆电子信息系统,具有通用性强、实时性高等特点。本专利技术的技术解决方案是设计一种基于CAN总线的长帧数据传输卡,采用即插即用的以DSP作为核心处理器的PCI卡。所述的PCI卡上包括DSP芯片、PCI转换器、CAN收发器、FLASH芯片、双端口RAM、A/D转换器和电源模块。PCI卡通过PCI总线与计算机连接。该方法具体步骤如下步骤I :将长帧传输卡通过PCI总线连接到计算机上,安装驱动程序;步骤2 :创建共享内存映射,开辟通信缓冲区;步骤3 :通过调用DLL接口函数进行相应参数的设置;步骤4 :本节点开机后,广播在线信息;步骤5 :与在线节点建立连接,创建接收线程和发送线程;用户节点应用程序通过调用接口 DLL函数进行数据发送,接口函数将数据写入双端口 RAM,DSP芯片中的发送线程从双端口 RAM中取出后发送信息,接收线程接收信息,如果收到数据,放入双端口 RAM,并通过DLL接口直接通过消息发送给应用程序。具体实现方法为程序启动后,新建接收线程、分发线程、长帧发送线程、长帧接收线程。线程之间通过信号量进行同步。各自的属性为接收线程无限循环,收到数据包存到环形接收队列,然后进入等待。分发线程无限循环,判断环形接收队列是否有数,依次逐包读取,如为短帧,直接通过接口函数输出。如为长帧首包,开启长帧接收任务。不同源点开启不同长帧接收任务,支持多源点同时长巾贞传输。长帧发送线程无限循,环判断环形发送队列有数,依次逐包发送,直到发送完毕进入等待状态。长帧接收线程单任务循环,当分发任务收到发送请求帧后启动,分包数据全部接收完毕后,将收的数据打包,放入数据共享区,通过消息发送到应用程序。如接收过程中发生超时,发送中断命令,自动退出。当某个节点传送一条请求发送消息(TP. CM_RTS)给一个目标地址时,连接就开始 了。请求发送消息包含了整个消息的字节大小,要传送的独立消息的数目,以及它设定的参数群编号。在一个节点接收到请求发送消息后,它可以选择接收连接或者拒绝连接。如果选择接收连接,响应者将发送一条准备发送消息(TP. CM_CTS)。准备发送消息包含了节点可接收数据包的数目,和它将要接收的第一个数据包的序列编号。响应者必须确认自己有充足的资源来处理即将接收的这么多数目的数据包。在刚刚开放连接的时候,数据包的序列编号是I。如果选择拒绝连接,响应者将发送一条放弃连接消息(TP. Conn_Abort)。连接被拒绝可以有很多种原因,例如,缺少资源、存储空间不足等等。当发送者(例如,RTS设备)接收到来自响应者(例如,CTS设备)的相应的CTS消息,那么可以认为已经为发送者建立了连接。当响应者已经成功传送了它的CTS消息作为对一个RTS消息的响应,那么可以认为已经为响应者建立了连接。这些定义将用于决定什么时候需要发送连接放弃消息来关闭连接。如果响应者收到RTS消息并决定不建立连接,那么它应该发送一条放弃连接消息。这样可以让发送者转移到一个新的连接而不必等到超时。当连接的发送者接收到准备发送消息后,数据传输正式开始。其中有一种例外的情况,就是当节点发送了广播公告消息(TP.CM_BAM)后开始数据传输,这时,不需要使用准备发送消息。在传输没有错误的情况下,有两种关闭连接的情形。第一种是在发送给全局目标地址时,第二种是在发送给一个指定目标地址时。在第一种情形下,接收完数据后将没有关闭连接的操作。在第二种情形下,当接收到数据流的最后一个数据包时,响应者将发送一个消息结束应答(TP. CM_EndofMsgACK)给消息的发送者。在进行全局目标地址传输时,响应者不允许使用“放弃连接”消息。在进行指定目标地址传输时,发送者或者响应者都可以在任何时候使用“放弃连接”消息来终止连接。(两方中的)任一方发生传输故障也会导致连接的关闭。例如,当收到的最后一个数据包后等待下一个数据包(CTS允许有更多)的时间间隔大于(Tl)秒;当一条CTS消息被发送后等待时间大于(T2)秒(发送者发生故障);当发送了一个数据包后等待CTS或者ACK消息的时间大于(T3)秒(响应者发生故障);在0^(0)消息后等待下一条CTS来保持连接,但等待时间大于(T4)秒,这些都将会导致关闭连接发生。在实际传输过程中,无论发送者还是响应者,由于某一原因(包括超时)决定要关闭连接,它都应该发出一条放弃连接消息。步骤6 :当用户节点断开连接时,广播离线信息,并结束相应的线程。专利技术的有益效果计算机可通过本专利技术实现通过CAN总线进行长帧数据传输,使用方便,具有良好的扩展性和数据处理的实时性,适合于各种军用电子信息系统,特别是车辆电子信息系统中使用,具有扩展性强,使用简洁的特点。附图说明图I为本专利技术的硬件组成图;图2为本专利技术的软件流程图;图3为基于J1939协议的连接模式下的长帧数据传输框图;图4为基于J1939协议的广播模式下的长帧数据传输框图。 具体实施例方式下面结合附图,对本专利技术的实施例作进一步详细说明。本专利技术CAN总线通信底层采用CAN2. OB协议规范。帧协议采用CAN扩展帧。由于CAN本身是一个底层协议,仅详细定义了物理层和数据链路层,本身并不完整。很多复杂的应用问题需要更高层次的定义来解决。比如,CAN数据帧一次最多只能传输8字节,而不能传输大于8字节的长帧数据。因此,本专利技术应用层协议选用SAE J1939。J1939协议中的核心是负责数据传输的传输协议。它的功能分为两部分(I)数据的拆分打包和重组。一个J1939的报文单元只有8个字节的数据场。因此如果所要发送的数据超过了 8字节,就应该分成几个小的数据包分批发送。数据场的第一个字节从I开始作为报文的序号,后7个字节用来存放数据。所以可以发送255X7 =1785个字节的数据。报文被接收以后按序号重新组合成原来的数据。(2)连接管理。主要对节点之间连接的建立和关闭,数据的传送进行管理。其中定义了 5种帧结构发送请求帧、发送清除帧、结束应答帧、连接失败帧以及用来全局接收的广播帧。节点之间的连接通过一个节点向目的地址发送一个发送请求帧而建立。在接收发送请求帧以后,节点如果有足本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于CAN总线的长帧数据传输卡,其特征在于,所述的设备包括DSP芯片、双端ロ RAM、FLASH存储器、CAN收发器、PCI转换器;其中,PCI转换器通过CPI总线与计算机主机相连接,并向主机系统提交数据以及接收主机系统的下发数据;双端ロ RAM、FLASH存储器存储DSP运算中的中间数据;CAN收发器用于和CAN总线连接,进行CAN总线上数据的收发;DSP用于控制系统内部各部分的工作,同时,长巾贞传输的各种控制程序也都在DSP中实现。2.基于权利要求I所述的基于PCI总线的CAN总线长帧数据传输卡,其特征在干,DSP芯片、双端ロ RAM、FLASH存储器、CAN收发器、PCI转换器通过DSP外围总线连接。3.ー种基于权利要求I所述的设备实现的长巾贞数据传输方法,其特征在于,所述的方法包括以下步骤 步骤ー将长帧传输卡通过PCI总线连接到计算机上,安装驱动程序; 步骤ニ 创建共享内存映射,开辟通信缓冲区; 步骤三通过调用DLL接ロ函数进行相应參数的设置; 步骤四当用户节点连接上CAN总线时,广播在线信息; 步骤五与在线节点建立连接,创建接收线程和发送线程;用户节点应用程序通过调用接ロ DLL函数进行数据发送,接ロ函数将数据写入双端ロ RAM,DSP芯片中的发送线程从双端ロ RAM中取出后发送信息,接收线程接收信息,如果收到数据,放入双端ロ RAM,并通过DLL接ロ直接通过消息发送给应用程序; 具体实现方法为 程序启动后,新建接收线程、分发线程、长帧发送线程、长帧接收线程。线程之间通过信号量进行同歩;各自的属性为 接收线程无限循环,收到数据包存到环形接收队列,然后进入等待; 分发线程无限循环,判断环形接收队列是否有数,依次逐包读取,如为短帧,直接通过接ロ函数输出;如为长帧首包,开启长帧接收任务;不同源点开启不同长帧接收任务,支持多源点同时长巾贞传输; 长帧发送线程无限循环,判断环形发送队列有数,依次逐包发送,直到发送完毕进入等待状态; 长帧接收线程单任务循环,当分发任务收到发送请求帧后启动,分包数据全部接收完毕后,将收的数据打包,放入数据共享区,通过消息发送到应用程序;如接收过程中发生超时,发送中断命令,自动退出; 当某个节点传送一条请求发送消息(TP. CM_RTS)给ー个目标地址时,连接就开始了 ;请求发送消息包含了整个消息的字节大小,要传送的独立消息的数目,以及它设定的參数群编号; 在一个节点接收到请求发...

【专利技术属性】
技术研发人员:刘晓宏左钦文王惠军宋永强蔡晶仲妍
申请(专利权)人:山西国营大众机械厂军品第一研究所中国人民解放军六三九七三部队
类型:发明
国别省市:

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1