ModbusRTU从站自动获取站地址方法及从站的制作方法

文档序号:7794462阅读:3456来源:国知局
Modbus RTU从站自动获取站地址方法及从站的制作方法
【专利摘要】本发明公开了一种Modbus?RTU从站自动获取站地址方法及从站,其中方法包括:从站向所在的Modbus?RTU网络的通信链路发送地址复用探测包,所述地址复用探测包包含临时站地址,所述地址复用探测包用于探测所述临时站地址是否已被所述Modbus?RTU网络中其它从站占用;当探测结果为所述临时站地址未被所述Modbus?RTU网络中其它从站占用时,所述从站占用该临时站地址作为所述从站的固定通信地址,本发明实施例,可以解决从站无法自动获取站地址的问题,使从站可实现即插即用,提高Modbus?RTU的灵活性和可扩展能力。
【专利说明】Modbus RTU从站自动获取站地址方法及从站
【技术领域】
[0001]本发明涉及工业网络控制【技术领域】,尤其涉及一种Modbus RTU中从站自动获取站地址的方法及从站。
【背景技术】
[0002]Modbus (—种总线)是由Modicon (莫迪康)公司于1979年发明,全球首个真正用于工业现场的总线协议,其经过数年发展,已被广泛应用且可在串行通信或者以太网上实现。其中 Modbus 按照传输模式主要分为 ASCII (American Standard Code for InformationInterchange,美国标准信息交换码)模式或RTU (Remote Terminal Unit,远程终端单元)模式,基于这两种模式的Modbus分别被本领域技术人员称为“Modbus ASCII”和“ModbusRTU”。
[0003]对于Modbus RTU,其链路协议为主-从协议,即在同一时间,总线可以有至少一个从站,但是仅能有一个主站,并且通信由主站发起请求,从站响应主站的请求而实现,具体的主站可用单播模式和广播模式发起与从站的通信,其中单播模式是指主站寻址单个从站,被寻址的从站接收并处理主站的请求,并在处理完请求后向主站返回响应;其中广播模式是指主站向所有的从站发送请求,该请求仅限于写命令,并且从站无须返回应答。
[0004]目前对于Modbus RTU中从站当其入网时,需要为其配置站地址,其中站地址的配置方式主要包括硬件设置和软件分配,其中硬件设置是指通过设置拨码开关组合或手持设定器,选择某个通信站地址,实现手动配置;其中软件分配一般是通过Modbus RTU中主站对从站进行地址分配而实现。但是,随着网络节点数的扩展,系统设备人员对站地址的管理难度不断增加,易造成网络站地址使用混淆,每个站地址作用和使用意义不明确。尤其对于通过主站进行地址分配的方式,复杂的网络拓扑结构和任务关系使得主站的识别难度及复杂度剧增,难以实现地址自动分配功能,并且对于传统自动地址配置方式实现通常发生在网络初始化和故障恢复过程中,各网络通信站通过检测网络的异常行为,实现网络地址的自动分配,然而在网络正常运行中,系统无法识别是否有新的节点加入,即从站不具备即插即用能力,灵活性和可扩展能力弱。

【发明内容】

[0005]有鉴于此,本发明提供了一种Modbus RTU中从站自动获取站地址的方法及从站,用于解决从站无法自动获取站地址的问题,使从站可实现即插即用,提高Modbus RTU的灵活性和可扩展能力。
[0006]本发明提供了一种Modbus RTU从站自动获取站地址方法,包括:
[0007]从站向所在的Modbus RTU网络的通信链路发送地址复用探测包,所述地址复用探测包包含临时站地址,所述地址复用探测包用于探测所述临时站地址是否已被所述ModbusRTU网络中其它从站占用;
[0008]当探测结果为所述临时站地址未被所述Modbus RTU网络中其它从站占用时,所述从站占用该临时站地址作为所述从站的固定通信地址。
[0009]进一步,所述从站发送地址复用探测包之前还包括:所述从站根据网络地址表生成地址值最小的空闲地址作为所述临时站地址,所述网络地址表用于记录所述从站检测到的已被其它从站占用的站地址。
[0010]进一步,所述从站向所在的Modbus RTU网络的通信链路发送地址复用探测包,包括:
[0011]所述从站探测到所述通信链路空闲时,产生一随机延时时间;
[0012]当所述随时延时时间到达时,所述从站向所在Modbus RTU网络的通信链路发送所述地址复用探测包。
[0013]进一步,当所述从站至少两次发送含同一临时站地址的地址复用探测包均未收到检测应答时,所述探测结果才为所述临时站地址未被所述Modbus RTU网络中其它从站占用。
[0014]进一步,所述从站占用该临时站地址作为所述从站的固定通信地址之后,还包括:当所述从站接收到含该固定通信地址的地址复用探测包时,做出检测应答。
[0015]进一步,所述从站占用该临时站地址作为所述从站的固定通信地址之后,还包括:
[0016]所述从站根据所述固定通信地址,向主站发送组网请求包;
[0017]所述从站响应所述主站收到所述组网请求包后发送的用于请求所述从站基本信息的请求报告。
[0018]本发明还提供了一种用于Modbus RTU中自动获取站地址的从站,包括:
[0019]探测模块,用于向所在的Modbus RTU网络的通信链路发送地址复用探测包,所述地址复用探测包包含临时站地址,所述地址复用探测包用于探测所述临时站地址是否已被所述Modbus RTU网络中其它从站占用;
[0020]处理模块,用于当探测结果为所述临时站地址未被所述Modbus RTU网络中其它从站占用时,所述从站占用该临时站地址作为所述从站的固定通信地址。
[0021]进一步,还包括:临时站地址生成模块,用于根据网络地址表生成地址值最小的空闲地址作为所述临时站地址,所述网络地址表用于记录所述从站检测到的已被其它从站占用的站地址。
[0022]进一步,所述探测模块,包括:
[0023]随机延时时间产生单元,用于当探测到所述通信链路空闲时,产生一随机延时时间;
[0024]发送单元,用于当所述随时延时时间到达时,所述从站向所在Modbus RTU网络的通信链路发送所述地址复用探测包。
[0025]进一步,还包括:组网模块,用于根据所述固定通信地址,向主站发送组网请求包;以及用于响应所述主站收到所述组网请求包后发送的用于请求所述从站基本信息的请求?艮告。
[0026]本发明的有益效果:
[0027]本发明实施例,由从站向通信链路发送地址复用探测包探测地址复用包中的临时站地址是否被其它从站占用,当探测结果为未被占用时,则从站占用该临时站地址,从而解决了从站如何自动获取站地址的问题,从而实现了网络设备的自动组网,使得在设计网络系统过程中可实现任务控制与Modbus RTU通信的分离,增强了网络设计和管理的灵活性,同时在网络设备的更替和扩展的过程中,可实现设备的即插即用,无需配置静态通信地址,增强了通信地址的利用率,除此之外,在单个或多个新入网从站自动获取地址过程中,Modbus RTU主站将不参与站地址指派或干预,极大降低了主站的负荷。
【专利附图】

【附图说明】
[0028]下面结合附图和实施例对本发明作进一步描述:
[0029]图1是Modbus RTU网络的拓扑图。
[0030]图2是本发明提供的Modbus RTU从站自动获取站地址方法的第一实施例的流程示意图。
[0031]图3是本发明提供的Modbus RTU从站自动获取站地址方法的第二实施例的流程示意图。
[0032]图4是本发明提供的Modbus RTU从站自动获取站地址方法的第三实施例的流程示意图。
[0033]图5是本发明提供的从站自动获取站地址的详细流程图。
[0034]图6是Modbus RTU主站识别新入网络从站的流程图。
[0035]图7是本发明一种实际应用方法的示意图。
[0036]图8是本发明提供的用于Modbus RTU中自动获取站地址的从站的实施例的结构示意图。
【具体实施方式】
[0037]如图1所示,是Modbus RTU网络的拓扑图,其主要由一个Modbus RTU主站和若干个Modbus RTU从站构成,其中各个站之间通过RS-485总线连接,并在485总线两端分别接入120Ω的终端电阻。Modbus RTU网络中各站之间通信均采用该总线传输,而且每个正确的通信报文均符合Modbus RTU传输协议标准。
[0038]根据Modbus RTU传输协议标准的规定:通讯首先由主站向从站发起请求,而且Modbus RTU的主站每次只能发起一个通信事务,网络中所有从站都会接收到该请求报文,然后通过解析该报文的地址域内容,判断该内容是否为本站地址,若是则作出相应的应答响应,否则丢弃该报文。其中地址域的有效范围为1-247,另外O号地址为广播地址,所有从站收到“O号地址”请求时均不进行报文应答。
[0039]根据Modbus RTU传输协议标准的规定:Modbus RTU采用主从通信模式。网络通信首先由主站向某个从站发起请求(携带从站的站地址),该请求被网络中所有的从站接收,从站接收到请求后,将请求中携带的站地址与本身的站地址进行比较,若相同,则说明该请求是发往本站的,需要进行应答,若不相同,则说明该请求与本站无关,丢弃请求。
[0040]也就是说,在Modbus RTU网络中,若网络任意节点发起通信,其他所有节点均可以接收到此报文,然后各从站通过检测报文的地址域来判断是否为本站数据以决定是否应答。基于此,本发明实施例意识到:从站想要获取站地址时,可以以临时主站(伪主站)的身份,向网络中发送包含某地址的复用检测包,若该地址已经被其它从站占用,那么从站将会收到占用该地址的其它从站相应的应答,若该地址未被其它从站占用,则从站不会收到相应的应答,此时从站可以占用该站地址。基于此思路,本发明提供如下技术思路。
[0041]请参考图2,是本发明提供的Modbus RTU从站自动获取站地址方法的第一实施例的流程示意图,其包括:
[0042]步骤S21、从站向所在的Modbus RTU网络的通信链路发送地址复用探测包。
[0043]其中,从站可以是新入网的从站,其要完成入网必须获得一个未被当前已完成入网的其它从站占用的占地址。或者从站可以为已经入网的从站,但由于故障原因,需要重新获取站地址,从而避免该从站地址在故障过程中被其他通信从站占用。
[0044]其中,地址复用探测包包含临时站地址。
[0045]其中,地址复用探测包用于探测其中的临时站地址是否已被Modbus RTU网络中其它从站占用。由Modbus RTU传输协议可知,若该临时站地址已被Modbus RTU网络中某个从站占用,那么当该从站收到地址复用探测包后,将做相应的应答。
[0046]其中,地址复用探测包的具体内容主要由Modbus RTU诊断功能码08H和子功能码OOHOOH构成,则根据Modbus RTU协议规范要求,该地址复用探测包对应的协议数据包(即Protocol Data Unit,简称为 “PDU”)可表示为:08H00H00H。
[0047]具体的,步骤S21可以包括:从站探测到通信链路空闲时,产生一随机延时时间;当随机延时时间到达时,从站向通信链路发送地址复用探测包。此处,通信链路空闲是指离最后接收到字符的时间到现在已经至少3.5个字符时间,这表明上一帧报文已经发送完成。此处,随机延时时间的产生可以是由从站调用随机延时函数而实现。此处,在探测到通信链路空闲时,并不立即发送地址复用探测包而是采取延时一段时间后再发送地址复用探测包的好处是可以避免或减小新入网设备(即新入网从站)所发送的地址复用探测包与其他通信报文冲突的概率。
[0048]步骤S22、当探测结果为该临时站地址未被Modbus RTU网络中其它从站占用时,从站占用该临时站地址作为该从站的固定通信地址。
[0049]其中,当从站至少两次发送含同一临时站地址的地址复用探测包均未收到检测应答时,探测结果才为临时站地址未被Modbus RTU网络中其它从站占用,这样可以提高准确性。此处,两次相同的地址复用探测包应保持足够的发送间隔,以保证其它从站有足够的时间响应。
[0050]其中,未收到检测应答是指从站发送地址复用探测包之后,在规定的时间内未收到任何报文,或者虽然在规定的时间内有收到报文,但收到的报文均不是针对地址复用探测包所做的应答。
[0051]另外,在从站自动获取地址的过程中,Modbus RTU中主站将不对此行为做任何处理,即当主站接收到地址复用探测包后,由于该报文为非主站请求应答,主站将其作为无效报文舍去。
[0052]本实施例,各个新入网从站都将模拟主站功能,在网络空闲阶段发送地址复用探测包,可以将这些从站称之为临时伪主站。而对于真正的Modbus RTU主站在这一过程中将不会对地址复用探测行为作任何反应,而只是将其作为一个无效的通信包给忽略。伪主站与真正的Modbus ASCII主站之间是作用在不同的时段,二者之间并不冲突。而且当新入网从站完成通信地址自动获取以后,将失去临时伪主站的功能。[0053]本实施例,由从站向通信链路发送地址复用探测包探测地址复用包中的临时站地址是否被其它从站占用,当探测结果为未被占用时,则从站占用该临时站地址,从而解决了从站如何自动获取站地址的问题,从而实现了网络设备的自动组网,使得在设计网络系统过程中可实现任务控制与Modbus RTU通信的分离,增强了网络设计和管理的灵活性,同时在网络设备的更替和扩展的过程中,可实现设备的即插即用,无需配置静态通信地址,增强了通信地址的利用率,除此之外,在单个或多个新入网从站自动获取地址过程中,ModbusRTU主站将不参与站地址指派或干预,极大降低了主站的负荷。
[0054]请参考图3,是本发明提供的Modbus RTU从站自动获取站地址方法的第二实施例的流程示意图,其包括:
[0055]步骤S31、从站根据网络地址表生成地址值最小的空闲地址作为临时站地址。
[0056]与步骤S21 —步骤S22分别相同的步骤S32 —步骤S33。
[0057]其中,网络地址表用于记录从站检测到的已被其它从站占用的站地址。
[0058]其中,网络地址表中每个元素的长度为一个字节,由于Modbus RTU中从站地址为1-247,因此网络地址表的最大长度为247。
[0059]其中,对从站而言,网络地址表最初为空,当从站接收到站地址为CAi的通信数据包时,则表明该站地址CAi已经被其他从站占用,则从站将CAiW入网络地址表中,其中CAi e U,U= {1,2,…,247}。另外,当从站以站地址CAi作为临时站地址进行探测,若收到相应的应答时,也表明该站地址CAi已被占用,从站也将其加入网络地址表中。
[0060]其中,从站根·据网络地址表获取地址值最小的空闲地址作为临时站地址时,其中空闲地址为1-247号站地址中除去网络地址表中已检测到被占用的站地址,即有(FCAjFCAi e U-AT},其中FCAi为空闲地址集合,AT为该从站已检测被使用站地址集合(其中该集合元素与网络地址表内容一一对应)。显然,空闲网络地址数目大于1,然后步骤S31选择其中最小的作为临时站地址,即MIN(FCAi)。
[0061]请参考图4,是本发明提供的Modbus RTU从站自动获取站地址方法的第三实施例的流程示意图,其包括:
[0062]与步骤Sll —步骤S12相同的步骤S41 —步骤S42。
[0063]步骤S43、从站根据获取的固定通信地址,向主站发送组网请求包。
[0064]其中,组网请求包R(CAi)的请求功能码为11H,基于Modbus RTU的组网请求包R(CAi)的格式为=MIN(FCAi),11H, CRC_L, CRC_H。
[0065]其中,已采用步骤S41和步骤S42的方式获得固定通信地址的从站发送组网请求包R(CAi)仍然需要等待网络空闲并随机延时一段时间后进行。
[0066]步骤S44、从站响应主站收到组网请求包后发送的用于请求从站基本信息的请求?艮告。
[0067]其中,在每个从站中均有都有标识该站的基本信息的参数Qi,该参数包括从站的类型、功能等基本信息。
[0068]其中,当Modbus RTU中主站接收到组网请求包时R(CAi),说明站地址为MIN(FCAi)的从站正在请求组网识别,那么主站则通过请求报告从站ID(功能码:11H),识别该请求组网识别的从站的基本信息,以完成组网识别。
[0069]其中,处于等待主站识别阶段的从站,当其收到主站请求报文后,将设备信息Θ i按照Modbus RTU功能码IlH规范封装,然后应答给主站,到此为该从站可进入正常通信模式。
[0070]另外,当从站占用该临时站地址作为该从站的固定通信地址后,从站即使在组网请求阶段接收到含该固定通信地址的地址复用探测包时,也做出相应的检测应答,表示该站地址已被占用。
[0071]另外,由以上实施例分析可知:对于Modbus RTU中主站在处理通信事物过程中,其接收到网络通信包总体分为三种情况:
[0072]1、从站的请求响应报文。此报文通常是发生在Modbus RTU主站发出通信请求后,网络中相应从站作出的响应。在此过程中,Modbus RTU从站按照协议规范正常处理此报文。
[0073]2、新入网从站请求报文。按照本发明实施例提供的自动获取站地址的方法,在地址检测阶段,主要站将不参与地址分配等任何角色。而当从站获取有效地址后,由主站将无法获取该从站的信息,由从站主动向网络主站发送组网请求通信报文包。当主站接收到该格式的报文包时,则表示网络中有新从站已经加入,等待主站识别。然后Modbus RTU主站则主动向该从站发起请求从站ID,识别该从站的设备类型和功能等。
[0074]3、网络异常报文。此报文一般包括,通信错误报文(包括CRC检验错,奇偶校验错、字符溢出等等)、非请求报文。其中,对于主站来说,地址复用探测报文也将被视作非请求报文。
[0075]请参考图5,是本发明提供的从站自动获取站地址的详细流程图,其包含了本发明实施例的诸多细节,这有助于帮助理解本发明,但是对于本领域技术人员而言,这诸多细节限定而成的技术方案仅是本发明较优的技术方案,不应理解为本发明的唯一实现方式或者对保护范围的限定。图5的流程包括:
[0076]步骤S501、当从站启动后,初始化自身配置。
[0077]其中初始化自身配置包括系统配置初始化、通信初始化、参数初始化等等。
[0078]除此之外,本发明提供的从站自动获取站地址方式需要定义网络地址表AT,其最大长度为247,每个元素为无符号字节类型,其作用主要用于存储该设备站检测被使用过的通信地址。
[0079]然后,定义地址复用探测计数器Cl和组网请求计数器C2,分别用于计算临时站地址复用探测次数和组网请求识别的次数。
[0080]最后,从站配置有关的通信计时器、响应超时计时器和随机延时计时器等。
[0081]步骤S502、当设备初始化完成以后,然后根据网络地址表AT,获取最小的空闲地址,准备地址复用探测报文,并清零计数器Cl和C2。根据本
【发明内容】
,此时若网络正在进行通信报文传输,则继续等待链路空闲。若此时链路为空闲状态,则根据预置的随机延迟策略产生一个随机数,然后设定延时时间,开启延时定时器。
[0082]处于延时等待的从站,需要实时监测通信链路的信息。若在延时结束之前,网络链路无任何通信行为,则发送已准备好的地址复用探测包。若在此阶段检测到有链路报文传输,则放弃此次地址复用发送的机会,然后等待下一次链路空闲。于此同时,从站接收链路报文信息。
[0083]步骤S503、当从站接受到有新报文时,检查基本通信错误,其中包括CRC (CyclicRedundancy Check,循环冗余校验码)校验、字符奇偶校验、字符溢出验证、通信报文长度验证和帧间字符超时验证等。若校验无错误则进入步骤S504,解析该报文,然后进入步骤S505 ;若其中有一个条件不满足则进入步骤S507。
[0084]步骤S504、检查地址域内容,获取其中的站地址。
[0085]步骤S505、若步骤S504获取的站地址与本站临时站地址相同,则说明该站地址已经被其他从站占用,然后进入S506处理。若该内容不等于本站临时地址,则表明其他设备站正在通信,然后舍去该无效通信包,直接进入步骤507。
[0086]步骤506、经步骤S505判断,本站已获取的地址与其他站冲突,根据“先检测,先获取”的规则,本站必须放弃该地址的占用,避免地址冲突。首先该站需要更新网络地址表,将该站地址加入网络地址表中,为下次获取网络空闲地址提供可靠性依据。然后本站再次根据网络地址表重新获取最小网络空闲地址和准备地址复用探测包,等待链路空闲,准备新一路的地址检测,此步骤如同步骤S502。与此同时,该站需要清零计数器Cl和C2,避免历史数据给检测结果带来错误信息。
[0087]步骤S507、判断响应是否超时。本发明通过地址复用探测来判断本站已获得的地址是否与其他站重复。由步骤S502、S506、S510中,每次发送地址复用探测包后,都将启动本站的响应超时定时器。若响应超时标志位置位,则进入步骤S508,否则进入步骤S502检测是否有新的报文。
[0088]步骤S508、当该通信站检测到请求响应超时,则将地址复用探测计数器Cl累加I。
[0089]此处,地址复用探测计数器Cl的作用是用于记录该站对现使用的地址已经发出检测包次数,并均没有接受到该站有关的检测应答。对地址复用的多次检测可以增强使用该地址的可靠性,避免由于网络繁忙或通信错误带来的误导。
[0090]步骤S509、判断地址复用测试是否已经达到的上限值。若Cl累计响应超时次数大于或等于该上限值,则进入下一个步骤S511,表明该站已经获取网络空闲地址成功,已成功进入组网请求阶段。若该计数器值小于该上限值,则进入步骤S510。
[0091]步骤S511、鉴于上一次发送地址复用探测包后,没有接收到相应通信站应答,则在该步骤中,则发送组网请求,并重启响应超时定时器。
[0092]在地址检测阶段,新通信从站设备成功获取站地址以后,已经具备了基本通信能力。但此过程是在网络通信从站之间,通过以伪主站请求的方式得到该空闲地址,网络主站没有参与该地址自动获取的任务,并不知道有新的网络节点(即从站)已经加入到该系统中。本发明的目的就是实现在网络运行的任何阶段都能检测到网络有新通信设备的接入。所以,在组网识别阶段,该新通信从站节点通过向网络主站发送特定的请求识别报文包,通知主站识别自身设备的类型、功能等信息。在步骤S511中,当该站检测到网络闲时,向总线链路发送组网请求报文包。同时也启动响应超时定时器,并清零组网请求计数器C2,然后进入步骤S512中检测链路报文。
[0093]本发明的一个重要的功能就是能够同时支持多个从站设备同时接入网络中,并完成相应的自动获取地址的任务。已经获取网络空闲地址的从站,当检测到有其他从站检测本站地址是否被占用时,该从站应当给予应答测试,如步骤S514,表明该地址已经被占用,然后进入步骤S516判断是否响应超时。
[0094]如由于通信故障或其他原因,当从站请求组网请求后,没有接收到来自系统主站的识别请求,然后发生响应超时,进入步骤S517,对请求组网次数累加。然后进入步骤S518,判断的组网请求次数是否超限。若该站已经组网请求次数已经超过了允许的上限值,则放弃对总线的占用,重新进入地址检测模式,从新获取网络空闲地址。否则,重新进入步骤S511,尝试与主站发起组网请求。
[0095]若在步骤S514检测到新报文为主站请求本站ID,则说明主站已识别该通信从站已经进入网络,然后进入步骤S519应答网络主站请求参数。在此应答过程中无需调用随机延时策略,因该请求由主站发起,而本站的已经受控于Modbus RTU主站调度。当新入网从站响应主站请求后,同时该站也正式进入正常通信模式,整个从站自动获取通信地址的过程结束。
[0096]请参考图6,是Modbus RTU主站识别新入网络从站的流程图,其包括:
[0097]首先在步骤S601中,当Modbus RTU中主站检测到有新的链路报文时,然后马上进入步骤S602,进行基本的通信处理。若步骤S602检测该报文不满足Modbus RTU协议的基本通信验证,则丢弃该错误信息,然后通过步骤S607返回。若该报文时正确报文检验争取,则进入步骤S603。
[0098]步骤S603、判断接收的报文是否为请求应答。根据Modbus RTU协议的基本内容,网络采用Modbus RTU主站首先向网络的某个站发起请求,然后目标站根据请求的内容进行响应。所以当主站接收到新的报文时,首先判断是不是目标从站的功能应答。如果是,则进入步骤S606根据Modbus RTU协议进行报文解析,最后通过步骤S607返回。若不是请求的目标站应答,则进入步骤S604。
[0099]步骤604、主站识别新入网通信从站。即在通信处理流程图中增加了组网请求报文的检测功能。当网络主站接收到不是本站请求,但又满足报告从站ID的请求通信报文时,表明网络中有新的通信从站等待主站识别,即在步骤S604中判断结果为真,则进入步骤S605,增加主动识别从站ID的任务。若接收到的报文既不是请求应答,也不是新入网通信设备的组网请求,则丢弃该通信报文。这其实也在另一方面体现了 Modbus RTU主站忽略地址复用探测过程。
[0100]请参考图7,就本发明的一种实际应用的示意图,其通过检测分析同时时间段网络通信链路报文信息内容介绍本发明。
[0101]如图7所示,假设现有基于Modbus RTU的网络中存在四个节点(节点为ModbusRTU主站或Modbus RTU从站),其中包括一个Modbus RTU主站和三个Modbus RTU从站(SI,S2,S4),其中三个Modbus RTU从站的站地址分别为1,2,4。Modbus RTU网络采用时间触发方式,在时间段[tQ,tQ+ATp]内,Modbus RTU主站根据网络任务逐次轮询各个从站节点(SI, S2,S3)。
[0102]若在t=h时刻,网络新加入通信从站Si,由于[tQ,t0+ Δ Tp]时间段内Modbus RTU主站正处于轮询从站,所以此过程中网络一直处于忙碌状态。当Si在tzh+AI;时检测到链路为空闲状态,马上根据AT获取空闲通信地址和准备地址复用探测包。
[0103]然而,由于在[\,t0+ATp]时间段内,从站Si还未作任何地址复用测试,所以AT为空,则Si第一次获取的通信站地址为I。根据本发明提供的随机延时策略,Si设置延时时间为At3。若在此延时过程中,链路一直保持为空闲状态,则当延时时间结束后马上发送关于地址I的地址复用探测包。[0104]显然,由于网络中通信从站SI占用了该站地址,所以当SI接收到Si关于地址I的复用测试时,将会给予应答。然后,Si将根据该响应把地址I加入到AT中,表明该站地址已经被其他站使用了,然后重新获取最小空地址。
[0105]由于地址I已经被占用,根据网络地址表,第二次获取的最小空闲地址为2。显然该地址也被通信从站S2占用。S2发出地址2的复用测试包后,将收到来自S2的应答测试,然后Si同样放弃地址2,并更新地址表AT。采用同样的方法,Si将继续获取最小空闲地址
3。由于网络中没有任何从站使用该地址,则如图显示,Si连续发送三次均没有接受到通信地址为3的应答,则Si将永久占用该地址。值得注意的是,在地址复用测试之间需要预留足够多的时间给相应站响应,如图4中所示,At2为响应超时时间,且有At2>At3。
[0106]请参考图8,是本发明提供的从站的实施例的结构示意图,其包括:
[0107]临时站地址生成模块1,用于根据网络地址表生成地址值最小的空闲地址作为所述临时站地址,所述网络地址表用于记录所述从站检测到的已被其它从站占用的站地址。
[0108]探测模块2,用于向所在的Modbus RTU网络的通信链路发送地址复用探测包,所述地址复用探测包包含临时站地址,所述地址复用探测包用于探测所述临时站地址是否已被所述Modbus RTU网络中其它从站占用;
[0109]处理模块3,用于当探测结果为所述临时站地址未被所述Modbus RTU网络中其它从站占用时,所述从站占用该临时站地址作为所述从站的固定通信地址。其中,处理模块3包括:随机延时时间产生单元31,用于当探测到所述通信链路空闲时,产生一随机延时时间;发送单元32,用于当所述随时延时时间到达时,所述从站向所在Modbus RTU网络的通信链路发送所述地址复用探测包。
[0110]组网模块4,用于根据所述固定通信地址,向主站发送组网请求包;以及用于响应所述主站收到所述组网请求包后发送的用于请求所述从站基本信息的请求报告。
[0111]本实施例,由从站向通信链路发送地址复用探测包探测地址复用包中的临时站地址是否被其它从站占用,当探测结果为未被占用时,则从站占用该临时站地址,从而解决了从站如何自动获取站地址的问题,从而实现了网络设备的自动组网,使得在设计网络系统过程中可实现任务控制与Modbus RTU通信的分离,增强了网络设计和管理的灵活性,同时在网络设备的更替和扩展的过程中,可实现设备的即插即用,无需配置静态通信地址,增强了通信地址的利用率,除此之外,在单个或多个新入网从站自动获取地址过程中,ModbusRTU主站将不参与站地址指派或干预,极大降低了主站的负荷。
[0112]最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
【权利要求】
1.一种Modbus RTU从站自动获取站地址方法,其特征在于:包括: 从站向所在的Modbus RTU网络的通信链路发送地址复用探测包,所述地址复用探测包包含临时站地址,所述地址复用探测包用于探测所述临时站地址是否已被所述Modbus RTU网络中其它从站占用; 当探测结果为所述临时站地址未被所述Modbus RTU网络中其它从站占用时,所述从站占用该临时站地址作为所述从站的固定通信地址。
2.如权利要求1所述的ModbusRTU从站自动获取站地址方法,其特征在于:所述从站发送地址复用探测包之前还包括:所述从站根据网络地址表生成地址值最小的空闲地址作为所述临时站地址,所述网络地址表用于记录所述从站检测到的已被其它从站占用的站地址。
3.如权利要求1所述的ModbusRTU从站自动获取站地址方法,其特征在于:所述从站向所在的Modbus RTU网络的通信链路发送地址复用探测包,包括: 所述从站探测到所述通信链路空闲时,产生一随机延时; 当所述随机延时到达时,所述从站向所在Modbus RTU网络的通信链路发送所述地址复用探测包。
4.如权利要求1所述的ModbusRTU从站自动获取站地址方法,其特征在于:当所述从站至少两次发送含同一临时站地址的地址复用探测包均未收到检测应答时,所述探测结果才为所述临时站地址未被所述Modbus RTU网络中其它从站占用。
5.如权利要求1-4中任一项所述的ModbusRTU从站自动获取站地址方法,其特征在于:所述从站占用该临时站地址作为所述从站的固定通信地址之后,还包括:当所述从站接收到含该固定通信地址·的地址复用探测包时,做出检测应答。
6.如权利要求1-4中任一项所述的ModbusRTU从站自动获取站地址方法,其特征在于:所述从站占用该临时站地址作为所述从站的固定通信地址之后,还包括: 所述从站根据所述固定通信地址,向主站发送组网请求包; 所述从站响应所述主站收到所述组网请求包后发送的用于请求所述从站基本信息的请求报告。
7.一种用于Modbus RTU中自动获取站地址的从站,其特征在于:包括: 探测模块,用于向所在的Modbus RTU网络的通信链路发送地址复用探测包,所述地址复用探测包包含临时站地址,所述地址复用探测包用于探测所述临时站地址是否已被所述Modbus RTU网络中其它从站占用; 处理模块,用于当探测结果为所述临时站地址未被所述Modbus RTU网络中其它从站占用时,所述从站占用该临时站地址作为所述从站的固定通信地址。
8.如权利要求7所述的从站,其特征在于:还包括: 临时站地址生成模块,用于根据网络地址表生成地址值最小的空闲地址作为所述临时站地址,所述网络地址表用于记录所述从站检测到的已被其它从站占用的站地址。
9.如权利要求7所述的从站,其特征在于:所述探测模块,包括: 随机延时时间产生单元,用于当探测到所述通信链路空闲时,产生一随机延时时间; 发送单元,用于当所述随时延时时间到达时,所述从站向所在Modbus RTU网络的通信链路发送所述地址复用探测包。
10.如权利要求7-9中任一项所述的从站,其特征在于:还包括: 组网模块,用于根据所述固定通信地址,向主站发送组网请求包;以及用于响应所述主站收到所述组网请求包后发送的用于请求所述从站基本信息的请求报告`。
【文档编号】H04L12/40GK103856578SQ201410003527
【公开日】2014年6月11日 申请日期:2014年1月3日 优先权日:2014年1月3日
【发明者】黄伟, 吴小军, 刘娟, 吕跃跃, 李建勇, 杨国东 申请人:西南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1