一种rs485总线竞争实现嵌入式设备地址设置的方法

文档序号:7970060阅读:377来源:国知局

专利名称::一种rs485总线竞争实现嵌入式设备地址设置的方法
技术领域
:本发明涉及一种通过总线竟争方式实现嵌入式设备地址设置的方法,尤其涉及到利用RS485总线竞争实现嵌入式设备地址设置的方法。技术背景随着技术的发展和生活水平的提高,越来越多的工业控制、医疗、通讯、消费等电子产品日趋智能化,以微处理器为核心的嵌入式系统得到日益广泛的应用,对这些智能化设备进行管理也成为嵌入式应用的一个重点。用户可以通过设备提供的智能接口,如串口、并口、以太网口等,对其进行配置、管理和监控。基于复杂的TCP/IP协议的高速以太网接口是未来发展方向,实现丰富的监控管理功能。但是,目前大多数的嵌入式设备,采用如4、8或16位的MCU组成廉价系统,出于简单方便、最小的软硬件成本的考虑,都还是采用传统的、流行的低速串口,经由RS232/RS485、M0DEM、低压电力线载波等传输通道,在网管中心实现"三遥(遥测、遥信、遥控)"功能。对多个嵌入式设备进行组网监控时,最常采用的还是诸如RS422、RS485之类的现场总线。由于RS485具有主从组网所具备的独特优势一主多从,可驱动高达32256个从节点;半双工通讯、简单方便;差分传输,高抗干扰、高速、远距离;传输线最少,只有两根线,成本最低;因此,RS485依旧是目前最常用的总线。当监控主机通过RS485总线对各个嵌入式设备进行监控时,需要通过设备标识来区分各个设备,最简单的办法是采用设备地址来区分。每个设备都有独一无二的地址,这样才不会出现总线冲突的故障。但如果某些设备有故障,丢失了配置地址呢?这样必须通过重新设置独一的地址,保证正常的通讯。如果设备有拨码开关或者其他人机交互设备,如键盘、显示器等,是可以设置地址的。很多情况下,嵌入式设备处于成本和空间的考虑,并没有这些交互设备。这就带来了一个很实际的难题,如何解决?一个可行的方法是每个设备另外增加一个输入信号线片选信号线;通过监控主机对每个设备设置地址。比如监控主机首先使能第一个设备的片选,设置该设备地址为1(其他设备因为未片选,不予响应设置命令);依次类推设置完其他设备的地址即可。方法比较简单,但是增加了信号线,失去了通用性,丧失了RS485的优势高抗干扰、远距离二线传输。在很多场合是不适合应用的
发明内容为解决现有技术中的缺陷和不足,本发明提供了一种RS485总线竞争实现嵌入式设备地址设置的方法,目的在于能够在不增加任何信号传输线的前提下完成各个设备地址的识别和重新设置。为达到上述发明目的,本发明是这样实现的一种RS485总线竞争实现嵌入式设备地址设置的方法,包括(1)监控主机和设备配合识别设备地址是否异常,若存在设备地址异常则转入步骤(2),若不存在则步骤结束;(2)监控主机通知各设备进入地址重新设置状态;(3)监控主机向各设备下发设置设备地址命令,各设备根据当前地址情况回应并且重新设置地址。其中,所述步骤(1)中的设备地址异常包括设备地址冲突和/或设备地址溢出。其中,所述步骤(1)具体为(11)监控主机通过广播方式周期性的通知各个设备当前的设备配置情况,并通过点对点轮询方式监控各个设备的地址信息;(12)监控主机根据获得的各个设备的回应信息进行识别,若多个设备同时应答,则为设备地址冲突;若设备长期没有被轮询,则设备地址溢出。其中,所述步骤(3)具体为(31)根据RS485总线配置确定总线竞争的基本单位时间、每次竞争的总时间长度、优先级内时间段、最大冲突次数,并设置设备的初始设置地址;(32)监控主机向设备发送设置设备地址命令;(33)各设备根据收到的设置设备地址命令确定总线竞争的优先级,并计算出其相应的优先级时间段内的退避时间;(34)判断是否存在地址冲突,若存在,则转入步骤(32),若不存在,则该设备在延时退避时间后响应设置设备地址命令;(35)监控主机设置该设备的地址,并将设置地址值加l;(36)监控主机判断设备地址是否设置完毕,若是,则转入步骤(37),若否,则转入步骤(32);(37)判断是否存在新的设备需要进行地址设置,若有,则转入步骤(32);若无,则步骤结束。其中,所述的优先级自高到低为地址匹配、地址丢失、地址溢出、地址包含。与现有技术相比,本发明解决了在RS485等主从式总线监控网络中,设备由于地址丢失导致总线冲突或者无法访问的难题;并提供了一个可靠的、通用的方案,在不增加任何信号传输线的情况下,完成各个设备地址的重新设置和识别,保证了RS485高可靠性的优势。另外,本发明还可以实现设备的投入、退出等的自动识别,提高了监控系统的智能化程度。图l是本发明的地址设置的流程图。图2是本发明设置设备地址的关键算法的流程图。图3是本发明的具体实施例一的硬件原理图。图4是本发明的具体实施例优先级时间段示意图。具体实施方式下面结合附图对本发明做进一步的详细说明。图l是本发明的地址设置的流程图。如图1所示,本发明的基本思想是在RS485网络中,系统首先正确识别出各设备是否存在地址异常(包括地址冲突和/或地址溢出),如果存在,监控主机通知所有设备进入地址设置状态,若不存在,则步骤结束;之后,监控主机逐个对设备进行地址的设置,最后退出,回归到正常的数据通讯、监控状态。第一步,监控主机识别设备地址异常,若存在设备地址异常则转入第二步,若不存在则步骤结束;在一个RS485网络中,监控主机通过主动轮询、半双工的方式和网络中的多个嵌入式设备通讯,获取设备信息,控制设备运行状态。监控主机需要首先进行系统配置,获得当前设备的配置情况,比如有哪几个设备,然后才能轮询各个设备。当某个或某些设备地址出现故障时,比如地址信息丢失或者错误,将会出现以下情况(i)地址冲突。当两个设备地址相同,监控主机访问时,会出现两个设备同时应答,同时发送数据,会由于信号叠加而造成信号紊乱,即信号的冲突;(ii)地址溢出。监控主机访问的设备地址不存在,或者有更多的新地址设备投入运行,而无法被访问到;通过以下步骤就可以正确识别出上述两种情况(a)监控圭机通过广播方式,通知所有设备当前的配置情况比如当前有多少个设备,每个设备的地址是多少,通讯的波特率。这个广播信息需要周期性地发布,正常情况下,广播命令是不能有应答的;(b)监控主机通过点对点轮询方式,监控各个地址设备的信息;(C)当两个设备地址相同,会出现两个设备同时应答而造成总线冲突。这时,监控主机通过接收到的应答判断出这种情况;另外,设备自身RS485收发数据不一致,也可以判断出来;(d)当某些设备长期没有被轮询,表明出现了地址溢出。这时候,就需要该设备通过回应广播命令或者故意干扰回应其他地址设备命令,造成总线冲突的办法,来通知监控主机。第二步,监控主机通知各个设备进入地址重新设置状态。监控主机通过广播命令通知设备进入地址重新设置状态,但是,进入重新设置地址状态后,各个设备必须保持RS485接收使能信号始终有效,不能再是通常的收、发使能互斥的状态。对于嵌入式设备,虽然通常的RS485通讯是半双工的,但是内部的MCU(微处理器)都具备有全双工的UART(通用异步收发器)。第三歩,监控主机逐个向各个设备下发设置设备地址命令,各个设备根据当前地址情况回应并且重新设置地址。本步骤采用优化算法,使尽可能多的设备保持原有地址不变。包括Al、根据配置的通讯格式和波特率B,确定总线竞争的基本单位时间为tO-KX发送一个字节的总位数/B,其中K为大于1的系数;Bl、根据配置的设备个数M,确定每次竞争的总时间长T^tOX4XN;其中,N为自然数且N〉M,且N值考虑到新投入设备的情况,要取值大些。另外,N值越大,总线冲突的几率越小;如果系统不是太关注地址重设时间消耗,N值建议取得大些;Cl、根据N值,确定最大的冲突次数Oiog2N—l;实际应用中,当冲突次数超过C,则归零重新开始;Dl、设备竞争总线优先级共分为四级,因此,可得到每个优先级内时间段为T=T/4=tOXN;四级优先级分别表示为P1、P2、P3、P4,其中地址匹配为P1级,优先级最高;地址丢失为P2级;地址溢出为P3级;地址包含为最后的P4级;El、根据设置地址命令,各个设备在自己的优先级时间段内计算退避时间1=tOX(2j+rand(N/2)—1),并且延时t后预备回应。其中,i为实际冲突次数;mnd(X)表示在0X中取一个随机数;Fl、设备在回应前,侦测其他设备是否己经竞争总线(即接收到地址应答信息),如果已经竞争,则退出本轮竞争;Gl、如果没有其他设备竞争,则发送地址应答信息,参与竞争;发送完后,通过判断收发数据是否一致来判断线路是否忙,如果线路不忙,表明本轮竞争成功;否则,冲突次数加一,或者调整优先级,参与下次竞争;Hl、重复歩骤E1、Fl、Gl,直到一个设备竞争成功为止;II、监控主机接收到正确的地址应答信息,再次和该设备确认地址设置;确认完成后,该设备就退出总线竞争状态,转为等待结束状态;Jl、重复步骤E1、Fl、Gl、Hl、II;直到所有的配置设备地址都设置完毕,转为等待结束状态;Kl、监控主机探索性地设置下一个设备地址,如果在规定的时间,即T内没有任何回应,即总线上无任何数据,无论对错,表明所有实际设备都重新设置地址完毕;否则,表明有新设备投入(实际设备超过了配置设备数量),则重复步骤E1、Fl、Gl、Hl、II、Jl,直到全部设备都设置完毕。实施例一某公司生产了某种型号的嵌入式电源系统,广泛应用于全国各个电信设备制造商和运营商。该电源系统由交流配电、直流配电、最多IO个整流器和监控单元组成。整流器由于功率密度的要求以及成本的压力,除了一个告警指示灯和RS485接口外,没有任何人机交互设备。因此,需要监控单元通过RS485总线和这10个整流器连接,通过简单的通讯协议,轮询获取各个整流器的数据和告警信息,并且控制整流器的运行状态。图3是本发明的具体实施例一的硬件原理图。如图所示,由于需要总线竞争,因此,RS485硬件控制信号和目前的通行做法略有变化,接收控制信号^始终有效,无须由单片机控制。多数情况下,用户并不需要多达10个的整流器,而是根据实际用电量,配置4个左右的整流器,但必须留有扩容的能力;以后可能只需单独购买整流器,即插即用。整流器内部有保存的地址参数,从地址110有效。当由于干扰或者其他事件发生,比如整流器发生故障、更换、扩容增加,很容易导致地址参数的丢失、地址冲突、地址溢出等情况发生;发生后,也无法由整流器本身重新设置地址,只能由监控单元通过RS485总线设置。下面进行具体说明。假设该系统配置了6个整流器,RS485通讯速率是9600bps。监控单元认可的整流器地址就是l、2、3、4、5、6。而实际中有7个整流器,标记为A、B、C、D、E、F、G,内部设定好的地址分别为1、1、4、6、6、8、0。如表1所示ABCDEFG<table>tableseeoriginaldocumentpage9</column></row><table>表l地址8表征整流器F可能是新增加的;地址O表征整流器G地址参数丢失。显然,这时候监控单元轮询各个整流器,会出现以下情况-(1)轮询l、6号整流器时,分别有两个整流器A/B和D/E应答,总线数据冲突(2)轮询2、3、5号整流器时,无整流器应答;(3)轮询4号整流器,C整流器正常应答;(4)F、G整流器无法被访问到。下面,我们就来实现整流器的地址识别和设置。第一步,监控单元和设备配合识别地址的冲突或者溢出。监控单元周期性的广播下发当前系统配置信息给各个整流器,告知整流器当前配置个数为6,且通讯波速为9600bps,8位数据位,1位起始位,1位停止位。显然,波速匹配的所有整流器都可以接收到该配置信息,而波速不匹配的整流器接收信息会出错。当一段时间,如果始终不能正确接收到配置信息时,该整流器可以主动多次发送"请求配置信息"报文帧给监控单元。该报文帧多次干扰了数据总线,最终能够被监控单元识别出,需要重新设置地址了。即便是整流器的波速都匹配,F、G整流器由于地址和监控单元中的配置不匹配,无法被访问到,也需要通过主动多次发送"请求配置信息"报文帧,或者故意干扰数据总线;监控单元轮询2、3、5号整流器时,无整流器应答;轮询1、6号整流器时,分别有两个整流器A/B和D/E应答,总线数据冲突;这种情况下,无论是监控单元还是发送应答信息的整流器(发送和接收数据不一致),都能识别出;多次确认后,监控单元就能判断出需要重新设置地址。第二步,就是监控主机通知各个设备都以9600bps进入地址重新设置状态。这一步很简单,发布一个广播命令即可。如果有不同通讯波速配置的整流器的话,监控主机就需要把各种波速下的命令都广播一遍,确保全部整流器都能接收到。第三步,监控主机逐个下发设置设备地址命令,各个设备根据当前地址情况,回应并且重新设置地址;这样完成所有设备的地址设置。3.确定总线竞争的基本时间单位10=2乂(8+1+1)/9600=2ras;这里,K值取2,是考虑到实际系统中发送数据和接收中断延迟;b.配置的设备个数M=10,考虑到系统实时性要求不高,以及减少冲突次数可能,N值取得大些,为64,则每次竞争的总吋间长T40X4XN二512ras;c.每个优先级内时间段为r二T/4二128ms,最大的冲突次数C=log264—1=5次;当任何一个整流器冲突次数超过5次,就归零重新开始计数;d.如图4所示,确定了以下4个优先级时间段,当整流器地址和设置地址匹配时,该整流器在128ms内必须发送地址应答信息,响应监控单元的设置命令;地址丢失的整流器在128ms256ms间响应;地址溢出的整流器在256ms384ms间响应;地址包含的在384ms512ms间响应;超过512ms无整流器响应,监控单元可以认为所有实际整流器都设置地址完毕;各个时间段内的退避时间t=tOX(2'+rand(N/2)—1)=2Xa+rand(32)-1)ms;e.监控单元首先发送"设置整流器1号地址"命令;f.显然,1号地址的A、B整流器地址匹配,两者都在128ms内响应命令;其他整流器都在128ms以后才可能响应。A、B开始的冲突次数i都为0,因此,退避时间为t=(rand(32)一l)X2ms;假设A整流器得到的t二10ms,B得到的t二24ms;因此,在010ms期间,A整流器侦测到RS485总线上无数据,即无地址冲突后,在第10ms发送应答信息(比如单字节应答码0xa5);g.同时,A整流器会从总线上接收到相同的应答信息,也是0xa5,这时A就竞争成功总线权;其他整流器,包括B,也会同时收到0xa5,其他整流器就等待下一个设置地址命令,即地址2的命令;h.监控单元同时收到了应答信息,也是0xa5,表明有整流器竞争成功;监控单元重复下发设置整流器l号地址"命令,等待A再次回应应答信息0xa5;确认回应成功后,监控单元发送"l号整流器退出竞争"的命令帧,则A整流器设置完其地址为1后,退出竞争;i.如果A、B退避时间相同,则A、B同时下发0xa5,会出现两种情况(11)总线上的数据恰好是0xa5;这种情况通过步骤h的重复下发,即可解决;(12)总线上的数据不是0xa5,存在总线冲突;A、B都竞争失败;A、B冲突次数各加l;重新等待监控单元发送"设置整流器1号地址"命令再次竞争;j.假设A最终设置为地址1成功,B则转为"地址丢失"状态;等待下一轮的地址竞争;k.监控单元发送"设置整流器2号地址"命令;l.地址丢失的G、B整流器又开始了总线竞争;其他整流器优先级较低,至少256ms后才响应;m.G、B整流器总有一个竞争成功。由于B曾经和A竞争失败过,冲突次数较大,退避时间可能较大,因此,很可能B再次失败,由G整流器设置成功2号地址;n.监控单元发送"设置整流器3号地址"命令;p.剩余整流器中,地址丢失的B优先级最高,因此,顺利竞争成功,设置成功3号地址;q.监控单元发送设置整流器4号地址"命令;r.地址唯一匹配的C整流器毫无疑问设置成功4号地址;S.监控单元发送设置整流器5号地址"命令;t.地址溢出的F整流器优先级最高,设置成功5号地址;U.监控单元发送"设置整流器6号地址"命令;v.D、E整流器就像A、B那样,开始了地址匹配的竞争;假设最终D设置成功6号地址;w.监控单元试探性地发送"设置整流器7号地址"命令,査看是否还有其他未设置的整流器;x.剩余的E整流器优先级最高,设置成功7号地址;y.监控单元试探性地发送"设置整流器8号地址"命令,査看是否还有其他未设置的整流器;z.所有7个整流器都设置完毕,在512ms内再没有任何整流器响应了,监控单元修改自身的配置为7个整流器;zi.监控单元广播下发"所有整流器退出设置状态"命令,则所有整流器退出设置状态,转入正常的轮询。上面只是举了一个多整流器地址冲突或丢失特殊的例子,但也明显地说明,经过了总线竞争和地址设置,采用了这个较好的优先权算法后,A、C、D三个整流器地址还是保持了原先的地址编号配置,保证了尽可能的各个整流器的历史数据、故障等记录的匹配和完整性,方便了维护。综上所述,本发明采用冲突检测解决了总线竞争问题,并利用优化算法保证尽可能多的设备原有地址不变。权利要求1、一种RS485总线竞争实现嵌入式设备地址设置的方法,其特征在于,包括(1)监控主机和设备配合识别设备地址是否异常,若存在设备地址异常则转入步骤(2),若不存在则步骤结束;(2)监控主机通知各设备进入地址重新设置状态;(3)监控主机向各设备下发设置设备地址命令,各设备根据当前地址情况回应并且重新设置地址。2、根据权利要求1所述的一种RS485总线竞争实现嵌入式设备地址设置的方法,其特征在于,所述步骤(1)中的设备地址异常包括设备地址冲突和/或设备地址溢出。3、根据权利要求1所述的一种RS485总线竞争实现嵌入式设备地址设置的方法,其特征在于,所述歩骤(1)具体为(11)监控主机通过广播方式周期性地通知各设备当前的设备配置情况,并通过点对点轮询方式监控各设备的地址信息;(12)监控主机根据获得的各设备的回应信息进行识别,若多个设备同时应答,则为设备地址冲突;若设备长期没有被轮询,则设备地址溢出。4、根据权利要求1或3所述的一种RS485总线竞争实现嵌入式设备地址设置的方法,其特征在于,所述步骤(3)具体为(31)根据RS485总线配置确定总线竞争的基本单位时间、每次竞争的总时间长度、优先级内时间段、最大冲突次数,并设置设备的初始设置地址;(32)监控主机向设备发送设置设备地址命令;(33)各设备根据收到的设置设备地址命令确定总线竞争的优先级,并计算出其相应的优先级时间段内的退避时间;(34)判断是否存在地址冲突,若存在,则转入步骤(32),若不存在,则该设备在延时退避时间后响应设置设备地址命令;(35)监控主机设置该设备的地址,并将设置地址值加l;(36)监控主机判断设备地址是否设置完毕,若是,则转入步骤(37),若否,则转入步骤(32);(37)判断是否存在新的设备需要进行地址设置,若有,则转入步骤(32);若无,则步骤结束。5、根据权利要求4所述的一种RS485总线竞争实现嵌入式设备地址设置的方法,其特征在于,所述的优先级自高到低为地址匹配、地址丢失、地址溢出、地址包含。全文摘要本发明公开了一种RS485总线竞争实现嵌入式设备地址设置的方法,为实现能够在不增加任何信号传输线的前提下完成各个设备地址的识别和重新设置而发明。包括(1)监控主机和设备配合识别设备地址是否异常,若存在设备地址异常则转入步骤(2),若不存在则步骤结束;(2)监控主机通知各设备进入地址重新设置状态;(3)监控主机向各设备下发设置设备地址命令,各设备根据当前地址情况回应并且重新设置地址。本发明解决了在RS485等主从式总线监控网络中,设备由于地址丢失导致总线冲突或无法访问的难题,并在不增加任何信号传输线的情况下,完成各个设备地址的识别和重新设置,保证了RS485高可靠性的优势。文档编号H04L12/40GK101163075SQ20061014049公开日2008年4月16日申请日期2006年10月10日优先权日2006年10月10日发明者勇熊申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1