一种基于网络时序仲裁的环形CAN总线通信方法与流程
未命名
08-03
阅读:252
评论:0
一种基于网络时序仲裁的环形can总线通信方法
技术领域
1.本发明涉及通信技术领域,具体而言,尤其涉及一种基于网络时序仲裁的环形can总线通信方法。
背景技术:
2.环形can总线网络特指网络上通讯节点个数为三个以上且各个节点地位相同,各节点之间均可以发生交互通讯的can总线组网形式,最简单的三节点环形can总线网络结构如图1-2所示。针对can总线网络的总线时序分配和资源控制以保证各节点之间的通讯正常和资源占比均衡称为can总线的时序仲裁。
3.当can总线网络上的节点数超过三个时,就存在总线的时序仲裁和分配问题。因为can总线的半双工工作特性,决定了每一时刻只能有某一个单一指向一条报文在总线上传达。这就好像众人在开一个远程会议,大家共享一套发言系统,每一时刻只能有一个人发言,否则就会发生混乱。环形can总线网络特殊的各个节点均需要互相通讯的性质,决定了总线的时序仲裁要求会更高一些。这就好像远程会议上每两个参会人之间都寻求发起对话,当a、b两个人在交谈时,c不能插话发言,否则就会引起混乱,需要合理分配时间、次序和合理配对才不会引起沟通障碍和发言冲突。实际通讯情况如图1所示,当a、b两节点之间对话通讯期间,节点c应该避免发起通讯,否则将发生总线冲突,形成总线阻塞,就像高速公路堵塞一样会进而影响后续通讯,造成各个节点通讯失败次数计数器溢出,引发故障程序。当环形can总线网络上的节点更多时,这种问题更为棘手和严重,can总线的时序仲裁也更为迫切和重要。
4.上述问题在环形can总线网络实践中经常遇到,因为总线上各个节点都是独立的系统单元,它们各自工作在自己的时钟频率之下,而且各自执行的程序时序和内容也不一样,何时在总线上发起对哪个节点的对话各个节点都不会统一,所以环形can总线网络时序仲裁技术必不可少,是通讯技术领域中的重要技术课题。
5.现有一种较为简单的环形can总线网络时序仲裁方案是分时复用轮询方案。即将can总线网络的时序进行分段处理,每一时刻只有一对节点开启通讯对话,全部节点按时间段进行轮询。这就相当于远程会议上的定时对话机制,每两个参会人之间都分配一个固定的交谈时间,按照固定顺序和时刻表执行,当任意两个参会人都完成交谈后再从头循环,如此往复。此方案的优势在于结构简单、成本低。但是该方案也存在明显的不足:
6.1)can总线上各个节点都是独立的系统单元,它们各自工作在自己的时钟频率之下,而且各自执行的程序时序和内容也不一样,所以轮询的计时不可能严格统一。这就好像远程会议的参会人各自按照自己的时间表来计算轮询时序,而每个参会人的计时标准和任务情况都不一样,所以难以做到严格一致。这种情况导致的结果是随着循环次数增多,这种计时差异逐渐累加越来越大,最终分时错误或轮询冲突不可避免。
7.2)同样基于上述原因还会导致另一个不利效果:某个can总线网络上的节点可能因为处理优先级更高的中断任务未能适时发起通讯对话,当这个节点完成任务可以发起通
讯对话时却已经错过了指定分段时序,结果就是这个节点错过一轮或者几轮轮询通讯,导致can总线网络上各个节点的通讯频次不一致,信息交换不及时不对等,将对整个系统的稳定和可靠造成影响。这就好像远程会议上有些人侃侃而谈总能发言,而某些人错过机会发言很少的情况,造成其他人对发言很少的人缺乏信息了解。
8.3)分时复用轮询方案对can总线时序资源的利用率无法达到最高。某些分段时序可能没能进行有效通讯对话,can总线时序资源存在浪费现象。
9.现有较为复杂的环形can总线网络时序仲裁方案是主站控制方案,也称主从方案。顾名思义,就是在环形can总线网络中设置一个专门附有can总线控制功能的特殊节点,一般称作主站节点,除主站节点外的其他节点均称为从站节点。主站节点相当于远程会议上的主持人,远程会议的每一次会话均由主持人发起,他可以直接点名某一个参会人进行对话,也可以指定某两名参会者进行对话,由主持人确定所有参会人的交流频次和会议时间安排。在实际的can总线网络通讯中,主站节点控制can总线上的时序分配,由主站节点决定何时直接访问can总线上的哪个从站节点进行通讯对话或允许哪两个从站节点之间进行通讯对话。主站节点负责can总线的状态控制和时序分配,每一次can通讯只能由主站节点发起和结束,从站节点不被允许主动访问can总线。此方案的优势在于通讯可靠、效率高。但该方案依旧存在明显不足:
10.1)需要单独设计can总线主站节点的通讯程序,与其他网络节点的通讯程序有区别,因此各个网络节点之间的通讯程序不能统一,开发难度和成本上升。
11.2)主站节点需要总体控制和协调整个环形can总线网络,网络通讯的可靠性和高效性均取决于主站节点。主站节点需要实时控制can总线时序、监听全部报文、发送各种指令报文和会话报文、监视网络异常情况和作出处理等等,这些将占用主站节点的大量资源,导致主站节点执行除can总线通讯以外的其他任务的能力和效率大大下降。因此大多数情况下,主站节点是单独增加和设置的,不再执行除can总线通讯以外的其他任务,这无疑增加了环形can总线网络的复杂度和设备成本。
12.3)主站节点相当于整个环形can总线网络的中心,如果主站节点出现故障和异常将导致整个通讯网络瘫痪,这无疑是整个环形can总线网络安全可靠的巨大隐患。
技术实现要素:
13.鉴于现有技术的不足,本发明提供一种基于网络时序仲裁的环形can总线通信方法。本发明专门设计一个“会话发生”报文,全部环形can总线网络节点通过接收和发送此报文实现会话状态区分,确保各个环形can总线网络节点通讯频次一致,确保网络通讯的完整性和及时性。
14.本发明采用的技术手段如下:
15.一种基于网络时序仲裁的环形can总线通信方法,使全部环形can总线网络节点接收和发送会话发生报文,所述会话发生报文的每一位对应一个节点的会话发生状态,当节点对应逻辑值为0时,表示该节点未能完成一次通讯对话,当节点对应逻辑值为1时,表示该节点完成一次通讯对话;
16.所述方法包括以下步骤:
17.s1、各节点初始化会话发生报文;
18.s2、当前节点进入监听状态并开启接收中断,随时接收其他节点推送的更新过的会话发生报文和相应其他节点的通讯对话请求;
19.s3、判断是否接收到针对本节点的通讯对话请求,如果检测到针对本节点的通讯对话请求则优先响应通讯对话请求,否则对会话发生报文的内容进行判断:如果本节点的对应位逻辑值为“1”则执行s2,如果本节点的对应位逻辑值为“0”则执行s4;
20.s4、当前节点根据监听反馈判断当前环形can总线网络是否处于空闲状态,如果处于空闲状态则主动向can总线上发起通讯对话请求,发送寻址信息;
21.s5、当前节点判断通讯对话请求是否被正确响应,如果被正确响应则本节点与对象节点进行正常通讯对话;
22.s6、判断判断通讯对话是否完成,若未完成则执行s5,若完成则执行s7;
23.s7、更新会话发生报文内容,将本节点对应位的逻辑状态由“0”改写为“1”。
24.进一步地,所述方法还包括:
25.s8、判断更新后的会话发生报文内容中各个节点的对应位逻辑值是否全部是“1”,如果均为“1”则将全部节点对应位的逻辑值均改写为“0”,否则向环形can总线网络推送更新过的“会话发生”报文,执行s2。
26.进一步地,如果检测到针对本节点的通讯对话请求则优先响应通讯对话请求,包括:本节点执行通讯应答,实时交流数据,当一组通讯应答结束后执行s2。
27.进一步地,当前节点根据监听反馈判断当前环形can总线网络是否处于空闲状态,还包括:如果不处于空闲状态则执行s2。
28.进一步地,当前节点判断通讯对话请求是否被正确响应,还包括如果未被正确响应则立刻让出can总线,执行s2。
29.进一步地,各节点初始化会话发生报文,包括:将全部节点对应位的逻辑值均置为“0”。
30.较现有技术相比,本发明具有以下优点:
31.1、本发明避免因各个环形can总线网络节点工作基准频率不同造成的网络时序计算不同步和累积混乱。
32.2、本发明能够确保各个环形can总线网络节点通讯频次一致,实现网络通讯的完整和及时;
33.3、本发明全部环形can总线网络节点的通讯程序采用同一套设计方案,通讯程序没有区别,降低开发难度和成本。
34.4、本发明不再单独设置特殊的、主责管理环形can总线网络的节点,降低网络复杂度和设备成本。
35.5、本发明整个环形can总线网络没有中心节点,各个节点的地位相同,任何节点的功能性缺失不会造成整个网络的瘫痪。
附图说明
36.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以
根据这些附图获得其他的附图。
37.图1为三节点环形can总线网络通讯需求示意图。
38.图2为三节点环形can总线网络拓扑结构。
39.图3为本发明一种基于网络时序仲裁的环形can总线通信方法流程图。
40.图4为实施例中会话发生报文数据结构示意图。
41.图5为实施例中通讯程序执行流程图。
具体实施方式
42.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
43.如图3所示,本发明提供了一种基于网络时序仲裁的环形can总线通信方法,使全部环形can总线网络节点接收和发送会话发生报文,所述会话发生报文的每一位对应一个节点的会话发生状态,当节点对应逻辑值为0时,表示该节点未能完成一次通讯对话,当节点对应逻辑值为1时,表示该节点完成一次通讯对话。该方法包括以下步骤:
44.s1、各节点初始化会话发生报文,包括将全部节点对应位的逻辑值均置为“0”。
45.s2、当前节点进入监听状态并开启接收中断,随时接收其他节点推送的更新过的会话发生报文和相应其他节点的通讯对话请求。
46.s3、判断是否接收到针对本节点的通讯对话请求,如果检测到针对本节点的通讯对话请求则优先响应通讯对话请求,包括本节点执行通讯应答,实时交流数据,当一组通讯应答结束后执行s2。否则对会话发生报文的内容进行判断:如果本节点的对应位逻辑值为“1”则执行s2,如果本节点的对应位逻辑值为“0”则执行s4。
47.s4、当前节点根据监听反馈判断当前环形can总线网络是否处于空闲状态,如果处于空闲状态则主动向can总线上发起通讯对话请求,发送寻址信息。如果不处于空闲状态则执行s2。
48.s5、当前节点判断通讯对话请求是否被正确响应,如果被正确响应则本节点与对象节点进行正常通讯对话。如果未被正确响应则立刻让出can总线,执行s2。
49.s6、判断判断通讯对话是否完成,若未完成则执行s5,若完成则执行s7;
50.s7、更新会话发生报文内容,将本节点对应位的逻辑状态由“0”改写为“1”。
51.进一步地,所述方法还包括:
52.s8、判断更新后的会话发生报文内容中各个节点的对应位逻辑值是否全部是“1”,如果均为“1”则将全部节点对应位的逻辑值均改写为“0”,否则向环形can总线网络推送更新过的“会话发生”报文,执行s2。
53.下面通过具体的应用实例对本发明的方案和效果做进一步说明。
54.本实施例专门设计一个“会话发生”报文,全部环形can总线网络节点接收和发送此报文。其设计内容参见图4,该报文的每一位指定为某一环形can总线网络节点的会话发生状态:未能完成一次通讯对话的节点对应位逻辑值为“0”,完成一次通讯对话的节点对应
位逻辑值为“1”。正常工作情况中全部环形can总线网络节点启动后都工作在监听模式下,如果“会话发生”报文中本节点对应位逻辑值为“1”,则本节点不允许发出通讯对话请求,只能响应其他节点作应答;如果“会话发生”报文中本节点对应位逻辑值为“0”,则主动监听can总线处于空闲状态时,发出通讯会话请求,会话结束后改写“会话发生”报文中本节点对应位逻辑值为“1”并向全网络发送。当“会话发生”报文中全部环形can总线网络节点的对应位逻辑值均为“1”时表示本轮通讯完成,最后一个改写“会话发生”报文的节点负责重新清除“会话发生”报文的所有节点对应位逻辑值为“0”,然后向can总线发送进而启动下一轮通讯。通讯程序执行流程如图5所示。具体包括:
55.在框1处,程序开始通讯任务阶段,执行初始化内容。最重要的部分是在此处程序预设本环形can总线网络对应的“会话发生”报文初始内容。
56.在框2处,程序控制本节点进入监听状态,开启接收中断,以便随时接收其他节点推送的更新过的“会话发生”报文和相应其他节点的通讯对话请求。
57.在框3处,判断是否接收到针对本节点的通讯对话请求,如果检测到针对本节点的通讯对话请求则进入框4流程,否则进入框5流程。
58.在框4处,根据接收到的来自其他节点的通讯对话请求进行对应响应。此时本节点的工作状态相当于主从方案中的从站节点状态,执行通讯应答,实时交流数据。当一组通讯应答结束后,返回框2处。
59.在框5处,判断“会话发生”报文的内容。如果本节点的对应位逻辑值为“1”,说明已经完成了一轮通讯对话需求,返回框2;如果本节点的对应位逻辑值为“0”,说明还没有完成通讯对话需求,进入框6。
60.在框6处,程序根据监听反馈判断当前环形can总线网络是否处于空闲状态。如果结果为否,说明can总线上正在发生其他通讯对话,则返回框2;如果结果为是,则进入框7。
61.在框7处,程序主动向can总线上发起通讯对话请求,发送寻址信息。
62.在框8处,程序判断通讯对话请求是否被正确响应。如果结论为否,说明没有正确响应:原因可能是can总线被其他节点更快的抢占已经发出了其他通讯对话请求,也可能是通讯对话的目标节点暂时忙不能立刻响应,无论哪种情况应立刻让出can总线,进入框2;如果结果为是,进入框9。
63.在框9处,程序控制本节点与对象节点进行正常通讯对话,此时本节点的工作状态相当于主从方案中的主站节点状态,发起应答,控制通讯对话时序,结束应答。
64.在框10处,判断通讯对话是否完成。若为否,返回框9;若为是,进入框11。
65.在框11处,更新“会话发生”报文内容,将本节点对应位的逻辑状态由“0”改写为“1”。
66.在框12处,判断更新后的“会话发生”报文内容:各个环形can总线网络节点的对应位逻辑值是否全部是“1”。如果结果为是,说明所有环形can总线网络节点都完成了一次通讯对话,本节点是本轮轮询中最后一个完成通讯对话的节点,进入框13;如果结果为否,进入框14。
67.在框13处,程序再次更新“会话发生”报文,将全部节点对应位的逻辑值均改写为“0”,进入框14。
68.在框14处,向环形can总线网络推送更新过的“会话发生”报文,返回框2。
69.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
技术特征:
1.一种基于网络时序仲裁的环形can总线通信方法,其特征在于,使全部环形can总线网络节点接收和发送会话发生报文,所述会话发生报文的每一位对应一个节点的会话发生状态,当节点对应逻辑值为0时,表示该节点未能完成一次通讯对话,当节点对应逻辑值为1时,表示该节点完成一次通讯对话;所述方法包括以下步骤:s1、各节点初始化会话发生报文;s2、当前节点进入监听状态并开启接收中断,随时接收其他节点推送的更新过的会话发生报文和相应其他节点的通讯对话请求;s3、判断是否接收到针对本节点的通讯对话请求,如果检测到针对本节点的通讯对话请求则优先响应通讯对话请求,否则对会话发生报文的内容进行判断:如果本节点的对应位逻辑值为“1”则执行s2,如果本节点的对应位逻辑值为“0”则执行s4;s4、当前节点根据监听反馈判断当前环形can总线网络是否处于空闲状态,如果处于空闲状态则主动向can总线上发起通讯对话请求,发送寻址信息;s5、当前节点判断通讯对话请求是否被正确响应,如果被正确响应则本节点与对象节点进行正常通讯对话;s6、判断判断通讯对话是否完成,若未完成则执行s5,若完成则执行s7;s7、更新会话发生报文内容,将本节点对应位的逻辑状态由“0”改写为“1”。2.根据权利要求1所述的一种基于网络时序仲裁的环形can总线通信方法,其特征在于,该方法还包括:s8、判断更新后的会话发生报文内容中各个节点的对应位逻辑值是否全部是“1”,如果均为“1”则将全部节点对应位的逻辑值均改写为“0”,否则向环形can总线网络推送更新过的“会话发生”报文,执行s2。3.根据权利要求1所述的一种基于网络时序仲裁的环形can总线通信方法,其特征在于,如果检测到针对本节点的通讯对话请求则优先响应通讯对话请求,包括:本节点执行通讯应答,实时交流数据,当一组通讯应答结束后执行s2。4.根据权利要求1所述的一种基于网络时序仲裁的环形can总线通信方法,其特征在于,当前节点根据监听反馈判断当前环形can总线网络是否处于空闲状态,还包括:如果不处于空闲状态则执行s2。5.根据权利要求1所述的一种基于网络时序仲裁的环形can总线通信方法,其特征在于,当前节点判断通讯对话请求是否被正确响应,还包括如果未被正确响应则立刻让出can总线,执行s2。6.根据权利要求1所述的一种基于网络时序仲裁的环形can总线通信方法,其特征在于,各节点初始化会话发生报文,包括:将全部节点对应位的逻辑值均置为“0”。
技术总结
本发明提供一种基于网络时序仲裁的环形CAN总线通信方法,使全部环形CAN总线网络节点接收和发送会话发生报文,所述会话发生报文的每一位对应一个节点的会话发生状态,当节点对应逻辑值为0时,表示该节点未能完成一次通讯对话,当节点对应逻辑值为1时,表示该节点完成一次通讯对话。节点通过接收和发送此报文实现会话状态区分,确保各个环形CAN总线网络节点通讯频次一致,确保网络通讯的完整性和及时性。性。性。
技术研发人员:魏春光 梁刚 王良彬 姜旭龙 李伟伟 齐凯
受保护的技术使用者:大连中车柴油机有限公司
技术研发日:2023.05.16
技术公布日:2023/8/2
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种物料数量自感知机械夹爪的制作方法 下一篇:扣式电池及电子产品的制作方法
