CN110663006A - 工业可编程逻辑控制器的弹性故障转移 - Google Patents
工业可编程逻辑控制器的弹性故障转移 Download PDFInfo
- Publication number
- CN110663006A CN110663006A CN201780091166.0A CN201780091166A CN110663006A CN 110663006 A CN110663006 A CN 110663006A CN 201780091166 A CN201780091166 A CN 201780091166A CN 110663006 A CN110663006 A CN 110663006A
- Authority
- CN
- China
- Prior art keywords
- plc
- input
- plcs
- output module
- failover
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/052—Linking several PLC's
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/058—Safety, monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1641—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Automation & Control Theory (AREA)
- Software Systems (AREA)
- Programmable Controllers (AREA)
Abstract
一种在自动化环境中对可编程逻辑控制器(PLC)执行故障转移并控制物理系统的方法,包括输入/输出模块从现场设备接收传感器输入,并为第一PLC库中的第一组PLC创建传感器输入的副本。输入/输出模块将传感器输入的副本传送到第一组PLC中的每个PLC,并且响应于传送传感器输入的副本,从第一组PLC中的每个PLC接收处理结果。输入/输出模块确定从第一组PLC中的每个PLC接收的处理结果之间是否存在任何不一致。如果从第一组PLC中的每个PLC接收的处理结果之间存在任何不一致,则通过向第二输入/输出模块发送故障转移控制消息来启动故障转移控制过程。
Description
技术领域
本发明总体上涉及可编程逻辑控制器的弹性故障转移。所公开的技术可应用于例如各种自动化生产环境,其中使用诸如可编程逻辑控制器(PLC)和分布式控制系统(DCS)的工业控制器。
背景技术
可编程逻辑控制器(PLC)是一种专用的计算机控制系统,该计算机控制系统被配置成执行软件,该软件收集关于输入设备状态的数据以控制输出设备的状态。PLC通常包括三个主要元件:处理器(可包括易失性存储器)、包括应用程序的易失性存储器以及用于连接到自动化系统中其他设备的一个或多个输入/输出(I/O)端口。作为过程控制的一部分,PLC被用于从各种输入点(输入传感器)监测输入信号,其报告受控过程中发生的事件和条件。例如,PLC可监测诸如电机速度、温度、压力、体积流量等输入条件。控制程序存储在PLC的存储器中,以指示PLC在遇到特定输入信号或条件时采取什么措施。响应于输入传感器提供的这些输入信号,PLC导出并生成输出信号,该输出信号经由PLC输出点传输到各种输出设备,诸如致动器和继电器,以控制过程。例如,PLC发出输出信号以加速或减速输送机、旋转机器人的手臂、打开或关闭继电器、升高或降低温度以及许多其他不胜枚举的可能控制功能。
上面提到的输入点和输出点通常分别与输入模块和输出模块关联。输入模块和输出模块在本文中统称为I/O模块。本领域技术人员另选地将此类I/O模块称为I/O卡或I/O板。在某些情况下,可以与使用高级语言对PLC进行编程的方式类似的方式来对这些I/O模块进行编程。
PLC必须对错误和故障具有弹性。这些故障可由硬件、软件和输入引起。常规的弹性PLC架构依赖于冗余硬件,在PLC发生故障的情况下,另一个PLC会接管执行并保证系统和控制的连续性。对PLC网络安全的关注也日益增加,因为网络攻击可导致PLC发生错误并触发弹性机制。无论故障是如何产生的,当前的弹性PLC都使用相同的二进制文件。如果故障导致第一个PLC崩溃,则也有可导致备用PLC崩溃。当前,还没有针对这些所谓的“关联”故障进行保护的机制。
发明内容
本发明的实施方式通过提供为可编程逻辑控制器提供与弹性故障转移技术有关的方法、系统和装置,解决并克服上述缺点和不足中的一个或多个。更具体地,本文描述的技术描述了一种故障转移架构,其利用多个库或组的可编程逻辑控制器(PLC),从而允许一个库的PLC进行故障转移到第二库的PLC。另外,在一些实施方式中,在冗余PLC架构的实例中的每一个中,PLC软件的二进制文件被随机化。由于PLC实例执行不同的二进制文件,因此整个系统在网络攻击方面比常规系统具有更强的弹性。
根据一些实施方式,一种在自动化环境中对PLC执行故障转移并控制物理系统的方法包括:I/O模块,其从现场设备接收传感器输入并为第一PLC库中的第一组PLC创建传感器输入的副本。I/O模块将传感器输入的副本传送到第一组PLC中的每个PLC,并且响应于传送传感器输入的副本,从第一组PLC中的每个PLC接收处理结果。I/O模块确定从第一组PLC中的每个PLC接收的处理结果之间是否存在任何不一致。如果从第一组PLC中的每个PLC接收到的处理结果之间存在任何不一致,则通过向第二输入/输出模块发送故障转移控制消息来启动故障转移控制过程。
在一些实施方式中,故障转移控制过程还包括:第一I/O模块停用第一PLC库中的第一组PLC,并且禁用与物理系统的控制相关联的第一PLC库中的第一组PLC的输出端口。另外,在故障转移控制过程中,第一I/O模块可向第二I/O模块发送故障转移消息,指示第二I/O模块在预定数量的周期内恢复控制并丢弃输出。例如,该周期的数量可在故障转移消息中被指定为整数值。在预定数量的周期之后,第二I/O模块启用第二PLC库中的第二组PLC的输出端口。
在一些实施方式中,前述故障转移控制过程还包括向第一PLC库中的第一组PLC发送更新命令,指示重置第一组PLC。响应于接收更新命令,第一库中的PLC从存储在PLC上的应用二进制文件组中,选择新的控制应用二进制文件。该新的控制应用二进制文件被编译成可执行文件,执行该可执行文件。另外,向第一I/O模块传输更新完成消息。在一些实施方式中,应用二进制文件组中的每个应用二进制文件是不同的,并且在功能上等效于该组中的其他应用二进制文件。例如,这可通过在编译期间将新控制应用二进制文件的一部分随机化来实现。
在一些实施方式中,第二I/O模块向第一I/O模块传输新的故障转移控制消息。第一I/O模块从第一组PLC中的每个PLC接收更新完成消息。然后,响应于接收新的故障转移控制消息和更新完成消息,第一I/O模块启用第一PLC库中的第一组PLC的输出端口。
在本发明的其他实施方式中,一种用于在自动化环境中对可编程逻辑控制器执行故障转移并控制物理系统的系统包括两个I/O模块。第一I/O模块包括传感器输入端口、复制输入编程组件、PLC输入端口以及比较和丢弃编程组件。传感器输入端口被配置成从一个或多个现场设备接收传感器输入。复制输入编程组件为第一PLC库中的第一组PLC创建传感器输入的副本,并将该传感器输入的副本传送到第一组PLC中的每个PLC。PLC输入端口响应于传送传感器输入的副本,从第一组PLC中的每个PLC接收处理结果。比较和丢弃编程组件被配置成确定从第一组PLC中的每个PLC接收的处理结果之间是否存在任何不一致。如果从第一组PLC中的每个PLC接收的处理结果之间存在任何不一致,则比较和丢弃编程组件通过向第二输入/输出模块发送故障转移控制消息来启动故障转移控制过程。
根据本发明的其他实施方式,PLC包括存储应用二进制文件组的非易失性存储器。每个应用二进制文件是不同的,并且在功能上等效于该组中的其他应用二进制文件。该PLC还包括更新编程组件,该更新编程组件被配置成响应于从I/O模块接收更新命令,从应用二进制文件组中选择新的控制应用二进制文件。更新编程组件还被配置成将新的控制应用二进制文件编译成可执行文件,向I/O模块传输更新完成消息并执行可执行文件。
根据下面参考附图进行的说明性实施方式的详细描述,本发明的附加特征和优点将变得显而易见。
附图说明
当结合附图阅读时,从下面的详细描述最佳理解本发明的前述和其他方面。为了说明本发明,在附图中说明了目前优选的实施方式,然而,应理解,本发明不限于所公开的特定手段。附图中包括以下附图:
图1示出根据一些实施方式的使用PLC、I/O模块和PLC库的四冗余架构中的示例故障转移架构;
图2示出根据一些实施方式的多路复用器可如何在同一周期内实现从一个PLC库到另一PLC库的故障转移的示例;
图3提供根据一些实施方式的可如何在I/O模块中实现故障转移控制算法的示例;
图4说明根据一些实施方式的使用SD卡中的多个备份的PLC随机二进制更新;
图5提供允许系统通过工业以太网和TCP实施用户定义的协议的示例TSEND块。
图6提供根据一些实施方式的通过API实施的PLC程序随机化的图示;
图7示出可在一些实施方式中利用的数据块随机化改变数据块(DB)变量的地址和偏移量;
图8示出根据一些实施方式的DB块优化如何消除存储器填充并重新布置存储器布局;
图9提供根据一些实施方式的功能块参数重新排序如何改变PLC程序的二进制表示的图示;
图10提供根据一些实施方式的循环变量重排序向PLC二进制程序引入二进制变化的图示;
图11A说明根据一些实施方式的通过控制流转换的随机化;以及
图11B说明根据一些实施方式的通过数据流转换的随机化;以及
图12提供根据一些实施方式的操作块随机化在OB的定时和优先级中引入可变性的图示。
图13提供代码级别随机化的示例,该代码级别随机化在PLC程序内执行附加代码以改变其执行并影响PLC的定时,如可在一些实施方式中实现的;以及
图14提供周期间随机化的示例,该周期间随机化在周期内执行附加代码的不同片段并影响PLC的定时,如可在一些实施方式中实现的。
具体实施方式
本文描述的系统、方法和装置总体上涉及可编程逻辑控制器的弹性故障转移。更具体地,本文描述的技术描述了故障转移架构,该故障转移架构利用多个库的可编程逻辑控制器(PLC),从而允许一个库的PLC进行故障转移到第二库的PLC。在第二库的PLC上发生处理时,第一库中的PLC被重置并重新加载新的控制应用二进制文件。作为弹性的附加措施,PLC可使用在弹性PLC中功能等效的随机二进制文件。功能上的等效性保证了对于相同的输入,随机的PLC程序将产生与非随机的PLC程序相同的输出。在相关故障的情况下,一次仅有一个PLC崩溃。此外,随机化保证了其他PLC不会因相同的关联事件(例如,输入、诸如存储器访问冲突等的软件错误)而崩溃。下文描述的系统及其相关方法和装置至少在以下特征方面具有弹性。首先,不存在单点的安全故障;如果PLC或I/O模块发生故障,则系统可正常运行并自动恢复。其次,本文所述的系统能够在故障后自动恢复。即使二进制文件不同,其他PLC仍可接管执行并产生相同的输出,同时消除关联故障的风险。第三,该系统提供了对零天网络攻击的弹性,从而提供有意义的保护,同时可开发软件补丁来应对网络攻击。
图1说明如可在一些实施方式中实施的四冗余架构1100中的故障转移架构。架构1100包括两个PLC库(PLC库105和PLC库110)。每个PLC库包括两个PLC和一个I/O模块。因此,PLC库1105包括PLC 1、PLC 2和I/O 1,而PLC库110包括PLC 3、PLC 4和I/O 2。故障转移机制可直接在I/O模块中实现。可用于此目的的I/O模块的一个示例是SiemensTM ET200SP I/O模块。在某些情况下,以与可以使用高级语言对PLC进行编程的方式类似的方式来对I/O模块进行编程。每个PLC库包括一个I/O模块和两个PLC。在由I/O模块(例如,I/O 1和I/O 2)管理的故障转移(例如,通过PROFINET通信)的情况下,两个PLC库相互通信。I/O模块以冗余方式连接到系统的传感器和致动器。
在同一周期内从一个PLC库到另一个PLC库的故障转移可通过多路复用器来实现,如图2所示。该多路复用器将库1和库2的输出以及故障转移信号作为输入。取决于哪个库处于活动状态,故障转移信号选择哪个输出信号将作为多路复用器的输出。故障转移信号由库的I/O设置。当一个库的I/O看到两个PLC的输出不同时,它决定故障转移到另一库。然后,I/O命令多路复用器传递第二个库的输出。从一个库到另一个库的故障转移可在同一周期内完成。这是因为多路复用器是一个没有任何逻辑的简单设备,并且选择输出仅涉及设置多路复用器的状态。
图3提供根据一些实施方式的如何在I/O模块中实施故障转移控制技术的示例。如图3所示,每个I/O模块包括复制输入编程组件以及比较和丢弃编程组件。复制输入编程组件经由传感器输入端口(图3中未示出)获取传感器数据。该输入端口本质上是进出I/O模块的路径,并且可使用本领域已知的任何技术来实施。I/O模块处的复制输入编程组件将传感器数据复制到每个库中的一对PLC。比较和丢弃编程组件每个都检测PLC处理不一致,并向另一个PLC库发送故障转移消息,以恢复控制并丢弃在D个周期内的输出。在周期N中,I/O 1模块处于控制状态,将输入复制到PLC1和PLC2,并且在PLC 1和PLC 2提交该周期的结果后,比较和丢弃编程组件将验证计算不匹配。在这种情况下,比较和丢弃编程组件将停用设备(PLC 1和PLC 2),禁用致动器端口,并发送使用新的差异化二进制文件来还原PLC映像的更新命令。在一些实施方式中,更新命令可为指示需要更新的简单消息,然后可对其进行处理以生成用于更新的指令。在其他实施方式中,更新命令是一个或多个计算机可执行指令,其在执行时使更新开始。
恢复方法分两个步骤执行。在第一步骤期间,I/O 1触发恢复过程。例如,这可通过I/O 1中的SFC12系统功能调用来完成。在停用设备并禁用致动器后,故障转移控制消息被发送到第二PLC库中的I/O 2模块。该消息包含一个整数值,该整数值指定在第二PLC库将输出写入过程之前要丢弃的周期数量D。该延迟消息由I/O 2处理,并用于确定激活哪些设备以及何时激活。
因为I/O 2模块也与其余PLC同步运行,所以可保证延迟D是准确的。在第二步骤期间,在D周期之后,I/O 2启用致动器端口,并且可将控制信号写入致动器,以恢复对物理系统的控制。请注意,I/O 2模块通过故障转移控制信号连接回至I/O 1模块。但是,这种连接直到PLC库1中的PLC映像准备就绪才生效;这通过更新完成消息传达。在一些实施方式中,更新命令可为指示所有PLC都准备就绪的简单消息(例如,指示准备就绪的二进制值1)。而在其他实施方式中,更新完成消息可包括关于库中PLC的状态的附加信息。
当发生网络攻击时,带有随机程序的两个PLC产生不同输出的原因是因为PLC使用与通用计算机不同的调用约定。例如,返回地址不被存储在堆栈中,而是被存储在与受保护存储器区域中的堆中结构化的运行时数据相关联的寄存器中。这是由PLC操作系统在内核空间而不是用户空间中管理的。
如图4所示将完成PLC内的更新过程。例如,可使用在PLC的操作系统或固件中执行的专用更新编程组件来实施该过程。在该示例中,PLC使用SD卡405存储程序配置(标记为“Bak_1.dmp”、“Bak_2.dmp”等)。在一些实施方式中,诸如图中所说明的,SD卡405可被加密。由故障转移系统410生成的这些随机程序配置经由下载包415被随机下载到PLC。在该示例中的故障转移系统410包括软件组件,该软件组件解析PLC结构、应用转换并打包新的PLC结构。将随机PLC二进制文件的选择随机化对于减少重复引起先前故障的网络攻击的机会非常重要。也可在SD卡405中对这些随机配置进行加密,例如,使用PLC的“专有技术保护”特征。在步骤420中启动PLC之后,在步骤425读取SD卡405上的配置并将其实例化到PLC存储器中。然后,在步骤435循环执行之前,该配置在步骤430由板载编译器编译。在故障的情况下,在步骤440触发故障处理机制以完成本地故障转移。此外,PLC必须更新其映像,这是通过在步骤445随机选择不同的配置来完成的。本领域中通常公知的任何技术都可用于执行配置的随机选择。例如,在一些实施方式中,SD卡405上的随机程序配置被顺序编号。然后,在数字范围内选择一个随机数。一旦被选择,就在425将配置的标识符(例如,文件名)递送到执行SD卡的读取的编程组件。另选地,可执行步骤425以立即加载配置。最后,在步骤450,在步骤420重复的过程中,重新启动PLC的CPU。
图4中所示的该过程可由最先进的PLC完全支持,并且不需要附加代码。可由PLC支持的附加安全层是将SD卡序列号绑定到用户程序,以防止任何人将相同的PLC二进制映像复制到不同的PLC。
在一些实施方式中,用户定义的通信协议用于所有组件以交换包含指令及其状态的消息。组件包括PLC、防火墙、工程系统、PLC输入过滤器、I/O模块和故障转移算法。在西门子自动化组件中,可通过工业以太网TCP协议使用“开放用户通信”来创建用户定义的通信协议。例如,西门子TIA门户工程系统在标准库中提供所谓的“T块”,以启用用户定义的通信。例如,FB65“TCON”被用于建立连接,FB66“TDISCON”被用于结束连接,FB63“TSEND”被用于发送数据,并且FB64“TRECV”被用于接收数据。图5示出了FB63“TSEND”块的示例。用户定义的消息被发送到输入参数DATA,并且消息长度被发送到输入参数LEN。在该示例中,消息存储在DB100数据块中,并且长度为100个字节。发送请求由输入参数“请求”处的正沿来触发。如果发送请求运行,则设置“发送_繁忙”变量。需要输出参数“完成”、“错误”和“状态”来评估FB63的执行情况。
图6是根据一些实施方式的系统图,该系统图提供如何实施PLC程序随机化的附加细节。如本领域中所理解的,PLC包括操作系统和用户程序。操作系统提供固有的PLC功能性(例如,重启和错误处理、存储器管理、调用用户程序等)。如图6所示,用户程序包括执行自动化任务的所有“块”。用包括功能块(FB)和功能(FC)的程序块对用户程序进行编程。FB和FC引用组织在数据块(DB)中的局部和全局变量。在PLC中,用户程序通常在组织块(OB)中循环执行(非循环程序也为可能的)。主循环OB始终存在,并且当在无限循环中初始化和执行PLC程序时,可使用该主循环。
图6中所示的PLC程序结构为固定的,并提供具有不同块类型的清晰结构。该示例说明将故障转移系统615连接到工程系统605的方法。该示例中的故障转移系统615包括解析PLC结构、应用转换并打包新PLC结构的软件组件。更具体地,使用应用程序编程接口(API)610,故障转移系统615在PLC程序被下载之前对其进行访问和随机化。修改PLC程序的块结构在生成的代码中具有深远的影响,因为块(OB、FB、FC、DB)到二进制表示的映射会发生变化。因此,对PLC程序结构的修改实现了故障转移系统所寻求的二进制差异化。使用图6中阐述的一般架构,可实现PLC程序结构中所有块类型的随机化。
图7说明根据一些实施方式的块随机化如何改变DB变量的地址和偏移量。DB将存储器按可寻址块组织,程序使用这些块来访问变量、传感器和致动器。DB是称为标签的命名变量的集合。标签是PLC中用于值的保留的存储器区域。标签包含DB中的数据类型(例如布尔、整数等)、数值(例如“15”)和物理地址。如图2所示,PLC 1中的“电机_1”标签具有布尔类型和地址“%I0.0”。通过数据块随机化组件处理后,PLC 2中相同变量的地址可改变为“%I2.0”。类似地,通过在PLC2的符号表中的“标签”之前引入“新_标签”,可将布尔类型的PLC1中静态变量“标签”中的偏移量从“0.0”改变为“0.1”。这些改变使PLC中的存储器布局差异化,从而使得相同的网络漏洞在具有不同存储器布局的两个PLC中不太有效。
随机化的附加层是启用DB块优化,其中所有标签均按其数据类型排序。排序使标签之间的数据间隙(填充)最小化,并为目标PLC处理器优化存储器访问,如图8所示。在该示例中,标准DB 805具有在经优化的DB 810中消除的变量之间的数据间隙。结合起来,两种提出的DB随机化技术允许故障转移系统为PLC差异化程序生成数百个等效的存储器布局。
在一些实施方式中,功能块和功能随机化被用于改变代码和存储器堆栈的结构。FB和FC之间的区别在于循环的数据存储。FC是没有数据存储的块。这意指FC的值是无状态的,并且块变量不能在周期内持久存在。另一方面,FB是具有循环的数据存储的块。这意指FB是有状态的,并且块变量值在整个周期内持久存在。FB和FC均使用多种高级语言进行编程,包括图形和文本语言。标准的PLC编程语言中的一种是基于PASCAL的结构化控制语言(SCL)。SCL还基于IEC 61131-3标准标准化的PLC编程的结构化文本(ST)规范。出于说明目的,下面描述的FB和FC随机化技术基于SCL。然而,应理解,这些技术可被推广并应用于提供类似功能性的任何PLC编程语言。
功能块和功能具有包括输入、输出、输入输出参数和功能主体的声明。该声明是所有语言(包括SCL)所共有的。图9示出包括输入参数“FINALVAL”、输入输出参数“IQ1”和输出参数“CONTROL”的“TEST”程序的示例性功能块声明。引入随机化的一种技术是在调用如右侧的两个示例所示功能块时对参数重新排序。因为参数是命名的,所以列出参数的顺序不会改变程序的含义。但是,这为两个程序创建不同的存储器布局。在实际的PLC程序中,参数的数量往往非常大(有时是数百个参数),因此,这种技术在创建大量不同但等效的SCL程序时可非常有效。
类似的技术适用于在周期内持久存在的FB的循环变量。图10说明根据一些实施方式的循环变量重排序如何向PLC二进制程序引入二进制改变。如图10所示,变量PID_CONTROLLER_1和PID_CONTROLLER_2的顺序可重新排列,使得循环变量在不同的PLC实例中占据不同的存储位置。
SCL代码本身可在控制流和数据流级别上随机化。例如,对于控制流,可解析包含SCL语句的可扩展标记语言(XML)文件,并可重构控制流图,其中将条件语句转换成等效的控制流构造。
图11A和图11B示出根据一些实施方式的控制流和数据流的转换如何分别在SCL代码级上引入二进制差异化。例如,在图11B中,if-else语句的结构被“NOT”指令反转,使得PLC 1中的“if”语句的主体变成PLC 2中else语句的主体,反之亦然。在图11B中,对于数据流,可解析包含SCL语句的XML文件,并且可重构数据流图,其中将表达式转换成等效的数据流表达式。例如,图7示出将PLC 1中的表达式“IQ1:=IQ1*2”转换成PLC 2中的“IQ1:=IQ1+IQ1”。此外,可插入诸如“N:=0”和“SUM:=0”的附加表达式,这些表达式不会帮助控制程序,但在编译时在代码级别生成二进制差异性。这类似于NOOP(无操作)随机化技术。重要的是要注意,在某些PLC中不存在NOOP操作数,但是插入不会在功能上帮助程序的操作在功能上是等效的。
在一些实施方式中,应用了用于FB和FC的排序随机化技术,该排序随机化技术影响它们在存储器中的布置。每个FB和FC都有一个三元组<名称、类型、编号>,其中名称是用户在PLC程序中提供的任意名称,类型是取决于块类型(例如FB、FC、OB、DB)的枚举,并且编号是与块相关联的唯一标识符。重要的认知是,随着块首先被排序,并且然后被下载到PLC执行,它们在PLC存储器中的位置对应于它们的编号。因此,可应用排序随机化技术来随机化三元组中的编号,以在执行期间改变其顺序。另外(另选地),可插入虚拟FC和FB以占用存储空间,并任意移动提供有用工作的其他FB和FC。这种转换也可通过开放接口进行,也可扩展到DB。
OB是操作系统与用户程序之间的接口。用户程序只能由OB调用,并且因此是PLC程序结构的重要组成部分。操作系统循环调用OB或者在发生某些事件时调用OB。在大多数PLC中,用户可取决于所需的功能性为他们的程序选择存在的几种类型的OB(或其他供应商中的类似概念)。例如,存在启动OB、循环程序执行OB、中断(日时间、循环、时间延迟、硬件)OB和错误(异步和同步)OB。OB由数字标识,不同的数字具有不同的优先级。例如,“OB 1”是优先级最高的循环程序OB,而OB 10是优先级较低的日时间中断OB。例如,一些PLC提供了相同类型的多个中断,例如,在西门子可编程逻辑控制器(Siemens PLCS)中,OB 32、OB 33、OB34和OB 35是用户可支配以组织他们的程序的循环中断OB。
组织块随机组件对OB进行重新排序,以便不同的PLC程序使用不同的OB(具有相同的优先级和实时保证)。例如,图12示出了如何将具有两个OB(OB 1和OB 32)的PLC程序结构转换成具有三个OB(OB 1、OB 32和OB 35)的程序结构。在该示例中,控制器代码分为两部分,并且前半部分被分配给OB 32,而后半部分被分配给OB 35。请注意,这在OB 35和OB 32之间创建了依赖关系。但是,OB之间的同步是在PLC中受支持。
在一些实施方式中,板载PLC随机化在PLC程序被随机化并且被部署到PLC用于执行之后实现应用二进制隐藏。因为常规的工程系统可获取PLC程序并对它进行“反编译”以查看源代码,所以攻击者可使用它来读取所有随机程序,在方便时对它们进行操作,并且然后重新部署。为了解决这个问题,可在PLC程序上直接在PLC上实施附加随机化层;因此有了“板载”共同特性。这一层将保证,即使将相同的PLC程序部署到多个PLC中,每个单独实例的执行也是不同的。上面论述的板载PLC随机化和PLC程序随机化是不相关的,可单独使用或组合使用。关键优点在于工程系统所看到的并不是在PLC中执行的内容。
以下段落描述使用市售接口的PLC中的板载PLC随机化,该接口允许通过称为S7-1500开放式开发工具包(ODK)的C/C++语言接口修改固件。ODK为软件开发人员提供对PLC操作系统的功能和资源以及外部硬件和软件组件的访问。使用ODK开发的软件应用在本文中称为“ODK应用”。ODK应用可像PLC程序中的常规系统功能一样使用。
ODK应用在沙箱中运行,并且PLC操作系统阻止它们从沙箱中脱离。ODK程序唯一允许的接口是输入和输出。应注意,尽管出于说明目的将ODK用作示例,但是可使用本领域中通常公知的类似语言接口来实施以下描述的通用技术。
图13说明根据一些实施方式的代码级随机化,该代码级随机化在PLC程序内执行附加代码以改变其执行并影响PLC的定时。考虑PLC A 1305,其包括在OB 1中循环运行的三个FB(FB1、FB2、FB3),如图13的左侧所示。PLC B 1310的代码级随机化(如图13的右侧所示)允许经由在FB1之后插入的ODK应用执行附加C/C++代码(C++1),并经由在FB2之后插入的ODK应用执行不同的C/C++代码(C++2),并且然后在OB 1中调用FB3。这说明了如何通过改动待在OB内的FB和FCS之间调用的C/C++代码的数量和内容从而在两个不同的PLC中将相同的PLC程序随机化。显然,附加代码为OB引入了附加计算要求。例如,PLC A 1305中的OB 1在10毫秒内执行,而PLC B中的随机OB 1在60毫秒内执行。只要由代码级随机化插入的附加代码不超过周期时间,随机化就将在功能上和实时上兼容。这是可能的,因为OB执行可在一个周期内占用空闲时间而不影响控制应用的实时保证。这种认知可用于引入附加代码。
在周期之间,可引入周期间随机化,以使ODK调用的位置和数量均改动。因此,在同一PLC中,执行从周期N变到下一个周期N+1。例如,图14示出了在周期N中,执行在60毫秒内包括OB1中的FB1、C++1、FB2、C++2和FB3。在下一个周期N+1中,在75毫秒内执行包括OB1中的FB1、FB2、C++1、C++2、FB3和C++3。类似于代码级随机化,ODK调用用OB执行来换取空间时间,只要执行在周期时间内,周期间随机化将保证功能和实时保证。
本文描述的由控制层设备使用的处理器可包括一个或多个中央处理单元(CPU)、图形处理单元(GPU)或本领域已知的任何其他处理器。更一般而言,本文所使用的处理器是用于执行存储在计算机可读介质上的机器可读指令、用于执行任务的设备,并且可包括硬件和固件中的任何一个或组合。处理器还可包括存储用于执行任务的机器可读指令的存储器。处理器通过操纵、分析、修改、转化或传输供可执行过程或信息设备使用的信息,和/或通过将信息路由到输出设备来对信息进行操作。处理器可例如使用或包括计算机、控制器或微处理器的能力,并且可使用可执行指令来进行调节,以执行通用计算机没有执行的特殊功能。处理器可与使得能够在它们之间进行交互和/或通信的任何其他处理器联接(电联接和/或包括可执行组件)。用户界面处理器或生成器是包括用于生成显示图像或其一部分的电子电路或软件或两者的组合的已知元件。用户界面包括一个或多个显示图像,该显示图像使得用户能够与处理器或其他设备进行交互。
如本文所使用,术语“编程组件”指被编程或以其他方式配置以提供指定功能性的软件、固件和硬件的任何组合。例如,在一些实施方式中,每个编程组件包括软件库或库组。在某些情况下,编程组件包括在较大的总体编程结构中。例如,编程组件的功能可包括在一个或多个功能性、模块、子例程或面向对象的类中,这些功能、模块、子例程或面向对象的类又是较大软件程序的一部分。在其他实施方式中,编程组件本质上是原子性的,并且可根据计算系统处理器的需要来加载和执行。本公开的任何给定编程组件的功能性可分布在例如经由有线或无线接口连接的多个编程组件之间。
本文所述的各种设备包括但不限于控制层设备和相关的计算基础设施,可包括至少一个计算机可读介质或存储器,用于保存根据本发明的实施方式编程的指令并且用于包含数据结构、表格、记录或本文描述的其他数据。如本文所使用的术语“计算机可读介质”指参与向一个或多个处理器提供指令以供执行的任何介质。计算机可读介质可采取许多形式,包括但不限于非暂时性、非易失性介质、易失性介质和传输介质。非易失性介质的非限制性示例包括光盘、固态驱动器、磁盘和磁光盘。易失性介质的非限制性示例包括动态存储器。传输介质的非限制性示例包括同轴电缆、铜线和光纤,包括构成系统总线的导线。传输介质也可采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的声波或光波。
本文所使用的可执行应用包括代码或机器可读指令,用于调节处理器以实施预定功能,诸如响应于用户命令或输入,操作系统、语境数据采集系统或其他信息处理系统的功能。用户命令或输入。可执行过程是用于执行一个或多个特定过程的代码片段或机器可读指令、子例程或代码的其他不同部分或可执行应用的一部分。这些过程可包括接收输入数据和/或参数;对接收到的输入数据执行操作和/或响应于接收到的输入参数执行功能;以及提供结果输出数据和/或参数。
本文的功能和处理步骤可响应于用户命令而自动、全部或部分地执行。响应于一个或多个可执行指令或设备操作而执行自动执行的活动(包括步骤),而无需用户直接启动该活动。
附图的系统和过程不是唯一的。可根据本发明的原理导出其他系统、过程和菜单,以实现相同的目的。尽管已参考特定实施方式描述了本发明,但是应理解,本文示出和描述的实施方式和变型仅用于说明目的。在不脱离本发明的范围的情况下,本领域技术人员可实施对当前设计的修改。如本文所述,可使用硬件组件、软件组件和/或其组合来实施各种系统、子系统、代理、管理器和过程。除非使用短语“用于…装置”明确叙述该元件,否则本文的任何权利要求元素均不应根据35U.S.C.112第6款的规定来解释。
Claims (20)
1.一种在自动化环境中对可编程逻辑控制器执行故障转移并控制物理系统的方法,所述方法包括:
由第一输入/输出模块,从一个或多个现场设备接收传感器输入;
由所述第一输入/输出模块,为第一PLC库中的第一组可编程逻辑控制器(PLC)创建所述传感器输入的副本;
由所述第一输入/输出模块,将所述传感器输入的所述副本传送到第一组PLC中的每个PLC;
所述第一输入/输出模块,响应于传送所述传感器输入的所述副本,从所述第一组PLC中的每个PLC接收处理结果;
由所述第一输入/输出模块,确定从所述第一组PLC中的每个PLC接收到的所述处理结果之间是否存在任何不一致;以及
如果从所述第一组PLC中的每个PLC接收的所述处理结果之间存在任何不一致,则通过向第二输入/输出模块发送故障转移控制消息来启动故障转移控制过程。
2.根据权利要求1所述的方法,其中,所述故障转移控制过程还包括:
由所述第一输入/输出模块,停用所述第一PLC库中的所述第一组PLC;以及
由所述第一输入/输出模块,禁用与所述物理系统的控制相关联的所述第一PLC库中的所述第一组PLC的一个或多个输出端口。
3.根据权利要求2所述的方法,其中,所述故障转移控制过程包括:
由所述第一输入/输出模块,向所述第二输入/输出模块发送故障转移消息,指示所述第二输入/输出模块在预定数量的周期内恢复控制并丢弃输出。
4.根据权利要求3所述的方法,其中,所述预定数量的周期在所述故障转移消息中被指定为整数值。
5.根据权利要求3所述的方法,还包括:
由所述第二输入/输出模块,接收所述故障转移消息;
在所述预定数量的周期之后,由所述第二输入/输出模块,启用与所述物理系统的控制相关联的第二PLC库中的第二组PLC的一个或多个输出端口。
6.根据权利要求3所述的方法,其中,所述故障转移控制过程还包括:
向所述第一PLC库中的所述第一组PLC发送更新命令,指示重置所述第一组PLC。
7.根据权利要求6所述的方法,还包括:
响应于接收所述更新命令,由所述第一PLC库中的PLC,从存储在所述PLC上的应用二进制文件组中,选择新的控制应用二进制文件;
由所述PLC,将所述新的控制应用二进制文件编译成可执行文件;
向所述第一输入/输出模块传输更新完成消息;以及
由所述PLC,执行所述可执行文件。
8.根据权利要求7所述的方法,其中,所述应用二进制文件组中的每个应用二进制文件是不同的,并且在功能上等效于该组中的其他应用二进制文件。
9.根据权利要求7所述的方法,其中,所述新的控制应用二进制文件的至少一部分在编译期间被随机化。
10.根据权利要求6所述的方法,还包括:
由所述第二输入/输出模块,向所述第一输入/输出模块传输新的故障转移控制消息;
由所述第一输入/输出模块,从所述第一组PLC中的每个PLC接收更新完成消息;
响应于接收所述新的故障转移控制消息和所述更新完成消息,由所述第一输入/输出模块,启用与所述物理系统相关联的所述第一PLC库中的所述第一组PLC的所述一个或多个输出端口。
11.一种用于在自动化环境中对可编程逻辑控制器执行故障转移并控制物理系统的系统,该系统包括:
第一输入/输出模块;以及
第二输入/输出模块,
其中,所述第一输入/输出模块包括:
传感器输入端口,其被配置成从一个或多个现场设备接收传感器输入;
复制输入编程组件,其被配置成:
为所述第一PLC库中的第一组可编程逻辑控制器(PLC)创建传感器输入的副本,以及
将所述传感器输入的所述副本传送到所述第一组PLC中的每个PLC;以及
PLC输入端口,其被配置成响应于传送所述传感器输入的所述副本,从所述第一组PLC中的每个PLC接收处理结果;
比较和丢弃编程组件,其被配置成:
确定从所述第一组PLC中的每个PLC接收的所述处理结果之间是否存在任何不一致;以及
如果从所述第一组PLC中的每个PLC接收的所述处理结果之间存在任何不一致,则通过向所述第二输入/输出模块发送故障转移控制消息来启动故障转移控制过程。
12.根据权利要求11所述的系统,其中,作为所述故障转移过程的一部分,所述比较和丢弃编程组件被配置成执行:
停用所述第一PLC库中的所述第一组PLC;以及
禁用与所述物理系统的控制相关联的所述第一PLC库中的所述第一组PLC的一个或多个输出端口。
13.根据权利要求12所述的系统,其中,作为所述故障转移过程的一部分,所述比较和丢弃编程组件还被配置成执行:
向所述第二输入/输出模块发送故障转移消息,指示所述第二输入/输出模块在预定数量的周期内恢复控制并丢弃输出。
14.根据权利要求13所述的系统,其中,所述预定数量的周期在所述故障转移消息中被指定为整数值。
15.根据权利要求13所述的系统,其中,所述第二输入/输出模块被配置成:
接收所述故障转移消息;以及
在所述预定数量的周期之后,启用与所述物理系统的控制相关联的第二PLC库中的第二组PLC的一个或多个输出端口。
16.根据权利要求13所述的系统,其中,作为所述故障转移过程的一部分,所述比较和丢弃组件还被配置成执行:
向所述第一PLC库中的所述第一组PLC发送更新命令,指示重置所述第一组PLC。
17.根据权利要求16所述的系统,还包括:
所述第一PLC库中的PLC,其中所述PLC包括:
非易失性存储器,其存储一组存储在所述PLC上的应用二进制文件;
更新编程组件,其被配置成响应于接收所述更新命令而执行:
响应于接收所述更新命令,从存储在所述PLC上的所述应用二进制文件组中选择新的控制应用二进制文件;
将所述新的控制应用二进制文件编译成可执行文件;
向所述第一输入/输出模块传输更新完成消息;以及
执行所述可执行文件。
18.根据权利要求17所述的系统,其中,所述应用二进制文件组中的每个应用二进制文件是不同的,并且在功能上等效于该组中的其他应用二进制文件。
19.根据权利要求17所述的系统,其中,所述新的控制应用二进制文件的至少一部分在所述PLC上的编译期间被随机化。
20.一种可编程逻辑控制器,包括:
非易失性存储器,其存储应用二进制文件组,其中,所述应用二进制文件组中的每个应用二进制文件是不同的,并且在功能上等效于该组中的其他应用二进制文件;以及
更新编程组件,其被配置成:
响应于从输入/输出模块接收到更新命令,从所述应用二进制文件组中选择新的控制应用二进制文件;
将所述新的控制应用二进制文件编译成可执行文件;
向所述输入/输出模块传输更新完成消息;以及
执行所述可执行文件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2017/023984 WO2018174896A1 (en) | 2017-03-24 | 2017-03-24 | Resilient failover of industrial programmable logic controllers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110663006A true CN110663006A (zh) | 2020-01-07 |
CN110663006B CN110663006B (zh) | 2023-04-04 |
Family
ID=58464698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780091166.0A Active CN110663006B (zh) | 2017-03-24 | 2017-03-24 | 对可编程逻辑控制器执行故障转移并控制物理系统的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11022950B2 (zh) |
EP (1) | EP3586203B1 (zh) |
JP (1) | JP6945646B2 (zh) |
CN (1) | CN110663006B (zh) |
WO (1) | WO2018174896A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486088A (zh) * | 2020-12-08 | 2021-03-12 | 深兰科技(上海)有限公司 | Plc交互fc功能函数的实现方法 |
CN114374598A (zh) * | 2021-12-28 | 2022-04-19 | 中电九天智能科技有限公司 | 一种解决以太网网络端口被占用的方法及系统 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11443039B2 (en) | 2020-08-21 | 2022-09-13 | Fathom5 Corporation | Controller computing system for preventing malicious control of a controlled machinery system |
CN113625661B (zh) * | 2021-07-29 | 2023-07-04 | 广东工贸职业技术学院 | 一种数控内嵌plc中间文件转化指令表的设计方法 |
EP4312418A1 (en) * | 2022-07-29 | 2024-01-31 | Abb Schweiz Ag | Method for automatic selection of servers |
EP4328681A1 (en) * | 2022-08-23 | 2024-02-28 | Siemens Aktiengesellschaft | Method and system for managing technical installation during occurrence of error state in a controller |
CN115793562A (zh) * | 2023-01-30 | 2023-03-14 | 国家工业信息安全发展研究中心 | 可编程逻辑控制器plc设备的异常处理方法及装置 |
CN117170304B (zh) * | 2023-11-03 | 2024-01-05 | 傲拓科技股份有限公司 | 一种基于工业物联网的plc远程监测控制方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4443865A (en) * | 1981-10-26 | 1984-04-17 | Allen-Bradley Co. | Processor module for a programmable controller |
EP0518630A2 (en) * | 1991-06-12 | 1992-12-16 | Aeci Limited | Redundant control system |
US5777874A (en) * | 1996-02-12 | 1998-07-07 | Allen-Bradley Company, Inc. | Programmable controller backup system |
US20020099455A1 (en) * | 2000-11-09 | 2002-07-25 | Derek Ward | Programmable controller |
CN101523317A (zh) * | 2006-08-08 | 2009-09-02 | 西门子能量及自动化公司 | 关于plc系统故障的装置、系统和方法 |
CN101663650A (zh) * | 2007-04-20 | 2010-03-03 | 国际商业机器公司 | 用于适配卡故障转移的设备、系统和方法 |
US20100275065A1 (en) * | 2009-04-27 | 2010-10-28 | Honeywell International Inc. | Dual-dual lockstep processor assemblies and modules |
US7877627B1 (en) * | 2008-12-18 | 2011-01-25 | Supercon, L.L.C. | Multiple redundant computer system combining fault diagnostics and majority voting with dissimilar redundancy technology |
WO2015138586A1 (en) * | 2014-03-11 | 2015-09-17 | Iex Group, Inc. | Systems and methods for data synchronization and failover management |
CN106462137A (zh) * | 2013-12-20 | 2017-02-22 | 西屋电气有限责任公司 | 用于保障工业控制系统的系统和方法 |
US20170078455A1 (en) * | 2015-09-16 | 2017-03-16 | Profire Energy, Inc | Safety networking protocol and method |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4358823A (en) * | 1977-03-25 | 1982-11-09 | Trw, Inc. | Double redundant processor |
US4890284A (en) * | 1988-02-22 | 1989-12-26 | United Technologies Corporation | Backup control system (BUCS) |
US20040153709A1 (en) * | 2002-07-03 | 2004-08-05 | Burton-Krahn Noel Morgen | Method and apparatus for providing transparent fault tolerance within an application server environment |
US7085959B2 (en) * | 2002-07-03 | 2006-08-01 | Hewlett-Packard Development Company, L.P. | Method and apparatus for recovery from loss of lock step |
JP2006085555A (ja) * | 2004-09-17 | 2006-03-30 | Denso Corp | 信号処理システム |
US7512936B2 (en) * | 2004-12-17 | 2009-03-31 | Sap Aktiengesellschaft | Code diversification |
US7565654B2 (en) * | 2006-01-10 | 2009-07-21 | National Instruments Corporation | Programmatic control of tasks in a programmable logic controller |
US8434059B2 (en) * | 2009-05-01 | 2013-04-30 | Apple Inc. | Systems, methods, and computer-readable media for fertilizing machine-executable code |
CN103348319B (zh) * | 2010-07-29 | 2017-03-01 | 爱迪德技术有限公司 | 用于有效部署整体多样化程序实例以抵抗差分攻击的系统和方法 |
CN104798075A (zh) * | 2012-09-28 | 2015-07-22 | 惠普发展公司,有限责任合伙企业 | 应用随机化 |
-
2017
- 2017-03-24 JP JP2019552521A patent/JP6945646B2/ja active Active
- 2017-03-24 US US16/495,603 patent/US11022950B2/en active Active
- 2017-03-24 CN CN201780091166.0A patent/CN110663006B/zh active Active
- 2017-03-24 WO PCT/US2017/023984 patent/WO2018174896A1/en unknown
- 2017-03-24 EP EP17715369.9A patent/EP3586203B1/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4443865A (en) * | 1981-10-26 | 1984-04-17 | Allen-Bradley Co. | Processor module for a programmable controller |
EP0518630A2 (en) * | 1991-06-12 | 1992-12-16 | Aeci Limited | Redundant control system |
US5777874A (en) * | 1996-02-12 | 1998-07-07 | Allen-Bradley Company, Inc. | Programmable controller backup system |
US20020099455A1 (en) * | 2000-11-09 | 2002-07-25 | Derek Ward | Programmable controller |
CN101523317A (zh) * | 2006-08-08 | 2009-09-02 | 西门子能量及自动化公司 | 关于plc系统故障的装置、系统和方法 |
CN101663650A (zh) * | 2007-04-20 | 2010-03-03 | 国际商业机器公司 | 用于适配卡故障转移的设备、系统和方法 |
US7877627B1 (en) * | 2008-12-18 | 2011-01-25 | Supercon, L.L.C. | Multiple redundant computer system combining fault diagnostics and majority voting with dissimilar redundancy technology |
US20100275065A1 (en) * | 2009-04-27 | 2010-10-28 | Honeywell International Inc. | Dual-dual lockstep processor assemblies and modules |
CN106462137A (zh) * | 2013-12-20 | 2017-02-22 | 西屋电气有限责任公司 | 用于保障工业控制系统的系统和方法 |
WO2015138586A1 (en) * | 2014-03-11 | 2015-09-17 | Iex Group, Inc. | Systems and methods for data synchronization and failover management |
US20170078455A1 (en) * | 2015-09-16 | 2017-03-16 | Profire Energy, Inc | Safety networking protocol and method |
Non-Patent Citations (2)
Title |
---|
周理等: "对可编程序控制器控制系统的可靠性探讨", 《上海第二工业大学学报》 * |
张鹏: "在工业应用PLC可编程控制器原理的作用分析", 《科技展望》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486088A (zh) * | 2020-12-08 | 2021-03-12 | 深兰科技(上海)有限公司 | Plc交互fc功能函数的实现方法 |
CN112486088B (zh) * | 2020-12-08 | 2022-01-18 | 深兰科技(上海)有限公司 | Plc交互fc功能函数的实现方法 |
CN114374598A (zh) * | 2021-12-28 | 2022-04-19 | 中电九天智能科技有限公司 | 一种解决以太网网络端口被占用的方法及系统 |
CN114374598B (zh) * | 2021-12-28 | 2023-07-21 | 中电九天智能科技有限公司 | 一种解决以太网网络端口被占用的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2018174896A1 (en) | 2018-09-27 |
US20200050167A1 (en) | 2020-02-13 |
US11022950B2 (en) | 2021-06-01 |
JP2020510268A (ja) | 2020-04-02 |
EP3586203A1 (en) | 2020-01-01 |
JP6945646B2 (ja) | 2021-10-06 |
EP3586203B1 (en) | 2022-06-22 |
CN110663006B (zh) | 2023-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110663006B (zh) | 对可编程逻辑控制器执行故障转移并控制物理系统的方法 | |
US10228675B2 (en) | Controlling one or more devices upon detecting abnormal behavior | |
US10671041B2 (en) | Techniques for improving industrial control systems | |
US5291427A (en) | Method for assisting the development of a set of communicating automata | |
US20130274901A1 (en) | Industrial automation control system | |
US11307550B2 (en) | Sequence control of program modules | |
EP4064045A1 (en) | Method for real-time updating of process software | |
CN108804109B (zh) | 基于多路功能等价模块冗余仲裁的工业部署和控制方法 | |
US20180095513A1 (en) | Controller, control method, and program | |
CN115408371B (zh) | 一种redis数据库动态冗余部署方法和装置 | |
US11846923B2 (en) | Automation system for monitoring a safety-critical process | |
CN108700864B (zh) | 可编程逻辑控制器中网络攻击弹性控制的程序随机化 | |
Atmojo et al. | Dynamic reconfiguration and adaptation of manufacturing systems using SOSJ framework | |
JP6874706B2 (ja) | アプリケーションプログラムを生成する方法、装置、プログラム | |
US20240311139A1 (en) | Plc-based support for zero-downtime upgrades of control functions | |
JP2016024798A (ja) | 冗長化コントローラシステム、その待機系コントローラ | |
EP3936951B1 (en) | Control device and software deployment method | |
Buit | PC104 stack mechatronic control platform | |
EP4446889A1 (en) | Device debugging method, device, and storage medium | |
US10768597B2 (en) | Method and controller for flexible process control | |
CN117149216A (zh) | 一种支持增量部署的软件系统自动化部署系统、方法、装置及存储介质 | |
KR20230107953A (ko) | 논리연산제어장치에 신규 모듈을 추가하는 방법 | |
Rossetti | Design and implementation of a framework extension for automated system testing of a CNC’s real time fieldbus | |
Bhanu et al. | An efficient architecture for semantic evolution of embedded system | |
Sikiaridis | Definition and Implementation of Validation Strategies for a Nanosatellite Flight Control Software Model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |