CN111030904B - 一种多级通讯下多路can总线消息实时处理方法 - Google Patents
一种多级通讯下多路can总线消息实时处理方法 Download PDFInfo
- Publication number
- CN111030904B CN111030904B CN201911157572.XA CN201911157572A CN111030904B CN 111030904 B CN111030904 B CN 111030904B CN 201911157572 A CN201911157572 A CN 201911157572A CN 111030904 B CN111030904 B CN 111030904B
- Authority
- CN
- China
- Prior art keywords
- data
- bus
- value
- sent
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40006—Architecture of a communication node
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40169—Flexible bus arrangements
- H04L12/40176—Flexible bus arrangements involving redundancy
- H04L12/40182—Flexible bus arrangements involving redundancy by using a plurality of communication lines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40215—Controller Area Network CAN
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Systems (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明属于通信领域,公开了一种多级通讯下多路CAN总线消息实时处理方法,适用于非实时操作系统的主机板和实时操作系统的CAN模块板之间通信,运行QT程序的主机板和运行VxWorks系统的CAN模块板通过UDP协议连接,主机板发出的CAN端口初始化操作和发送数据操作通过UDP通信在CAN模块板直接进行寄存器读写操作达到实时处理效果,CAN总线数据的接收则通过在CAN模块板中断接收服务函数中触发消息传输,在高优先级的发送任务中通过UDP将数据实时发送到主机板中,供应用层使用。本发明采用的方法实时性好,可靠性高。
Description
技术领域
本发明属于通信技术领域,涉及一种多级通讯下多路CAN总线消息实时处理方法。
背景技术
在通用型的Intel X86主机板中较多配备的接口为网口、串口、USB,CAN总线是一种实时通讯型总线,一般用在实时操作系统中或者裸机中,但是在某些应用中,X86主机板也需要使用CAN总线通讯,而直接在集成度较高的主机板上设计CAN总线电路,往往会破坏原有成熟的主机板产品,虽然通过USB外挂CAN模块板是一个常用选择,但是USB总线特性不适合工业现场使用,因此替代方案可以采用以太网外挂CAN模块板,传统上主机板编程多采用TCPIP,主机板和CAN模块板建立TCP连接,主机发送命令后,CAN板响应命令,这种以太网外挂CAN模块板存在下述两个缺点:(1)TCPIP需要建立连接,中途断连需要重连,TCPIP断网重连严重影响了系统的实时性;(2)主机发送命令后,CAN板响应命令,对于数据接收的延时较长。
发明内容
(一)发明目的
本发明的目的是:提供一种多级通讯下多路CAN总线消息实时处理方法,以解决主机板和CAN模块板间数据的实时处理问题。
(二)技术方案
为了解决上述技术问题,本发明提供一种、一种多级通讯下多路CAN总线消息实时处理方法,其包括以下步骤:
S1:进行CAN总线的初始化工作;
S2:建立主板和CAN模块板间的UDP链接关系;
S3:CAN模块板收到初始化指令,进行协议的解析计算;
S4:CAN模块收到数据发送指令,解析协议计算出数据发送信息,对数据发送的信息进行处理,然后通过直接操作寄存器完成CAN总线数据的发送操作。
S5:通过硬件芯片SJA1000将数据发送出去。
S6:使用CAN数据接收函数,在底层数据缓冲区中取出数据信息,完成CAN数据的传输。
所述步骤S1中,CAN总线的初始化工作包括:在QT中进行CAN总线参数初始化,包括CAN模块的通道号chan、CAN ID值candid、远程帧标志RTL、扩展帧标志msgMode、波特率信息baudrate、CAN节点的掩码MASKCODE和CAN节点的过滤器ACCCODE;CAN数据的发送包括CAN模块的通道号以及要发送的CAN帧数据。
所述步骤S2中,将要发送的CAN数据和初始化命令使用writeDatagram函数发送到CAN模块板,在CAN模块板中高优先级网络任务使用recvfrom网络接收函数等待主板发送指;CAN模块板中接收到的指令和数据在下行任务TASKDOWN中处理,如果将初始化指令发送到CAN模块板,则转到S3;如果发送数据到CAN模块板,则转到S4。
所述步骤S3中,协议解析计算,计算出CAN模块的通道号、CAN ID值、RTL值、msgMode值、baudrate值以及MASKCODE和ACCCODE值,然后直接操作寄存器完成对应端口的CAN总线初始化操作。
所述步骤S4中,解析协议计算出数据发送的CAN ID值、RTL值、msgMode值、准备发送数据的长度Len和准备发送数据的内容,对数据发送的信息进行处理,然后通过直接操作寄存器完成CAN总线数据的发送操作。
所述步骤S5中,硬件芯片SJA1000将数据发送出去的过程为:
S51:SJA1000收到CAN总线发送的CAN数据后,在中断服务函数中接收到数据后,将接收到CAN数据在中断中直接放入缓冲区中,消息队列从中断中发出,发出到CAN数据上行任务TaskUP中;
S52:通过消息队列将接收到标志RecvFlag和通道号chan,以及CAN总线数据,在VxWorks系统中使用recvfrom函数接收中断发送过来的数据,接收到数据后填充UDP协议数据;
S53:使用sendto函数将将网络报文将UDP协议数据发送到主板中;
S54:主板中底层收到UDP数据后产生readready信号,在主板中采用QT中信号与槽的操作,ready信号触发数据接收槽函数DataTackle();此函数将解析出来的CAN数据存放到环形缓冲区中,等待QT调用接收函数将CAN总线数据取出。
所述步骤S6中,使用CAN数据接收函数,在底层数据缓冲区中取出通道号chan、CANID值、远程帧标志RTL、扩展帧标志msgMode、波特率信息baudrate和CAN数据值完成CAN数据的传输。
(三)有益效果
上述技术方案所提供的多级通讯下多路CAN总线消息实时处理方法,CAN数据的接收采用CAN中断服务函数中触发消息队列,在高优先级中任务发送的方法,解决了传统上CAN多级通讯实时性差、易出错的问题,CAN数据的发送采用直接操作寄存器的方式进行CAN总线数据的发送。
附图说明
图1为多级通讯下多路CAN总线消息实时处理方法流程图。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
为了解决多级通讯下多路CAN总线消息实时处理问题,结合图1说明本发明多级通讯下多路CAN总线消息实时处理方法流程:
S1:进行CAN总线的初始化工作,在QT中进行CAN总线参数初始化,包括CAN模块的通道号chan,CAN ID值candid,远程帧标志RTL,扩展帧标志msgMode,波特率信息baudrate、CAN节点的掩码MASKCODE和CAN节点的过滤器ACCCODE。CAN数据的发送包括CAN模块的通道号以及要发送的CAN帧数据(1~8个字节)。
S2:建立主板和CAN模块板间的UDP链接关系,将要发送的CAN数据和初始化命令使用writeDatagram函数发送到CAN模块板。在CAN模块板中高优先级网络任务使用recvfrom网络接收函数等待主板发送指令。CAN模块板中接收到的指令和数据在下行任务TASKDOWN中处理,如果将初始化指令发送到CAN模块板,则转到STEP3,如果发送数据到CAN模块板则转到STEP4。
S3:CAN模块板收到初始化指令,经过协议的解析计算,计算出CAN模块的通道号、CAN ID值、RTL值、msgMode值、baudrate值以及MASKCODE和ACCCODE值,然后直接操作寄存器完成对应端口的CAN总线初始化操作。
S4:CAN模块收到数据发送指令,解析协议计算出数据发送的CAN ID值、RTL值、msgMode值、准备发送数据的长度Len和准备发送数据的内容,对数据发送的信息进行处理,然后通过直接操作寄存器完成CAN总线数据的发送操作。
S5:通过硬件芯片SJA1000将数据发送出去。
实施主板接收CAN数据的具体实施方式如下:
S51:SJA1000收到CAN总线发送的CAN数据后,在中断服务函数中接收到数据后,将接收到CAN数据在中断中直接放入缓冲区中,消息队列从中断中发出,发出到CAN数据上行任务TaskUP中。
S52:通过消息队列将接收到标志RecvFlag和通道号chan,以及CAN总线数据,在VxWorks系统中使用recvfrom函数接收中断发送过来的数据,接收到数据后填充UDP协议数据。
S53:使用sendto函数将将网络报文将UDP协议数据发送到主板中。
S54:主板中底层收到UDP数据后产生readready信号,在主板中采用QT中信号与槽的操作,ready信号触发数据接收槽函数DataTackle();此函数将解析出来的CAN数据存放到环形缓冲区中,等待QT调用接收函数将CAN总线数据取出。
S6:使用CAN数据接收函数,在底层数据缓冲区中取出通道号chan、CAN ID值、远程帧标志RTL、扩展帧标志msgMode、波特率信息baudrate和CAN数据值(1~8个数据)完成CAN数据的传输。
利用上述技术方案,采用上述操作步骤,本发明可以实现主机板和CAN模块板间的高速通信,该方法已经经过了算法验证,并进行了仿真实验检验。结果表明,该方案可以是实现主机板和CAN模块板间的高速通信,保证CAN总线消息传递的实时性和可靠性。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (2)
1.一种多级通讯下多路CAN总线消息实时处理方法,其特征在于,包括以下步骤:
S1:进行CAN总线的初始化工作;
S2:建立主板和CAN模块板间的UDP链接关系;
S3:CAN模块板收到初始化指令,进行协议的解析计算;
S4:CAN模块收到数据发送指令,解析协议计算出数据发送信息,对数据发送的信息进行处理,然后通过直接操作寄存器完成CAN总线数据的发送操作;
S5:通过硬件芯片SJA1000将数据发送出去;
S6:使用CAN数据接收函数,在底层数据缓冲区中取出数据信息,完成CAN数据的传输;
所述步骤S1中,CAN总线的初始化工作包括:在QT中进行CAN总线参数初始化,包括CAN模块的通道号chan、CAN ID值candid、远程帧标志RTL、扩展帧标志msgMode、波特率信息baudrate、CAN节点的掩码MASKCODE和CAN节点的过滤器ACCCODE;CAN数据的发送包括CAN模块的通道号以及要发送的CAN帧数据;
所述步骤S2中,将要发送的CAN数据和初始化命令使用writeDatagram函数发送到CAN模块板,在CAN模块板中高优先级网络任务使用recvfrom网络接收函数等待主板发送指令;CAN模块板中接收到的指令和数据在下行任务TASKDOWN中处理,如果将初始化指令发送到CAN模块板,则转到S3;如果发送数据到CAN模块板,则转到S4;
所述步骤S3中,协议解析计算,计算出CAN模块的通道号、CANID值、RTL值、msgMode值、baudrate值以及MASKCODE和ACCCODE值,然后直接操作寄存器完成对应端口的CAN总线初始化操作;
所述步骤S4中,解析协议计算出数据发送的CAN ID值、RTL值、msgMode值、准备发送数据的长度Len和准备发送数据的内容,对数据发送的信息进行处理,然后通过直接操作寄存器完成CAN总线数据的发送操作;
所述步骤S5中,硬件芯片SJA1000将数据发送出去的过程为:
S51:SJA1000收到CAN总线发送的CAN数据后,在中断服务函数中接收到数据后,将接收到CAN数据在中断中直接放入缓冲区中,消息队列从中断中发出,发出到CAN数据上行任务TaskUP中;
S52:通过消息队列将接收到标志RecvFlag和通道号chan,以及CAN总线数据,在VxWorks系统中使用recvfrom函数接收中断发送过来的数据,接收到数据后填充UDP协议数据;
S53:使用sendto函数将将网络报文将UDP协议数据发送到主板中;
S54:主板中底层收到UDP数据后产生readready信号,在主板中采用QT中信号与槽的操作,ready信号触发数据接收槽函数DataTackle();此函数将解析出来的CAN数据存放到环形缓冲区中,等待QT调用接收函数将CAN总线数据取出。
2.如权利要求1所述的多级通讯下多路CAN总线消息实时处理方法,其特征在于,所述步骤S6中,使用CAN数据接收函数,在底层数据缓冲区中取出通道号chan、CAN ID值、远程帧标志RTL、扩展帧标志msgMode、波特率信息baudrate和CAN数据值完成CAN数据的传输。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911157572.XA CN111030904B (zh) | 2019-11-22 | 2019-11-22 | 一种多级通讯下多路can总线消息实时处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911157572.XA CN111030904B (zh) | 2019-11-22 | 2019-11-22 | 一种多级通讯下多路can总线消息实时处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111030904A CN111030904A (zh) | 2020-04-17 |
CN111030904B true CN111030904B (zh) | 2021-12-14 |
Family
ID=70203150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911157572.XA Active CN111030904B (zh) | 2019-11-22 | 2019-11-22 | 一种多级通讯下多路can总线消息实时处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111030904B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113608782B (zh) * | 2021-06-22 | 2023-08-01 | 天津津航计算技术研究所 | 一种能够重定向于can总线的控制台设计方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103684944A (zh) * | 2012-09-10 | 2014-03-26 | 西门子信号有限公司 | 嵌入式网关、采用该网关的铁路监测系统及其方法 |
CN104102607A (zh) * | 2014-07-17 | 2014-10-15 | 航天科工深圳(集团)有限公司 | 基于VxWorks操作系统环境下的CAN总线驱动方法及系统 |
CN205545335U (zh) * | 2016-04-20 | 2016-08-31 | 四川中科智慧智能系统有限公司 | 一种用于工业现场的数据网关 |
CN105960629A (zh) * | 2013-12-30 | 2016-09-21 | 施耐德电气It公司 | 在can网络中自动选择波特率的系统和方法 |
-
2019
- 2019-11-22 CN CN201911157572.XA patent/CN111030904B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103684944A (zh) * | 2012-09-10 | 2014-03-26 | 西门子信号有限公司 | 嵌入式网关、采用该网关的铁路监测系统及其方法 |
CN105960629A (zh) * | 2013-12-30 | 2016-09-21 | 施耐德电气It公司 | 在can网络中自动选择波特率的系统和方法 |
CN104102607A (zh) * | 2014-07-17 | 2014-10-15 | 航天科工深圳(集团)有限公司 | 基于VxWorks操作系统环境下的CAN总线驱动方法及系统 |
CN205545335U (zh) * | 2016-04-20 | 2016-08-31 | 四川中科智慧智能系统有限公司 | 一种用于工业现场的数据网关 |
Non-Patent Citations (2)
Title |
---|
王庆贺 ; 吴文杰 ; 樊兵团 ; 何威.UDP转CAN协议的数据传输系统开发.《科技与创新》.2019, * |
黄天戍 ; 罗璠 ; 肖文华.CAN总线到Ethernet网的网关研究实现.《工业仪表与自动化装置》.2004, * |
Also Published As
Publication number | Publication date |
---|---|
CN111030904A (zh) | 2020-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200174953A1 (en) | Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link | |
CN111656336B (zh) | 一种pcie发送、接收方法及装置、设备和系统 | |
CA1243730A (en) | Wireless computer modem | |
CN111970353A (zh) | 云计算平台物联网中异构设备的数据处理方法及装置 | |
CN104102603B (zh) | 通用串行总线网络接口控制器及其操作模式切换方法 | |
CN102710758A (zh) | 一种基于单片机系统的数据流断点续传方法 | |
CN111030904B (zh) | 一种多级通讯下多路can总线消息实时处理方法 | |
CN108304335A (zh) | 一种通过dma接收串口不定长报文的方法 | |
US20120166585A1 (en) | Apparatus and method for accelerating virtual desktop | |
CN109828943A (zh) | 一种低速率通信网络的提高串口传输速率处理系统及方法 | |
CN101763324B (zh) | 设备模拟的实现方法和装置 | |
CN103368872A (zh) | 数据包转发系统和方法 | |
CN111315026A (zh) | 信道的选择方法、装置、网关及计算机可读存储介质 | |
CN113285839A (zh) | 基于dpdk的可编程数据平面软件交换机的设计方法 | |
CN110287141B (zh) | 一种基于多种接口的fpga重构方法和系统 | |
CN109814816B (zh) | 在can总线上增加打印日志的系统及方法 | |
CN100493018C (zh) | 一种通过网络中的总线接口进行通信的方法和系统 | |
CN103347023B (zh) | 一种工业现场环境下hdlc通信控制器 | |
CN112422485A (zh) | 一种传输控制协议的通信方法及装置 | |
CN112994848B (zh) | Mcs的调整方法、装置、存储介质及无线节点 | |
CN113377363B (zh) | 对多种电控端私有协议自动生成源代码的云端实现方法 | |
CN108270694A (zh) | 一种基于lvds的高速传输方法 | |
KR20220126591A (ko) | 패킷을 프로세싱하는 전자 장치 및 그 동작 방법 | |
CN113485957B (zh) | 适用于工业级应用场景的用于物理层的多协议系统控制装置和多协议系统控制方法 | |
CN111522588B (zh) | 一种基于swd协议的芯片运行交互方法及通信系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |