一种1553B总线网络及串行总线网络的跨网状态可靠切换方法与流程

文档序号:12309486阅读:622来源:国知局
本发明涉及一种1553b总线网络及串行总线网络的跨网状态可靠切换方法,用于解决包含1553b总线网络及串行总线网络的测控系统中分布在各网络中的站点的状态可靠切换问题,属于测控与控制系统
技术领域

背景技术
:工业用测量与控制系统常常会涉及多种网络中各个站点协同工作的问题。由于全局通信的稳定性和局部通信的灵活性,1553b总线网络和串行总线网络成为了两种常用的通信网络。实际使用中的测量与控制系统中常常会运行于多种状态,因此,1553b网络中的任意一个设备控制另一个网络(串行总线)中的其它一个或者多个设备的状态就变得不可避免。通常状态切换采用的方法是直接设计为点到点的状态切换控制,或者将要切换的设备放到同种类型的网络中来实现。前一种方法由于与被控制站点直接相连,所以可以直接进行控制,设计逻辑较为简单。但若需要控制的站点较多时,对硬件设计占用资源过多,使之硬件实现效率较低。对这种问题进行改进后,形成的第二种方式是将所有需要进行状态切换的模块设备全部接入统一的网络中,在控制状态切换时,控制站点通过总线点名的方式控制目标站点依次完成状态控制。但对于1553b总线而言,其总线站点的容量是有限制的,无法接入30个以上的站点,而即使对于可以容纳稍多站点的其他类型总线而言,当总线网络上的站点较多时,虽然简化了控制过程,却增加了网络维护的开销,也会降低通信的效率。因此基于采用1553b总线作为状态切换的主控网的类型,需要设计一种状态可靠切换来克服1553b总线站点容量限制的问题。技术实现要素:本发明的技术解决问题是:克服现有技术的不足,提出一种1553b总线网络及串行总线网络的跨网状态可靠切换方法,其可以被用于解决1553b总线上某个rt站点控制另一个通过1553b总线上的另一个站点挂接在1553b总线上的串口网络上的一个或者多个站点进行状态可靠切换问题。本发明的技术解决方案是:一种1553b总线网络及串行总线网络的跨网状态可靠切换方法,所述1553b总线网络的其中一个网络站点sslave能与串行总线网络中其他所有站点通过串行总线通信,该方法包括以下步骤:(1)、1553b总线网络中的主动切换方smaster向1553b总线网络站点sslave发送状态切换命令消息,所述状态切换命令消息包括需要切换的状态和需要进行状态切换的站点集合,该集合为由1553b总线网络站点sslave和串口通信网络其他站点所构成的集合的任意子集;(2)、1553b总线网络站点sslave对状态切换命令消息进行解析,得到需要进行状态切换的所有站点,如果需要进行状态切换的站点包含串行总线网络中除了自身之外的其他站点,则转入步骤(3);(3)、网络站点sslave向除网络站点sslave之外串行总线网络中的需要进行状态切换的站点ui转发切换命令消息,并为每个站点ui设置一个相应的定时器ci开始计时,i∈[1,n],n为除网络站点sslave之外串行总线中的需要进行状态切换的站点个数,所述串行总线网络站点在收到网络站点sslave转发的状态切换命令,完成状态切换后,编辑好状态切换好回复消息,等待网络站点sslave查询状态切换好回复消息;(4)、网络站点sslave并行执行步骤(4.1)和(4.2),直到步骤(4.1)和(4.2)均执行完毕之后,转入步骤(5);(4.1)、判断需要进行状态切换的站点是否包含自身,如果包含自身,则完成自身状态切换,并编辑好状态切换好恢复消息,置网络站点sslave“状态切换好”标志,本步骤执行完毕;(4.2)、按照固定的周期tlocalcomm轮询串口网络中其他需要进行状态切换的站点的状态切换好回复消息,并对定时器超时仍不能获取切换好恢复消息的网络站点反复重新发送状态切换命令和重置定时器,对在预设的时间内获取到切换好恢复消息的网络站点,置“状态切换好”标志,对在预设的时间内无法获取到切换好恢复消息的网络站点,置“状态切换故障”标志,所有站点检测完毕则本步骤执行完成;(5)、网络站点sslave在根据所有需要进行状态切换的串行总线站点的“状态切换好”标志或者“状态切换故障”标志,形成跨网状态切换回复消息,通过1553b总线将跨网状态切换回复消息发送给smaster,转入步骤(6);(6)、主动切换方smaster根据跨网状态切换回复消息,判断所有需要切换的站点的状态是否与所发出的状态切换命令相对应,从而判断要求切换的各站点是否均完成状态切换,如果存在未完成切换的站点,则可根据切换失败的站点,重复执行步骤(1)~步骤(6),否则,完成全部切换过程。当主动切换方smaster和网络站点sslave均为rt时,主动切换方smaster向网络站点sslave发送状态切换命令消息和sslave向smaster回复跨网状态切换回复消息的处理过程为:(1.1)、发送方先将状态切换命令消息或者跨网状态切换回复消息存入相应的发送子地址中;(1.2)、定义网络中每一个rt站点的特定子地址为通信请求子地址,发送方将通信请求消息放于通信请求子地址,所述通信请求消息包括发送方的rt地址、需要发送消息的发送子地址,发送的字个数;接收方的rt地址、接收子地址,接收的字个数;(1.3)、bc对网络中的各个rt站点的通信请求子地址进行周期性巡检,当bc在巡检过程中发现任意一个rt站点的请求子地址有新的通信请求消息时,将通信请求消息中发送数据的rt对应的发送子地址相应字个数的需要发送的消息转发至通信请求消息中接收数据的rt对应的接收子地址中。步骤(4.2)的具体实现为:对于每个站点而言,网络站点sslave设置一个超时门限ti和一个重发次数门限mi,当定时器ci超过预设的超时门限ti,网络站点sslave仍未查询到该站点状态切换好回复消息,则重新发送状态切换命令给该站点并重启定时器,如果网络站点sslave向该站点重发mi次仍未查询到该站点状态切换好回复消息,则置该站点“状态切换故障”标志,结束对该站点的状态切换处理;否则,网络站点sslave在每个预设的时间mi×ti内轮询到相应站点的状态切换好回复消息,则置该站点“状态切换好”标志。所述网络站点sslave与需要进行状态切换的串行总线站点的通信方式为:网络站点sslave的串行接口与从网络中其他站点的串行接口并联连接,网络站点sslave向所有其他站点发送带有信宿地址的数据,其他站点根据信宿地址接收数据,网络站点sslave通过i/o选通信号,控制其中一个串行总线站点发送数据,从而保证同一时刻只接收来自一个站点的数据。所述mi≥1。所述超时门限ti大于串行网络所有站点完成状态切换所需要的最长消耗时长为tlocalswitch,i∈[1,n]。本发明与现有技术相比的有益效果是:(1)、本发明将1553b网络和串行总线网络层次化地组织在一起,通过分层的方法,解决了1553b总线站点容量限制的问题,实现了1553b中任意站点对混合网络中的其他站点的状态控制功能;(2)、本发明提出了一种在不使用模式命令的情况下,在1553b总线上的任意rt站点实现主动通信的一种方法,避免了采用模式命令的解决方式带来的由于信号干扰产生非法指令导致如rt关闭等严重总线故障;(3)、本发明将通过各级进行切换及回复确认的方法,将状态切换故障在网络间进行分离,可靠性和可测性措施分解在各层内部,从而简化了系统的设计耦合性,缩短了可靠性设计路径,大大提高了系统中状态切换的可靠性和可测性;(4)、本发明采取若发生状态切换失败的情况进行重新切换的措施,从而进一步增强系统的容错性;(5)、本发明通过增加串行总线网络管理的功能,解决了串行总线只能局限于点对点通信的使用方式;(6)、本发明通过切换命令消息、状态切换好回复消息等方法,将切换过程中可能出现的各种故障组合状态标识出来,在发生状态切换故障时,可以方便排查故障原因;(7)、本发明通过切换时长估计的方式,避免由于通信故障或单击设备故障导致的系统死等造成的系统假死现象。附图说明图1为本发明实施例的网络结构图。具体实施方式以下结合附图和具体实施例对本发明进行详细说明。以1553b总线网络及串行总线网络共生网络架构中1553b总线网络为主网络,串行总线网络为从网络,1553b总线网络及串行总线网络设置一个共享网络站点sslave,网络站点sslave作为串行总线网络的控制站点与从网络中其他站点通过串行总线完成通信。1553b总线网络任意一个站点作为主动切换方smaster可以对串行总线网络中任何一个或者多个站点进行状态切换。如图1所示,1553b中拥有一个状态切换控制站点rt1,相当于上述的主动切换方smaster,该站点启动系统高低压测试状态的切换过程,在总线中的rt7为其中一个需要响应高低压测试状态切换控制的站点,相当于上述网络站点sslave,同时其作为一个rs485串行总线网络站点切换的控制站点,在收到高低压切换命令后,控制串行总线网络所有站点完成状态切换。rs485串行总线网络共包含rt7在内的4个站点,定义为urt7,u1,u2,u3。其中urt7与rt7为同一站点。上述站点中rt7选用bm3101型的soc作为微处理器,利用该微处理器中的1553b总线处理功能(与61580芯片完全一致)与1553b总线实现通信,同时,通过其自身的串行总线控制器来完成与rs485总线其他站点的通信功能。其他串行总线上的站点均用8051芯片实现,串口通信功能通过8051芯片上的串行接口来完成。由于rs485串行总线属于独占型总线,即同一时刻,只能存在一个站点发送消息,故u1,u2,u3的消息发送过程由urt7调度完成。所述网络站点rt7的串行接口与从网络中其他站点的串行接口连接到一条共享的串行总线上,网络站点rt7通过i/o型选通信号,控制其中一个串行总线站点发送数据,串行总线上的其他站点只有收到i/o型选通信号时,才将数据放到串行接口的发送缓冲区中,从而保证同一时刻串行总线上只有来自于一个站点的数据,rt7通过循环选通串行总线上的其他站点来保证其他站点在一段时间内均有串行总线的通信机会,从而不会被“饿死”。网络站点rt7向所有其他站点发送带有信宿地址的数据,其他站点根据信宿地址接收数据,如此来完成各个站点间的通信过程。以下详细介绍主动切换方rt1(smaster)对包括rt7(sslave)在内的串口网络中的所有站点进行状态切换的方法:(1)、主动切换方rt1向网络站点rt7发送状态切换命令消息,所述状态切换命令消息包括需要切换的状态和需要进行状态切换的站点集合,该集合为sslave和串口通信网络站点所构成的子集;1553b总线网络是一个bc调度的总线网络,这种总线网络可靠性比较高,应用较为广泛,一般情况下,任意两个rt通信都是通过bc作调度实现的,但是,如果rt和rt需要进行主动通信时,则无法直接通过bc调度来实现。在1553b总线使用过程中,通常只能采用模式命令的方式来实现这样的功能需求,但模式命令的引入降低了系统的安全可靠性,由于其类似与总线控制的超指令,可以控制rt关闭等总线调度功能,而面对干扰时,rt则无法处理此类故障,严重时会使系统陷入瘫痪。本发明提出了一种在不使用模式命令的情况下,在1553b总线上的任意rt站点实现主动通信的一种方法,避免了采用模式命令的解决方式带来的由于信号干扰产生非法指令导致如rt关闭等严重总线故障。具体方法为:当主动切换方smaster和网络站点sslave均为rt时,主动切换方smaster向网络站点sslave发送状态切换命令消息和sslave向smaster回复跨网状态切换回复消息的处理过程为:(1.1)、发送方先将状态切换命令消息或者跨网状态切换回复消息存入相应的发送子地址中;(1.2)、定义网络中每一个rt站点的特定子地址为通信请求子地址,发送方将通信请求消息放于通信请求子地址,所述通信请求消息包括发送方的rt地址、需要发送消息的发送子地址,发送的字个数;接收方的rt地址、接收子地址,接收的字个数;(1.3)、bc对网络中的各个rt站点的通信请求子地址进行周期性巡检,当bc在巡检过程中发现任意一个rt站点的请求子地址有新的通信请求消息时,将通信请求消息中发送数据的rt对应的发送子地址相应字个数的需要发送的消息转发至通信请求消息中接收数据的rt对应的接收子地址中。主动切换方rt1采用下列方式向网络站点rt7发送状态切换命令消息:(1.1)、rt1先将状态切换命令消息存入相应的发送子地址中;定义1553b总线高低压状态切换命令消息格式如下:(1.2)、定义网络中每一个rt站点的特定子地址(如30)为通信请求子地址,发送方将通信请求消息放于通信请求子地址,所述通信请求消息包括发送数据的rt地址、需要发送消息的发送子地址,发送的字个数;接收数据的rt地址、发送子地址,发送的字个数;通信请求消息,格式如下:字1字2字3发送命令字接收命令字crc校验码其中,发送命令字1定义rt发送消息的通信子地址,需要通信的数据字个数,同时将自身地址告知bc,而接收命令字2则定义了接收rt的地址和子地址以及需要通信的数据字字个数。此两个命令字具体定义格式如下:bit15bit10~bit14bit5~bit9bit0~bit4保留为0发送/接收地址发送/接收子地址数据字个数rt需要发送消息到bc时,接收命令字置零,发送命令字标示发送rt的地址与子地址和所要发送给bc的数据字个数。rt1采用发送子地址1作为高低压状态切换命令消息的发送子地址,同时采用接收子地址2作为高低压状态切换好回复消息接收子地址;rt7采用接收子地址3作为高低压状态切换命令接收子地址。(1.3)、bc对网络中的各个rt站点的通信请求子地址进行周期性巡检,定义bc对各个rt地址的通信请求消息扫描的周期为100ms。当bc在巡检过程中发现任意一个rt站点的请求子地址有新的通信请求消息时,将通信请求消息中发送数据的rt对应的发送子地址相应字个数的需要发送的消息转发至通信请求消息中接收数据的rt对应的接收子地址中。(2)、串行总线网络各站点收到rt7转发的状态切换命令后,sslave对状态切换命令消息进行解析,得到需要进行状态切换的所有站点,如果需要进行状态切换的站点包含串行总线网络中除了自身之外的其他站点,则转入步骤(3);假设rt7所收到的状态切换命令消息如下:对1553b总线状态切换命令消息进行解析,从状态切换命令消息中可以看出,需要进行状态切换的站点包括串行总线网络中其他站点(u1,u2,u3)和自身(urt7),转入步骤(3);(3)、网络站点rt7向除网络站点rt7之外串行总线网络中的需要进行状态切换的站点(u1,u2,u3)转发切换命令消息,并为每个站点(u1,u2,u3)设置一个相应的定时器ci开始计时,i∈[1,3],3为除网络站点sslave之外串行总线中的需要进行状态切换的站点个数,所述串行总线网络站点在收到网络站点rt7转发的状态切换命令,完成状态切换后,编辑好状态切换好回复消息,等待网络站点sslave查询状态切换好回复消息。rs485串行总线的通信速率设置为115200bps,rt7通过rs485串行总线转发的高低压状态切换命令消息格式定义如下:rs485串行总线高低压状态切换好回复消息格式定义如下:(4)、网络站点sslave并行执行步骤(4.1)和(4.2),直到步骤(4.1)和(4.2)均执行完毕之后,转入步骤(5);(4.1)、判断需要进行状态切换的站点是否包含自身,如果包含自身,则完成自身状态切换,并编辑好状态切换好恢复消息,置网络站点sslave“状态切换好”标志,本步骤执行完毕;(4.2)、按照固定的周期tlocalcomm轮询串口网络中其他需要进行状态切换的站点的状态切换好回复消息,并对定时器超时仍不能获取切换好恢复消息的网络站点反复重新发送状态切换命令和重置定时器,对在预设的时间内获取到切换好恢复消息的网络站点,置“状态切换好”标志,对在预设的时间内无法获取到切换好恢复消息的网络站点,置“状态切换故障”标志,所有站点检测完毕则本步骤执行完成;对于每个站点而言,网络站点sslave设置一个超时门限ti和一个重发次数门限mi,当定时器ci超过预设的超时门限ti,网络站点sslave仍未查询到该站点状态切换好回复消息,则重新发送状态切换命令给该站点并重启定时器,如果网络站点sslave向该站点重发mi次仍未查询到该站点状态切换好回复消息,则置该站点“状态切换故障”标志,结束对该站点的状态切换处理;否则,网络站点sslave在每个预设的时间mi×ti内轮询到相应站点的状态切换好回复消息,则置该站点“状态切换好”标志,所述mi≥1。所述固定的周期tlocalcomm为一次状态切换好回复接收通信周期,即所有串行网络站点单次通信的时长之和。设串行网络所有站点完成状态切换所需要的最长消耗时长为tlocalswitch,所述超时门限ti应当大于串行网络所有站点完成状态切换所需要的最长消耗时长为tlocalswitch,i∈[1,n]。本实施例中:ti=tlocalswitch+n×tlocalcomm,其中,n×tlocalcomm为余量,通常取为20%~100%的余量比例。(5)、网络站点rt7在根据所有需要进行状态切换的串行总线站点的“状态切换好”标志或者“状态切换故障”标志,形成跨网状态切换回复消息,通过1553b总线将跨网状态切换回复消息发送给rt1,转入步骤(6);rt7采用发送子地址4作为跨网状态切换回复消息发送子地址。其将跨网状态切换回复消息发送给rt1的过程与主动切换方rt1向网络站点rt7发送状态切换命令消息的具体过程相同。跨网状态切换回复消息格式定义如下:其中“自身rt地址”字段用于帮助rt1区分1553b总线中的哪个站点已经完成了状态切换。(5)、主动切换方rt1根据跨网状态切换回复消息,判断所有需要切换的站点的状态是否与所发出的状态切换命令相对应,从而判断要求切换的各站点是否均完成状态切换,如果存在未完成切换的站点,则可根据切换失败的站点,重复执行步骤(1)~步骤(6),否则,完成全部切换过程。实施例:为描述简洁,下面仅就低压状态切换为高压状态为例进行说明,高压状态切换到低压状态的情况一致,仅消息内容不同。步骤1,rt1构造高压切换命令{0xaaf0,0x0080,0x0000,0x0000,0x0007,0x4628},并将其放于发送子地址1中,同时构造1553b状态切换命令请求消息{0x0426,0x1c66,0x8234},放于发送子地址30中;步骤2,1553b总线bc检测到rt1提出的请求后,转发rt1的状态切换命令{0xaaf0,0x0080,0x0000,0x0000,0x0007,0x4628}到被动状态切换方rt7的子地址3。步骤3,rt7通过1553b总线收到状态切换命令后,通过串行总线网络广播高压状态切换命令{0x50,0x07,0xf0,0xaa,0xf1},并等待串行网络站点u1,u2,u3的高低压状态切换好回复消息,并完成自身切换并在切换后标记自身切换状态。步骤4,串行总线网络站点u1,u2,u3,发现urt7发送的状态切换命令消息后,各自完成状态切换,在切换到所要求的目标状态后,回复urt7状态切换好回复消息{0xfa,0x08,0xf0,0xaa,0x9c}。步骤5,rt7在收到所有串行总线网络站点回复后,构造1553b总线状态切换好回复消息{0x7,0xaaf0,0x0080,0x0000,0x0000,0x0007,0x5723},放1553b总线通信请求消息{0x1c87,0x0447,0x1256}于发送子地址30的缓冲区中,藉此通过1553b总线将状态切换好回复给rt1,从而完成全部切换过程。实施例中,urt7通过i/o信号来调度u1,u2,u3的信息发送。urt7每50ms(tlocalcomm)通过i/o信号发送一个脉冲来选通一个串行总线站点,u1,u2,u3在检测到串行总线选通信号脉冲时,发送一帧数据到串行总线上。也由于此特征,步骤4中,rt7可以确认高压状态切换好回复消息的信源是来自于哪个串行总线站点。在实施例中,每个串行总线站点的高低压切换状态的最长时间为tlocalswitch=500ms,根据上述说明,对每个串行总线上的站点的选通周期为tlocalcomm=50ms×3=150ms,假设对每个站点切换过程的容忍度n=3,则tlocaltimeout=tlocalswitch+n×tlocalcomm=500ms+3×150ms=950ms。当串行总线中有站点超过所设置的切换时间还没有完成切换时,rt7将对该站点重新发送高压切换命令,并设置同样的等待超时时间,若再次超时还未等到此站点的高压切换好回复,则完成对该站点状态切换的控制,置1553b总线状态切换好消息中标示该站点的相应位为0。如u1站点在重试后依然无法正常完成高压状态切换,则置1553b回复消息为{0x7,0xaaf0,0x0080,0x0000,0x0000,0x0006,0x4522}。本发明未详细描述内容为本领域技术人员公知技术。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1