一种基于CAN总线的自动ID分配的多机通讯系统及其方法与流程
未命名
09-29
阅读:89
评论:0
一种基于can总线的自动id分配的多机通讯系统及其方法
技术领域
1.本发明涉及多机通讯技术领域,具体是一种基于can总线的自动id分配的多机通讯系统及其方法。
背景技术:
2.多机通讯技术主要是为了能够使用一条总线,同时与多个相同型号的目标设备进行控制,减少布线空间,提高通讯效率,可以同时对多个目标设备进行操作。can总线本身支持多机通讯,但是为了区分不同的相同型号目标设备,需要先手动为每个目标设备分配不同的地址,常规的做法有:1、通过外部硬件设定不同的地址,但是需要多余的硬件输入输出接口,在一些设备上没有预留的硬件接口,无法使用此方法。
3.2、为不同的设备烧录不同的程序,从而分配不同的id进行区分,这种方法需要先编写多种不同的程序,然后分别为每个设备进行烧录,操作及其麻烦,而且烧录容易覆盖掉控制器中原有的数据,容易烧录错程序,只适用于控制器固定的使用场景。
4.3、通过外部通讯单独为每个设备设定不同的id,这种方法只能在can总线上只有一台相同设备时进行设置,所以需要不断的断开连接其他控制器,操作也比较繁琐。
技术实现要素:
5.本发明要解决的技术问题就是克服以上的技术缺陷,提供一种可以自动分配id的基于can总线的自动id分配的多机通讯系统及其方法。
6.为了解决上述问题,本发明的技术方案为:一种基于can总线的自动id分配的多机通讯系统,包括主机单元与从机单元,所述主机单元通过can收发装置与从机单元连接,所述主机单元包括对从机单元进行管理的多机管理模块、对数据进行传输并检测数据正确性的数据传输模块、对从机单元id进行修改的id重分配模块及检测通讯问题的异常检测模块;所述从机单元包括多个目标设备单元,多个所述目标设备单元均包括根据设备内的信息自动生成随机id的自动id分配模块、响应主机单元不同的控制指令全局与独立控制模块、关闭目标设备单元响应的静默模式模块及对大量数据包管理的多包传输模块。
7.进一步,所述can收发装置为usb-can工具,所述can收发装置用于将主机单元上的can数据发送给从机单元且接收从机单元发送的can数据。
8.进一步,所述多个目标设备单元的数量小于或等于can总线所容纳的最大节点数。
9.进一步,所述多机管理模块用于根据目标设备单元的id将其进行分类、周期性的检测与各个目标设备单元之间连接情况、控制各个目标设备单元的连接模式。
10.一种基于can总线的自动id分配的多机通讯方法,其特征在于,在进行自动分配id时,包括以下步骤:s1、首先,主机单元使用全局控制模块向从机单元上所有的目标设备单元发送id
分配指令,若目标设备单元没有收到主机分配id的指令则重新开始s1步骤;s2、目标设备单元采集控制器内部悬空引脚的ad值;s3、目标设备单元利用悬空的白噪声,作为随机数种子生成随机数;s4、目标设备单元读取mcu内部的序列号;s5、目标设备单元将控制器内部悬空引脚的ad值、利用悬空的白噪声生成的随机数与mcu内部的序列号组合生成随机id;s6、然后目标设备单元通过全局id将随机id反馈给主机单元;s7、目标设备单元若没有收到can总线上其他目标设备单元冲突的id则分配完成,若有冲突id则进入s8;s8、目标设备单元记录can总线上冲突id的报文时间戳;s9、目标设备单元利用报文时间戳生成随机数;s10、目标设备单元向主机单元发送重新分配id指令;s11、主机单元收到重新分配id的指令后进入s2-s7循环。
11.一种基于can总线的自动id分配的多机通讯方法,其特征在于,所述主机单元向总线上的多个目标设备单元下发全局指令后,具体包括以下步骤:sa.主机单元向总线上的多个目标设备单元下发全局指令;sb.非静默设备单元1、非静默设备单元2分别响应主机单元的全局指令,并向主机单元发送全局或独立反馈;sc.主机单元在依次接收完所有非静默设备单元的响应后,此次全局指令执行完成,can总线上的静默设备单元3由于处于静默模式,收到全局指令后不响应,而主机单元也会忽略静默设备单元的全局响应,除非控制其退出静默模式;sd.主机单元下发全局指令后,任意非静默设备单元反馈错误指令,或超时未收到反馈时,主机单元根据需要来决定是否重新下发全局指令,或者向出现问题的目标设备单元发送独立指令。
12.一种基于can总线的自动id分配的多机通讯方法,其特征在于,所述数据模块进行数据传输时,具体包括以下步骤:sa.主机单元向设备单元下发多包数据时,需要先发送多包首帧,表明需要发送的数据包个数以及数据长度,然后依次下发所有数据包,为了提高通讯效率,多帧数据包不再做校验;sb.多包传输完成后,发送0x30多包尾帧,并发送所有数据包的校验;sc.目标设备单元当收到多包首帧后开始进行多包通讯,存储数据包个数及数据长度,然后依次接收所有数据包;sd.目标设备单元收到多包尾帧时,对接收到的所有数据进行校验,如果数据包序号不连续、数据包个数错误、数据长度不匹配或数据校验错误等,都会导致此次多包传输失败;se.目标设备单元向主机单元发送错误信息,由主机单元决定是否重新传输数据;sf.设备单元接收多包数据无误时,对所有数据进行打包,然后再进行处理。
13.本发明与现有的技术相比的优点在于:1、本发明使用的一种基于can总线的自动id分配的多机通讯技术,从机单元使用
相同的程序,无需为每个目标设备单元编写不同的程序,就能够由目标设备单元本身自动生成不重复的id。
14.2、主机单元分为全局控制和独立控制两种模式,能够实现主机单元对所有目标设备单元同时交互,或对任意目标设备单元进行点对点的交互,由主机单元实现对多设备连接、通讯的管理,目标设备单元作为从机只响应主机的交互,避免can总线上数据过多出现冲突或延时,保证多机通讯的可靠性、稳定性与快速性。
附图说明
15.图1是本发明中多机通讯系统框图;图2是本发明中id自动分配的流程图;图3是本发明中全局、独立控制模式及静默模式示意图;图4是本发明全局和独立指令数据结构图;图5是单包传输和多包传输数据结构图。
具体实施方式
16.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
实施例
17.如图1-5所示,一种基于can总线的自动id分配的多机通讯系统,包括主机单元与从机单元,所述主机单元通过can收发装置与从机单元连接,所述主机单元包括对从机单元进行管理的多机管理模块、对数据进行传输并检测数据正确性的数据传输模块、对从机单元id进行修改的id重分配模块及检测通讯问题的异常检测模块;主机单元一般都由计算机和上位机软件组成,包括多机管理模块、数据传输模块、id重分配模块、异常检测模块。多机管理模块的主要作用是检测can总线上所有连接的目标设备单元,并且根据id将其进行分类,周期性的检测和各个目标设备单元之间的连接情况,并可以控制各个目标设备单元的连接,使其处于全局或独立控制模式,或使其保持静默模式。数据传输模块主要实现了数据的单包传输、多包传输等基本功能,检测数据的正确性,以及是否正确下发到目标设备单元中,如果数据出错,具有单包数据的重传的功能,避免重复下发数据。另外数据传输模块还具有全局模式和独立模式,可以同时对所有目标设备单元传输数据,或者针对任意目标设备单元进行数据传输,实现了不同模式下的数据管理。id重分配功能模块是在从机单元中的目标设备单元自动分配id后,可以通过主机单元重新修改其id,主要用于在can总线连接其他非目标设备单元时,可能会出现分配的id冲突的情况需要重新调整id,主机单元中存储一个重要id列表,当自动的id和这些重要id冲突时,由主机单元可以要求目标设备单元重新分配id。异常检测模块主要用于检测和各个目标设备单元之间的通讯问题,比如通讯失败、数据检验错误、通讯超时、id冲突等,将其上报给主机单元,由主机单元决定相应的处理措施,并将异常记录下来,用于后续的追踪、处理;从机单元包括多个目标设备单元,多个目标设备单元均包括根据设备内的信息自动生成随机id的自动id分配模块、响应主机单元不同的控制指令全局与独立控制模块、关
闭目标设备单元响应的静默模式模块及对大量数据包管理的多包传输模块;从机单元主要由一系列目标设备单元组成,每个目标设备单元都使用的相同的控制程序,连接数量不能超过can总线所能容纳的最大节点数,将各个目标设备单元都连接到同一个can总线上,由主机单元自动根据id来检测从机单元中目标设备单元的数量、id和类型。目标设备单元包括自动id分配模块、全局与独立控制模块、静默模式模块、多包传输模块。自动id分配模块需要根据目标设备单元内的信息自动生成随机id,全局与独立控制模块主要用于响应主机单元不同的控制指令,全局控制用于同时控制从机单元中的所有目标设备单元,而独立控制则是单独针对特定目标设备单元进行控制。静默模式模块用于关闭目标设备单元的响应,使其不再发送其他数据,降低总线上的负载率,也能够暂时关闭其对主机单元的控制,避免受到其他设备单元或主机单元的影响。多包传输模块主要实现了对大量数据包的打包、检测、管理功能,能够自动校验数据的准确性,超时或收到错误数据时请求主机单元进行数据重传。
18.如图1所示,can收发装置为usb-can工具,usb-can工具可以将can总线转换为usb信号,can收发装置用于将主机单元上的can数据发送给从机单元且接受从机单元发送来的can数据。
19.如图1所示,所述多个目标设备单元的数量小于或等于can总线所容纳的最大节点数。
20.如图1、图3所示,所述多机管理模块用于根据目标设备单元的id将其进行分类、周期性的检测与各个目标设备单元之间连接情况、控制各个目标设备单元的连接模式,使其处于全局模式、独立控制模式或使其保持静默模式。
21.如图3所示,当主机单元向总线上的多个目标设备单元下发全局指令时,非静默设备单元1、非静默设备单元2分别响应主机单元的发送的全局指令,并向主机单元发送全局或独立反馈,而主机单元在依次接收完所有非静默设备单元的响应后,才认为此次全局指令执行完成。can总线上的静默设备单元3由于处于静默模式,收到全局指令后不响应,而主机单元也会忽略静默设备单元3的全局响应,除非控制其退出静默模式。当主机单元下发全局指令后,任意非静默设备单元反馈错误指令,或超时未收到反馈时,主机单元根据需要来决定是否重新下发全局指令,或者向出现问题的目标设备单元发送独立指令。例如,此时非静默设备单元1反馈成功,非静默设备单元2反馈失败,主机单元重新向非静默设备单元2发送独立指令,非静默设备单元2在接收到独立指令后,向主机单元发送独立反馈。静默设备单元3不响应全局指令,但是响应独立指令,主机单元向静默设备单元3发送独立指令,静默设备单元3发送独立反馈。
22.如图4所示,全局指令和独立指令的数据结构主要由请求或反馈标志位、指令字节、数据长度、以及数据帧组成。主机单元向目标设备单元下发指令时,最高位为0,而目标设备单元会忽略最高位为1的反馈,只接收最高位为0的请求。全局请求和全局反馈使用全局id进行通信,而独立请求和独立反馈则使用各个目标设备单元的id进行通信。例如,主机单元通过全局id向所有目标设备单元下发全局请求,让其重新分配id,此时所有目标设备单元接收到全局请求后,使用全局反馈向主机单元发送分配后的id,而主机单元接收到所有id后,将其存储在多机管理列表中,用于维护所有目标设备单元的状态。之后主机单元则根据目标设备单元id向目标设备大暖发送独立指令,或者使用全局id向目标设备单元发送
全局指令。
23.如图5所示,由于can通讯的数据长度最大为8各字节,当数据包长度超过8各字节时,需要使用多包传输协议进行通讯,对数据进行打包。数据传输的最高字节表示此帧的类型,如果打包后的字节长度小于等于8个字节,则可以使用单包传输,否则需要使用多包传输。单包传输的首字节为0x00,当目标设备单元检测到单包数据时,则对所有数据进行crc校验,如果通过则认为数据有效,取出单包数据进行处理,否则直接忽略。当主机单元向目标设备单元下发多包数据时,需要先发送多包首帧,表明需要发送的数据包个数以及数据长度,然后依次下发所有数据包,为了提高通讯效率,多帧数据包不再做校验,多包传输完成后,发送0x30多包尾帧,并发送所有数据包的校验。当目标设备单元收到多包首帧后开始进行多包通讯,存储数据包个数及数据长度,然后依次接收所有数据包,收到多包尾帧时,对接收到的所有数据进行校验,如果数据包序号不连续、数据包个数错误、数据长度不匹配或数据校验错误等,都会导致此次多包传输失败,目标设备单元向主机单元发送错误信息,由主机单元决定是否重新传输数据。目标设备单元接收多包数据无误时,对所有数据进行打包,然后再进行处理。
24.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
技术特征:
1.一种基于can总线的自动id分配的多机通讯系统,包括主机单元与从机单元,所述主机单元通过can收发装置与从机单元连接,其特征在于:所述主机单元包括对从机单元进行管理的多机管理模块、对数据进行传输并检测数据正确性的数据传输模块、对从机单元id进行修改的id重分配模块及检测通讯问题的异常检测模块;所述从机单元包括多个目标设备单元,多个所述目标设备单元均包括根据设备内的信息自动生成随机id的自动id分配模块、响应主机单元不同的控制指令全局与独立控制模块、关闭目标设备单元响应的静默模式模块及对大量数据包管理的多包传输模块。2.根据权利要求1所述的一种基于can总线的自动id分配的多机通讯系统,其特征在于:所述can收发装置为usb-can工具,所述can收发装置用于将主机单元上的can数据发送给从机单元且接收从机单元发送的can数据。3.根据权利要求1所述的一种基于can总线的自动id分配的多机通讯系统,其特征在于:所述多个目标设备单元的数量小于或等于can总线所容纳的最大节点数。4.根据权利要求1所述的一种基于can总线的自动id分配的多机通讯系统,其特征在于:所述多机管理模块用于根据目标设备单元的id将其进行分类、周期性的检测与各个目标设备单元之间连接情况、控制各个目标设备单元的连接模式。5.根据权利要求1所述的一种基于can总线的自动id分配的多机通讯方法,其特征在于,在进行自动分配id时,包括以下步骤:s1、首先,主机单元使用全局控制模块向从机单元上所有的目标设备单元发送id分配指令,若目标设备单元没有收到主机分配id的指令则重新开始s1步骤;s2、目标设备单元采集控制器内部悬空引脚的ad值;s3、目标设备单元利用悬空的白噪声,作为随机数种子生成随机数;s4、目标设备单元读取mcu内部的序列号;s5、目标设备单元将控制器内部悬空引脚的ad值、利用悬空的白噪声生成的随机数与mcu内部的序列号组合生成随机id;s6、然后目标设备单元通过全局id将随机id反馈给主机单元;s7、目标设备单元若没有收到can总线上其他目标设备单元冲突的id则分配完成,若有冲突id则进入s8;s8、目标设备单元记录can总线上冲突id的报文时间戳;s9、目标设备单元利用报文时间戳生成随机数;s10、目标设备单元向主机单元发送重新分配id指令;s11、主机单元收到重新分配id的指令后进入s2-s7循环。6.根据权利要求1所述的一种基于can总线的自动id分配的多机通讯方法,其特征在于,所述主机单元向总线上的多个目标设备单元下发全局指令后,具体包括以下步骤:sa.主机单元向总线上的多个目标设备单元下发全局指令;sb.非静默设备单元1、非静默设备单元2分别响应主机单元的全局指令,并向主机单元发送全局或独立反馈;sc.主机单元在依次接收完所有非静默设备单元的响应后,此次全局指令执行完成,can总线上的静默设备单元3由于处于静默模式,收到全局指令后不响应,而主机单元也会忽略静默设备单元的全局响应,除非控制其退出静默模式;
sd.主机单元下发全局指令后,任意非静默设备单元反馈错误指令,或超时未收到反馈时,主机单元根据需要来决定是否重新下发全局指令,或者向出现问题的目标设备单元发送独立指令。7.根据权利要求1所述的一种基于can总线的自动id分配的多机通讯方法,其特征在于,所述数据模块进行数据传输时,具体包括以下步骤:sa.主机单元向设备单元下发多包数据时,需要先发送多包首帧,表明需要发送的数据包个数以及数据长度,然后依次下发所有数据包,为了提高通讯效率,多帧数据包不再做校验;sb.多包传输完成后,发送0x30多包尾帧,并发送所有数据包的校验;sc.目标设备单元当收到多包首帧后开始进行多包通讯,存储数据包个数及数据长度,然后依次接收所有数据包;sd.目标设备单元收到多包尾帧时,对接收到的所有数据进行校验,如果数据包序号不连续、数据包个数错误、数据长度不匹配或数据校验错误等,都会导致此次多包传输失败;se.目标设备单元向主机单元发送错误信息,由主机单元决定是否重新传输数据;sf.设备单元接收多包数据无误时,对所有数据进行打包,然后再进行处理。
技术总结
本发明公开了一种基于CAN总线的自动ID分配的多机通讯系统及其方法,包括主机单元与从机单元,主机单元通过CAN收发装置与从机单元连接,从机单元包括多个目标设备单元。优点:从机单元使用相同的程序,无需为每个目标设备单元编写不同的程序,就能够由目标设备单元本身自动生成不重复的ID。主机单元分为全局控制和独立控制两种模式,能够实现主机单元对所有目标设备单元同时交互,或对任意目标设备单元进行点对点的交互,由主机单元实现对多设备连接、通讯的管理,目标设备单元作为从机只响应主机的交互,避免CAN总线上数据过多出现冲突或延时,保证多机通讯的可靠性、稳定性与快速性。性。性。
技术研发人员:白楠
受保护的技术使用者:徐州芯源诚达传感科技有限公司
技术研发日:2022.12.28
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/