一种工业控制器的调度方法及装置与流程

文档序号:24790549发布日期:2021-04-23 13:42阅读:158来源:国知局
一种工业控制器的调度方法及装置与流程

1.本发明涉及工业控制技术领域,特别是涉及一种工业控制器的调度方法及装置。


背景技术:

2.工业控制系统是计算机设备与工艺过程控制设备相结合的自动控制系统,其中,工业控制器是工业控制系统中的重要组成部分。工业控制器可由1个fpga(field programmable gate array,可编程门阵列芯片)和多个执行体构成,其中,执行体可以为mcu(microcontroller unit,单片机),mcu统一由fpga进行调度。fpga收集工业现场数据分发给每个mcu,mcu根据现场数据进行运算处理,并将运算后生成的输出数据发送给fpga,由fpga传输至工业现场设备,形成对工业现场的闭环控制。
3.但是,随着工业控制器与外部网络的连接日益紧密、频繁,以及通信协议和系统平台趋于开放化和标准化,工业控制器的网络安全事故呈现出不断增加的趋势。目前,对工业控制器的网络安全攻击主要为差模攻击和共模攻击,其中,差模攻击指的是同一时刻只有一个执行体被攻击;共模攻击指的是同一时刻有两个及以上执行体被攻击。通常,工业控制器中包含3个执行体,采用比较执行体输出数据的传统方法,可以对差模攻击进行完全防御。但是,面对共模攻击就会发生攻击逃逸现象,尤其是3个执行体同时遭遇共模攻击时,甚至会对已经发生的攻击毫无察觉且无法恢复。例如,3个执行体同时被共模攻击后,输出数据一致,通过比较三个执行体的输出数据并不能察觉出攻击已经发生,而此时传输至现场设备的数据已经是异常的数据。


技术实现要素:

4.本发明实施例中提供了一种工业控制器的调度方法及装置,以解决现有技术中无法防御共模攻击的问题。
5.为了解决上述技术问题,本发明实施例公开了如下技术方案:一种工业控制器的调度方法,所述工业控制器由4个执行体构成,所述方法包括:在所有执行体中随机调度3个执行体进入工作状态;监测工作的执行体中是否存在异常执行体,并记录监测次数,如果工作的执行体中存在异常执行体,将一个异常执行体调出工作状态;如果工作的执行体中不存在异常执行体,判断监测次数是否达到预设值;若监测次数达到预设值,在工作的执行体中随机选取一个作为异常执行体调出工作状态,并且,将监测次数归零重新记录;若监测次数没有达到预设值,重新监测工作的执行体中是否存在异常执行体,并记录监测次数;对调出的异常执行体进行清洗操作;所述异常执行体在完成清洗操作之后恢复为正常执行体,并作为下一次调度过程中待工作的执行体;判断待工作的执行体是否为在上一次调度过程中完成清洗操作的正常执行体,如果否,将待工作的执行体调入工作状态;重新监测工作的执行体中是否存在异
常执行体,并记录监测次数;如果是,将待工作的所述正常执行体调入工作状态;利用所述正常执行体对其他工作中的执行体进行判定以及调度。
6.可选地,所述监测工作的执行体中是否存在异常执行体,并记录监测次数,包括:分别获取每一个工作执行体当前的输出数据;判断是否存在当前输出数据与其他工作执行体当前输出数据均不相等的执行体,如果是,将所述当前输出数据不相等的执行体确定为异常执行体;记录监测次数,每判断一次工作中执行体当前的输出数据是否相等,监测次数的值增加1。
7.可选地,所述将一个异常执行体调出工作状态,包括:判断所述异常执行体的数量是否大于1,如果是,在所有异常执行体中随机选取一个,将选取出的异常执行体调出工作状态;如果否,将所述异常执行体调出工作状态。
8.可选地,所述对调出的异常执行体进行清洗操作,包括:将异常执行体的运行逻辑和状态恢复成初始状态;将恢复成初始状态的执行体确定为正常执行体。
9.可选地,所述利用所述正常执行体对其他工作中的执行体进行判定以及调度,包括:分别获取每一个工作执行体当前的输出数据;在工作的执行体中,判断是否存在当前输出数据与正常执行体当前输出数据不相等的执行体,如果存在,将不相等的所述执行体确定为异常执行体;判断所述异常执行体的数量是否大于1,如果是,在所述异常执行体中随机选取一个调出工作状态,并且,对选取出的异常执行体进行清洗操作;如果否,将所述异常执行体调出工作状态,并且,对所述异常执行体进行清洗操作;将待工作的正常执行体调入工作状态;重新执行分别获取每一个工作执行体当前的输出数据的步骤以及后续步骤,直至所有工作执行体当前的输出数据均相等为止。
10.一种工业控制器的调度装置,应用于由4个执行体构成的工业控制器,所述装置包括:执行体调度模块,用于在所有执行体中随机调度3个执行体进入工作状态;监测和记录模块,用于监测工作的执行体中是否存在异常执行体,并记录监测次数,调出模块,用于在工作的执行体中存在异常执行体时,将一个异常执行体调出工作状态;监测次数判断模块,用于在工作的执行体中不存在异常执行体时,判断监测次数是否达到预设值;
所述调出模块,还用于在监测次数达到预设值时,在工作的执行体中随机选取一个作为异常执行体调出工作状态,并且,将监测次数归零重新记录;所述监测和记录模块,还用于在监测次数没有达到预设值时,重新监测工作的执行体中是否存在异常执行体,并记录监测次数;清洗模块,用于对调出的异常执行体进行清洗操作;所述异常执行体在完成清洗操作之后恢复为正常执行体,并作为下一次调度过程中待工作的执行体;待工作执行体判断模块,用于判断待工作的执行体是否为在上一次调度过程中完成清洗操作的正常执行体,调入模块,用于在待工作的执行体不是在上一次调度过程中完成清洗操作的正常执行体时,将待工作的执行体调入工作状态;所述调入模块,还用于在待工作的执行体是在上一次调度过程中完成清洗操作的正常执行体时,将待工作的所述正常执行体调入工作状态;反向判定及调度模块,用于利用所述正常执行体对其他工作中的执行体进行判定以及调度。
11.可选地,所述监测和记录模块,包括:输出数据获取子模块,用于分别获取每一个工作执行体当前的输出数据;输出数据比较子模块,用于判断是否存在当前输出数据与其他工作执行体当前输出数据均不相等的执行体,异常执行体确定子模块,用于当存在当前输出数据与其他工作执行体当前输出数据均不相等的执行体时,将所述当前输出数据不相等的执行体确定为异常执行体;监测次数记录子模块,用于记录监测次数,每判断一次工作中执行体当前的输出数据是否相等,监测次数的值增加1。
12.可选地,所述清洗模块,包括:初始状态恢复子模块,用于将异常执行体的运行逻辑和状态恢复成初始状态;正常执行体确定子模块,用于将恢复成初始状态的执行体确定为正常执行体。
13.可选地,所述反向判定及调度模块,包括:输出数据获取子模块,用于分别获取每一个工作执行体当前的输出数据;输出数据比较子模块,用于在工作的执行体中,判断是否存在当前输出数据与正常执行体当前输出数据不相等的执行体,异常执行体确定子模块,用于当存在当前输出数据与正常执行体当前输出数据不相等的执行体时,将不相等的所述执行体确定为异常执行体;异常执行体数量判断子模块,用于判断所述异常执行体的数量是否大于1,调出及清洗子模块,用于在异常执行体的数量大于1时,在所述异常执行体中随机选取一个调出工作状态,并且,对选取出的异常执行体进行清洗操作;所述调出及清洗子模块,还用于在异常执行体的数量不大于1时,将所述异常执行体调出工作状态,并且,对所述异常执行体进行清洗操作;正常执行体调入子模块,用于将待工作的正常执行体调入工作状态。
14.由以上技术方案可见,本发明实施例提供的工业控制器的调度方法及装置,首先监测工作的执行体中是否存在异常执行体;然后,将异常执行体调出工作状态,进行清洗操
作;最终,利用清洗后的正常执行体对工作中的其他执行体进行判定及调度,以将共模攻击转化为差模攻击,直至最终彻底移除差模攻击,使工作中的执行体全部为正常执行体。
15.另外,为避免工作中执行体同时遭遇共模攻击,本发明实施例中采用记录监测次数的方式,若监测次数达到预设值时,工作的执行体中仍然不存在异常执行体,则随机选取一个工作中的执行体假设为异常执行体,将其调出工作状态,并进行清洗操作,最终利用清洗后的正常执行体对工作中的其他执行体进行判定和调度,从而有效防御针对所有工作中执行体的共模攻击。
附图说明
16.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
17.图1为本发明实施例提供的一种工业控制器的调度方法的流程示意图;图2为本发明实施例提供的一种图1中步骤s102的流程示意图;图3为本发明实施例提供的一种图1中步骤s110的流程示意图;图4为本发明实施例提供的一种工业控制器的调度装置的结构示意图。
具体实施方式
18.为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
19.图1为本发明公开的一种工业控制器的调度方法流程示意图,在本发明公开的实施例中,工业控制器由4个执行体构成,执行体可以为任何能够完成具体功能的实体单元,例如,mcu。如图1所示,该工业控制器的调度方法包含以下步骤。
20.步骤s101:在所有执行体中随机调度3个执行体进入工作状态。
21.在4个执行体中随机选取3个进入工作状态,进行3取2的择多裁决。在本发明公开的一个实施例中,可利用随机函数选取该3个执行体。例如,工业控制器中的执行体分别为a、b、c和d,随机选取a、b、和c进入工作状态。
22.步骤s102:监测工作的执行体中是否存在异常执行体,并记录监测次数。
23.持续监测工作中的3个执行体,判断其中是否存在异常执行体。监测次数的初始值为0,每监测一次,监测次数增加1,并且,在监测次数达到一定数量后清零,重新记录监测次数。在本发明公开的实施例中,异常执行体当前的输出数据与其他工作中执行体当前的输出数据均不相等。
24.在本发明公开的一个实施例中,如图2所示,可根据以下步骤监测工作的执行体中是否存在异常执行体。
25.步骤s1021:分别获取每一个工作执行体当前的输出数据。
26.分别获取3个工作中执行体在当前时刻的输出数据。例如,执行体a在当前时刻的
输出数据可以为1234567890。
27.步骤s1022:判断是否存在当前输出数据与其他工作执行体当前输出数据均不相等的执行体。
28.判断在工作的执行体中,是否存在某一个或某几个执行体,其在当前时刻的输出数据与其他工作中执行体在当前时刻的输出数据不相等。
29.如果存在当前输出数据与其他工作执行体当前输出数据均不相等的执行体,即,工作的执行体中,存在一个或多个执行体在当前时刻的输出数据与其他工作中执行体在当前时刻的输出数据不相等,则执行步骤s1023。
30.步骤s1023:将当前输出数据不相等的执行体确定为异常执行体。
31.例如,工作中的执行体为a、b和c,其中,a在当前时刻的输出数据为1234567890,b在当前时刻的输出数据为1234567890,而c在当前时刻的输出数据为2930578349。a与b相等,但c与a、b均不相等,则将c确定为异常执行体。
32.又例如,工作中的执行体为a、b和c,其中,a在当前时刻的输出数据为1234567890,b在当前时刻的输出数据为5938275390,而c在当前时刻的输出数据为2930578349,a、b、c三者间均不相等,则将a、b和c均确定为异常执行体。
33.如果不存在当前输出数据与其他工作执行体当前输出数据均不相等的执行体,则重新执行步骤s1021。
34.步骤s1024;记录监测次数,每判断一次工作中执行体当前的输出数据是否相等,监测次数的值增加1。
35.记录监测次数,每次在判断是否存在当前输出数据与其他工作执行体当前输出数据均不相等的执行体之后,将监测次数的值增加1。在本发明公开的一个实施例中,当监测次数达到预设值后,将监测次数的值清零,并重新开始记录。
36.如果执行步骤s102之后,监测到工作的执行体中存在异常执行体,则执行步骤s103;如果工作的执行体中不存在异常执行体,则执行步骤s104。
37.步骤s103:将一个异常执行体调出工作状态。
38.在监测到工作中的执行体中有异常执行体后,将一个异常执行体调出工作状态。在本发明公开的实施例中,本步骤可采用以方式完成。
39.1)判断异常执行体的数量是否大于1。
40.当遭遇共模攻击时,工作执行体中可能会出现一个或多个执行体发生异常的情况。例如,3个工作的执行体,可能会出现一个执行体发生异常的情况,也可能会出现三个执行体均发生异常的情况。因此,在本发明公开的实施例中,判断处于工作状态的异常执行体的数量是否大于1,并在异常执行体的数量大于1时,逐个对异常执行体进行处理。
41.如果异常执行体的数量大于1,则在所有异常执行体中随机选取一个,将选取出的异常执行体调出工作状态,即,使异常执行体停止工作。然后,对该选取出的异常执行体进行清洗操作,使其恢复为正常执行体。
42.例如,工作的执行体a、b和c中,a、b和c均为异常执行体,则在三者中随机选取一个,例如c,将c调出工作状态,并在后续步骤中对c进行清洗操作,使其恢复为正常执行体。
43.如果异常执行体的数量不大于1,说明此时异常执行体只有一个,则将该异常执行体调出工作状态,并且,对该异常执行体进行清洗操作,使其恢复为正常执行体。
44.例如,工作的执行体a、b和c中,c为异常执行体,则将c调出工作状态,并在后续步骤中对c进行清洗操作,使其恢复为正常执行体。
45.如果工作的执行体中不存在异常执行体,执行步骤s104。
46.步骤s104:判断监测次数是否达到预设值。
47.每次在监测工作的执行体中是否存在异常执行体时,均记录监测次数。监测次数的初始值为0,每监测一次,监测次数的值增加1,并在监测次数达到预设值后清零,重新记录监测次数。
48.若监测次数达到预设值,例如,预设值可以为60,即监测工作的执行体中是否存在异常执行体达到60次,则执行步骤s105。
49.步骤s105:在工作的执行体中随机选取一个作为异常执行体调出工作状态,并且,将监测次数归零重新记录。
50.为避免工作中的执行体全部遭遇共模攻击,即三个执行体同时被攻击,令三个执行体的输出数据一致但都不正确,在本发明公开的实施例中,当监测次数达到预设值时,从工作的执行体中随机选取一个,假设其为异常执行体调出工作状态,并进行清洗操作,利用清洗后的正常执行体判定工作中的其他执行体是否为异常执行体。
51.并且,在监测次数达到预设值时,将监测次数归零,重新记录。下一次监测工作执行体中是否存在异常执行体时,监测次数的值增加1,即下一次监测时,监测次数的值为1,如此继续记录,直至监测次数又达到预设值,再次重新记录。
52.如果监测次数没有达到预设值,则继续执行步骤s102以及后续步骤。
53.执行完成步骤s103或者步骤s105之后,执行步骤s106:对调出的异常执行体进行清洗操作。
54.按照上述步骤s103或者步骤s105中的方式调出一个异常执行体之后,对该调出工作状态的异常执行体进行清洗操作,异常执行体在完成清洗操作之后恢复为正常执行体,并作为下一次调度过程中待工作的执行体。在本发明公开的一个实施例中,可按照以下子步骤完成对异常执行体的清洗操作。
55.1)将异常执行体的运行逻辑和状态恢复成初始状态。
56.2)将恢复成初始状态的执行体确定为正常执行体。
57.完成一次清洗操作的时间不超过两次监测异常执行体之间的间隔时间,例如,完成两次监测异常执行体的操作之间相隔10秒,而完成一次清洗操作的时间为5秒,这样可以保证在下一次监测异常执行体时,上一次调度过程中发现的异常执行体已完成清洗操作,从而可在下一次调度过程中作为待工作的执行体。在本发明公开的实施例中,将从一个执行体被调出工作状态,到将另一个执行体补充调入工作状态的过程,作为一次调度操作。
58.在异常执行体调出工作状态之后,工作中的执行体仅剩两个,为保证工作中的执行体数量为三个,将待工作的执行体补充进入工作状态。因此,在本发明公开的实施例中,在将异常执行体调出工作状态之后,同时执行步骤s106和步骤s107。
59.步骤s107:判断待工作的执行体是否为在上一次调度过程中完成清洗操作的正常执行体。
60.异常执行体完成清洗操作后恢复为正常执行体,将其调度进入待工作状态,并作为下一次调度操作时待工作的执行体。将一个异常执行体调出工作状态后,工作中的执行
体只剩下两个,在本发明公开的实施例中,需要使三个执行体同时处于工作状态,因此,此时需要将待工作的执行体补充进入工作状态。
61.判断待工作的执行体是否为在上一次调度过程中完成清洗操作的正常执行体。如果否,则执行步骤s108。
62.步骤s108:将待工作的执行体调入工作状态。
63.例如,工作的执行体为a、b和c,c作为异常执行体被调出工作状态,此时,需要选取待工作的执行体d替代c继续工作,若待工作的执行体d不是在上一次调度过程中完成清洗操作的正常执行体,则不能确定该执行体是否正常,因此,将该执行体调入工作状态进行工作后,还需要重新执行步骤s102以及后续步骤。
64.如果待工作的执行体是在上一次调度过程中完成清洗操作的正常执行体,则执行步骤s109:将待工作的正常执行体调入工作状态。
65.例如,将不确定是否为正常执行体的执行体d调入工作状态后,重新判断工作的执行体中是否存在异常执行体,若得知a和b当前的输出数据相等,而d当前的输出数据与a和b均不相等,则将d作为异常数据调出工作状态并进行清洗操作,当前,待工作的执行体c已经是在上一次调度过程中完成清洗操作的正常执行体,因此,将正常执行体c调入工作状态。
66.步骤s110:利用正常执行体对其他工作中的执行体进行判定以及调度。
67.由于正常执行体的输出数据是正确的,因此,将正常执行体调入工作状态中后,即可判别出工作中的其他两个执行体是否为异常执行体,若其他两个执行体中有一个异常执行体,则将该异常执行体调出工作状态并进行清洗操作;若其他两个执行体均为异常执行体,则逐个调出工作状态并进行清洗操作。
68.在利用正常执行体完成对其他工作中执行体的判定以及调度后,工作中的执行体应全部为正常执行体。继续监测工作的执行体中是否存在异常执行体,并记录监测次数,以持续防御差模攻击和共模攻击。
69.在本发明公开的实施例中,如图3所示,步骤s110可由以下子步骤完成。
70.步骤s1101:分别获取每一个工作执行体当前的输出数据。
71.获取包括正常执行体在内的,每一个工作中执行体当前的输出数据。
72.步骤s1102:在工作的执行体中,判断是否存在当前输出数据与正常执行体当前输出数据不相等的执行体。
73.将正常执行体调入工作状态中之后,可根据该正常执行体判定工作中的其他执行体是否发生异常,若工作中某执行体当前的输出数据与正常执行体当前的输出数据不相等,则执行步骤s1103:将不相等的执行体确定为异常执行体,需要对其进行清洗操作;若工作中某执行体当前的输出数据与正常执行体当前的输出数据相等,则可确认该执行体为正常执行体,可继续工作。
74.在工作的执行体中,若不存在当前输出数据与正常执行体当前输出数据不相等的执行体,说明剩余的两个工作执行体都是正常执行体,此时工作中的执行体均正常,重新执行步骤s102,继续监测工作的执行体有没有再次遭遇攻击。
75.在执行步骤s1103之后,继续执行步骤s1104。
76.步骤s1104:判断异常执行体的数量是否大于1。
77.此时,可能两个执行体中只有一个为异常执行体,也可能两个执行体均为异常执
行体。在本发明公开的实施例中,若存在异常执行体,则判断异常执行体的数量是否大于1,即,判断剩余的两个工作中的执行体是否均为异常执行体。
78.如果是,则执行步骤s1105:在异常执行体中随机选取一个调出工作状态,并且,对选取出的异常执行体进行清洗操作。
79.在本发明公开的实施例中,若剩余两个工作中执行体均为异常执行体,则逐个对其进行清洗操作。在这两个异常执行体中随机选取出一个,按照前述实施例中的方法,将其调出工作状态,并且,对其进行清洗操作。该异常执行体在完成清洗操作后恢复为正常执行体,并作为下一次调度过程中待工作的执行体。
80.如果异常执行体的数量不大于1,即,异常执行体的数量为1,则执行步骤s1106:将异常执行体调出工作状态,并且,对异常执行体进行清洗操作。
81.按照前述实施例中的方法,将该异常执行体调出工作状态,并对其进行清洗操作。
82.将异常执行体调出工作状态的同时,执行步骤s1107,将待工作的正常执行体调入工作状态。
83.此时,待工作执行体是上一次调度过程中已完成清洗操作的正常执行体,将该待工作执行体调入工作状态。并且,继续执行步骤s1101及后续步骤,直至所有工作中执行体当前的输出数据均相等为止。若仍存在异常执行体处于工作状态,则可在下一次调度过程中,将该异常执行体调出工作状态,同样,把已完成清洗操作的正常执行体调入工作状态。此时,工作中的三个执行体均为正常执行体,实现逐个清洗异常执行体,以及使工作中执行体均为正常执行体的目标。
84.传统的工业控制器都是由单执行体组成,不需要进行调度操作,即使是安全系统中的工业控制器,也只是包含3个执行体,只能实现简单的择多裁决,没有调度机制,无法对执行体进行清洗操作,更不能利用清洗过的执行体判别工作中的异常执行体,同样,在工作中执行体的输出数据持续相等时,无法通过假设其中一个执行体是异常执行体的方式,排除工作中执行体是否遭受共模攻击。而本发明公开的实施例中,工业控制器包含4个执行体,可通过本发明公开的调度方法,有效防御差模攻击和共模攻击。
85.下面以两个实例说明前述实施例中的步骤。
86.实例一,以a和b遭遇共模攻击为例:利用随机函数从4个执行体a、b、c和d中选取3个执行体a、b和c进行监测,并记录监测次数。分别获取a、b和c当前的输出数据,其中a和b当前的输出数据相等,而c当前的输出数据与a和b均不相等。此时,将c作为异常执行体调出工作状态,并进行清洗操作;同时判断待工作的执行体d是否为在上一次调度过程中完成清洗操作的正常执行体,d并非在上一次调度过程中完成清洗操作的正常执行体,将d调入工作状态。
87.重新监测a、b和d当前的输出数据是否相等,但是d当前的输出数据与a和b均不相等,因此,将d作为异常执行体调出工作状态,并进行清洗操作。由于待工作的执行体c为上一次调度过程中完成清洗操作的正常执行体,将c调入工作状态,利用c对a和b进行调度,判断a和b当前的输出数据是否与c当前的输出数据相等,由于c是清洗后的正常执行体,已经被攻击的a和b当前的输出数据必然与c当前的输出数据不相等,从而可确定a和b均为异常执行体。
88.此时异常执行体的数量为大于1,因此从a和b中随机选取a调出工作状态并进行清
洗操作,将已经完成清洗操作的待工作执行体d调入工作状态,重新判断工作的执行体中是否存在当前输出数据与正常执行体当前输出数据不相等的执行体。由于c和d均为刚刚清洗过的正常执行体,因此c和d当前的输出数据必然相等,而异常执行体b当前的输出数据与c和d均不相等,此时异常执行体的数量为1,将b调出工作状态,并进行清洗操作。同时,将已经完成清洗操作的待工作正常执行体a调入工作状态,从而处于工作状态的所有执行体都为正常执行体。
89.实例二,以a、b和c同时遭遇共模攻击为例:若a、b和c当前的输出数据一直相等,也不能排除a、b和c已经遭遇共模攻击,三者输出数据相同但都已经是出现错误的数据,因此,当监测次数未达到预设值60时,仍然继续监测工作中执行体是否存在异常执行体,但当监测次数达到预设值60时,在工作的执行体中随机选取c作为异常执行体调出工作状态,并且,使监测次数归零重新记录。将d调入工作状态,如果d为正常执行体,那么d的输出数据必然和a、b不相等。因此,将d调出工作状态进行清洗,并将c调入工作状态。
90.若a、b和c同时遭遇共模攻击,则c在清洗后的输出数据和a、b均不相等,按照与上述说明相似的方法即可判断a、b和c是否遭遇共模攻击,并逐个进行清洗操作。
91.图4为本发明实施例公开的一种工业控制器的调度装置,应用于由4个执行体构成的工业控制器,如图4所示,该装置包括以下模块。
92.执行体调度模块11,被配置为在所有执行体中随机调度3个执行体进入工作状态;监测和记录模块12,被配置为监测工作的执行体中是否存在异常执行体,并记录监测次数,调出模块13,被配置为在工作的执行体中存在异常执行体时,将一个异常执行体调出工作状态;监测次数判断模块14,被配置为在工作的执行体中不存在异常执行体时,判断监测次数是否达到预设值;调出模块13,还被配置为在监测次数达到预设值时,在工作的执行体中随机选取一个作为异常执行体调出工作状态,并且,将监测次数归零重新记录;监测和记录模块12,还被配置为在监测次数没有达到预设值时,重新监测工作的执行体中是否存在异常执行体,并记录监测次数;清洗模块15,被配置为对调出的异常执行体进行清洗操作;异常执行体在完成清洗操作之后恢复为正常执行体,并作为下一次调度过程中待工作的执行体;待工作执行体判断模块16,被配置为判断待工作的执行体是否为在上一次调度过程中完成清洗操作的正常执行体,调入模块17,被配置为在待工作的执行体不是在上一次调度过程中完成清洗操作的正常执行体时,将待工作的执行体调入工作状态;调入模块17,还被配置为在待工作的执行体是在上一次调度过程中完成清洗操作的正常执行体时,将待工作的正常执行体调入工作状态;反向判定及调度模块18,被配置为利用正常执行体对其他工作中的执行体进行判定以及调度。
93.在本发明公开的一个实施例中,前述实施例中的监测和记录模块12,包括:
输出数据获取子模块,被配置为分别获取每一个工作执行体当前的输出数据;输出数据比较子模块,被配置为判断是否存在当前输出数据与其他工作执行体当前输出数据均不相等的执行体,异常执行体确定子模块,被配置为当存在当前输出数据与其他工作执行体当前输出数据均不相等的执行体时,将当前输出数据不相等的执行体确定为异常执行体;监测次数记录子模块,被配置为记录监测次数,每判断一次工作中执行体当前的输出数据是否相等,监测次数的值增加1。
94.在本发明公开的一个实施例中,前述实施例中的清洗模块15,包括:初始状态恢复子模块,被配置为将异常执行体的运行逻辑和状态恢复成初始状态;正常执行体确定子模块,被配置为将恢复成初始状态的执行体确定为正常执行体。
95.在本发明公开的一个实施例中,前述实施例中的反向判定及调度模块18,包括:输出数据获取子模块,被配置为分别获取每一个工作执行体当前的输出数据;输出数据比较子模块,被配置为用于在工作的执行体中,判断是否存在当前输出数据与正常执行体当前输出数据不相等的执行体,异常执行体确定子模块,被配置为当存在当前输出数据与正常执行体当前输出数据不相等的执行体时,将不相等的执行体确定为异常执行体;异常执行体数量判断子模块,被配置为判断异常执行体的数量是否大于1,调出及清洗子模块,被配置为在异常执行体的数量大于1时,在异常执行体中随机选取一个调出工作状态,并且,对选取出的异常执行体进行清洗操作;调出及清洗子模块,还被配置为在异常执行体的数量不大于1时,将异常执行体调出工作状态,并且,对异常执行体进行清洗操作;正常执行体调入子模块,被配置为将待工作的正常执行体调入工作状态。
96.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
97.以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1