CN108989169B - 基于can总线的模块智能自组网的方法 - Google Patents
基于can总线的模块智能自组网的方法 Download PDFInfo
- Publication number
- CN108989169B CN108989169B CN201810964155.5A CN201810964155A CN108989169B CN 108989169 B CN108989169 B CN 108989169B CN 201810964155 A CN201810964155 A CN 201810964155A CN 108989169 B CN108989169 B CN 108989169B
- Authority
- CN
- China
- Prior art keywords
- module
- terminal module
- terminal
- main control
- control module
- 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
- 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)
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种基于CAN总线的模块智能自组网的方法,包括:设定主控模块固定且唯一的第一CAN‑ID,将终端模块归类预设默认的第二CAN‑ID;将主控模块的第一CAN‑ID广播至任一终端模块;任一终端模块向主控模块发送上线申请帧;主控模块接收任一终端模块的上线申请帧,通过ID管理模块反馈一与该终端模块的功能类型对应的第三CAN‑ID,将第三CAN‑ID与该终端模块的识别码UID绑定成数据帧,并传输给对应的终端模块;所述终端模块接收主控模块传输的数据帧,将该终端模块的第二CAN‑ID修改成第三CAN‑ID。通过上述方案,本发明具有无需预先分配CAN‑ID、组网操作简便、ID分配和回收管理可靠、支持终端模块的即插即用和热插拔功能等优点,在CAN总线技术领域具有很高的实用价值和推广价值。
Description
技术领域
本发明涉及CAN总线技术领域,尤其是基于CAN总线的模块智能自组网的方法。
背景技术
CAN(Controller Area Network)即控制器局域网络,其是一种支持分布式控制或实时控制的串行通讯网络。CAN总线物理层使用两根差分信号线,在硬件上它是支持带电通断的,但是在软件层面,CAN总线并没做过多规定,因此用户可以根据情况自行设计。与其他通讯总线相比,该CAN总线的数据通信具有突出的可靠性、实时性和灵活性,被广泛运用在汽车行业、自动化控制、航空航天、航海、过程工业、机械工业、纺织机械、农业机械、机器人、数控机床、医疗器械、传感器等领域。
通常情况下,CAN网络组网时,需要提前定义CAN总线中的每一个节点的ID,当设备大规模生产时,不可能给每个设备预先定义CAN-ID,因为可用的CAN-ID数量是有限的。另外,当网络结构发生变化需要调整时,需要人工干预修改配置,非常麻烦。本专利为解决上述问题,发明了一种解决方案,实现模块的动态组网,CAN-ID的动态分配,进一步的,如果定义了总线的硬件接插件形式,还能实现终端模块的即插即用和热插拔功能。
如申请号为“CN200910079308.9”、名称为“CAN总线动态组网的方法”的中国专利,在CAN总线系统的多个终端设备中,每个终端设备具有不同的特征ID,多个终端设备通过特征ID竞争出总线控制器。总线控制器通过定时发送心跳报文,探测当前网络中的终端设备数量、运行状态信息,并可以实时的加入或删除终端设备。当总线控制器故障时,系统可以重新竞争出新的总线控制器,并接任原总线控制器的任务。虽然该方法能实现设备间自动组网并可动态增减,但是,其也存在不足之处:最大的区别在于,该专利中所有终端设备ID都是事先预设的,不支持动态分配ID,也就是说其最多支持从CAN-ID取值空间数目的终端设备中组网,否则就会出现预设ID相同的设备,另外,由于要人工预设ID,也有可能出现错误导致预设两个ID一样的设备。因此,这只能应用在实验室内部小规模组网实验,完全无法应用在大规模批量生产的产品上。而本发明专利支持从无穷多的终端模块中任取N个模块组网,这个N不大于对应第二CAN-ID的可分配ID数量,且可以通过自动机制保证在线的模块中不会出现重复CAN-ID。事实上,本发明已经应用于批量生产的产品上。
又如申请号为“CN201710922814.4”、名称为“一种CAN总线动态组网的方法”的中国专利,其包括与总线通道连接的多个终端设备,每一个设备具有不同的唯一的标识识别码UID,这些终端设备竞争有限数量的通信ID。各个终端设备在没有分配到有效地通信ID时,以控制器的状态存在,使用一个固定通信ID,检测网络状态,实时获得有效通信ID并进入工作状态。控制器接收各个终端设备的节点主动发送的报文,获知网络中的终端设备的数量、状态。虽然该方法不需要设备控制器节点、且省去了终端设备的通讯ID配置,但是该专利中,CAN网络设备没有一个统一的主控制器,也完全没有统一的CAN-ID管理功能,各个终端设备自己生成CAN-ID并向所有网络其它设备广播,若收到拒绝报文,则查找下一个可用CAN-ID并继续广播;这相当于每个网络设备都需要维护一个CAN-ID管理功能模组,不仅浪费节点资源,还大大降低了分配效率,也增加后期升级维护工作繁琐程度;可以想见,在分配之初,每个终端设备都需持续向CAN网络发送申请报文,并且接收并分析所有其他设备的报文,总线占用率很高,每个模块的硬件资源占用也较多。并且随着总线中模块数量的增多,每个模块收到其它模块拒绝报文的可能性也会增加,完成所有模块的ID分配时间也会大大增加。而本发明中,由于存在主控模块对CAN-ID进行统一管理,每个终端模块只需要与主控模块通讯,可以通过掩码设置完全不理会总线上别的终端模块报文,由主控模块管理和维护全网络的CAN-ID分配工作,高效且有规律,资源和总线占用都低,并且随着网络模块数量的增多,初始ID分配基本只与主控模块的处理速度相关,并不会显著增加。另外,该专利中,每个CAN网络设备最终获取的是一个完全随机的CAN-ID,并未分类,无法方便地区分其功能类型;网络信息分散记录在每一个终端设备中,却没有一个统一的接口获取当前网络的各种信息及在线模块状态。
再如申请号为“CN201210143500.1”名称为“CAN总线网络的ID分配系统和方法”的中国专利,其包括主控制器、多个辅助控制器,主控制器用于对辅助控制器进行ID分配,通过ID分配线向第一辅助控制器发送ID分配指令,并通过CAN总线向相应的辅助控制器发送ID信息,以及通过IO诊断线接收异常信息。而辅助控制器用于接收主控制器发送的ID分配指令之后激活相应的CAN总线接收功能,并根据接收的ID信息更新自身的ID,以及在自身完成ID更新后激活下一个辅助控制器的CAN总线接收功能。其不足之处:第一,该专利所述CAN网络需要额外两组接线,分别是ID分配线和IO诊断线,增加了硬件网络拓扑结构的复杂性,降低了可靠性;第二,该专利中,辅助控制器依次激活,主控制器必须按顺序给辅助控制器分配ID,这是因为辅助控制器事先并未分配任何CAN-ID,无法向主控制器发送请求,因此这种方法虽然能分配ID,但是实现较为笨拙,分配效率也不高;第三,该专利并未描述在网络运行时加入一个新辅助控制器,或移除一个辅助控制器会出现什么情况,可以推断该种网络不支持在运行过程中动态增删辅助控制器;第四,专利并未描述辅助控制器如何离线以及离线的相关处理,也未有离线控制器如何重新上线的方法描述。
再如申请号为“CN201210034238.7”名称为“一种小型CAN网络组网的方法”的中国专利,其将CAN网络中各个节点的ID均初始值为ID0,选定其中一个为起始的目标节点,然后在CAN网络上广播发送生成ID的命令;其他节点在接收到生成ID的命令后,开设随机生成一个整数作为自己的ID,各个节点生成自己的ID后,把ID0作为目标地址,将自己新ID号码加上ID0组成一个ID表;ID0节点将生成的ID表发送给各个其他节点。其不足之处在于:第一,该专利自己也说了,只能针对网络节点数目较少的场合,原因是该专利所述方法没有统一的CAN-ID分配功能,每个节点随机生成一个整数作为自己的ID,这存在一个问题,有可能出现多个节点生成同一个ID的情况,这种情况随着节点数目的增多出现概率也会显著增大,该专利描述这种情况的应对措施是,重新进行组网操作,通知所有节点重新生成随机ID,然后再次比对,这不但浪费时间,还改变了所有未发生冲突的节点ID,这显然是一种效率很低的做法;第二,每个节点都需要存储一个ID分配表,不利于网络发生变动时的维护,实际上,该专利并未描述在网络运行时加入一个新节点,或移除一个节点会出现什么情况,可以推断该种网络不支持在运行过程中动态增删节点。第三,专利并未描述在线节点如何离线以及离线的相关处理,也未有离线节点如何重新上线的方法描述。
最后,如申请号为“CN201510260676.9”名称为“一种基于CAN总线的系统通讯方法”的中国专利,其通过对系统中的设备进行主、从机配置,针对入网前组网设备在未确定唯一ID时,采用随机数等方法生成从机唯一ID标识,以此完成初步CAN组网通信,再根据产品组网目标,通过主机向各从机分配功能ID,完成二次CAN组网通信。其不足之处在于:第一,该专利所述方法依然是各个从机首先自行生成随机ID,无法避免出现多个从机生成同样ID的情况。并且,出现上述情况后的处理方式是,主机向所有从机发送复位指令,所有从机重新生成ID,这不但浪费时间,还改变了所有已经正常运行的从机ID。和本发明相比显然是一种效率低下的方法。本发明从CAN-ID分配方式上保证了在线终端模块不会分配同样的ID,并且针对模块异常离线恢复后导致的ID冲突,本发明只需让异常模块复位即可,不需复位其它正常模块,也不会改变已分配的正常模块ID;第二,该专利中,主机接收到各个从机的随机ID后,还需要二次分配功能ID给各个从机,操作和流程繁琐;而本发明第一次就分配了可区分功能的第三CAN-ID,无需二次分配;第三,该专利中,当CAN网络发生改变时(例如增加新从机或移除已有从机),所有从机ID都会复位并重新初始化,不但浪费时间,还改变了所有已经正常运行的从机ID;而本发明中,无论新增或移除终端设备,都不会对其他正常运行的终端设备产生任何影响。
发明内容
本发明的目的在于提供一种基于CAN总线的模块智能自组网的方法,本发明采用的技术方案如下:
基于CAN总线的模块智能自组网的方法,包括采用CAN总线连接的主控模块和数个终端模块,所述主控模块内设有一ID管理模块,所述模块智能自组网的方法包括以下步骤:
步骤S01,设定主控模块固定且唯一的第一CAN-ID,将所述终端模块按功能归类成数个功能子集;并将同一功能子集的终端模块预设成统一的第二CAN-ID。
步骤S02,将步骤S01中主控模块的第一CAN-ID广播至连接在CAN总线的任一终端模块,并进入步骤S03,任一终端模块申请加入CAN总线通信。
步骤S03,任一终端模块以频率为1~20Hz、且持续向主控模块发送上线申请帧;所述上线申请帧包括步骤S01中功能子集的第二CAN-ID和该终端模块唯一的识别码UID。
步骤S04,所述主控模块接收任一终端模块的上线申请帧,并判断该终端模块的功能类型,通过ID管理模块反馈一与该终端模块的功能类型对应的第三CAN-ID;将所述第三CAN-ID与该终端模块的识别码UID绑定成CAN-ID分配帧,并主控模块持续将该CAN-ID分配帧发送给对应的终端模块;并连续监听CAN总线,在T时间内,若主控模块收到该终端模块反馈的至少一个生命维持帧,则该终端模块组网成功,否则,该终端模块组网失败。
步骤S05,所述终端模块接收主控模块传输的CAN-ID分配帧,并判断该CAN-ID分配帧内绑定的识别码UID与终端模块自身的识别码UID是否相同,若相同,则该终端模块组网连接成功,将该终端模块的第二CAN-ID修改成第三CAN-ID,并均匀间隔时间向主控模块发送生命维持帧,否则,重复步骤S03至S05,继续发送上线申请帧请求上线。
进一步地,还包括终端模块组网连接成功后,在主控模块内设置与该终端模块的识别码UID和第三CAN-ID绑定的生命时钟Ti;所述生命时钟的计数值Ti为大于0小于等于1000毫秒的数。
优选地,还包括所述组网连接的终端模块每间隔小于生命时钟的计数值Ti的时间向主控模块发送一生命维持帧,若主控模块在生命时钟Ti计时结束前收到该终端模块发送的生命维持帧,则将生命时钟Ti的时间归零重新计时;否则,确认该终端模块已经从CAN总线上断开,将该终端模块的第三CAN-ID回收,并由ID管理模块将该终端模块的识别码UID与第三CAN-ID解绑。
更进一步地,还包括当所述主控模块接收到任一终端模块发送的生命维持帧的CAN-ID与任一已分配的第三CAN-ID均不相同,主控模块判定是否维护该终端模块的生命时钟Ti;若主控模块未维护对应的终端模块的生命时钟Ti,则允许该终端模块连接至CAN总线上,由ID管理模块将该终端模块的第三CAN-ID标记,并与该终端模块的识别码UID绑定;否则,主控模块向该终端模块下发重启恢复至该终端模块对应的功能子集的第二CAN-ID的强制重启指令,该终端模块重启后执行步骤S03~S05。
优选地,所述步骤S01中第二CAN-ID为十六进制0结尾。
与现有技术相比,本发明具有以下有益效果:
(1)本发明巧妙地将需连接至CAN总线上终端模块按功能归类,并将同一类的终端模块赋予相同的第二CAN-ID,且在断电或者复归后自动恢复至默认的第二CAN-ID。如此设计的好处在于,可以方便的通过第二CAN-ID来区分不同功能的终端模块,并且通过第二CAN-ID可以划分可分配的第三CAN-ID的地址空间范围。
(2)本发明利用ID管理模块分配各终端模块的第三CAN-ID,将第三CAN-ID与识别码UID绑定并传输给终端模块。本发明通过判断数据帧内绑定的识别码UID与终端模块自身的识别码UID是否相同,保证CAN-ID分配的可靠性。如此设计的好处在于,终端模块不需要在组网前就预先分配一个全网唯一的CAN-ID,而是在组网后动态获取一个在本网络中唯一的CAN-ID,大大简化了组网操作。事实上,当大规模生产时,终端模块数量远超CAN总线所有可用ID数量,根本不可能在组网前就事先给终端模块设定一个唯一的CAN-ID;而本发明中,即使从几十万个同类型的终端模块中任取几个组网,依然能够成功,因为他们的初始第二CAN-ID全部一样。
(3)本发明为了自动判定终端模块的离线事件,给每个在线模块设置了生命时钟,每个在线模块需定期给主控模块发送生命维持帧以重置自己的生命时钟计时,若主控模块在生命时钟计时结束前未收到某终端模块的生命维持帧,则说明该终端模块已经离线(离线表示该模块断电,或者该模块虽未断电,但是已从CAN总线断开连接),那么,主控模块就会回收该终端模块对应的第三CAN-ID。如此设计的好处在于,通过设定在线模块的生命周期来保证主控模块对所有在线模块状态的掌控,任意模块断线后,主控模块在等待最多不超过其生命时钟的时间内就可以获知并且做出处理,回收其已分配的CAN-ID,这也是实现终端模块支持热插拔的重要环节。
(4)本发明还提供了CAN网络连接自动恢复功能,即当某个终端模块发送的生命维持帧的第三CAN-ID与任一已分配的第三CAN-ID均不相同,则说明该终端模块曾经离线且未断电或未重启(曾经离线但未恢复成默认的第二CAN-ID,在主控模块中这个第三CAN-ID已经被回收,但可能又被分配给了新的同类型终端模块),现在重新被接入了CAN总线网络,若该终端模块的第三CAN-ID还未被分配给别的模块,则ID管理模块将该终端模块的第三CAN-ID重新标记为已分配,并且与该终端模块的识别码UID绑定,主控不需通知该终端模块更改任何信息,该终端模块直接重新上线。但是,当ID管理模块绑定的识别码UID与该终端模块的识别码UID不相同时,则说明该终端模块的原第三CAN-ID已经被重新分配给别的同类型终端模块,那么,主控发送强制重启指令命令该终端模块重启,恢复成初始第二CAN-ID并重新连接至CAN总线上,以重新获取一个新的第三CAN-ID。这样设计的好处是,实现了CAN网络自动纠错功能,有效避免了异常情况下网络中出现两个模块共用同一个CAN-ID发生冲突的可能。
(5)综上所述,以上的设计最终综合保证了任意终端模块上电接入CAN总线网络后自动完成组网并正常工作,模块从网络断开后自动从网络离线,可以任意时刻向CAN总线网络中随意添加或移除终端模块,网络仍然保持稳定正常运行,具备了USB接口的即插即用和热插拔的优点,也实现了类似以太网路由器的动态分配ID地址的功能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需使用的附图作简单介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对保护范围的限定,对于本领域技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明的实施例示意图。
具体实施方式
为使本申请的目的、技术方案和优点更为清楚,下面结合附图和实施例对本发明作进一步说明,本发明的实施方式包括但不限于下列实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例
如图1所示,本实施例公布了一种基于CAN总线的模块智能自组网的方法,其包括采用CAN总线连接的主控模块和数个终端模块,并且该主控模块内设有一ID管理模块。需要说明的是,本实施例中的“第一”、“第二”、“第三”等用语仅用于区分同类技术特征,不能理解成特殊的限定。
具体来说,该模块智能自组网的方法包括以下步骤:
第一步,设定主控模块固定且唯一的第一CAN-ID,如0x01,在本实施例中主控模块是唯一的。另外,将所述终端模块按功能归类成数个功能子集,例如驱动模块子集、距离传感器模块子集、电池模块子集、摄像头模块子集等等。在此,将同一功能子集的终端模块预设成统一的第二CAN-ID,例如距离传感器模块子集中的所有距离传感器模块的初始第二CAN-ID统一为0x60,再如距离传感器模块子集中的驱动模块的初始第二CAN-ID统一为0x80。需要说明的是,第二CAN-ID均为十六进制0结尾。当终端模块断电或重启后,重新启动自动恢复至默认的第二CAN-ID。
第二步,将主控模块的第一CAN-ID广播至连接在CAN总线的任一终端模块。
第三步,任一终端模块以频率为1~20Hz、且持续向主控模块发送上线申请帧;所述上线申请帧包括第一步中功能子集的第二CAN-ID和该终端模块唯一的识别码UID。
第四步,所述主控模块接收任一终端模块的上线申请帧,并判断该终端模块的功能类型。主控模块掩码设定为可以获取任意ID的CAN总线消息,持续监控总线上别的模块发送的CAN帧,如果接收到ID分类是第二CAN-ID的上线申请帧,表示有新终端模块接入CAN总线。主控模块读取该上线申请帧的唯一的识别码UID,然后将该第二CAN-ID和识别码UID发送给ID管理模块,通过ID管理模块反馈一与该终端模块的功能类型对应的第三CAN-ID。如一个新的距离传感模块接入CAN总线,初始第二CAN-ID为0x60,该距离传感模块唯一的识别码UID为G0201F,该模块上电之后,向主控模块持续发送上线申请帧,主控模块接收到第二CAN-ID为0x60的上线申请帧,从中读取其识别码UID为G0201F,判定有新的距离传感模块接入总线,随即向ID管理模块申请,ID管理模块成功返回一个第三CAN-ID,假设这个第三CAN-ID为0x63,并绑定识别码G0201F,接下来主控模块向CAN-ID 0x60持续发送包含这个新ID0x63和识别码UID G0201F的CAN-ID分配帧;并监听CAN总线,直到收到以CAN-ID0x63发送回来的第一个生命维持帧为止,主控模块判定CAN-ID 0x63已成功分配给对应终端模块,终端模块组网连接成功。若在规定时间(如10秒)内,主控一直未收到任何以CAN-ID 0x63发送回来的生命维持帧,则判定该CAN-ID0x63分配动作失败,通知ID管理模块该CAN-ID并未分配成功。
第五步,所述终端模块接收主控模块传输的CAN-ID分配帧,并判断该CAN-ID分配帧内绑定的识别码UID与终端模块自身的识别码UID是否相同,若相同,则该终端模块组网连接成功,将该终端模块的第二CAN-ID修改成第三CAN-ID,并立刻开始向主控模块发送生命维持帧;否则,判定该CAN-ID分配帧不是发送给该终端模块,该终端模块继续发送上线申请帧请求上线。具体来说,该新的距离传感模块收到主控发回的CAN-ID分配帧,从中取出新ID 0x63和识别码UID G0201F,比对自身识别码UID确认是主控发送给自己的CAN帧,随后将自己的CAN-ID从0x60改为0x63。除非该模块断电或重启,否则该模块将一直采用0x63这个CAN-ID。CAN-ID修改完毕后,该终端模块立刻开始以新的CAN-ID 0x63向主控模块发送生命维持帧,当主控模块第一次收到以该新的CAN-ID 0x63回复的生命维持帧,则判定新距离传感模块CAN-ID分配成功,主控模块通知ID管理模块0x63分配成功,并且为该模块设定对应的生命时钟,新模块在CAN总线网络中完成自动组网上线,并可以正常工作。
第六步,当终端模块组网连接成功后,在主控模块内设置与该终端模块的识别码UID和第三CAN-ID绑定的生命时钟Ti,该生命时钟为一个毫秒计时时钟,其计时设定值Ti为大于0小于等于1000的数字。组网连接的终端模块每间隔小于Ti的时间向主控模块发送一生命维持帧,若主控模块在生命时钟Ti计时结束前收到该终端模块发送的生命维持帧,则将生命时钟Ti的计时数值归零。否则,若生命时钟计数值达到或超过Ti,则确认该终端模块已从总线断开,将该终端模块的第三CAN-ID回收,并由ID管理模块将该终端模块的识别码UID与第三CAN-ID解绑。
基于上述机制,每个模块上线后,为了维持其生命,都必须以固定周期向主控发送一种CAN帧,称之为生命维持帧,这个固定周期必须小于主控为其设置的生命时钟周期,例如,如果生命时钟周期为1秒,则模块生命维持帧的发送周期应小于1秒,实际使用时,模块发送生命维持帧的周期通常设置为小于0.5秒,以确保模块生命得到延续。
特别地,当主控模块接收到某终端模块发送的生命维持帧,其CAN-ID与任一已分配的第三CAN-ID均不相同,主控模块判定是否已在维护对应其第三CAN-ID的生命时钟Ti。若主控模块未维护对应CAN-ID的生命时钟Ti,则允许该模块直接重新上线,不通知该终端模块做任何更改,由ID管理模块将该终端模块的第三CAN-ID标记,并与该终端模块的识别码UID绑定;否则,若主控模块已经维护对应CAN-ID的生命时钟Ti,说明该CAN-ID已经分配给别的终端模块使用,为避免出现多模块共用一个CAN-ID,需要重置该模块并重新分配新的CAN-ID,主控模块向该终端模块下发重启恢复至该终端模块对应的功能子集的第二CAN-ID的强制重启指令,该终端模块重启后执行第三至第五步。
例如,主控模块接收到一个新的驱动模块以0x84的CAN-ID和G070EF的识别码UID发送的生命维持帧,但是主控并未维护CAN-ID为0x84的生命时钟,或者主控正在维护CAN-ID为0x84的生命时钟,但是生命时钟绑定的识别码UID与G070EF不符。
对于第一种情况,主控并未维护对应的生命时钟,说明0x84的CAN-ID已回收但还未重新分配,则主控不通知该模块任何信息,主控模块通知ID管理模块标记0x84为已分配CAN-ID,并且绑定G070EF的识别码UID,该模块直接重新上线。
第二种情况,主控已经维护0x84的CAN-ID的生命时钟,但是对应的识别码UID与G070EF不符,表示0x84的CAN-ID已经分配给另一个驱动模块,此时CAN网络包含两个CAN-ID为0x84的驱动模块,出现异常。主控首先向CAN总线发送一个强制重启指令,这个指令包含CAN-ID 0x84和识别码UID G070EF,两个驱动模块都会收到这个指令,但是只有识别码UIDG070EF的模块才会执行强制重启,重启后该驱动模块自动恢复默认CAN-ID 0x80,按新模块上线方式重新上线,主控模块给其分配一个新的CAN-ID(例如0x85),整个CAN网络自动恢复正常。
另外,本实施例中的ID管理模块,负责管理和分配模块第三CAN-ID。以CAN标准帧为例,标准帧CAN-ID一共11位,在CAN标准协议中禁止其高7位全为1,因此CAN-ID范围从0x000到0x7EF,如下表所示,整个标准帧CAN-ID的寻址空间一共可分为126块,第二CAN-ID分别为0x10,0x20,0x30,...,0x7E0,其中每块代表一种不同的模块,每块除去首地址作为模块默认第二CAN-ID,其余偏移量0x01-0x0F加上对应的第二CAN-ID均为该种类型模块可分配CAN-ID,因此这种分组方式理论上可以分配126种不同类型的模块,每种模块支持15个同时在线。如下表所示
当ID管理模块每成功分配一个新的CAN-ID,就将该CAN-ID标记为已分配,同时将该CAN-ID与已分配模块的UID绑定,如果某个已分配CAN-ID的模块离线,则ID管理模块将该CAN-ID重新标记为可分配ID,并移除绑定模块UID。每当有新的CAN-ID分配请求时,ID管理模块从对应种类模块可分配CAN-ID中找出一个返回给请求方,寻找方式可以是随机分配,也可以是按搜索顺序找到的第一个可分配ID。需要说明的是,这仅仅只是一种示例的分组方法,实际上可以依据模块种类数和需要支持同时在线的模块个数进行其它分组方式,例如如果只需要两种功能模块,则可将两种模块默认CAN-ID分别设置为0x010和0x400,这样每种模块可获得更大的可分配ID空间。
综上所述,本发明具有无需预先分配CAN-ID、组网操作简便、ID分配和回收管理可靠、支持终端模块的即插即用和热插拔功能等优点,与现有技术相比,具有突出的实质性特点和显著的进步,在CAN总线技术领域具有很高的实用价值和推广价值。
上述实施例仅为本发明的优选实施例,并非对本发明保护范围的限制,但凡采用本发明的设计原理,以及在此基础上进行非创造性劳动而作出的变化,均应属于本发明的保护范围之内。
Claims (5)
1.基于CAN总线的模块智能自组网的方法,包括采用CAN总线连接的主控模块和数个终端模块,其特征在于,所述主控模块内设有一ID管理模块,所述模块智能自组网的方法包括以下步骤:
步骤S01,设定主控模块固定且唯一的第一CAN-ID,将所述终端模块按功能归类成数个功能子集;并将同一功能子集的终端模块预设成统一的第二CAN-ID;
步骤S02,将步骤S01中主控模块的第一CAN-ID广播至连接在CAN总线的任一终端模块,并进入步骤S03,任一终端模块申请加入CAN总线通信;
步骤S03,任一终端模块以频率为1~20Hz、且持续向主控模块发送上线申请帧;所述上线申请帧包括步骤S01中功能子集的第二CAN-ID和该终端模块唯一的识别码UID;
步骤S04,所述主控模块接收任一终端模块的上线申请帧,并判断该终端模块的功能类型,通过ID管理模块反馈一与该终端模块的功能类型对应的第三CAN-ID;将所述第三CAN-ID与该终端模块的识别码UID绑定成CAN-ID分配帧,并且主控模块持续将该CAN-ID分配帧发送给对应的终端模块;并连续监听CAN总线,在T时间内,若主控模块收到该终端模块反馈的至少一个生命维持帧,则该终端模块组网成功,否则,该终端模块组网失败;
步骤S05,所述终端模块接收主控模块传输的CAN-ID分配帧,并判断该CAN-ID分配帧内绑定的识别码UID与终端模块自身的识别码UID是否相同,若相同,则该终端模块组网连接成功,将该终端模块的第二CAN-ID修改成第三CAN-ID,并按均匀间隔时间向主控模块发送生命维持帧,否则,重复步骤S03至S05,继续发送上线申请帧请求上线。
2.根据权利要求1所述的基于CAN总线的模块智能自组网的方法,其特征在于,还包括终端模块组网连接成功后,在主控模块内设置与该终端模块的识别码UID和第三CAN-ID绑定的生命时钟Ti;所述生命时钟Ti的计数值为大于0小于等于1000毫秒的数。
3.根据权利要求2所述的基于CAN总线的模块智能自组网的方法,其特征在于,还包括所述组网连接的终端模块每间隔小于生命时钟Ti的计数值的时间向主控模块发送一生命维持帧,若主控模块在生命时钟Ti计数结束前收到该终端模块发送的生命维持帧,则将生命时钟Ti的时间归零重新计时;否则,确认该终端模块已经从CAN总线上断开,将该终端模块的第三CAN-ID回收,并由ID管理模块将该终端模块的识别码UID与第三CAN-ID解绑。
4.根据权利要求3所述的基于CAN总线的模块智能自组网的方法,其特征在于,还包括当所述主控模块接收到任一终端模块发送的生命维持帧的CAN-ID与任一已分配的第三CAN-ID均不相同,主控模块判定是否维护该终端模块的生命时钟Ti;若主控模块未维护对应的终端模块的生命时钟Ti,则允许该终端模块连接至CAN总线上,由ID管理模块将该终端模块的第三CAN-ID标记,并与该终端模块的识别码UID绑定;否则,主控模块向该终端模块下发重启恢复至该终端模块对应的功能子集的第二CAN-ID的强制重启指令,该终端模块重启后执行步骤S03~S05。
5.根据权利要求1所述的基于CAN总线的模块智能自组网的方法,其特征在于,所述步骤S01中第二CAN-ID为十六进制0结尾。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810964155.5A CN108989169B (zh) | 2018-08-23 | 2018-08-23 | 基于can总线的模块智能自组网的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810964155.5A CN108989169B (zh) | 2018-08-23 | 2018-08-23 | 基于can总线的模块智能自组网的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108989169A CN108989169A (zh) | 2018-12-11 |
CN108989169B true CN108989169B (zh) | 2021-06-04 |
Family
ID=64547694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810964155.5A Active CN108989169B (zh) | 2018-08-23 | 2018-08-23 | 基于can总线的模块智能自组网的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108989169B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111376257A (zh) * | 2018-12-29 | 2020-07-07 | 深圳市优必选科技有限公司 | 一种舵机id重复的检测方法、装置、存储介质及机器人 |
CN114625034B (zh) * | 2020-12-09 | 2024-04-19 | 中国科学院大连化学物理研究所 | 一种设备控制组网系统 |
CN112737908A (zh) * | 2020-12-28 | 2021-04-30 | 重庆金康新能源汽车有限公司 | 一种基于can总线的id和信号分配方法 |
CN113395198B (zh) * | 2021-06-16 | 2022-12-27 | 广州极飞科技股份有限公司 | 设备的组网方法及装置、数据传输系统 |
CN114063513B (zh) * | 2021-11-15 | 2024-07-12 | 深圳古瑞瓦特新能源有限公司 | 功率模块并机地址分配方法 |
CN114553373B (zh) * | 2022-02-23 | 2024-07-12 | 深圳市元征科技股份有限公司 | 一种数据传输方法、装置、设备和存储介质 |
JP2023141947A (ja) * | 2022-03-24 | 2023-10-05 | いすゞ自動車株式会社 | バッテリ管理装置 |
JP2023141950A (ja) * | 2022-03-24 | 2023-10-05 | いすゞ自動車株式会社 | バッテリ管理装置 |
CN115189984B (zh) * | 2022-08-11 | 2024-04-02 | 深圳市永航新能源技术有限公司 | 一种电池can id的自动分配机制的方法 |
CN116389505A (zh) * | 2023-03-29 | 2023-07-04 | 上海正泰智能科技有限公司 | 基于can总线的组网方法及计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104901858A (zh) * | 2015-05-21 | 2015-09-09 | 艾德克斯电子(南京)有限公司 | 一种基于can总线的系统通信方法 |
CN107515600A (zh) * | 2017-08-01 | 2017-12-26 | 安徽欧鹏巴赫新能源科技有限公司 | 一种基于can网络的id在线分配系统及其控制方法 |
CN107566543A (zh) * | 2017-08-28 | 2018-01-09 | 沈阳东软医疗系统有限公司 | 一种节点标识设置方法和装置 |
CN107786405A (zh) * | 2017-10-17 | 2018-03-09 | 南京博兰得电子科技有限公司 | 基于can总线的多节点自动组网方法 |
-
2018
- 2018-08-23 CN CN201810964155.5A patent/CN108989169B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104901858A (zh) * | 2015-05-21 | 2015-09-09 | 艾德克斯电子(南京)有限公司 | 一种基于can总线的系统通信方法 |
CN107515600A (zh) * | 2017-08-01 | 2017-12-26 | 安徽欧鹏巴赫新能源科技有限公司 | 一种基于can网络的id在线分配系统及其控制方法 |
CN107566543A (zh) * | 2017-08-28 | 2018-01-09 | 沈阳东软医疗系统有限公司 | 一种节点标识设置方法和装置 |
CN107786405A (zh) * | 2017-10-17 | 2018-03-09 | 南京博兰得电子科技有限公司 | 基于can总线的多节点自动组网方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108989169A (zh) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108989169B (zh) | 基于can总线的模块智能自组网的方法 | |
US4491946A (en) | Multi-station token pass communication system | |
CN105847456B (zh) | 一种rs485自动分配地址方法、装置和系统 | |
CN101951417B (zh) | 多服务器地址分配方法、系统及中继设备 | |
US11336616B2 (en) | Address competition method of multi-connected type control system | |
US9100397B2 (en) | BACnet MS/TP automatic MAC addressing | |
CN113114793B (zh) | 从机节点地址竞争方法、装置及电器系统 | |
CN102098354A (zh) | 动态主机配置协议地址分配方法及服务器 | |
CN113395198B (zh) | 设备的组网方法及装置、数据传输系统 | |
CN110213359B (zh) | 一种基于d2d的车联网组网数据推送系统和方法 | |
CN105389278A (zh) | 一种基于can总线的主从机串行通信方法 | |
CN114422480B (zh) | 通讯地址自动分配方法 | |
CN111182086A (zh) | 基于一主多从式模块的can总线地址分配方法及装置 | |
US11502991B2 (en) | Efficiently collecting and distributing multicast data | |
CN107968718B (zh) | 一种确认主备用状态的方法、装置和设备 | |
CN107026919B (zh) | 一种确定节点设备网络地址的方法、节点设备和控制系统 | |
CN112187960B (zh) | 一种车辆ecu地址分配方法、装置和车辆 | |
CN117118951A (zh) | 一种一主多从总线通用从机地址动态分配的方法 | |
CN117319185A (zh) | 一种基于can通信的多设备主从通信系统及编址、监测方法 | |
CN116389505A (zh) | 基于can总线的组网方法及计算机设备 | |
CN115334041A (zh) | 一种主从站通讯设备自动分配地址的方法、主站、从站和系统 | |
CN116016433A (zh) | 一种控制器局域网络的网络标识配置方法及装置 | |
CN115835370A (zh) | 智能设备的配网方法、装置、设备以及介质 | |
CN111092964B (zh) | 车载网络中的设备标识方法 | |
CN114116558A (zh) | 一种io设备及微机保护装置 |
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 |