一种数据同步方法及装置与流程

文档序号:17397724发布日期:2019-04-13 00:57阅读:178来源:国知局
一种数据同步方法及装置与流程

本发明涉及但不限于通信技术领域,尤其涉及一种数据同步方法及装置。



背景技术:

工业控制系统运行时,有些重要场合需要采用冗余系统的方式工作,即当一套系统工作时,另外一套系统作为备份系统,处于工作状态的系统的一些数据需要及时备份到备份系统(或称冗余系统)上。当正在工作的系统发生故障时,可以迅速切换到备份系统继续运行,从而实现整个控制系统的不间断运行,维持了系统的正常运行状态。系统在切换时,切换速度的快慢,是否无抖切换,是需要考虑的关键因素。

目前,市场上的工业控制系统的产品的实现,大部分在同步数据时,采用系统运行时,定时同步全数据的方式,这种数据同步方法效率较低,导致发生切换时,切换的时间较长。



技术实现要素:

本发明实施例提供了一种数据同步方法及装置,能够提高数据同步的效率进而减少主备切换时的切换时长。

本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种数据同步方法,包括:

将数据区划分为多个数据块;

将任务划分为多个程序块,在相邻的程序块之间插入数据同步点;

当任务运行至数据同步点时,执行主系统和备份系统之间的同步操作。

在一实施例中,所述将数据区划分为多个数据块,包括:

将所述数据区划分为系统数据区和用户数据区,将用户数据区划分为一个或多个任务数据区及一个全局数据区,将每个任务数据区划分为一个或多个程序块私有数据区及一个任务内全局数据区;

将所述各个系统数据区、全局数据区、任务内全局数据区及程序块私有数据区划分为多个所述数据块。

在一实施例中,所述程序块运行时,可访问其对应的所述程序块私有数据块、所述任务内全局数据区和所述全局数据区。

在一实施例中,所述方法还包括:检测写数据的操作,标记写入的数据所在数据块待同步;

所述执行主系统和备份系统之间的同步操作,包括:将所述主系统中标记为待同步的数据块的数据备份至所述备份系统,并标记所述数据块已同步。

在一实施例中,所述程序块运行期间内不允许被除所述程序块之外的任务抢占。

在另一实施例中,所述程序块运行期间内允许被比所述程序块优先级高的任务抢占。

在一实施例中,所述方法还包括:

当发生主备系统切换时,所述备份系统从最近一次执行所述同步操作的所述数据同步点之后的所述程序块开始运行。

本发明实施例还提供了一种数据同步装置,包括划分模块和执行模块,其中:

划分模块,用于将数据区划分为多个数据块,将任务划分为多个程序块,在相邻的程序块之间插入数据同步点;

执行模块,用于当任务运行至数据同步点时,执行主系统和备份系统之间的同步操作。

在一实施例中,所述划分模块的将数据区划分为多个数据块,包括:

将所述数据区划分为系统数据区和用户数据区,将用户数据区划分为一个或多个任务数据区及一个全局数据区,将每个任务数据区划分为一个或多个程序块私有数据区及一个任务内全局数据区;

将所述各个系统数据区、全局数据区、任务内全局数据区及程序块私有数据区划分为多个所述数据块。

在一实施例中,所述程序块运行时,可访问其对应的所述程序块私有数据块、所述任务内全局数据区和所述全局数据区。

在一实施例中,所述执行模块还用于:检测写数据的操作,标记写入的数据所在数据块待同步;

当执行所述主系统和备份系统之间的同步操作时,将标记为待同步的数据块的数据备份至备份系统,并标记所述数据块已同步。

在一实施例中,所述程序块运行期间内不允许被除所述程序块之外的任务抢占。

在另一实施例中,所述程序块运行期间内允许被比所述程序块优先级高的任务抢占。

在一实施例中,所述数据同步装置还包括切换模块,其中:当发生主备系统切换时,从最近一次执行所述同步操作的所述数据同步点之后的所述程序块开始运行。

本发明实施例的技术方案,具有如下有益效果:

本发明实施例提供的数据同步方法及装置,通过将数据区划分为数据块,将任务划分成程序块,在相邻的程序块之间插入数据同步点,执行同步操作时,主备系统可以只同步当前运行的程序块对应的数据块的数据,提高了数据同步的效率,进而减少了发生主备切换时的切换时长;

进一步地,通过检测写数据操作,每次只同步数据发生变化的数据块,进一步减小了需要同步的数据量,从而缩短了数据同步的时间。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例的一种数据同步方法的流程示意图;

图2为本发明实施例的一种数据区的划分结构示意图;

图3为本发明实施例的一种数据区内数据块和数据索引对应关系示意图;

图4为本发明实施例的一种程序块对数据区的访问控制示意图;

图5为本发明实施例的一种程序块和数据同步点的关系示意图;

图6为本发明实施例的一种写数据到数据区的流程示意图;

图7为本发明实施例的一种同步数据的流程示意图;

图8为本发明实施例的一种任务切换流程示意图;

图9为本发明实施例的另一种任务切换流程示意图;

图10为本发明实施例的一种数据同步装置的结构示意图;

图11为本发明实施例的另一种数据同步装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

如图1所示,根据本发明实施例的一种数据同步方法,包括:

步骤101:将数据区划分为多个数据块;

需要说明的是,本发明实施例的数据同步方法可以运行在主系统上,也可以运行在备份系统上。

在本发明的一实施例中,所述将数据区划分为多个数据块,包括:

将所述数据区划分为系统数据区和用户数据区,将用户数据区划分为一个或多个任务数据区及一个全局数据区,将每个任务数据区划分为一个或多个程序块私有数据区及一个任务内全局数据区;

将所述各个系统数据区、全局数据区、任务内全局数据区及程序块私有数据区划分为多个所述数据块。

如图2所示,将待同步的数据划分为两个区,系统数据区和用户数据区;用户数据区存储的是执行用户的逻辑程序时访问的数据,系统数据区存储的是控制器内部数据,即非用户数据区的数据;

将用户数据区划分为任务数据区和全局数据区;任务数据区内的数据,分别属于每一个任务所有,每个任务仅能访问该任务所对应的数据区,全局数据区的数据每个任务都可以访问;

每个任务数据区划分为任务内局部数据区和任务内全局数据区;将任务内局部数据区划分为一个或多个程序块私有数据区。其中,n和m均为大于或等于1的自然数。

本发明实施例通过将数据区划分成多个层次后,一定时间间隔内数据的变化将集中在较小的地址范围内。

如图3所示,将每个最小单位的数据区划分为多个数据块后,为每个数据块建立一个对应的索引值。

步骤102:将任务划分为多个程序块,在相邻的程序块之间插入数据同步点;

在本发明的一实施例中,所述任务包括系统任务和用户任务,所述系统任务为系统软件中定义的任务,所述用户任务为用户编写的逻辑程序中定义的任务。

在本实施例的一示例中,所述用户任务为国际电工委员会(internationalelectrotechnicalcommission,iec)任务。

iec颁布了对可编程逻辑控制器(programmablelogiccontroller,plc)的规定:可编程控制器是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算,顺序控制,定时,计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程,是工业控制的核心部分。

在本发明的一实施例中,所述程序块运行时,可访问其对应的程序块私有数据块、任务内全局数据区和全局数据区。

如图4所示,程序块私有数据区内的数据,分别属于每一个程序块所有,每个程序块仅能访问该程序块所对应的程序块私有数据区,该任务内的每个程序块都可以访问任务内全局数据区的数据。每个程序块都可以访问全局数据区的数据。

如图5所示,将系统的每个任务划分为多个程序块,在程序块之间插入数据同步点。各个程序块对应一个程序块私有数据区。

步骤103:当主系统运行至任务的数据同步点时,执行主系统和备份系统之间的同步操作。

本发明实施例提供的数据同步方法,通过将数据区划分为数据块,将任务划分成程序块,在相邻的程序块之间插入数据同步点,执行同步操作时,主备系统可以只同步当前运行的程序块对应的数据块的数据,提高了数据同步的效率,进而减少了发生主备切换时的切换时长。

在本发明的一实施例中,所述方法还包括:检测写数据的操作,标记写入的数据所在数据块待同步;

所述执行主系统和备份系统之间的同步操作,包括:将标记为待同步的数据块的数据备份至备份系统,并标记所述数据块已同步。

如图6所示,当检测到写数据操作时,记录该写入的数据的地址,将该数据的地址换算成所在数据块的索引,并标记所述所在数据块的索引对应的状态为“已写”,然后写数据到数据区。

如图7所示,当执行主系统和备份系统之间的同步操作时,遍历主系统中的数据块索引,找到标记为“已写”状态的数据块,将找到的数据块的数据同步到备份系统,将已完成同步的数据块索引标记为“已同步”状态,检测所有数据块是否已同步完成,如果已完成,则同步操作结束,如果未完成,则继续循环执行所述同步操作。本发明实施例仅将变化的数据块通过同步操作备份到备份系统。

需要说明的是,在本发明实施例中,所述检测写数据的操作,可以通过硬件检测的方法或者软件检测的方法。当采用硬件检测时,例如现场可编程门阵列(fieldprogrammablegatearray,fpga),数据区位于硬件可以检测的地址范围内,硬件检测到写操作的指令后,将数据的地址转换成对应的数据块索引并作标记。当采用软件检测时,写数据操作为一个函数调用,在函数中将数据的地址转换成对应的数据块索引并作标记。

在本发明的一实施例中,所述同步操作不允许被其它任务打断。

在本发明的一实施例中,多个任务运行时,如果要保证程序块运行期间数据的一致性,则在一程序块运行期间内不允许除该程序块以外的任务抢占。

在本发明的另一实施例中,所述程序块运行期间内允许被比所述程序块优先级高的任务抢占,此时只保证执行期间未被打断的任务的数据同步时的一致性。

如图8所示,任务1比任务2优先级高,在t1时刻,任务1在任务2的程序块1后的“数据同步点”抢占任务2运行。在t2时刻,任务1运行结束,任务2继续运行。程序块执行期间不允许任务切换,每个任务的数据在同步时均保证一致性。如图9所示,任务1比任务2优先级高,在t1时刻,任务1在任务2的程序块1运行过程中抢占任务2运行。在t2时刻,任务1运行结束,任务2继续程序块1的运行。程序块执行期间允许任务切换,仅保证执行期间未被打断的任务的数据同步时的一致性;低优先级的任务的数据的一致性由程序设计保证。

在本发明的一实施例中,所述方法还包括:

当发生主备系统切换时,所述备份系统从最近一次执行所述同步操作的所述数据同步点之后的所述程序块开始运行。

本发明实施例还提供了一种数据同步装置,包括划分模块1001和执行模块1002,其中:

划分模块1001,用于将数据区划分为多个数据块,将任务划分为多个程序块,在相邻的程序块之间插入数据同步点;

执行模块1002,用于当任务运行至数据同步点时,执行主系统和备份系统之间的同步操作。

需要说明的是,本发明实施例的数据同步装置可以运行在主系统上,也可以运行在备份系统上。本发明实施例提供的数据同步装置,通过将数据区划分为数据块,将任务划分成程序块,在相邻的程序块之间插入数据同步点,执行同步操作时,主备系统可以只同步当前运行的程序块对应的数据块的数据,提高了数据同步的效率,进而减少了发生主备切换时的切换时长。

在本发明的一实施例中,所述划分模块1001的将数据区划分为多个数据块,包括:

将所述数据区划分为系统数据区和用户数据区,将用户数据区划分为一个或多个任务数据区及一个全局数据区,将每个任务数据区划分为一个或多个程序块私有数据区及一个任务内全局数据区;

将所述各个系统数据区、全局数据区、任务内全局数据区及程序块私有数据区划分为多个所述数据块。

如图2所示,将待同步的数据划分为两个区,系统数据区和用户数据区;用户数据区存储的是执行用户的逻辑程序时访问的数据,系统数据区存储的是控制器内部数据,即非用户数据区的数据;

将用户数据区划分为任务数据区和全局数据区;任务数据区内的数据,分别属于每一个任务所有,每个任务仅能访问该任务所对应的数据区,全局数据区的数据每个任务都可以访问;

每个任务数据区划分为任务内局部数据区和任务内全局数据区;将任务内局部数据区划分为一个或多个程序块私有数据区。

如图3所示,将每个最小单位的数据区划分为多个数据块后,每个数据块对应一个索引。

在本发明的一实施例中,所述任务包括系统任务和用户任务,所述系统任务为系统软件中定义的任务,所述用户任务为用户编写的逻辑程序中定义的任务。

在本实施例的一示例中,所述用户任务为iec任务。

在本实施例的一示例中,所述程序块运行时,可访问其对应的程序块私有数据块、任务内全局数据区和全局数据区。

如图4所示,程序块私有数据区内的数据,分别属于每一个程序块所有,每个程序块仅能访问该程序块所对应的程序块私有数据区,该任务内的每个程序块都可以访问任务内全局数据区的数据。每个程序块都可以访问全局数据区的数据。

如图5所示,将系统的每个任务划分为多个程序块,在程序块之间插入数据同步点。

在本发明的一实施例中,所述执行模块1002还用于:

检测写数据的操作,标记写入的数据所在数据块待同步;

当执行所述主系统和备份系统之间的同步操作时,将标记为待同步的数据块的数据备份至备份系统,并标记所述数据块已同步。

如图6所示,当所述执行模块1002检测到写数据操作时,记录该写入的数据的地址,将该数据的地址换算成所在数据块的索引,并标记所述所在数据块的索引对应的状态为“已写”,然后写数据到数据区。

如图7所示,所述执行模块1002执行同步操作时,遍历数据块索引,找到标记为“已写”状态的数据块,将找到的数据块的数据同步到备份系统,将已完成同步的数据块索引标记为“已同步”状态,检测所有数据块是否已同步完成,如果已完成,则同步操作结束,如果未完成,则继续循环执行所述同步操作。本发明实施例仅将变化的数据块通过同步操作备份到备份系统。

需要说明的是,在本发明实施例中,所述执行模块1002检测写数据的操作,可以通过硬件检测的方法或者软件检测的方法。当采用硬件检测时,例如fpga,数据区位于硬件可以检测的地址范围内,所述执行模块1002通过硬件检测到写操作的指令后,将数据的地址转换成对应的数据块索引并作标记。当采用软件检测时,写数据操作为一个函数调用,所述执行模块1002在函数中将数据的地址转换成对应的数据块索引并作标记。

在本发明的一实施例中,所述同步操作不允许被其它任务打断。

在本发明的一实施例中,多个任务运行时,如果要保证程序块运行期间数据的一致性,则在一程序块运行期间内不允许除该程序块以外的任务抢占。

在本发明的另一实施例中,所述程序块运行期间内允许被比所述程序块优先级高的任务抢占,此时只保证执行期间未被打断的任务的数据同步时的一致性。

如图8所示,任务1比任务2优先级高,在t1时刻,任务1在任务2的程序块1后的“数据同步点”抢占任务2运行。在t2时刻,任务1运行结束,任务2继续运行。程序块执行期间不允许任务切换,每个任务的数据在同步时均保证一致性。如图9所示,任务1比任务2优先级高,在t1时刻,任务1在任务2的程序块1运行过程中抢占任务2运行。在t2时刻,任务1运行结束,任务2继续程序块1的运行。程序块执行期间允许任务切换,仅保证执行期间未被打断的任务的数据同步时的一致性;低优先级的任务的数据的一致性由程序设计保证。

在本发明的一实施例中,如图11所示,所述数据同步装置还包括切换模块1003,其中:

所述切换模块1003,用于当发生主备系统切换时,从最近一次执行所述同步操作的所述数据同步点之后的所述程序块开始运行。

本发明实施例提供了一种在冗余系统间快速同步数据的方法。如图2和图4所示,将待同步的数据划分为两个区,系统数据区和用户数据区,此处的用户数据区可以为iec数据区,iec数据区存储的是iec运算时访问的数据。系统数据存储的为控制器内部数据,即非iec数据区的数据;

将iec数据区划分为任务数据区和全局数据区;任务数据区内的数据,分别属于每一个任务所有,每个任务仅能访问该任务所对应的数据区,全局数据区的数据每个任务都可以访问;

每个任务数据区划分为任务内局部数据区和任务内全局数据区;将任务内局部数据区划分为一个或多个程序块私有数据区,程序块私有数据区内的数据,分别属于每一个程序块所有,每个程序块仅能访问该程序块所对应的程序块私有数据区,该任务内的每个程序块都可以访问任务内全局数据区的数据。每个程序块都可以访问全局数据区的数据。

如图3所示,将每一个最小单位的数据区划分为多个数据块,每个数据块对应一个索引;

如图5所示,将每个任务划分为多个程序块,在程序块之间插入数据同步点,此处的任务包括系统任务和iec任务。

如图6所示,当检测到写数据操作时,记录该数据所在数据块的索引。所述检测写数据的操作,可以采用两种方法。一种采用硬件检测方法(比如fpga),数据区位于硬件可以检测的地址范围内,硬件检测到写操作的指令后,将数据的地址转换成对应的数据块索引并作标记。另一种采用软件检测方法,写数据操作为一个函数调用,在函数中将数据的地址转换成对应的数据块索引并作标记。

在程序运行到数据同步点时,系统执行同步操作,将数据同步到备份系统。如图7所示,执行同步操作时仅将变化的数据块通过同步操作备份到备份系统。数据同步操作不允许被其他任务打断。

多个任务运行时,如果要保证该程序运行期间数据的一致性,则在该程序块运行期间内不允许任务抢占,否则只保证执行期间未被打断的任务的数据同步时的一致性。如图8所示,任务1比任务2优先级高,在t1时刻,任务1在任务2的程序块1后的“数据同步点”抢占任务2运行。在t2时刻,任务1运行结束,任务2继续运行。程序块执行期间不允许任务切换,每个任务的数据在同步时均保证一致性。如图9所示,任务1比任务2优先级高,在t1时刻,任务1在任务2的程序块1运行过程中抢占任务2运行。在t2时刻,任务1运行结束,任务2继续程序块1的运行。程序块执行期间允许任务切换,仅保证执行期间未被打断的任务的数据同步时的一致性;低优先级的任务的数据的一致性由程序设计保证。

发生切换后,备份系统将从最近一次收到的数据同步点之后的程序开始接替运行;

采用本发明实施例的数据同步方法和装置实现的工业控制系统,通过将数据区划分成多个数据块,将任务划分成多个程序块运行,每个程序块后插入数据同步点,执行同步操作时,主备系统可以只同步当前运行的程序块对应的数据块的数据,缩短了同步数据的时间间隔,减小了每次需要同步的数据量,从而减小了切换后备份系统接替运行需要的时间;通过检测写数据操作,每次同步时仅同步有内容发生变化的数据块,进一步减小了需要同步的数据量,缩短了数据同步的时间,提高了系统的可靠性。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1