一种scada系统基于线程冗余的通信容错方法

文档序号:6634589阅读:360来源:国知局
一种scada系统基于线程冗余的通信容错方法
【专利摘要】本发明公开了一种SCADA系统基于线程冗余的通信容错方法,通过线程与系统服务管理进程之间的心跳检测、状态通知交互手段,系统服务管理进程定时检测各冗余线程状态及通信状态,当检测到故障时,系统服务管理进程通知线程进行切换,保证系统与装置的正常通信。本方法解决了传统的双机双网冗余在出现交叉故障时无法正常通信的问题,同时在一般情况下网络流量在多机之间可以灵活和较平均的进行分配,解决了传统的双机双网冗余一台服务器流量过大,另一台却处于空闲的弊端,提高了系统的可靠性和性能。
【专利说明】一种SCADA系统基于线程冗余的通信容错方法

【技术领域】
[0001]本发明涉及电力监控系统专业【技术领域】,涵盖其他工业自动化领域。

【背景技术】
[0002]SCADA(Supervisory Control And Data Acquisit1n)系统,即数据米集与监视控制系统,涉及到组态软件、数据传输链路、通信设备等。SCADA系统可以对现场运行设备进行监视和控制,以实现数据采集、设备控制、测量、参数调节以及各类信号报警等各项功能。
[0003]现有技术,为提高SCADA系统通信可靠性,通常采取双/多机冗余、双网冗余等容错技术,在出现服务器故障、进程故障、通信链路故障时,保证SCADA系统与装置(一般为测控、保护单元或通信管理机等)仍然可以正常通信。
[0004]双/多机冗余是在SCADA系统中配置两台或两台以上服务器(一般称为主备服务器),在每台服务器上都运行通信进程,按预先设定的优先顺序进行切换,一般由一台服务器上的进程提供服务,其他服务器上的进程处于备用状态,当正在提供服务的服务器出现进程故障或服务器故障时,其他备用服务器上的进程由备用状态切换到服务状态,保证在故障情况下,系统与测控、保护单元通信仍然正常,从而提高系统的可靠性。
[0005]双网冗余是在服务器上安装2个网卡或串口,从而提供2个通信链路,服务器上提供服务的通信进程在2个通信链路上可以进行切换,当正在工作的通信链路出现故障时,通信进程可切换到另一个链路正常工作,保证系统的正常通信。
[0006]现有技术中双网冗余缺点:一是由于是进程级的切换机制,通常只有一台服务器上的进程提供服务,其他服务器上的进程处于备用状态,所有通信流量全部集中在一台服务器上;二是无法处理交叉故障,例如当提供服务的服务器发生主网故障,而某台装置发生备网故障,由于服务器和进程运行正常,不会发生切换,因此系统无法实现与备网故障的装置通信;当提供服务的服务器发生备网故障,装置发生主网故障,也同样无法通信。交叉故障示意图参见附图图1说明。


【发明内容】

[0007]针对现有技术中存在的缺点,本发明提出一种基于线程冗余的通信容错方法,通过线程与系统服务管理进程之间的心跳检测、状态通知等交互手段,系统服务管理进程定时检测各冗余线程状态及通信状态,当检测到故障时,系统服务管理进程通知线程进行切换,保证系统与装置的正常通信。
[0008]本发明的一种基于线程冗余的通信容错方法,通过线程与系统服务管理进程之间的心跳检测和状态通知交互信息,系统服务管理进程定时检测冗余线程状态和通信状态,当检测到故障时,系统服务管理进程通知线程进行切换,保证系统与装置的正常通信。
[0009]SCADA系统基于线程冗余的通信容错方法,具体步骤为:
[0010]步骤一、设定SCADA系统线程的冗余切换顺序;
[0011]步骤二、系统进行初始化,通过心跳时间间隔tl定时向系统服务管理进程发送心跳检测,系统服务管理进程获得SCADA系统线程状态;
[0012]步骤三、系统服务管理进程按步骤一预先设定的线程的冗余切换顺序选择首个状态就绪的线程提供服务;
[0013]步骤四、基于故障检测时间间隔t2,定时根据线程的链路状态对提供服务的线程设置线程通信状态并通知系统服务管理进程;
[0014]步骤五、经过间隔时间t3(t3 >t2> &,确保系统服务管理进程检测时能够收到最新线程状态),系统服务管理进程定时检测各线程状态和线程通信状态,如果发现线程故障或线程通信故障就进行切换,否则,不进行切换,等到下个检测周期再检测各线程状态和线程通信状态。
[0015]步骤二具体包括以下步骤:
[0016]SCADA系统的各线程以心跳时间间隔h U1是线程定时向系统服务管理进程发送心跳的时间间隔,h主要作用是在线程或进程崩溃时,系统管理进程能很快发现,可以较小以提高切换速度)定时向系统服务管理进程发送心跳,系统服务管理进程收到心跳报文后返回心跳报文进行确认,并设置线程状态为就绪;系统服务管理进程维护步骤一设定的线程冗余切换顺序为序的线程队列,如果超时未收到心跳报文,则设置线程状态为故障。
[0017]步骤三具体包括以下步骤:系统服务管理进程按照步骤一设定的线程冗余切换顺序,从线程队列中选择首个状态就绪的线程提供服务,系统服务管理进程向首个状态就绪的线程发出开始服务的信号,线程收到信号后进行确认,并开始提供通信服务。
[0018]步骤四具体包括以下步骤:提供服务的线程在故障检测时间间隔t2时刻根据线程的链路状态(链路状态指线程检测出的通信链路正常或故障)设置线程通信状态为通信正常或故障,并将状态发送至系统服务管理进程,系统服务管理进程收到线程通信状态回送状态(回送的状态指系统服务管理进程收到的线程通信状态,收到什么状态回送什么状态)进行确认,如果通信状态发生变化(指正常变故障和故障变正常),将最新的通信状态发送至系统服务管理进程,系统服务管理进程收到线程最新通信状态回送状态进行确认,SCADA系统中处于就绪状态(指系统中处于就绪状态,不提供服务的线程,只有提供服务的线程才可能出现通信状态变化)的线程则保持就绪状态,不提供通信服务;正在提供服务的线程如超时未收到系统服务管理进程回送的心跳报文,则停止通信服务。
[0019]其中t2是系统服务管理进程定时检查线程状态的时间间隔,t2需要线程在该时间间隔内线程能够完成从发起通信连接到通信正常或检测出通信故障,所以故障检测间隔时间&相对心跳时间间隔h较长。
[0020]步骤五检测到的线程的故障包括2种情况:
[0021]第I种情况是系统服务管理进程检测到当前服务的线程故障(超时未收到心跳报文),则进行线程切换,向线程队列中下一个状态就绪的线程发出开始服务的信号,该线程收到信号后进行确认并开始提供通信服务;
[0022]线程故障指当系统服务管理进程超时未收到SCADA系统线程发送的心跳报文。
[0023]第2种情况是系统服务管理进程检测到当前服务的线程通信故障,则向该线程发出退出服务的信号,该线程收到信号后退出服务,然后系统服务管理进程向线程队列中下一个状态就绪的线程发出开始服务的信号,该线程收到信号后进行确认并开始提供通信服务;
[0024]线程通信故障是指系统服务管理进程能够正常收到SCADA系统线程发送的心跳报文,但线程的链路状态为故障;
[0025]正在提供通信服务的线程如超时未收到系统服务管理进程回送的心跳报文,则停止通信服务。
[0026]本发明的有益效果:
[0027]本方法解决了传统的双机双网冗余在出现交叉故障时无法正常通信的问题,同时在一般情况下网络流量在多机之间可以灵活和较平均的进行分配,解决了传统的双机双网冗余一台服务器流量过大,另一台却处于空闲的弊端,提高了系统的可靠性和性能。

【专利附图】

【附图说明】
[0028]图1为现有技术交叉故障示意图;
[0029]图2为本发明SCADA系统基于线程冗余的通信容错方法的流程示意图;
[0030]图3为本发明SCADA系统的线程流程示意图;
[0031]图4为管理服务进程流程示意图。

【具体实施方式】
[0032]下面结合附图和具体实施例对本发明做进一步的描述。
[0033]以双机双网为例对本
【发明内容】
进行说明,在2台服务器上各运行一个通信进程,对于每台装置,每个通信进程有2个通信线程各负责一条通信链路与装置进行通信,负责主服务器主网通信线程命名为TMA,负责主服务器备网通信线程命名为TMB,同理负责备服务器主网通信线程命名为TSA,负责备服务器备网通信线程命名为TSB。
[0034]如图2所示,本实施例SCADA系统基于线程冗余的通信容错方法,具体包括以下步骤,
[0035]第一步,设定SCADA系统线程的冗余切换顺序;
[0036]假设将冗余线程的切换顺序设定为TMA,TMB, TSA, TSB0
[0037]第二步,系统进行初始化,如图3所示,通过心跳时间间隔&定时向系统服务管理进程发送心跳检测,系统服务管理进程获得各线程状态。
[0038]各线程以心跳时间间隔h定时向系统服务管理进程发送心跳,系统服务管理进程收到心跳报文则回送心跳报文进行确认(未收到确认则需要重发,以下所有需要报文确认的过程都是如此),并设置该线程状态为就绪。系统服务管理进程维护一个以步骤一预先设定的线程的冗余切换顺序为序的线程队列,如超时未收到心跳报文,则设置该线程状态为故障。
[0039]第三步,系统服务管理进程按预先设定的切换顺序选择首个状态就绪的线程提供服务。
[0040]系统服务管理进程按照步骤一预先设定的冗余切换顺序,从线程队列中选择首个状态就绪的线程提供服务(如TMA线程状态就绪,按前文假设的顺序为TM),系统服务管理进程向该线程发出开始服务的信号,该线程收到信号后需要进行确认,并开始提供通信服务。
[0041]第四步,提供服务的线程设置线程通信状态并通知系统服务管理进程。
[0042]提供服务的线程在故障检测时间间隔t2时刻,根据链路状态设置线程通信状态为通信正常或故障,并将状态发送至系统服务管理进程,系统服务管理进程收到线程通信状态需要回送状态进行确认,以后如通信状态发生变化,也将最新的通信状态发送至系统服务管理进程,系统服务管理进程收到线程最新通信状态需要回送状态进行确认,其他线程(SCADA系统中处于就绪状态)则保持就绪状态,不提供通信服务。
[0043]正在提供服务的线程如超时未收到系统服务管理进程回送的心跳报文,则停止通信服务。
[0044]如图4所示,第五步,经过时间间隔t3(t3 >t2> ^保证系统服务管理进程检测时能够及时收到最新线程状态),系统服务管理进程定时检测各线程状态和线程通信状态,如发现线程故障或线程通信故障就进行切换。
[0045]第五部检测到的故障分2种情况(线程故障和线程通信故障):
[0046]第I种情况是系统服务管理进程检测到当前服务的线程故障(超时未收到线程心跳报文),则进行切换,向线程队列中下一个状态就绪的线程发出开始服务的信号(假设之前是TMA线程提供服务,且TMB线程为就绪状态,则按顺序切换到TMB线程,否则继续向后寻找,如到达队列末端仍未找到,则回到队列前端循环查找),该线程收到信号后进行确认并开始提供通信服务。
[0047]第2种情况是系统服务管理进程检测到当前服务的线程通信故障,则向该线程发出退出服务的信号,该线程收到信号后退出服务,然后系统服务管理进程向线程队列中下一个状态就绪的线程发出开始服务的信号,该线程收到信号后进行确认并开始提供通信服务。
[0048]正在提供通信服务的线程如超时未收到系统服务管理进程回送的心跳报文,则停止通信服务。
[0049]当发生前文交叉故障时,例如主服务器发生主网故障,装置发生备网故障,假设故障发生前,服务由TMA线程提供服务,TMA线程会检测到通信故障,并通知系统服务管理进程,当经过一个检测周期,系统服务管理进程会发现TMA线程通信故障,然后会发信号通知TMA线程停止服务,并发信号通知TMB线程开始服务,但是TMB线程仍会检测到通信故障并通知服务管理进程,到下一个检测周期,系统服务管理进程会发信号通知TMB线程停止服务,并发信号通知TSA线程开始服务,最终TSA线程会与装置正常通信。
[0050]由于本方法冗余线程切换顺序可自由设置,可以将系统中一部分装置的切换顺序按TMA,TMB, TSA, TSB的顺序设置,另一部分装置的切换顺序按TSA,TSB, TMA, TMB的顺序设置,因此可实现正常情况下通信流量较平均的分配。
[0051]本发明在多个铁路牵引供电监控系统进行了成功应用,实践证明,本发明对提高系统通信的可靠性,有很好的效果。
[0052]以上仅是本发明的优选实施方式,应当指出:对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种SCADA系统基于线程冗余的通信容错方法,其特征在于:通过SCADA系统的线程与系统服务管理进程之间的心跳检测和状态通知交互信息,系统服务管理进程定时检测冗余线程状态和通信状态,当检测到故障时,系统服务管理进程通知线程进行切换。
2.根据权利要求1所述的一种SCADA系统基于线程冗余的通信容错方法,其特征在于,所述SCADA系统基于线程冗余的通信容错方法,具体步骤为: 步骤一、设定SCADA系统线程的冗余切换顺序; 步骤二、系统进行初始化,通过心跳时间间隔tl定时向系统服务管理进程发送心跳检测,系统服务管理进程获得SCADA系统线程状态; 步骤三、系统服务管理进程按步骤一设定的线程的冗余切换顺序选择首个状态就绪的线程提供服务; 步骤四、基于故障检测时间间隔t2,定时根据链路状态对提供服务的线程设置线程通信状态并通知系统服务管理进程; 步骤五、经过间隔时间丨3,系统服务管理进程定时检测线程状态和线程通信状态,如果检测到线程故障或线程通信故障进行线程切换,否则,等到下次检测周期检测线程状态和线程通信状态。
3.根据权利要求2所述的一种SCADA系统基于线程冗余的通信容错方法,其特征在于,?β 。
4.根据权利要求2所述的一种SCADA系统基于线程冗余的通信容错方法,其特征在于:所述步骤二具体包括以下步骤: SCADA系统各线程以心跳时间间隔tl定时向系统服务管理进程发送心跳,系统服务管理进程收到心跳报文后返回心跳报文进行确认,并设置线程状态为就绪;系统服务管理进程维护以步骤一设定的切换顺序为序的线程队列,如果超时未收到心跳报文,则设置线程状态为故障。
5.根据权利要求2所述的一种SCADA系统基于线程冗余的通信容错方法,其特征在于:所述步骤三,系统服务管理进程按照步骤一设定的线程冗余切换顺序,从线程队列中选择首个状态就绪的线程提供服务,系统服务管理进程向所述首个状态就绪的线程发出开始服务的信号,所述线程收到开始服务的信号后进行确认,并开始提供通信服务。
6.根据权利要求2所述的一种SCADA系统基于线程冗余的通信容错方法,其特征在于:步骤四具体包括以下步骤:提供服务的线程在故障检测时间间隔t2时刻,根据链路状态设置线程通信状态为通信正常或故障,并将线程通信状态发送至系统服务管理进程,系统服务管理进程收到线程通信状态回送状态进行确认,如果通信状态发生变化,将最新的通信状态发送至系统服务管理进程,系统服务管理进程收到线程最新通信状态回送状态进行确认,SCADA系统中处于就绪状态的线程保持就绪状态。
7.根据权利要求2所述的一种SCADA系统基于线程冗余的通信容错方法,其特征在于:所述步骤五检测到线程故障或者线程服务故障,具体进行以下处理: 当系统服务管理进程超时未收到SCADA系统线程发送的心跳报文,则为线程故障,系统服务管理进程检测到当前服务的线程故障,进行线程切换,向线程队列中下一个状态就绪的线程发出开始服务的信号,所述下一个状态就绪的线程收到信号后进行确认并开始提供通信服务; 系统服务管理进程检测到当前服务的线程通信故障,向所述通信故障的线程发出退出服务的信号,所述线程收到信号后退出服务,系统服务管理进程向线程队列中下一个状态就绪的线程发出开始服务的信号,所述一个状态就绪的线程收到信号后进行确认并开始提供通信服务; 正在提供通信服务的线程如果超时未收到系统服务管理进程回送的心跳报文,则停止通信服务。
【文档编号】G06F11/16GK104317679SQ201410655841
【公开日】2015年1月28日 申请日期:2014年11月17日 优先权日:2014年11月17日
【发明者】刘志超, 包德梅, 颜儒彬, 李佑文, 罗存, 王志心, 岳以洋, 褚红建 申请人:国电南京自动化股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1