CN115412398B - 一种can网桥数据通讯方法、can网桥及可读存储介质 - Google Patents
一种can网桥数据通讯方法、can网桥及可读存储介质 Download PDFInfo
- Publication number
- CN115412398B CN115412398B CN202110506463.5A CN202110506463A CN115412398B CN 115412398 B CN115412398 B CN 115412398B CN 202110506463 A CN202110506463 A CN 202110506463A CN 115412398 B CN115412398 B CN 115412398B
- Authority
- CN
- China
- Prior art keywords
- data
- bridge
- pointer
- data buffer
- transmitted
- 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
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000004891 communication Methods 0.000 title claims abstract description 49
- 239000000872 buffer Substances 0.000 claims abstract description 135
- 230000002159 abnormal effect Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 8
- 238000001914 filtration Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 26
- 230000005856 abnormality Effects 0.000 abstract description 12
- 238000012544 monitoring process Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 11
- 101150008604 CAN1 gene Proteins 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 206010000210 abortion Diseases 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/46—Interconnection of networks
- H04L12/4604—LAN interconnection over a backbone network, e.g. Internet, Frame Relay
- H04L12/462—LAN interconnection over a bridge based backbone
- H04L12/4625—Single bridge functionality, e.g. connection of two networks over a single bridge
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开涉及一种CAN网桥数据通讯方法、CAN网桥及可读存储介质,其中,CAN网桥数据通讯方法包括:构建数据缓冲区,以存放CAN网桥接口传递的数据;为数据缓冲区配置一个接收指针和一个发送指针;接收到数据帧时,控制接收指针指向下一个要接收的数据帧于数据缓冲区中的存放地址;成功发送数据帧时,控制发送指针指向下一个要发送的数据帧于数据缓冲区中的存放地址;计算接收指针和发送指针之间、数据缓冲区中尚未发送的数据的长度;若尚未发送的数据的长度超过阈值,则释放缓存。本发明实现了对CAN网桥通讯质量的有效监测,能够在出现通讯异常时,及时通过释放缓存的方式摒弃超时数据,保证了实时数据传输过程的可靠性。
Description
技术领域
本发明一般地涉及CAN数据中继领域。更具体地,本发明涉及一种CAN网桥数据通讯方法、CAN网桥及可读存储介质。
背景技术
CAN总线通讯凭借其优秀的抗干扰能力在工业控制领域得到广泛应用。CAN网桥(中继器)是一种基于CAN通讯的网桥模块,用于桥接相互不同的比特率或协议的CAN网络(子网)并实现CAN总线网络的中继功能,既实现了两个网络间的电气隔离,又实现了两个网络的波特率转化和阻抗匹配。但是,现有的CAN网桥(中继器)对接收的数据帧先存储后转发,数据吞吐速度相对较慢,当网络上数据负荷较重时,由于现有CAN总线没有流量控制功能,CAN网桥中缓冲区可能会因为存储空间不足导致数据溢出的情况发生,使得网桥传输时丢帧率升高,造成通讯数据转发有效性降低。而且,在相邻子网对数据的实时性要求较高的情况下,若CAN网桥将超时数据转发,会影响子网的正常工作。
发明内容
本发明提供一种CAN网桥数据通讯方法、CAN网桥及可读存储介质,以解决现有CAN网桥数据转发过程中超时数据的发送影响子网正常工作的问题。
为解决上述问题,本发明提供了一种CAN网桥数据通讯方法,包括:构建数据缓冲区,以存放CAN网桥接口传递的数据;为所述数据缓冲区配置一个接收指针和一个发送指针;接收到数据帧时,控制所述接收指针指向下一个要接收的数据帧于所述数据缓冲区中的存放地址;成功发送数据帧时,控制所述发送指针指向下一个要发送的数据帧于所述数据缓冲区中的存放地址;计算所述接收指针和发送指针之间、所述数据缓冲区中尚未发送的数据的长度;若所述尚未发送的数据的长度超过阈值,则释放缓存
在一个实施例中,在将接收到的数据帧存入数据缓冲区之前,还包括对接收到的数据进行过滤和校验的步骤。
在一个实施例中,所述数据缓冲区采用环形数据缓冲结构,以数组形式存储数据。
在一个实施例中,还包括在CAN网桥上电时对所述接收指针、发送指针和数组初始化的步骤。
在一个实施例中,控制所述接收指针指向下一个要接收的数据帧于所述数据缓冲区中的存放地址包括:接收到的数据帧存入数组后,接收指针加1并对数据缓冲区中数组长度取模;控制所述发送指针指向下一个要发送的数据帧于所述数据缓冲区中的存放地址包括:从数组元素中读取数据,等待发送成功后,发送指针加1并对数据缓冲区中数组长度取模。
在一个实施例中,所述阈值为数据缓冲区存储空间大小的N倍,N<1;当所述数据缓冲区中尚未发送的数据的长度大于所述数据缓冲区存储空间大小的N倍时,判断为数据通讯异常,释放缓存。
在一个实施例中,还包括:当CAN网桥连续异常中断次数超过设定值时,释放缓存。
在一个实施例中,所述释放缓存包括对数据缓冲区、接收指针以及发送指针进行初始化。
在另一方面中,本发明还公开了一种CAN网桥,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现前述的CAN网桥数据通讯方法。
在另一方面中,本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述的CAN网桥数据通讯方法。
本发明与现有CAN网桥设置方式的不同之处在于,本发明在CAN网桥中设置数据缓冲区,并根据接收的数据和发送成功的数据分别对接收指针和发送指针进行更新,控制接收指针指向下一个要存储的数据帧的存放地址,控制发送指针指向下一个要发送的数据帧的存放地址,并通过接收指针和发送指针实时检测数据缓冲区中尚未发送的数据的长度是否超过阈值,并在判断超出阈值时释放缓存,从而在出现数据拥堵时,能够对CAN网桥缓冲区中的超时数据及时释放。一方面,通过这种方式实现了对CAN网桥数据缓冲区存储状态的实时监控,另一方面,在出现异常时能够快速释放缓存,从而将当前发送指针前面的超时数据及时清除,使得在下次发送数据时能够发送最新数据,令子网能够获取实时数据,保证了数据传输的有效性和可靠性,采用这种方法的CAN网桥,数据延迟概率低,更加适用于对实时性要求更高的数据传输应用。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是根据本发明一种实施例的CAN网桥结构示意图;
图2是根据本发明一种实施例的CAN网桥运行主程序流程图;
图3是根据本发明一种实施例的CAN网桥数据通讯方法流程图;
图4是根据本发明一种实施例的数组结构示意图;
图5是根据本发明一种实施例的接收指针和发送指针设置示意图;
图6是根据本发明一种实施例的校验流程图;
图7是根据本发明一种实施例的环状数据缓冲区示意图;
图8是根据本发明一种实施例的数据缓冲区中发送指针和接收指针设置示意图;
图9是根据本发明一种实施例的初始化流程示意图;
图10是根据本发明一种实施例的更新接收指针的方法流程示意图;
图11是根据本发明一种实施例的更新发送指针的方法流程示意图;
图12是根据本发明一种实施例的根据接收指针和发送指针判定异常的方法示意图;
图13是根据本发明一种实施例的CAN网桥数据通讯方法软件程序示意图。
具体实施方式
CAN网桥(Bridge)作为一种智能的中继器,可实现CAN总线网络中的中继功能,能够将两条速率相同或不同的CAN网络之间的数据进行转发。CAN网桥中通常包含两个独立的通道A和通道B,每个通道均采用光电耦合器隔离,数据流向可以控制,能够实现通道A到通道B方向的数据传输,或通道B到通道A方向的数据传输,或通道A、通道B双向数据接收和转发。当前,CAN网桥/中继器的应用主要体现在以下三个方面:一、通过在CAN总线网络中设置CAN网桥,增加CAN总线网络中的负载节点,并能够延长通信距离;二、利用CAN网桥将两个相互不同的比特率或协议的CAN网络进行桥接,实现两个不同网络的互联;三、CAN网桥能够隔离CAN总线上的干扰,提升CAN网络的安全性和可靠性。
CAN网桥在连接两个CAN网络时,能够实现有选择地接收和转发数据。例如,CAN1和CAN2分别为两个独立的子网的总线,总线CAN1和总线CAN2(以下简称CAN1、CAN2)通过CAN网桥进行互联后,CAN网桥接收CAN1发送的数据,并对该数据进行存储后,校验该数据是否符合标准,并判断该数据是否是CAN2所需要的,如果数据符合标准并且是CAN2需要的,那么,将数据转发到CAN2上,这样就实现了两个不同的网络之间的数据互通。
但是,现有的CAN网桥在两个不同的网络之间进行数据通讯时,通常是采用先存储,然后查找转发表,再进行转发的方式,这样就增加了数据传输的延时。那么,在面对网络负荷很重时,由于没有对CAN总线上的数据流量进行监控的设置,可能会因网桥中缓冲区的存储空间不足导致数据溢出的情况发生,数据帧丢失的几率增加,无法保证通讯数据转发的有效性。而且,当前CAN网桥缺乏对异常情况的监督处理机制,当CAN网桥出现异常时,如果不能及时释放内存,可能会将超时数据转发,严重影响对数据的实时性要求较高的子网工作。
因此,本发明的基本构思是:通过在CAN网桥中设置用于存放CAN网桥接口传递数据的数据缓冲区,并对数据缓冲区设置接收指针和发送指针。根据接收到的数据和发送成功的数据更新对应的指针,然后利用接收指针和发送指针实时对数据缓冲区中尚未发送的数据的长度进行检测,并设置判定异常的阈值标准,将尚未发送的数据的长度与阈值进行比较后,如果超出阈值,则判定CAN网桥通讯发生异常,并在出现异常时及时释放缓存。通过这种方式实现了CAN网桥通讯异常的判定,对CAN网桥通讯中实时通讯质量进行了有效地监控,又能在出现异常时快速释放缓存,从而将超时数据及时清除,CAN网桥数据传输延迟率低,保证了实时数据地可靠传输,适用于各种实时性要求较高的网络间的通讯。
下面结合附图对本发明的较佳实施例进行详细阐述,参考标号是指本发明中的组件、技术,以便本发明的优点和特征在适合的环境下实现能更易于被理解。下面的描述是对本发明权利要求的具体化,并且与权利要求相关的其它没有明确说明的具体实现也属于权利要求的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
如图1所示的CAN网桥,主要包括CAN总线收发器、两个光电耦合器和微控制器,微控制器分别通过光电耦合器和CAN总线收发器连接CAN总线,这里两个子网的总线CAN1和CAN2的连接方式相同,从而实现了CAN网桥在两个子网的总线CAN1和CAN2之间的桥接。上述两路CAN(CAN1和CAN2)可以相同也可以不同,用户可以根据实际需要进行配置。如图2所示出的CAN网桥运行主程序流程图中,本实施例的CAN网桥包括三个通讯数据处理过程,分别是:数据发送处理过程、数据接收处理过程和异常处理过程,这三个过程是并行进行的。
在一个实施例中,如图3示出了本实施例中的CAN网桥数据通讯方法,包括:构建数据缓冲区,以存放CAN网桥接口传递的数据;为数据缓冲区配置一个接收指针和一个发送指针;接收到数据帧时,控制接收指针指向下一个要接收的数据帧于数据缓冲区中的存放地址;成功发送数据帧时,控制发送指针指向下一个要发送的数据帧于数据缓冲区中的存放地址;计算接收指针和发送指针之间、数据缓冲区中尚未发送的数据的长度;若尚未发送的数据的长度超过阈值,则释放缓存。
具体地,本实施例中数据缓冲区包括如图4所示的数组,数组是以CAN数据结构体构成的数组,图中每一格可代表一个数组元素。在数据缓冲区配置一个接收指针和一个发送指针;接收到数据帧时,控制接收指针指向下一个要接收的数据帧在数据缓冲区中的存放地址;发送成功数据帧时,控制发送指针指向下一个要发送的数据帧在数据缓冲区中的存放地址;根据接收指针和发送指针计算数据缓冲区中的存储的数据长度。
例如图5所示的数据缓冲区数组结构中,分别设置了接收指针Rx_Pointer和发送指针Tx_Pointer,基于数组的线性存储形式,数组的地址按照顺序排布,发送指针Tx_Pointer永远落后于接收指针Rx_Pointer。在CAN网桥的***上电后,检测到CAN总线收发器接收到数据帧,并且数据帧校验成功后,将数据帧存入对应的数组,并更新当前的接收指针,本实施例中,通过控制接收指针指向下一个要存储的数据帧的存放地址。例如,在图5的数组结构中,数据帧按照从左往右的顺序进行存储,在将接收到的数据存入当前接收指针Rx_Pointer所指向的地址后,接收指针Rx_Pointer将向右移动,指向下一个要存储的存放地址,等待下一个数据帧存入。同时,如果要从数据缓冲区读取数据帧并进行转发时,检测当前发送指针指向的数组元素中可发送标志位是否置位,如果是,将当前发送指针对应的数据帧读出并成功转发后,控制发送节点指向下一个要发送的数据帧的存放地址。例如,在图5的数组结构中,数据帧按照从左往右的顺序读取后转发,在读取当前发送指针Tx_Pointer所指向的地址对应的数据帧并成功发送后,当前发送指针指向的数组元素中的可发送标志位将发生变化,发送指针Tx_Pointer将向右移动,指向下一个要发送的数据帧的存放地址,等待下一个数据帧存入。
进一步地,上述实施例中数据缓冲区优选数组的存储形式,作为其他实施方式,本实施例中数据缓冲区还可以采用其他数据结构的形式进行存储,例如链表等,通过相应地寻址方式获取数据缓冲区中尚未发送的数据的长度;用户可根据需要选择合适的存储方式。
进一步地,本实施例中上述数据缓冲区中进行的数据传递过程,是两个CAN接口之间的单向数据传递,例如CAN网桥中的通道A向通道B方向传输,或者是通道B向通道A方向传输,而实际上,CAN网桥通常也是能够实现数据的双向传递的,在这种情况下,可以在微控制器中分别设置两个数据缓冲区,分别用于两个不同方向的数据传递。由于两个方向上数据转发的方法是相同的,因而仅对其中一个方向的数据传递过程进行说明,另一个方向的不再重复说明。
进一步地,用户也可以根据需要设置数据缓冲区的大小,例如可以将两个数据缓冲区设置为同样的大小,也可以根据两个不同方向的数据传输量的大小分别进行设置,例如,数据传递方向是CAN1→CAN2时对应的数据缓冲区为S1,CAN2→CAN1对应的数据缓冲区为S2,如果从CAN1到CAN2所要传输的数据通讯量大于从CAN2到CAN1的数据通讯量,则可以将数据缓冲区S1中的数组长度Data_Size_1设置为较大的缓存,比如5000,而将数据缓冲区S2中的数组长度Data_Size_2设置为较小的缓存,比如3000。
以上实施例中,通过实时计算接收指针和发送指针的距离得到数据缓冲区中尚未发送的数据的长度,并将数据缓冲区中的尚未发送的数据长度的大小作为检测数据通讯质量的依据,当尚未发送的数据的长度大于阈值时,判定CAN网桥发生通讯异常,并及时释放缓存以清除超时数据,从而将发送指针前面的已经超时的数据帧快速进行清除,在异常恢复后,能够保证数据缓冲区中所存储的是最新数据,且接下来发送指针指向的也是最新数据,当再次进行数据发送时,能够将最新数据发送出去。通过上述方法,CAN网桥高度适用于对于实时性要求较高的数据传输场合。
在一个实施例中,如图6所示的校验流程,在将接收到的数据帧存入数据缓冲区之前,还包括对接收到的数据进行过滤和校验的步骤。具体地,CAN网桥在接收到数据帧后,先对数据进行校验,例如CAN网桥从CAN1接收数据,检查数据是否符合规范,若校验不成功,则将接收的数据丢弃,继续等待下一个数据帧进行校验,若校验成功,则将数据帧存入数据缓冲区。
在一个实施例中,如图7所示的环形数据缓冲区结构示意,本实施例中数据缓冲区采用环形数据缓冲结构。在环形数据缓冲区中,接收到数据帧时将数据帧存入,需要发送数据帧时,从环形数据缓冲区中读取数据帧进行转发,并通过监控环形数据缓冲区中实时存储的未发送的数据长度,就能够对CAN网桥通讯状况进行有效监控。应当知晓的是,本实施例中只是给出了一种环形数据缓冲区的构型,并不代表实际的数据缓冲区的大小。整个数组通过预定义数组长度Data_Size可以确定环形数据缓冲区中存储空间的大小。
进一步的,在如图8所示的环形数据缓冲区中设置接收指针和发送指针,例如,数据缓冲区的数组中包含100个节点,分别代表100个数组元素,当前接收指针在节点5的位置处,将当前接收的数据帧存入节点5处后,将控制接收指针移动到下一个要存储的数据帧的存放地址,例如节点6处。例如,当前发送指针指向节点2,要将节点2中的数据读出并进行转发,转发成功后,控制发送指针指向下一个要发送的数据帧的存放地址,即节点3处。根据接收指针和发送指针可以计算得到数据缓冲区中的接收指针和发送指针之间尚未发送的数据的长度,以便衡量CAN网桥的通讯状况。
在一个实施例中,如图9所示的CAN网桥初始化流程。CAN网桥上电时,需要对接收指针、发送指针和数组进行初始化,以提升数据传输过程的可靠性。对数组初始化包括:数据结构体初始化和数组元素中的数据可发送标志位进行清零初始化。
在一个实施例中,给出了一种具体的更新接收指针的方式,即如图10中示出的控制接收指针指向下一个要接收的数据帧在数据缓冲区中的存放地址,可以采用以下方式实现:接收到的数据帧存入数组后,接收指针加1。基于本实施例中采用的是环形数据缓冲区,也即数组中存储的数据到达溢出节点时会自动回到原点,因而,在对接收指针加1后对数组长度Data_Size取模。
进一步地,本实施例中还给出了一种具体地更新发送指针地方式,即如图11中所示出的控制发送指针指向下一个要发送的数据帧在数据缓冲区中的存放地址,可以采用以下方式实现:从数组元素中读取数据,等待发送成功后,发送指针加1。基于本实施例中采用的是环形数据缓冲区,也即数组中存储的数据到达溢出节点时会自动回到原点,因而,在对发送指针加1后对数组长度Data_Size取模。
在一个实施例中,仅通过对尚未发送的数据的长度进行检测来判断异常:将阈值设定为数据缓冲区存储空间大小的N倍,N<1;当数据缓冲区中尚未发送的数据的长度大于数据缓冲区存储空间大小的N倍时,判断为数据通讯异常,释放缓存。例如,当前数据缓冲区中发送指针和接收指针之间、且尚未发送的数据长度超过数组长度的1/10时,判断为异常,释放缓存。本实施例是通过检测实时的尚未发送的数据长度,并以存储的数据长度在内存中的占比来检测数据通讯质量,并采用释放缓存的方式来摒弃超时数据,从而保证了数据传递的实时有效性。
在一个实施例中,除了上述实施例中的仅通过数据长度判断通讯异常方式,即仅利用未发送的数据长度和阈值的关系来对通讯异常进行判定的方式,还包括对CAN网桥硬件异常中断情况进行检测进一步判断异常的方式,具体地,当CAN网桥连续异常中断次数超过设定值时,释放缓存。CAN网桥的硬件异常中断包括但不限于以下几种形式:溢出、错误、总线停止、离线等,在出现这些情况的次数超过设定值时,判定CAN网桥出现的异常,此时将缓存释放,以保证CAN网桥实时传输数据的有效性。例如,设定可允许连续异常中断的次数为3次,那么,当检测到CAN网桥异常中断次数超过3次时,就直接释放缓存,从而避免超时数据转发。
进一步地,上述对CAN网桥连续异常中断进行检测的过程和对数据缓冲区中尚未发送的数据的长度进行检测的过程并没有严格的顺序要求。例如,对CAN网桥连续异常中断次数检测之后,若无中断或中断次数没有超限,则再对数据缓冲区中尚未发送的数据的长度进行检测;或者是,在对数据缓冲区中尚未发送的数据的长度进行检测后,若没有超出阈值,则再对CAN网桥连续异常中断次数进行检测。当然,用户也可以根据需要对两个检测过程设置不同的优先级,实现CAN网桥通讯状况地监测。
进一步地,除了上述在检测连续异常中断次数超过设定值就直接释放缓存地方式之外,基于CAN网桥工作过程中对硬件异常的容忍度相对较高,本实施例中,在检测到上述异常中断次数超过设定值时,可进一步根据数据缓冲区中未发送的数据量大小判断是否释放缓存。由于异常中断导致短时间内数据吞吐量变小,CAN网桥数据缓冲区中的数据量可能相对较大,此时的阈值设置可相对高一些。例如,在检测到异常中断的次数超过3次时,可进一步判断数据缓冲区中未发送的数据的长度是否大于数组长度的1/5,若是,则立即释放缓存。因此,本实施例中,对于阈值地设定可根据CAN网桥硬件异常情况进行合理设置。
以上实施例中,采用发送指针发送数据和采用接收指针存入数据分别独立同步进行,发送指针始终追逐接收指针,但绝对不会超过接收数据指针,二者始终保持着某种平衡状态。当CAN网桥的发送端出现数据堵塞时,发送指针将会较大幅度地落后接收指针,对于按顺序存储的数组结构,通过计算发送指针和接收指针的距离,能够直接反应数据的拥挤程度,实现了对CAN网桥异常的有效检测和处理。如图12所示出的异常判定流程图,对于按顺序存储的数组在计算当前存储的数据长度时,根据接收指针和发送指针的距离计算数据缓冲区中尚未发送的数据的长度,然后将计算得到的尚未发送的数据的长度同阈值进行比较,如果超出阈值,判定为CAN网桥出现异常,释放缓存。也就是说,通过合理控制发送指针和接收指针的距离,能够有效避免CAN网桥转发数据时的延时问题。
在一个实施例中,释放缓存包括对数据缓冲区、接收指针以及发送指针进行初始化。从以上实施例中可以看出,当出现硬件异常时,可根据需求合理释放过度缓存的数据,避免超时数据漏发。而对于数据缓冲区中出现尚未发送的数据长度太大时,按照本发明的方法,将判定CAN网桥的数据通讯出现异常情况,此时也需要释放缓存。本实施例中对数据缓冲区进行初始化是通过将发送指针和接收指针进行初始化实现的,而对接收指针和发送指针初始化采用令发送指针和接收指针回到原点的方式,从而将数组存储的数据进行清空,实现缓存的释放。
基于上述方案提出的本发明的一种CAN网桥,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现前述的CAN网桥数据通讯方法。而CAN网桥中的其他设置并不在本公开的保护范围中,此处就不再赘述。
另外,基于上文,本发明还公开了一种计算机可读存储介质,其中存储有程序指令,所述程序指令适于由处理器加载并执行:构建数据缓冲区,以存放CAN网桥接口传递的数据;为数据缓冲区配置一个接收指针和一个发送指针;接收到数据帧时,控制接收指针指向下一个要接收的数据帧于数据缓冲区中的存放地址;成功发送数据帧时,控制发送指针指向下一个要发送的数据帧于数据缓冲区中的存放地址;计算接收指针和发送指针之间、数据缓冲区中尚未发送的数据的长度;若尚未发送的数据的长度超过阈值,则释放缓存。
如图13所示,示出了根据本发明的实施方式的程序产品1,其可以在终端设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。例如,计算机可读存储介质可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(DynamicRandom Access Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等,或者可以用于存储所需信息并且可以由应用程序、模块或两者访问的任何其他介质。任何这样的计算机存储介质可以是设备的一部分或可访问或可连接到设备。本发明描述的任何应用或模块可以使用可以由这样的计算机可读介质存储或以其他方式保持的计算机可读/可执行指令来实现。
应当理解,本发明披露的权利要求、说明书及附图中的术语“第一”或“第二”等是用于区别不同对象,而不是用于描述特定顺序。本发明披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明披露。如在本发明披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
还应当理解,本文示例的执行指令的任何模块、单元、组件、服务器、计算机、终端或设备可以包括或以其他方式访问计算机可读介质,诸如存储介质、计算机存储介质或数据存储设备(可移除的)和/或不可移动的)例如磁盘、光盘或磁带。计算机存储介质可以包括以用于存储信息的任何方法或技术实现的易失性和非易失性,可移动和不可移动介质,例如计算机可读指令、数据结构、程序模块或其他数据。
虽然本发明的实施方式如上,但所述内容只是为便于理解本发明而采用的实施例,并非用以限定本发明的范围和应用场景。任何本发明所述技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (10)
1.一种CAN网桥数据通讯方法,其特征在于,包括:
构建数据缓冲区,以存放CAN网桥接口传递的数据;
为所述数据缓冲区配置一个接收指针和一个发送指针;
接收到数据帧时,控制所述接收指针指向下一个要接收的数据帧于所述数据缓冲区中的存放地址;
成功发送数据帧时,控制所述发送指针指向下一个要发送的数据帧于所述数据缓冲区中的存放地址;
计算所述接收指针和发送指针之间、所述数据缓冲区中尚未发送的数据的长度;若所述尚未发送的数据的长度超过阈值,则释放缓存;其中,所述阈值根据所述数据缓冲区容量设定,且当出现CAN网桥连续异常中断时,所述阈值变高。
2.根据权利要求1所述的CAN网桥数据通讯方法,其特征在于,在将接收到的数据帧存入数据缓冲区之前,还包括对接收到的数据进行过滤和校验的步骤。
3.根据权利要求1所述的CAN网桥数据通讯方法,其特征在于,所述数据缓冲区采用环形数据缓冲结构,以数组形式存储数据。
4.根据权利要求3所述的CAN网桥数据通讯方法,其特征在于,还包括在CAN网桥上电时对所述接收指针、发送指针和数组初始化的步骤。
5.根据权利要求3所述的CAN网桥数据通讯方法,其特征在于,控制所述接收指针指向下一个要接收的数据帧于所述数据缓冲区中的存放地址包括:
接收到的数据帧存入数组后,接收指针加1并对数据缓冲区中数组长度取模;
控制所述发送指针指向下一个要发送的数据帧于所述数据缓冲区中的存放地址包括:
从数组元素中读取数据,等待发送成功后,发送指针加1并对数据缓冲区中数组长度取模。
6.根据权利要求1所述的CAN网桥数据通讯方法,其特征在于,所述阈值为数据缓冲区存储空间大小的N倍,N<1;当所述数据缓冲区中尚未发送的数据的长度大于所述数据缓冲区存储空间大小的N倍时,判断为数据通讯异常,释放缓存。
7.根据权利要求1或6所述的CAN网桥数据通讯方法,其特征在于,还包括:当CAN网桥连续异常中断次数超过设定值时,释放缓存。
8.根据权利要求1所述的CAN网桥数据通讯方法,其特征在于,所述释放缓存包括对数据缓冲区、接收指针以及发送指针进行初始化。
9.一种CAN网桥,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至8中任一项所述的CAN网桥数据通讯方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的CAN网桥数据通讯方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110506463.5A CN115412398B (zh) | 2021-05-10 | 2021-05-10 | 一种can网桥数据通讯方法、can网桥及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110506463.5A CN115412398B (zh) | 2021-05-10 | 2021-05-10 | 一种can网桥数据通讯方法、can网桥及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115412398A CN115412398A (zh) | 2022-11-29 |
CN115412398B true CN115412398B (zh) | 2024-03-22 |
Family
ID=84156609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110506463.5A Active CN115412398B (zh) | 2021-05-10 | 2021-05-10 | 一种can网桥数据通讯方法、can网桥及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115412398B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1108762A (zh) * | 1993-02-25 | 1995-09-20 | 丰田自动车株式会社 | 基于与参考值比较的所检测的物理量的冲压机的诊断方法 |
CN102521177A (zh) * | 2011-12-07 | 2012-06-27 | 福建星网锐捷网络有限公司 | 中断处理方法及装置、中央处理器以及处理设备 |
CN103957089A (zh) * | 2014-04-28 | 2014-07-30 | 上海大学 | 一种高可靠线速数据通信方法 |
US10063452B1 (en) * | 2015-01-05 | 2018-08-28 | Amazon Technologies, Inc. | Routing loop for testing a communication link |
CN111245743A (zh) * | 2020-01-09 | 2020-06-05 | 浙江吉利汽车研究院有限公司 | 一种信息处理方法、存储介质、网关及汽车 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7172909B2 (ja) * | 2019-08-01 | 2022-11-16 | 株式会社デンソー | 電子制御装置 |
-
2021
- 2021-05-10 CN CN202110506463.5A patent/CN115412398B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1108762A (zh) * | 1993-02-25 | 1995-09-20 | 丰田自动车株式会社 | 基于与参考值比较的所检测的物理量的冲压机的诊断方法 |
CN102521177A (zh) * | 2011-12-07 | 2012-06-27 | 福建星网锐捷网络有限公司 | 中断处理方法及装置、中央处理器以及处理设备 |
CN103957089A (zh) * | 2014-04-28 | 2014-07-30 | 上海大学 | 一种高可靠线速数据通信方法 |
US10063452B1 (en) * | 2015-01-05 | 2018-08-28 | Amazon Technologies, Inc. | Routing loop for testing a communication link |
CN111245743A (zh) * | 2020-01-09 | 2020-06-05 | 浙江吉利汽车研究院有限公司 | 一种信息处理方法、存储介质、网关及汽车 |
Also Published As
Publication number | Publication date |
---|---|
CN115412398A (zh) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8233483B2 (en) | Communication apparatus, communication system, absent packet detecting method and absent packet detecting program | |
US6192422B1 (en) | Repeater with flow control device transmitting congestion indication data from output port buffer to associated network node upon port input buffer crossing threshold level | |
CN103248467B (zh) | 基于片内连接管理的rdma通信方法 | |
CN102404229B (zh) | 负载均衡***、装置及方法 | |
JP2009526494A (ja) | トランスポートプロトコルの性能を改善するシステムおよび方法 | |
EP0823166A1 (en) | Flow control protocol system and method | |
CN103141050B (zh) | 快速通道互联***中数据包重传方法、节点 | |
CN103780365A (zh) | 动态的多链路冗余数据传输方法和*** | |
JPH0821944B2 (ja) | 多重アクセス・デイジタル伝送システム | |
US9660835B2 (en) | Bidirectional packet transfer fail-over switch for serial communication | |
CN115412398B (zh) | 一种can网桥数据通讯方法、can网桥及可读存储介质 | |
WO2014161421A1 (zh) | 数据传输方法、设备及*** | |
CN105847187B (zh) | 双端口以太网***的交换装置 | |
CN117354253A (zh) | 一种网络拥塞通知方法、装置及存储介质 | |
CN104580171A (zh) | Tcp协议的传输方法、装置和*** | |
CN109586931A (zh) | 组播方法及终端设备 | |
Cisco | LLC2 and SDLC Commands | |
Cisco | LLC2 and SDLC Commands | |
Cisco | LLC2 and SDLC Commands | |
Cisco | LLC2 and SDLC Commands | |
CN100372334C (zh) | 一种实现在光网络中传输InfiniBand数据的设备及方法 | |
Cisco | LLC2 and SDLC Commands | |
Cisco | LLC2 and SDLC Commands | |
Cisco | LLC2 and SDLC Commands | |
Cisco | LLC2 and SDLC Configuration Commands |
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 |