一种分布式控制系统中的地址冲突检测方法
【专利摘要】本发明提供一种分布式控制系统中的地址冲突检测方法,包括:在通信过程中,主机周期性轮询所有节点地址,当系统初始化或者有新的从机加入系统时,需要在注册过程完成后才能开始正常通信;在注册过程中,从机向主机发送自己的设备序列号,主机进行多次地址冲突检测,若未发现系统中存在其它具有相同地址的从机,则向该从机发送节点标识符;注册过程完成后,每个节点地址对应唯一的设备序列号;从机检测到地址冲突时,通过发送非法设备序列号以阻止其它具有相同地址的从机注册。本发明能够使地址冲突的从机均不能工作,从而确保系统中从机的地址唯一,避免地址冲突,提高了通信的安全性。
【专利说明】一种分布式控制系统中的地址冲突检测方法
[0001]
【技术领域】
[0002]本发明涉及工业总线通信【技术领域】,具体是一种分布式控制系统中的地址冲突检测方法。
[0003]
【背景技术】
[0004]如今的工业控制领域正朝着信息化、智能化、网络化不断发展,影响着通信效率的工业总线技术越来越受到行业的重视。传统的工业通信总线大多采用RS485总线,但是RS485总线有总线利用率低、传输速率低、通信距离短等缺点,并且缺乏完备的错误检测机制,导致其安全性较差,不适合应用在安全相关的工业领域。安全相关的工业领域包括核电、水利、交通、矿山等关系着重大公共安全的行业,一般有着严格的安全性要求。控制器局域网CAN (Controller Area Network)总线是一种能有效支持分布式实时控制的串行通信网络。近年来,由于CAN总线具有高可靠性、高传输速率、良好的勘误检错能力和低廉的成本优势,逐渐成为应用最广泛的现场总线之一。
[0005]安全相关的工业领域相比一般的工业领域对安全性要求更高,而且往往应用环境恶劣,存在着大量的干扰,例如电磁、温度、粉尘等影响。由于以上不利环境因素的影响或认为的疏忽,CAN总线对可能出现的地址冲突问题有固定的地址冲突处理机制:例如两个模块(A和B)同时发送具有相同地址的CAN报文时,由于地址相同,所以仲裁域相同,由于数据内容不同,所以数据域不同。发送器对发送位的电平与被监控的总线电平进行比较,在数据域发现电平不相同则判定发送错误,发送错误计数器增加。两个模块的发送错误计数器都在增加,计数器先到达255的CAN控制器(假设为模块A)会主动脱离总线,剩下模块B的CAN控制器工作。这种处理结果在某些情况下是不安全的,如果模块A的CAN报文地址正确,模块B出现错误导致其CAN报文地址与模块A相同,在此情况下,根据地址冲突处理结果,模块A的CAN控制器脱离总线,模块B的CAN控制器正常工作,这与实际要求相反。为了提高通信的安全性,必须做到地址冲突的CAN控制器均不能工作,模块同时脱离总线。
[0006]
【发明内容】
[0007]本发明的目的在于提供一种分布式控制系统中的地址冲突检测方法,通过该方法能够确保系统中下位机模块的地址唯一,避免地址冲突。
[0008]本发明的技术方案为:
一种分布式控制系统中的地址冲突检测方法,所述方法包括:将一个上位机模块作为主机,将若干个下位机模块作为从机,采用CAN总线连接在所述主机与所述从机之间;所述主机上电或复位后,通过所述CAN总线周期性轮询预先配置的节点地址,向所述节点地址发起注册过程,所述注册过程包括:
所述主机向所述节点地址发送请求设备序列号命令;
所述节点地址上的从机对接收到请求设备序列号命令的次数进行判断,若未超过预设阈值,则向所述主机返回保存在硬件中的合法设备序列号,若超过预设阈值,则向所述主机返回固定的非法设备序列号;
若所述主机接收到所述合法设备序列号,则对其进行保存,并向相应节点地址发送允许注册命令,所述相应节点地址上的从机接收到所述允许注册命令并对其中包含的设备序列号进行确认后,向所述主机返回接受注册应答并等待所述主机分配节点标识符;
所述主机接收到所述接受注册应答后,向相应节点地址发送多次地址冲突测试命令,所述相应节点地址上处于等待节点标识符状态的从机对所述地址冲突测试命令不作应答,若所述相应节点地址上还存在地址冲突从机,则所述地址冲突从机接收到所述地址冲突测试命令后,向所述主机返回固定的非法设备序列号;
若所述主机接收到所述非法设备序列号,则停止相应节点地址上的当前注册过程,并向所述相应节点地址重新发起注册过程;
若所述主机发送多次地址冲突测试命令,均未接收到相应节点地址上的从机的应答,则向所述相应节点地址发送节点标识符;
所述相应节点地址上的从机接收到所述节点标识符后,向所述主机返回注册成功应答,所述主机接收到所述注册成功应答后,判定相应节点地址的注册过程完成。
[0009]所述的分布式控制系统中的地址冲突检测方法,所述方法还包括:
所述主机检测到某个已注册成功的从机连续5次没有应答或者应答的数据不对,则取消该从机的注册成功状态,并向该从机的节点地址重新发起注册过程。
[0010]所述的分布式控制系统中的地址冲突检测方法,所述方法还包括:
若系统在所有从机已注册成功后再添加一个从机,且该新添加从机的节点地址与其中一个已注册成功的从机的节点地址相同,则所述主机不向该新添加从机的节点地址重新发起注册过程。
[0011]所述的分布式控制系统中的地址冲突检测方法,所述预设阈值为3次。
[0012]所述的分布式控制系统中的地址冲突检测方法,所述非法设备序列号为全O的设备序列号。
[0013]由上述技术方案可知,在通信过程中,主机周期性轮询所有节点地址,当系统初始化或者有新的从机加入系统时,需要在注册过程完成后才能开始正常通信;在注册过程中,从机向主机发送自己的设备序列号,主机进行多次地址冲突检测,若未发现系统中存在其它具有相同地址的从机,则向该从机发送节点标识符;注册过程完成后,每个节点地址对应唯一的设备序列号;当某个从机检测到地址冲突时,该从机不会再注册,但是会通过发送非法设备序列号以阻止其它具有相同地址的从机注册。本发明能够使地址冲突的从机均不能工作,从而能够确保系统中从机的地址唯一,避免地址冲突,提高了通信的安全性。
[0014]
【专利附图】
【附图说明】
[0015]图1是适用于本发明方法的系统结构示意图; 图2是本发明方法的注册过程示意图;
图3是本发明的状态转移示意图(从机角度)。
[0016]
【具体实施方式】
[0017]下面结合附图和具体实施例进一步说明本发明。
[0018]如图1所示,一种分布式控制系统中的地址冲突检测方法,适用于该方法的系统包括一个上位机模块1、若干个下位机模块2和一条CAN总线3,上位机模块I为主机,控制总线的通信并向下位机模块2发送命令,下位机模块2为从机,接收命令并作出应答,下位机模块2的数目由系统容量决定。
[0019]主机发送给从机的命令分为两种:控制命令和注册命令;其中,控制命令是指从机在主机内注册完成后,主机发送给从机的命令;注册命令是指注册过程中主机发送给从机的命令。
[0020]在通信过程中,主机周期地轮询所有节点地址,即主机周期地从第一个节点地址开始遍历至最后一个节点地址,如果发现某个节点地址具有已经注册成功的从机,则与该从机进行正常通信,向该从机发送命令并接收应答;如果发现某个节点地址尚未注册,则向该节点地址发起注册过程。当系统初始化或新的从机加入系统时,系统需要在注册过程完成后才能开始正常通信过程。
[0021]系统上电后,如果有两个或两个以上的从机地址相同,所有地址冲突的从机都不能注册。如图2、图3所示,从机的注册过程如下:
(1)周期T:主机轮询到某个处于未注册状态的节点地址,向该节点地址发送请求设备序列号命令;该节点地址上的从机接收到请求设备序列号命令后,将保存在硬件中的设备序列号发送至主机,然后该从机处于等待注册状态;主机接收并保存从机返回的设备序列号;
(2)周期T+1:主机发送允许注册命令,该命令包含了周期T中接收到的设备序列号;从机接收到允许注册命令后比较设备序列号,确认命令是发给自己的后,向主机发送接受注册的应答,然后从机处于等待节点标识符状态;
(3)周期T+2至T+n:主机收到接受注册的应答后,需要确认是否还存在其它地址冲突的从机,从Τ+2至T+n时刻发送η-1次地址冲突测试命令;处于等待节点标识符状态的从机不应答该命令,而其它地址冲突的从机在收到该命令后返回固定的非法设备序列号;主机在地址冲突测试中收到任何一次从机的应答都说明发生地址冲突,停止注册过程;
(4)周期T+n+1:如果在地址冲突测试中主机未收到从机的应答,发送节点标识符;从机收到节点标识符后返回注册成功的应答,然后从机处于注册完成状态;主机收到注册成功的应答后,判定从机在主机内注册完成。
[0022]注册过程完成后,每个节点地址对应唯一的设备序列号,设备序列号在系统运行之前已经保存在从机的硬件中了,每个从机的设备序列号都是唯一的,以区别于其它的从机。
[0023]所有从机在主机上注册成功后,若系统中再加入一个从机,其地址与其中一个已注册成功的从机相同,则该新添加的从机不能注册,以避免影响已建立起来的正常通信过程,即使此时将这个已注册成功的从机从系统中断开,该新添加的从机也不能注册。
[0024]主机重启后,所有从机都需要重新注册。
[0025]对某个已注册成功的从机,若主机检测到其连续5次没有应答或者应答的数据不对,则将该从机的注册成功状态取消。
[0026]在注册过程中,从机共有未注册、等待注册、等待节点标识符、注册完成和禁止注册五种状态:
(O未注册:从机上电后,处于未注册状态;
(2)等待注册:收到请求设备序列号命令后,等待主机发送允许注册命令;
(3)等待节点标识符:收到允许注册命令后,等待主机发送节点标识符;
(4)注册完成:收到节点标识符后,注册完成;
(5)禁止注册:从机检测到地址冲突后,进入禁止注册状态;在禁止注册状态下,从机不会再注册,但是会阻止其它具有相同地址的从机注册。
[0027]由上述可知,本发明从主机和从机两个层面进行地址冲突检测:
(I)主机层面:当主机收到接受注册的应答后,通过发送多次地址冲突测试命令来确认系统中是否存在具有相同地址的从机,若主机在地址冲突测试中收到任何一次从机的应答都说明发生地址冲突,停止注册过程;若未发现系统中存在其它具有相同地址的从机,则向该从机发送节点标识符。
[0028](2)从机层面:当某个节点地址上的从机连续多次接收到主机发送的请求设备序列号命令时,说明存在与自身具有相同地址的从机,导致自身返回的设备序列号未被主机接收到,因此,为阻止其它具有相同地址的从机的注册过程,该从机进入禁止注册状态,向主机发送固定的非法设备序列号,例如全“O”的设备序列号,使主机无法在该节点地址上进入正常的注册过程;如果在特殊情况下,某个地址冲突的从机将保存在硬件中的设备序列号成功发送给主机,则其它具有相同地址的从机也可以在主机发送冲突测试命令时,应答非法设备序列号,例如全“O”的设备序列号,使注册过程结束。
[0029]除此之外,由于节点标识符是注册过程中主机对从机进行分配的,注册完成后,主机的命令都包含节点标识符,因此在通信过程中,从机在接收主机命令时,除了识别地址外还识别节点标识符,即将收到的节点标识符与分配的节点标识符进行比较,不一致则拒绝该命令,说明该从机地址在运行过程中发生变化或者通信模块出现故障,该从机进入禁止注册状态。
[0030]以上所述实施方式仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明的权利要求书确定的保护范围内。
【权利要求】
1.一种分布式控制系统中的地址冲突检测方法,所述方法包括:将一个上位机模块作为主机,将若干个下位机模块作为从机,采用CAN总线连接在所述主机与所述从机之间;所述主机上电或复位后,通过所述CAN总线周期性轮询预先配置的节点地址,向所述节点地址发起注册过程,其特征在于,所述注册过程包括: 所述主机向所述节点地址发送请求设备序列号命令; 所述节点地址上的从机对接收到请求设备序列号命令的次数进行判断,若未超过预设阈值,则向所述主机返回保存在硬件中的合法设备序列号,若超过预设阈值,则向所述主机返回固定的非法设备序列号; 若所述主机接收到所述合法设备序列号,则对其进行保存,并向相应节点地址发送允许注册命令,所述相应节点地址上的从机接收到所述允许注册命令并对其中包含的设备序列号进行确认后,向所述主机返回接受注册应答并等待所述主机分配节点标识符; 所述主机接收到所述接受注册应答后,向相应节点地址发送多次地址冲突测试命令,所述相应节点地址上处于等待节点标识符状态的从机对所述地址冲突测试命令不作应答,若所述相应节点地址上还存在地址冲突从机,则所述地址冲突从机接收到所述地址冲突测试命令后,向所述主机返回固定的非法设备序列号; 若所述主机接收到所述非法设备序列号,则停止相应节点地址上的当前注册过程,并向所述相应节点地址重新发起注册过程; 若所述主机发送多次地址冲突测试命令,均未接收到相应节点地址上的从机的应答,则向所述相应节点地址发送节点标识符; 所述相应节点地址上的从机接收到所述节点标识符后,向所述主机返回注册成功应答,所述主机接收到所述注册成功应答后,判定相应节点地址的注册过程完成。
2.根据权利要求1所述的分布式控制系统中的地址冲突检测方法,其特征在于,所述方法还包括: 所述主机检测到某个已注册成功的从机连续5次没有应答或者应答的数据不对,则取消该从机的注册成功状态,并向该从机的节点地址重新发起注册过程。
3.根据权利要求1所述的分布式控制系统中的地址冲突检测方法,其特征在于,所述方法还包括: 若系统在所有从机已注册成功后再添加一个从机,且该新添加从机的节点地址与其中一个已注册成功的从机的节点地址相同,则所述主机不向该新添加从机的节点地址重新发起注册过程。
4.根据权利要求1所述的分布式控制系统中的地址冲突检测方法,其特征在于:所述预设阈值为3次。
5.根据权利要求1所述的分布式控制系统中的地址冲突检测方法,其特征在于:所述非法设备序列号为全O的设备序列号。
【文档编号】H04L12/26GK104410547SQ201410722901
【公开日】2015年3月11日 申请日期:2014年12月3日 优先权日:2014年12月3日
【发明者】魏臻, 胡庆新, 许崇, 兰龙, 苏燚, 李谦, 倪璞 申请人:合肥工大高科信息科技股份有限公司