CN104317679B - 一种scada系统基于线程冗余的通信容错方法 - Google Patents
一种scada系统基于线程冗余的通信容错方法 Download PDFInfo
- Publication number
- CN104317679B CN104317679B CN201410655841.6A CN201410655841A CN104317679B CN 104317679 B CN104317679 B CN 104317679B CN 201410655841 A CN201410655841 A CN 201410655841A CN 104317679 B CN104317679 B CN 104317679B
- Authority
- CN
- China
- Prior art keywords
- thread
- management process
- communication
- state
- service management
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Maintenance And Management Of Digital Transmission (AREA)
Abstract
本发明公开了一种SCADA系统基于线程冗余的通信容错方法,通过线程与系统服务管理进程之间的心跳检测、状态通知交互手段,系统服务管理进程定时检测各冗余线程状态及通信状态,当检测到故障时,系统服务管理进程通知线程进行切换,保证系统与装置的正常通信。本方法解决了传统的双机双网冗余在出现交叉故障时无法正常通信的问题,同时在一般情况下网络流量在多机之间可以灵活和较平均的进行分配,解决了传统的双机双网冗余一台服务器流量过大,另一台却处于空闲的弊端,提高了系统的可靠性和性能。
Description
技术领域
本发明涉及电力监控系统专业技术领域,涵盖其他工业自动化领域。
背景技术
SCADA(SupervisoryControlAndDataAcquisition)系统,即数据采集与监视控制系统,涉及到组态软件、数据传输链路、通信设备等。SCADA系统可以对现场运行设备进行监视和控制,以实现数据采集、设备控制、测量、参数调节以及各类信号报警等各项功能。
现有技术,为提高SCADA系统通信可靠性,通常采取双/多机冗余、双网冗余等容错技术,在出现服务器故障、进程故障、通信链路故障时,保证SCADA系统与装置(一般为测控、保护单元或通信管理机等)仍然可以正常通信。
双/多机冗余是在SCADA系统中配置两台或两台以上服务器(一般称为主备服务器),在每台服务器上都运行通信进程,按预先设定的优先顺序进行切换,一般由一台服务器上的进程提供服务,其他服务器上的进程处于备用状态,当正在提供服务的服务器出现进程故障或服务器故障时,其他备用服务器上的进程由备用状态切换到服务状态,保证在故障情况下,系统与测控、保护单元通信仍然正常,从而提高系统的可靠性。
双网冗余是在服务器上安装2个网卡或串口,从而提供2个通信链路,服务器上提供服务的通信进程在2个通信链路上可以进行切换,当正在工作的通信链路出现故障时,通信进程可切换到另一个链路正常工作,保证系统的正常通信。
现有技术中双网冗余缺点:一是由于是进程级的切换机制,通常只有一台服务器上的进程提供服务,其他服务器上的进程处于备用状态,所有通信流量全部集中在一台服务器上;二是无法处理交叉故障,例如当提供服务的服务器发生主网故障,而某台装置发生备网故障,由于服务器和进程运行正常,不会发生切换,因此系统无法实现与备网故障的装置通信;当提供服务的服务器发生备网故障,装置发生主网故障,也同样无法通信。交叉故障示意图参见附图图1说明。
发明内容
针对现有技术中存在的缺点,本发明提出一种基于线程冗余的通信容错方法,通过线程与系统服务管理进程之间的心跳检测、状态通知等交互手段,系统服务管理进程定时检测各冗余线程状态及通信状态,当检测到故障时,系统服务管理进程通知线程进行切换,保证系统与装置的正常通信。
本发明的一种基于线程冗余的通信容错方法,通过线程与系统服务管理进程之间的心跳检测和状态通知交互信息,系统服务管理进程定时检测冗余线程状态和通信状态,当检测到故障时,系统服务管理进程通知线程进行切换,保证系统与装置的正常通信。
SCADA系统基于线程冗余的通信容错方法,具体步骤为:
步骤一、设定SCADA系统线程的冗余切换顺序;
步骤二、系统进行初始化,通过心跳时间间隔t1定时向系统服务管理进程发送心跳检测,系统服务管理进程获得SCADA系统线程状态;
步骤三、系统服务管理进程按步骤一预先设定的线程的冗余切换顺序选择首个状态就绪的线程提供服务;
步骤四、基于故障检测时间间隔t2,定时根据线程的链路状态对提供服务的线程设置线程通信状态并通知系统服务管理进程;
步骤五、经过间隔时间t3(t3>t2>t1,确保系统服务管理进程检测时能够收到最新线程状态),系统服务管理进程定时检测各线程状态和线程通信状态,如果发现线程故障或线程通信故障就进行切换,否则,不进行切换,等到下个检测周期再检测各线程状态和线程通信状态。
步骤二具体包括以下步骤:
SCADA系统的各线程以心跳时间间隔t1(t1是线程定时向系统服务管理进程发送心跳的时间间隔,t1主要作用是在线程或进程崩溃时,系统管理进程能很快发现,可以较小以提高切换速度)定时向系统服务管理进程发送心跳,系统服务管理进程收到心跳报文后返回心跳报文进行确认,并设置线程状态为就绪;系统服务管理进程维护步骤一设定的线程冗余切换顺序为序的线程队列,如果超时未收到心跳报文,则设置线程状态为故障。
步骤三具体包括以下步骤:系统服务管理进程按照步骤一设定的线程冗余切换顺序,从线程队列中选择首个状态就绪的线程提供服务,系统服务管理进程向首个状态就绪的线程发出开始服务的信号,线程收到信号后进行确认,并开始提供通信服务。
步骤四具体包括以下步骤:提供服务的线程在故障检测时间间隔t2时刻根据线程的链路状态(链路状态指线程检测出的通信链路正常或故障)设置线程通信状态为通信正常或故障,并将状态发送至系统服务管理进程,系统服务管理进程收到线程通信状态回送状态(回送的状态指系统服务管理进程收到的线程通信状态,收到什么状态回送什么状态)进行确认,如果通信状态发生变化(指正常变故障和故障变正常),将最新的通信状态发送至系统服务管理进程,系统服务管理进程收到线程最新通信状态回送状态进行确认,SCADA系统中处于就绪状态(指系统中处于就绪状态,不提供服务的线程,只有提供服务的线程才可能出现通信状态变化)的线程则保持就绪状态,不提供通信服务;正在提供服务的线程如超时未收到系统服务管理进程回送的心跳报文,则停止通信服务。
其中t2是系统服务管理进程定时检查线程状态的时间间隔,t2需要线程在该时间间隔内线程能够完成从发起通信连接到通信正常或检测出通信故障,所以故障检测间隔时间t2相对心跳时间间隔t1较长。
步骤五检测到的线程的故障包括2种情况:
第1种情况是系统服务管理进程检测到当前服务的线程故障(超时未收到心跳报文),则进行线程切换,向线程队列中下一个状态就绪的线程发出开始服务的信号,该线程收到信号后进行确认并开始提供通信服务;
线程故障指当系统服务管理进程超时未收到SCADA系统线程发送的心跳报文。
第2种情况是系统服务管理进程检测到当前服务的线程通信故障,则向该线程发出退出服务的信号,该线程收到信号后退出服务,然后系统服务管理进程向线程队列中下一个状态就绪的线程发出开始服务的信号,该线程收到信号后进行确认并开始提供通信服务;
线程通信故障是指系统服务管理进程能够正常收到SCADA系统线程发送的心跳报文,但线程的链路状态为故障;
正在提供通信服务的线程如超时未收到系统服务管理进程回送的心跳报文,则停止通信服务。
本发明的有益效果:
本方法解决了传统的双机双网冗余在出现交叉故障时无法正常通信的问题,同时在一般情况下网络流量在多机之间可以灵活和较平均的进行分配,解决了传统的双机双网冗余一台服务器流量过大,另一台却处于空闲的弊端,提高了系统的可靠性和性能。
附图说明
图1为现有技术交叉故障示意图;
图2为本发明SCADA系统基于线程冗余的通信容错方法的流程示意图;
图3为本发明SCADA系统的线程流程示意图;
图4为管理服务进程流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步的描述。
以双机双网为例对本发明内容进行说明,在2台服务器上各运行一个通信进程,对于每台装置,每个通信进程有2个通信线程各负责一条通信链路与装置进行通信,负责主服务器主网通信线程命名为TMA,负责主服务器备网通信线程命名为TMB,同理负责备服务器主网通信线程命名为TSA,负责备服务器备网通信线程命名为TSB。
如图2所示,本实施例SCADA系统基于线程冗余的通信容错方法,具体包括以下步骤,
第一步,设定SCADA系统线程的冗余切换顺序;
假设将冗余线程的切换顺序设定为TMA,TMB,TSA,TSB。
第二步,系统进行初始化,如图3所示,通过心跳时间间隔t1定时向系统服务管理进程发送心跳检测,系统服务管理进程获得各线程状态。
各线程以心跳时间间隔t1定时向系统服务管理进程发送心跳,系统服务管理进程收到心跳报文则回送心跳报文进行确认(未收到确认则需要重发,以下所有需要报文确认的过程都是如此),并设置该线程状态为就绪。系统服务管理进程维护一个以步骤一预先设定的线程的冗余切换顺序为序的线程队列,如超时未收到心跳报文,则设置该线程状态为故障。
第三步,系统服务管理进程按预先设定的切换顺序选择首个状态就绪的线程提供服务。
系统服务管理进程按照步骤一预先设定的冗余切换顺序,从线程队列中选择首个状态就绪的线程提供服务(如TMA线程状态就绪,按前文假设的顺序为TMA),系统服务管理进程向该线程发出开始服务的信号,该线程收到信号后需要进行确认,并开始提供通信服务。
第四步,提供服务的线程设置线程通信状态并通知系统服务管理进程。
提供服务的线程在故障检测时间间隔t2时刻,根据链路状态设置线程通信状态为通信正常或故障,并将状态发送至系统服务管理进程,系统服务管理进程收到线程通信状态需要回送状态进行确认,以后如通信状态发生变化,也将最新的通信状态发送至系统服务管理进程,系统服务管理进程收到线程最新通信状态需要回送状态进行确认,其他线程(SCADA系统中处于就绪状态)则保持就绪状态,不提供通信服务。
正在提供服务的线程如超时未收到系统服务管理进程回送的心跳报文,则停止通信服务。
如图4所示,第五步,经过时间间隔t3(t3>t2>t1保证系统服务管理进程检测时能够及时收到最新线程状态),系统服务管理进程定时检测各线程状态和线程通信状态,如发现线程故障或线程通信故障就进行切换。
第五部检测到的故障分2种情况(线程故障和线程通信故障):
第1种情况是系统服务管理进程检测到当前服务的线程故障(超时未收到线程心跳报文),则进行切换,向线程队列中下一个状态就绪的线程发出开始服务的信号(假设之前是TMA线程提供服务,且TMB线程为就绪状态,则按顺序切换到TMB线程,否则继续向后寻找,如到达队列末端仍未找到,则回到队列前端循环查找),该线程收到信号后进行确认并开始提供通信服务。
第2种情况是系统服务管理进程检测到当前服务的线程通信故障,则向该线程发出退出服务的信号,该线程收到信号后退出服务,然后系统服务管理进程向线程队列中下一个状态就绪的线程发出开始服务的信号,该线程收到信号后进行确认并开始提供通信服务。
正在提供通信服务的线程如超时未收到系统服务管理进程回送的心跳报文,则停止通信服务。
当发生前文交叉故障时,例如主服务器发生主网故障,装置发生备网故障,假设故障发生前,服务由TMA线程提供服务,TMA线程会检测到通信故障,并通知系统服务管理进程,当经过一个检测周期,系统服务管理进程会发现TMA线程通信故障,然后会发信号通知TMA线程停止服务,并发信号通知TMB线程开始服务,但是TMB线程仍会检测到通信故障并通知服务管理进程,到下一个检测周期,系统服务管理进程会发信号通知TMB线程停止服务,并发信号通知TSA线程开始服务,最终TSA线程会与装置正常通信。
由于本方法冗余线程切换顺序可自由设置,可以将系统中一部分装置的切换顺序按TMA,TMB,TSA,TSB的顺序设置,另一部分装置的切换顺序按TSA,TSB,TMA,TMB的顺序设置,因此可实现正常情况下通信流量较平均的分配。
本发明在多个铁路牵引供电监控系统进行了成功应用,实践证明,本发明对提高系统通信的可靠性,有很好的效果。
以上仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (2)
1.一种SCADA系统基于线程冗余的通信容错方法,其特征在于:通过SCADA系统的线程与系统服务管理进程之间的心跳检测和状态通知交互信息,系统服务管理进程定时检测冗余线程状态和通信状态,当检测到故障时,系统服务管理进程通知线程进行切换;
所述SCADA系统基于线程冗余的通信容错方法,具体步骤为:
步骤一、设定SCADA系统线程的冗余切换顺序;
步骤二、系统进行初始化,通过心跳时间间隔t1定时向系统服务管理进程发送心跳检测,系统服务管理进程获得SCADA系统线程状态;
步骤三、系统服务管理进程按步骤一设定的线程的冗余切换顺序选择首个状态就绪的线程提供服务;
步骤四、基于故障检测时间间隔t2,定时根据链路状态对提供服务的线程设置线程通信状态并通知系统服务管理进程;
步骤五、经过间隔时间t3,系统服务管理进程定时检测线程状态和线程通信状态,如果检测到线程故障或线程通信故障进行线程切换,否则,等到下次检测周期检测线程状态和线程通信状态;
所述步骤二具体包括以下步骤:
SCADA系统各线程以心跳时间间隔t1定时向系统服务管理进程发送心跳,系统服务管理进程收到心跳报文后返回心跳报文进行确认,并设置线程状态为就绪;系统服务管理进程维护以步骤一设定的切换顺序为序的线程队列,如果超时未收到心跳报文,则设置线程状态为故障;
所述步骤三,系统服务管理进程按照步骤一设定的线程冗余切换顺序,从线程队列中选择首个状态就绪的线程提供服务,系统服务管理进程向所述首个状态就绪的线程发出开始服务的信号,所述线程收到开始服务的信号后进行确认,并开始提供通信服务;
步骤四具体包括以下步骤:提供服务的线程在故障检测时间间隔t2时刻,根据链路状态设置线程通信状态为通信正常或故障,并将线程通信状态发送至系统服务管理进程,系统服务管理进程收到线程通信状态回送状态进行确认,如果通信状态发生变化,将最新的通信状态发送至系统服务管理进程,系统服务管理进程收到线程最新通信状态回送状态进行确认,SCADA系统中处于就绪状态的线程保持就绪状态;
所述步骤五检测到线程故障或者线程服务故障,具体进行以下处理:
当系统服务管理进程超时未收到SCADA系统线程发送的心跳报文,则为线程故障,系统服务管理进程检测到当前服务的线程故障,进行线程切换,向线程队列中下一个状态就绪的线程发出开始服务的信号,所述下一个状态就绪的线程收到信号后进行确认并开始提供通信服务;
系统服务管理进程检测到当前服务的线程通信故障,向所述通信故障的线程发出退出服务的信号,所述线程收到信号后退出服务,系统服务管理进程向线程队列中下一个状态就绪的线程发出开始服务的信号,所述一个状态就绪的线程收到信号后进行确认并开始提供通信服务;
正在提供通信服务的线程如果超时未收到系统服务管理进程回送的心跳报文,则停止通信服务。
2.根据权利要求1所述的一种SCADA系统基于线程冗余的通信容错方法,其特征在于,t3>t2>t1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410655841.6A CN104317679B (zh) | 2014-11-17 | 2014-11-17 | 一种scada系统基于线程冗余的通信容错方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410655841.6A CN104317679B (zh) | 2014-11-17 | 2014-11-17 | 一种scada系统基于线程冗余的通信容错方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104317679A CN104317679A (zh) | 2015-01-28 |
CN104317679B true CN104317679B (zh) | 2016-06-08 |
Family
ID=52372914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410655841.6A Active CN104317679B (zh) | 2014-11-17 | 2014-11-17 | 一种scada系统基于线程冗余的通信容错方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104317679B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105072021B (zh) * | 2015-08-11 | 2018-02-13 | 国电南瑞科技股份有限公司 | 一种调度自动化系统跨网段的消息转发方法 |
CN105404287B (zh) * | 2015-12-27 | 2018-02-06 | 彭晔 | 基于心跳协议的数据采集与监控系统的控制切换方法 |
CN108181800A (zh) * | 2017-12-21 | 2018-06-19 | 曙光信息产业(北京)有限公司 | 一种冗余装置以及控制方法 |
CN109992436A (zh) * | 2017-12-29 | 2019-07-09 | 华为技术有限公司 | 线程阻塞检测方法及设备 |
CN109218096A (zh) * | 2018-09-19 | 2019-01-15 | 新智能源系统控制有限责任公司 | 一种基于主备冗余的scada实时库访问系统 |
EP3702857B1 (en) * | 2019-03-01 | 2024-07-24 | ABB Schweiz AG | Redundancy in a network centric process control system |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101090308A (zh) * | 2007-07-06 | 2007-12-19 | 华为技术有限公司 | 一种心跳通信方法与系统 |
CN101551764A (zh) * | 2009-02-27 | 2009-10-07 | 北京时代民芯科技有限公司 | 基于同步冗余线程与编码技术的抗单粒子效应系统及方法 |
CN102833095A (zh) * | 2012-08-10 | 2012-12-19 | 南京南瑞继保电气有限公司 | 一种多专业、大容量实时数据采集方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7577868B2 (en) * | 2005-09-30 | 2009-08-18 | Lockheed Martin Corporation | No data loss IT disaster recovery over extended distances |
-
2014
- 2014-11-17 CN CN201410655841.6A patent/CN104317679B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101090308A (zh) * | 2007-07-06 | 2007-12-19 | 华为技术有限公司 | 一种心跳通信方法与系统 |
CN101551764A (zh) * | 2009-02-27 | 2009-10-07 | 北京时代民芯科技有限公司 | 基于同步冗余线程与编码技术的抗单粒子效应系统及方法 |
CN102833095A (zh) * | 2012-08-10 | 2012-12-19 | 南京南瑞继保电气有限公司 | 一种多专业、大容量实时数据采集方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104317679A (zh) | 2015-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104317679B (zh) | 一种scada系统基于线程冗余的通信容错方法 | |
CN100534024C (zh) | 基于工业以太网的故障处理方法、系统及一种交换设备 | |
CN102170342B (zh) | 一种高冗余配置下的iec104通信主备切换方法 | |
CN103057572B (zh) | 一种主备机的控制切换方法 | |
US20140372805A1 (en) | Self-healing managed customer premises equipment | |
CN102882704B (zh) | 一种issu的软重启升级过程中的链路保护方法和设备 | |
CN103401696A (zh) | 一种工业设备中的双网络冗余通讯系统及通讯方法 | |
CN109842505A (zh) | 一种云端集群故障处理方法及装置 | |
CN101267392B (zh) | 一种上行链路状态切换时通知下游设备的实现方法 | |
CN103227725A (zh) | 一种防火墙双机备份的方法及装置 | |
WO2016095344A1 (zh) | 链路切换方法、装置及线卡 | |
CN102026042A (zh) | 一种高级电信计算架构控制面的保活、自愈方法和装置 | |
CN111475386B (zh) | 一种故障预警方法及相关装置 | |
CN101436938A (zh) | 停止/恢复端口收发业务的方法、系统及交换设备 | |
CN103036724B (zh) | 状态信息传输方法、网络设备及组合设备 | |
CN107026780A (zh) | 一种基于物联网的配电光纤环网故障点定位方法及系统 | |
CN105743565A (zh) | 一种光传送网的保护倒换方法及装置 | |
CN101237355B (zh) | 实现业务监控的方法和网络监控装置 | |
CN104486262B (zh) | 基于交换机芯片实现Dying Gasp的控制方法及装置 | |
CN104202193B (zh) | 分布式保护链路故障检测的方法 | |
CN102638369B (zh) | 一种主备倒换的仲裁方法、装置和系统 | |
CN205427464U (zh) | 可自动恢复冗余的冗余控制系统 | |
CN103731292A (zh) | 一种实现服务器故障无缝恢复的容错方法 | |
JP2011166514A (ja) | パケット中継装置及び障害診断方法 | |
CN103684831A (zh) | L2tp网络的保护方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |