工业控制设备及其操作方法与流程

文档序号:14077534阅读:254来源:国知局
相关申请的交叉引用本申请要求于2016年09月22日提交的题为“industrialcontrolprogramsequencemonitoring”的第62/398,056号美国临时专利申请以及于2016年10月13日提交的第15/292,348号美国专利申请的优先权,其内容通过引用并入本文。本发明总体上涉及工业控制程序,更具体地涉及用于验证工业控制系统中的工业控制程序的可靠操作的系统。
背景技术
::工业控制器是用于例如在工厂环境下控制工业过程或机器的专用计算机系统。通常,工业控制器执行存储的控制程序,该控制程序从与受控过程或机器相关联并且感测过程或机器的状况的各种传感器读取输入,并且基于这些输入和存储的控制程序来计算用于控制对过程或机器进行控制的致动器的一组输出。工业控制器在许多方面不同于常规的计算机。在物理上,工业控制器被构造成明显地比常规计算机更加鲁棒地抵抗冲击和损坏以及更好地抵抗外部污染物和极端环境条件。处理器和操作系统针对实时控制进行了优化,并且使用为了能够快速开发为不断变化的一组机器控制应用或过程控制应用定制的控制程序而设计的语言来编程。通常,工业控制器具有高度模块化的架构,例如,其允许使用不同数量和类型的输入和输出模块来将控制器连接至要控制的过程或机器。通过使用适合于高度可靠且可用的实时通信的特殊“控制网络”有利于模块化。这种控制网络(例如,以太网/ip、设备网和控制网)与标准通信网络(例如以太网)的不同之处在于这种控制网络通过预调度网络的通信容量和/或为了高可用性而提供冗余的通信能力来保证最大通信延时。作为工业控制器的增强模块化的一部分,工业控制器可以采用专用于特定类型的电信号和功能、例如检测输入的ac信号或dc信号或者控制输出的ac信号或dc信号的i/o模块或设备。这些i/o模块或设备中的每一个可以具有连接器系统,连接器系统使这些i/o模块或设备能够以不同的组合与其他所选i/o模块或设备一起安装在壳体或机架中,以匹配特定应用的需求。多个或单独的i/o模块或设备可以位于受控过程或机器附近的方便的控制点,以经由控制网络与中央工业控制器进行通信。确保工业控制系统的高度可靠操作很重要。这样的高度可靠操作对确保系统持续地按预期来操作而言可能很重要,例如为了使功能安全性最大化、使昂贵的停机时间最小化等。因此,存在对确保工业控制器和工业控制系统以能达到的最高可靠性持续地操作的持续需求。技术实现要素:本发明人已经认识到,通过实时地监测程序的执行可以在工业控制系统中进一步实现高度可靠的操作。在一个方面,可以将控制程序划分成可执行模块。然后,可以执行第一码流以使用存储在第一组中的可执行模块来控制工业过程或机器。此外,可以执行第二码流以使用存储在第二组中的可执行模块来验证第一码流。可以基于第一码流和第二码流的执行来生成第一执行序列值和第二执行序列值。将第一执行序列值和第二执行序列值进行比较可以检测程序中可能已经发生的错误。因此,可以通过检测缺陷程序序列的发生来提供控制器的功能安全。如果程序的个别元件(例如软件模块、子程序或命令)以错误的序列执行或在错误的时间段执行或者如果处理器的时钟有故障,则可能存在缺陷程序序列。在一个方面,可以将用户子例程转换成由基础块之间的连接构成的控制流向图。系统可以基于该控制流向图,以正式建立的序列来处理这些块以形成可执行模块。当存在控制路径分叉(divergence)、例如跳转(“jmp”)指令或自终止回路时,序列可以在运行时基于程序状态而改变。第一码流和第二码流均可以分别执行具有第一组和第二组中的相同的可执行模块的相同程序。此外,第一码流和第二码流可以串行或并行地执行。每个可执行模块可以记录其执行,并且可以在每个扫描结束时,分析记录以确保以大体相同的方式实施每个执行。检查用于重复录入的记录可以有助于确保已建立时间序列监测和逻辑序列监测。因此,可以提供用于对工业控制系统中的程序的正确执行进行验证的系统。这对于检测关于高可靠性系统中的程序的故障而言可能是需要的。例如,用户子例程可以是例如以继电器梯形逻辑编写的用于工业控制程序的源代码,可以将用户子例程转换成由基础块之间的连接构成的控制流向图。基础块可以是被确定成一起执行而没有分叉的代码段(例如跳转之间和/或跳转目标之间的代码段)。根据基础块,可以在进行或不进行进一步处理的情况下提供第一组分立的(discrete)相应代码段和第二组分立的相应代码段。第一组代码段和第二组代码段可以是相同的,或者可以包括本领域已知的可能需要的某些变化。然后可以将第一组代码段和第二组代码段转换成相应的第一组分立的可重定位目标文件和第二组分立的可重定位目标文件,继而可以将第一组分立的可重定位目标文件和第二组分立的可重定位目标文件传输至工业控制器并且进行链接,以形成相应的第一组分立可执行体(executable)和第二组分立可执行体。然后可以在第一码流和第二码流中独立地执行第一组可执行体和第二组可执行体。在一个方面,第一码流的执行可以操作用于控制工业过程,而第二码流的执行可以操作用于验证第一码流的完整性。执行第一码流中的第一组可执行体和第二码流中的第二组可执行体可以分别生成第一执行序列值和第二执行序列值,这样的执行序列值指示:(1)在相应的码流中已经执行的分立可执行体,以及(2)已经执行的分立可执行体的执行顺序。在执行每个可执行体之后,可以例如使用分配给代码段且继而分配给相应的目标文件和可执行体的预定标识符,并且通过连续地更新错误检测或完整性码(例如,循环冗余校验(crc)计算),来计算执行序列值。当第一码流和第二码流的执行完成时,可以将第一执行序列值和第二执行序列值进行比较,从而可以检测出可指示不期望的故障的任何不匹配,并且可以采取适当的行动,例如发送消息警报和/或停止工业控制过程的一个或更多个方面。然后,具体地,本发明的一个方面可以提供一种工业控制器,该工业控制器包括:处理器,该处理器执行存储在非暂态介质中的程序并且可以操作用于:(a)存储第一组可执行模块和第二组可执行模块;(b)分别执行包括第一组可执行模块中的可执行模块的第一码流和包括第二组可执行模块中的可执行模块的第二码流,其中,第一码流可以操作用于控制工业过程或机器;(c)分别确定与第一码流相对应的第一执行序列值以及与第二码流相对应的第二执行序列值,其中,第一执行序列值和第二执行序列值中的每一个指示:(i)在码流中执行的可执行模块的标识;以及(ii)在码流中执行的可执行模块的执行顺序;以及(d)当确定第一执行序列值与第二执行序列值之间不匹配时,生成指示不匹配的输出。本发明的另一方面可以提供一种用于操作工业控制器的方法,该工业控制器具有执行存储在非暂态介质中的程序的处理器,该方法包括:(a)存储第一组可执行模块和第二组可执行模块;(b)分别执行包括第一组可执行模块中的可执行模块的第一码流和包括第二组可执行模块中的可执行模块的第二码流,其中,第一码流控制工业过程或机器;(c)分别确定与第一码流相对应的第一执行序列值以及与第二码流相对应的第二执行序列值,其中,第一执行序列值和第二执行序列值中的每一个指示:(i)在码流中执行的可执行模块的标识;以及(ii)在码流中执行的可执行模块的执行顺序;以及(d)当确定第一执行序列值与第二执行序列值之间不匹配时,生成指示不匹配的输出。通过以下详细描述和附图,本发明的这些和其他特征及优点对于本领域技术人员而言将变得明显。然而,应当理解,指示本发明的优选实施方式的详细描述和具体示例是以说明的方式而非限制的方式呈现的。在不脱离本发明精神的情况下,可以在本发明的范围内进行许多改变和修改,并且本发明包括所有这些修改。附图说明图1是根据本发明的一个方面的执行第一码流和第二码流的示例性工业控制系统;图2是针对图1的系统的流程图;图3是示例性源代码;图4是针对图3的源代码的示例性控制流向图;以及图5是针对图1的第一码流和第二码流的示例性执行流向。具体实施方式现在参照图1,示例性工业控制系统10可以包括控制设备12,控制设备12可以是工业控制器,例如可编程逻辑控制器(plc),其与一个或更多个控制i/o模块14进行通信以控制工业过程或机器16。控制设备12可以执行存储在非暂态介质中的控制程序以控制i/o模块14。i/o模块14继而可以经由i/o线18与工业过程或机器16中的传感器和/或致动器进行通信,i/o线18可以经由螺栓型端子连接至i/o模块14。控制设备12还可以经由第一网络20与其他工业控制器、交换机、路由器、网关和/或网络进行通信,第一网络20可以是适合于高度可靠且可用的实时通信的控制网络(例如以太网/ip、设备网和控制网网络)。控制设备12还可以与人机接口(hmi)或工作站22进行通信,该通信可以如图所示的那样通过第二网络24进行或者还可以通过第一网络20进行,第二网络24也可以是控制网络。除了其他之外,控制设备12可以包括一个或更多个多核中央处理单元(cpu)30,一个或更多个多核中央处理单元30与芯片组32通信,并且继而与(用于与i/o模块14、第一网络20和/或第二网络24进行通信的)网络接口设备(nw)34、(用于配置控制设备12的)固件(fw)36、实时时钟(rtc)38(用于记录当前时间的、可以是集成电路形式的计算机时钟)和存储器40(其可以包括动态随机存取存储器(dram)和/或静态随机存取存储器(sram))进行通信。在一个方面,如将描述的那样,存储器40可以包括第一存储器40a和第二存储器40b,第一存储器40a可以是用于存储第一组可执行模块42a(mod1)的第一集成电路,第二存储器40b可以是用于存储第二组可执行模块42b(mod2)的第二集成电路。第一组可执行模块42a和第二组可执行模块42b相应地可以是相同的代码集,但是在一些方面,可以提供彼此之间的变化来实现某些增强。在操作中,cpu30可以访问第一组可执行模块42a以执行第一码流,第一码流可以用于在系统10中实现有用的功能,例如对工业过程或机器16的控制。cpu30(可以是相同的cpu30或不同的cpu30)可以访问第二组可执行模块42b以执行第二码流,第二码流可以用于验证第一码流,以检测缺陷程序序列。此外参照图2,第一组可执行模块42a和第二组可执行模块42b分别可以来自可由工作站22提供的公共源代码50。源代码50可以是被编写用于在控制设备12和/或i/o模块14上执行的任何用户代码或子例程,例如控制程序。如图3所示,源代码50可以用例如公知的工业控制编程语言、即继电器梯形逻辑(rll)来编写。在准备好源代码50时,可以将源代码50提供至基础块生成器和编译器52(其可以在工作站22上执行),以用于根据源代码50生成基础块54。基础块54可以是被确定成一起执行而没有分叉的代码段,例如分支(例如“jmp”或跳转指令)之间和/或分支目标(例如“lbl”或标签地址)之间的代码段。如图3以示例的方式所示,源代码50可以包括:基础块54a(显示为“bba”);基础块54b(显示为“bbb”);基础块54c(显示为“bbc”);基础块54d(显示为“bbd”);以及基础块54e(显示为“bbe”)。因此,如图4以示例的方式所示,可以生成控制流向图60,该控制流向图60由开始点62与停止点64之间的(一组基础块56中的)基础块54之间的连接以及他们的相应分叉路径构成。例如,开始点62可以通向基础块54a,基础块54a可以通向基础块54b或基础块54d中的任意一个。基础块54b可以通向基础块54c或基础块54e中的任意一个。基础块54c通向基础块54d,基础块54d通向基础块54e,并且基础块54e通向停止点64。此外,取决于基础块54的状况(例如自终止回路),前述基础块54可以重复一次或更多次。因此,根据控制流向图60可以实现很多可能的流向、序列和定时。再参照图2,在生成基础块54时,可以分别将第一组基础块56a和第二组基础块56b(为了简洁起见,在图4中以示例的方式显示为具有相同的基础块54的组)提供至编译器66。编译器66可以操作用于完成一个或更多个步骤,包括:通过分别对第一组基础块56a和第二组基础块56b进行编组来分别对第一组基础块56a和第二组基础块56b进行转换以提高效率;和/或分别生成与第一组基础块56a相对应的第一组目标文件以及与第二组基础块56b相对应的第二组目标文件。当生成第一组目标文件和第二组目标文件时,这样的目标文件可以被重新定位至另一系统、例如控制设备12以用于链接。链接可以将第一组目标文件和第二组目标文件中的每一个与一个或更多个应用程序接口(api)82、库和/或其他元件链接起来,以用于分别生成第一组可执行模块42a和第二组可执行模块42b。现在参照图5,在操作中,cpu30可以访问存储在第一存储器40a中的第一组可执行模块42a以及存储在第二存储器40b中的第二组可执行模块42b。第一组可执行模块42a和第二组可执行模块42b可以分别由相同的cpu30访问以用于执行,或者由不同的cpu30一起访问以用于执行。cpu30可以分别执行包括第一组可执行模块42a中的可执行模块的第一码流84a和包括第二组可执行模块42b中的可执行模块的第二码流84b。cpu30可以串行地或者为了提升性能而并行地分别执行第一码流84a和第二码流84b。在一个方面,第一码流84a可以操作用于经由i/o模块14(和i/o线18)来控制工业过程或机器16,而第二码流84b可以操作用于提供对第一码流84a的验证。在第一码流84a和第二码流84b的执行期间,cpu30可以分别计算与第一码流84a相对应的第一执行序列值88a(v1)以及与第二执行序列值88b(v2)相对应的第二码流84b。第一执行序列值88a和第二执行序列值88b可以分别被确定成指示在码流中执行的可执行模块的标识,以及在码流中执行的可执行模块的执行顺序。这可以通过例如在执行每个可执行模块时追踪与可执行模块相关联的标识符(id)90来实现。在一个方面,可以通过使用标识符90计算错误检测码或完整性码(例如循环冗余校验(crc)值)来分别确定第一执行序列值88a和第二执行序列值88b,这些值可以在执行每个可执行模块时持续更新。因此,当第一码流84a和第二码流84b分别达到公共停止点或比较点92时,可以经由在所有输入均无法匹配的情况下发出(assert)单个输出的不匹配逻辑93功能,将第一执行序列值88a和第二执行序列值88b进行比较以用于确定不匹配,以及/或者经由在所有输入均成功匹配时发出单个输出的匹配逻辑94功能,将第一执行序列值88a和第二执行序列值88b进行比较以用于确定匹配。如果例如经由不匹配逻辑93检测到不匹配,则可以在系统10中生成不匹配输出95,系统10可以操作用于提供若干功能,例如修改工业过程或机器16的操作(例如停止所有运动)、(例如经由工作站22或移动设备)向用户发送警报等。然而,如果例如经由匹配逻辑94检测到匹配,则可以在系统10中生成匹配输出96,系统10可以操作用于提供若干功能,例如继续执行接下来的码流、(例如经由工作站22)向用户发送匹配确认等。如图5以示例的方式所示,第一码流84a可以执行(来自基础块54a或“bba”的)可执行模块“a”,并且可以使用可执行模块“a”的标识符90来计算第一执行序列值88a。第二码流84b也可以执行(也来自基础块54a或“bba”的)可执行模块“a”,并且可以使用可执行模块“a”的标识符90来计算第二执行序列值88b。然后,第一码流84a可以执行(来自基础块54b或“bbb”的)可执行模块“b”,并且可以使用可执行模块“b”的标识符90和当前值来更新对第一执行序列值88a的计算。大约同时地,第二码流84b也可以执行(也来自基础块54b或“bbb”的)可执行模块“b”,并且可以使用可执行模块“b”的标识符90和当前值来更新对第二执行序列值88b的计算。然后,第一码流84a可以进行分支以执行(来自基础块54e或“bbe”的)可执行模块“e”,并且可以使用可执行模块“e”的标识符90和当前值来更新对第一执行序列值88a的计算。大约同时地,第二码流84b也可以进行分支以执行(也来自基础块54e或“bbe”)可执行模块“e”,并且可以使用可执行模块“e”的标识符90和当前值来更新对第二执行序列值88b的计算。然后,当第一码流84a和第二码流84b分别到达比较点92时,可以经由不匹配逻辑93将第一执行序列值88a与第二执行序列值88b进行比较以用于确定不匹配(或者经由匹配逻辑94将第一执行序列值88a与第二执行序列值88b进行比较以用于确定匹配)。本文中使用的某些术语仅用于参考的目的,因此并不意图进行限制。例如,在所参考的附图中,术语如“上部”、“下部”、“上方”和“下方”指代方向。术语如“前面”、“背面”、“后部”、“底部”、“侧面”、“左”和“右”描述一致但任意的参考结构内的部件的各部分的取向,其通过参考描述所讨论的部件的相关联的附图和文本而变得很清楚。这样的术语可以包括以上具体提及的词、其派生词和类似含义的词。类似地,除非上下文明确地指出,否则术语“第一”、“第二”和指代结构的其他这样的数字术语并不暗示序列或者顺序。当引入本公开内容和示例性实施方式的元素或特征时,冠词“一(a)”、“一个(an)”、“该(the)”和“所述”意在表示存在一个或更多个这样的元素或特征。术语“包括”、“包含”和“具有”意在是包括性的,并且表示除具体指出的元素或特征以外,还可能存在另外的元素或特征。还应当理解,除非具体指出作为执行的顺序,否则本文描述的方法步骤、处理和操作不应被解释为必须以所讨论或示出的特定顺序来执行。还应当理解,可以采用附加的或者替选的步骤。在权利要求中阐述了本发明的各种特征。应当理解,本发明在其应用中不限于本文所阐述的部件的构造和布置的细节。本发明能够具有其他实施方式,并且能够以各种方式实践或实施。以上内容的变型和修改落入本发明的范围内。还应当理解,本文公开和限定的本发明延伸至文本和/或附图提到的或者根据文本和/或附图而明显的两个或更多个单独特征的所有替选组合。所有这些不同的组合构成了本发明的各种替选方面。本文描述的实施方式说明了用于实践本发明的最佳模式,并且将使本领域中的其他技术人员能够利用本发明。本文描述的所有出版物(包括专利出版物和非专利出版物)的全部内容通过引用并入本文。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1