《程序流控制监控例程、与之相关的方法以及系统.pdf》由会员分享,可在线阅读,更多相关《程序流控制监控例程、与之相关的方法以及系统.pdf(25页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103135518 A (43)申请公布日 2013.06.05 CN 103135518 A *CN103135518A* (21)申请号 201210275486.0 (22)申请日 2012.07.31 3388/MUM/2011 2011.12.02 IN G05B 19/418(2006.01) (71)申请人 费希尔控制国际公司 地址 美国爱荷华州 (72)发明人 M达拉尔 (74)专利代理机构 北京市金杜律师事务所 11256 代理人 郑立柱 (54) 发明名称 程序流控制监控例程、 与之相关的方法以及 系统 (57) 摘要 本公开涉及程序流控制监控例程。
2、。在一个实 施例中, 过程控制设备具有多个与给定工厂的控 制和 / 或监控有关的模块。提供程序流控制监控 例程以用于监控多个模块。 (30)优先权数据 (51)Int.Cl. 权利要求书 2 页 说明书 8 页 附图 14 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书8页 附图14页 (10)申请公布号 CN 103135518 A CN 103135518 A *CN103135518A* 1/2 页 2 1. 一种过程工厂监控和 / 或控制设备, 包括 : 控制器, 被配置为接收至少一个输入和产生至少一个输出 ; 计算机可读介质, 用于存储至少一个。
3、模块 ; 所述控制器进一步被配置为执行所述模块, 以在过程内实现监控和 / 或控制功能 ; 以及 程序流控制监控例程, 其存储在所述计算机可读介质上, 当执行所述程序流控制监控 例程时, 其检测与所述模块有关的任何错误并且提供指示何时检测到任何错误的时间戳, 所述程序流控制监控例程包括接口例程, 在检测到任何模块错误时执行所述接口例程, 并 且所述接口例程初始化工厂特定的报警和 / 或动作。 2.根据权利要求1所述的过程工厂监控和/或控制设备, 其中, 所述程序流控制监控例 程提供与以下各项中至少一项有关的错误检测 : 程序执行监控、 运行时间操作系统线程监 控、 程序顺序监控、 检测到故障时。
4、的动作、 上述各项的子组合或组合。 3. 根据权利要求 1 所述的过程工厂监控和 / 或控制设备, 其中所述程序流控制监控例 程包含以下各项中至少一项 : 模块自主设计、 运行时间操作系统自主设计、 微处理器自主设 计、 模块化设计、 可升级的设计、 可重复使用的设计、 上述各项的子组合或组合。 4. 根据权利要求 1 所述的过程工厂监控和 / 或控制设备, 其中所述程序流控制监控例 程提供基于中断和 / 或轮询的错误检测。 5. 根据权利要求 1 所述的过程工厂监控和 / 或控制设备, 其中所述程序流控制监控例 程对于每个被监控的模块需要少于 32 字节的存储器, 且所述程序流控制监控例程被。
5、配置 为监控多个存储在公共存储器上的且由单独的处理器执行的模块。 6. 根据权利要求 1 所述的过程工厂监控和 / 或控制设备, 其中所述程序流控制监控例 程以 C+ 编写且使用 C 封装以用于故障时的动作。 7. 根据权利要求 1 所述的过程工厂监控和 / 或控制设备, 其中所述程序流控制监控例 程包含于所述模块之中。 8. 一种在与过程工厂监控和 / 或控制有关的模块中检测错误的方法, 包括 : 提供控制器, 其被配置为接收至少一个输入且产生至少一个输出 ; 提供计算机可读介质 ; 在所述计算机可读介质上存储至少一个模块和至少一个程序流控制监控例程 ; 执行所述模块, 以在过程内实现监控和。
6、 / 或控制功能 ; 执行所述程序流控制监控例程, 以检测与所述模块的执行有关的任何错误 ; 提供指示何时检测到任何模块的时间戳 ; 以及 当检测到任何模块错误时执行接口例程, 以初始化工厂特定的警报和 / 或动作。 9. 根据权利要求 8 所述的在与过程工厂监控和 / 或控制有关的模块中检测错误的方 法, 其中, 所述程序流控制监控例程提供与以下各项中至少一项有关的错误检测 : 程序执行 监控、 运行时间操作系统线程监控、 程序顺序监控、 检测到故障时的动作、 上述各项的子组 合或组合。 10. 根据权利要求 8 所述的在与过程工厂监控和 / 或控制有关的模块中检测错误的方 法, 其中所述程。
7、序流控制监控例程包含以下各项中至少一项 : 模块自主设计、 运行时间操作 系统自主设计、 微处理器自主设计、 模块化设计、 可升级的设计、 可重复使用的设计、 上述各 项的子组合或组合。 权 利 要 求 书 CN 103135518 A 2 2/2 页 3 11. 根据权利要求 8 所述的在与过程工厂监控和 / 或控制有关的模块中检测错误的方 法, 其中所述程序流控制监控例程提供基于中断和 / 或轮询的错误检测。 12. 根据权利要求 8 所述的在与过程工厂监控和 / 或控制有关的模块中检测错误的方 法, 其中所述程序流控制监控例程对于每个被监控的模块需要少于 32 字节的存储器, 且所 述程。
8、序流控制监控例程被配置为监控多个存储在公共存储器上的且由单独的处理器执行 的模块。 13. 根据权利要求 8 所述的在与过程工厂监控和 / 或控制有关的模块中检测错误的方 法, 其中所述程序流控制监控例程以 C+ 编写且使用 C 封装以用于故障时的动作。 14. 根据权利要求 8 所述的在与过程工厂监控和 / 或控制有关的模块中检测错误的方 法, 其中所述程序流控制监控例程包含于所述模块之中。 15. 一种用于在过程工厂监控和 / 或控制中使用的计算机可读介质, 包括 : 至少一个存储在所述计算机可读介质上的、 与监控和 / 或控制过程有关的模块 ; 至少一个存储在所述计算机可读介质上的程序流。
9、控制监控例程, 当执行所述程序流控 制监控例程时, 其检测与所述模块有关的任何错误并且提供指示何时检测到所述错误的时 间戳 ; 以及 至少一个接口例程, 当检测到任何模块错误时执行所述接口例程, 以初始化工厂特定 的警报和 / 或动作。 16. 根据权利要求 15 所述的用于在过程工厂检测和 / 或控制中使用的计算机可读介 质, 其中, 所述程序流控制监控例程提供与以下各项中至少一项有关的错误检测 : 程序执行 监控、 运行时间操作系统线程监控、 程序顺序监控、 检测到故障时的动作、 上述各项的子组 合或组合。 17. 根据权利要求 15 所述的用于在过程工厂检测和 / 或控制中使用的计算机可。
10、读介 质, 其中所述程序流控制监控例程包含以下各项中至少一项 : 模块自主设计、 运行时间操作 系统自主设计、 微处理器自主设计、 模块化设计、 可升级的设计、 可重复使用的设计、 上述各 项的子组合或组合。 18. 根据权利要求 15 所述的用于在过程工厂检测和 / 或控制中使用的计算机可读介 质, 其中所述程序流控制监控例程提供基于中断和 / 或轮询的错误检测。 19. 根据权利要求 15 所述的用于在过程工厂检测和 / 或控制中使用的计算机可读介 质, 其中, 所述程序流控制监控例程对于每个被监控的模块需要少于 32 字节的存储器, 且 所述程序流控制监控例程被配置为监控多个存储在公共存。
11、储器上的且由单独的处理器执 行的模块。 20. 根据权利要求 15 所述的用于在过程工厂检测和 / 或控制中使用的计算机可读介 质, 其中所述程序流控制监控例程以 C+ 编写且使用 C 封装以用于故障时的动作。 权 利 要 求 书 CN 103135518 A 3 1/8 页 4 程序流控制监控例程、 与之相关的方法以及系统 技术领域 0001 本公开涉及用于监控软件应用 ( 这里称作 “模块” ) 的程序流控制, 这些软件应用 由遍及现代过程和制造工厂中使用的多种设备所执行。更具体地, 本公开涉及程序流控制 监控例程, 其用于多个模块以检测模块错误并采取适当的工厂特定的动作。 背景技术 00。
12、02 如今, 过程和制造工厂在几乎工厂运行的各个方面使用计算机系统和基于微处理 器的监控和控制系统。单独的计算机系统和基于微处理器的监控和控制系统存储多个模 块, 当其运行时, 其实现工厂多个方面的运行。 任何给定的模块的具体的功能的范围是从监 控和控制单独的工厂现场设备到促进运行和维护活动, 到为管理报告提供数据。 0003 包含基于微处理器的控制例程的现场设备已经变得普通。很多时候, 任何给定的 现场设备处理器顺序地执行若干模块。单独的现场设备经常包含嵌入式系统。任何给定 的嵌入式系统存储和执行多个与特定的工厂监控和 / 或控制功能有关的模块。例如, 一个 给定的数字设备控制器可以被配置为。
13、控制罐中的液位。 控制器可以具有来自罐液位传感器 的输入和至阀门控制器的输出。 数字设备控制器执行一个或多个模块, 这些模块控制输出, 以在罐中的液位波动超过或低于期望的液位时相应地打开或关闭阀门。 任何给定的现场设 备, 无论是传感器 ( 即液位传感器 ) 或执行器 ( 即阀门控制器 ) 自身可以是一个数字设备, 其被设计为执行一个或多个模块, 例如将模拟数据转化为数字数据的模块。 很多时候, 任何 给定的现场设备处理器执行与功能相关的模块, 这些功能的范围从处理器与 I/O 口之间的 通信例程到用于将模拟值转化为该值的数字表示的例程。 0004 工厂运行和维护计算机系统也经常执行很多的模块。
14、。 当在一个相应的处理器上执 行运行和维护例程时, 为工厂人员提供与单独的工厂设备交互能力。 附加地, 工厂管理计算 机系统经常执行多个模块。当在一个相应的处理器上执行管理计算机系统例程时, 为工厂 人员提供运行数据和与之相关的报告。 0005 已知的程序流控制监控例程需要额外的多达 2MB 的存储器来存储所有的相关数 据。除程序流控制模块自身的大小之外, 所需要的存储器大小取决于完整的嵌入式固件的 大小和需要由程序流控制监控的模块的数量。程序流控制监控例程是模块特定的。很多时 候, 在嵌入式系统中存储器是有限的。典型地, 在相应地开始执行之前, 程序流控制模块决 定需要被监控的模块的数量。一。
15、旦需要被检测的模块的数量确定了, 相应的存储器分配就 设置好了。 因此, 需要提供一种程序流控制监控例程, 其需要很少的存储器且其能够监控多 个模块。 发明内容 0006 在一个实施例中, 过程工厂监控和 / 或控制设备包括被配置为接收至少一个输入 和产生至少一个输出的控制器。该过程工厂监控和 / 或控制设备还包括用于存储至少一个 模块的计算机可读介质。 本公开的程序流控制监控例程在运行时间内动态地确定需要被监 说 明 书 CN 103135518 A 4 2/8 页 5 控的模块的数量, 且相应地增加或减少相应的存储器分配。控制器进一步被配置为执行模 块, 以在过程中实现监控和 / 或控制功。
16、能。过程工厂监控和 / 或控制设备还包括存储在计 算机可读介质上的程序流控制监控例程, 当执行该程序流控制监控例程时, 其检测与模块 有关的任何错误且提供指示何时检测到任何错误的时间戳。 程序流控制监控例程包括接口 例程, 当检测到任何模块错误时执行该接口例程, 且该接口例程初始化工厂特定的警报和 / 或动作。 0007 在另一个实施例中, 在与过程工厂监控和 / 或控制有关的模块中检测错误的方法 包括提供一个被配置为接收至少一个输入和产生至少一个输出的控制器。 该方法还包括提 供计算机可读介质和存储至少一个模块和至少一个程序流控制监控例程。该方法还包括 : 执行该模块以在过程中实现监控和 /。
17、 或控制功能, 和执行程序流控制监控例程以检测与模 块的执行有关的任何错误。 该方法还包括 : 提供指示何时检测到任何模块错误的时间戳, 以 及与任何给定的模块有关的错误所引入的时间量, 并在检测到任何模块错误时, 执行接口 例程以初始化工厂特定的警报和 / 或动作。 0008 在又一个实施例中, 用于在过程工厂监控和 / 或控制中使用的计算机可读介质包 括至少一个存储在该计算机可读介质上的与监控和 / 或控制过程有关的模块和至少一个 存储在该计算机可读介质上的程序流控制监控例程。执行该程序流控制监控例程, 以检测 与该模块有关的任何错误, 且该程序流控制监控例程提供指示何时检测到错误的时间戳。
18、。 计算机可读介质还存储至少一个接口例程, 当检测到任何模块错误时执行该接口例程, 以 初始化工厂特定的警报和 / 或动作。 附图说明 0009 图 1 示出了工厂监督控制和数据采集系统的框图 ; 0010 图 2 示出了过程工厂内的一块区域的布置图 ; 0011 图 3A-3D 示出了多个数字的现场设备的输出 ; 0012 图 4A-4C 示出了多个数字的现场设备的输入 ; 0013 图 5 示出了一个数字的现场设备的框图 ; 0014 图 6 示出了一个用于监控管理的 OMD ; 0015 图 7 包含表 1, 表 1 解释了与给定的类变量有关的功能 ; 0016 图 8 示出了为了监控而。
19、注册安全功能 / 线程 / 功能的顺序 ; 0017 图 9 示出了为从监控移除而注销安全功能 / 线程的顺序 ; 0018 图 10 示出了安全功能 / 线程 / 功能性的顺序 ; 0019 图 11 示出了解释程序流控制的监控和初始化和使用的顺序图 ; 0020 图 12 示出了为给定的事件建立计时器的流程图 ; 0021 图 13 示出了用于确定给定的计时器周期是否在范围内的流程图 ; 0022 图 14 示出了监控程序流控制监控例程是否如期望地运行的执行顺序 ; 以及 0023 图 15 和 16 示出了用于适应变化的模块执行顺序的例程。 具体实施方式 0024 在一个实施例中, 一个。
20、工厂设备的嵌入式系统存储和执行多个与各种工厂特定的 说 明 书 CN 103135518 A 5 3/8 页 6 功能相关的模块。程序流控制监控例程存储在工厂设备的存储器上, 当其在相应的处理器 上执行时, 其检测动态 ( 例如, 与运行时间有关 ) 地注册的、 由工厂设备执行的模块中的任 何错误。 该程序流控制监控例程包括模块注册例程、 模块监控例程和接口例程。 该模块注册 例程在系统运行时间内根据用户输入动态地注册和注销监控的模块。 模块监控例程监控已 注册模块的任何错误并在检测到任何模块错误时初始化接口例程的执行。 接口例程提供工 厂特定的警报和 / 或动作。因此, 用公共模块监控例程监。
21、控所有的已注册模块。具有如所 述的模块化设计的程序流控制监控例程使得模块监控例程能够从模块到模块地重复使用。 因此, 程序流控制监控例程是能够与已注册的需监控模块的数量成比例地升级的。这对于 具有有限的存储器且存储和执行大量的模块的嵌入式系统是非常有用的。 0025 当执行程序流控制监控例程时, 其实施以下功能中的任意一个 : 模块执行监控、 用 于模块执行故障时动作的接口、 模块顺序监控、 模块顺序执行监控、 用于模块顺序执行故障 时动作的接口、 缓冲区溢出监控、 用于缓冲区溢出时动作的接口、 实时操作系统 (Real Time Operating System : RTOS) 线程监控、 。
22、检测线程是否以所要求的时间周期运行、 检测线程是 否锁定、 检测线程是否运行太快或者太慢、 检测模块是否如期望地周期性运行、 检测到线程 故障时的动作接口、 以上的任何子组合或组合。 0026 对在给定的工厂系统内执行的所有模块而言, 模块监控例程可以是共用的。因为 工厂系统故障动作依赖于程序流控制监控例程在其中实现的给定的系统, 所以包括接口例 程的程序流控制监控例程一旦检测到任何模块错误就会便利共用的工厂动作。 0027 现在参照图1, 示出的工厂SCADA(Supervisory Control And Data Acquisition : 监督控制与数据采集 ) 系统 100 包括若干。
23、业务和其他计算机系统, 这些计算机系统通过一 个或多个通信网络与若干个控制和 / 或监控设备相互连接。应当理解, 该工厂 SCADA 系统 100 具有很多模块, 这些模块由同样多数量的分布于整个工厂范围内的设备执行。 0028 该工厂 SCADA 系统 100 包括一个或多个过程控制系统 112 和 114。过程控制系统 112 可以是一个传统的过程控制系统, 诸如 PROVOX 或 RS3 系统或任何其他的 DCS, 该传统的 过程控制系统包括耦合至控制器 112B 和输入 / 输出 (Input/Output : I/O) 卡 112C 的操作 员界面 112A, 控制器 112B 和 。
24、I/O 卡 112C 转而耦合至多个现场设备, 诸如模拟的和高速可 寻址远程变送器 (Highway Addressable Remote Transmitter : HART) 的现场设备 115。可 以是分布式过程控制系统的过程控制系统 114 包括一个或多个操作员界面 114A, 该一个或 多个操作员界面 114A 通过诸如以太网总线的总线耦合至一个或多个分布式控制器 114B。 该控制器 114B 可以是例如由奥斯汀、 德克萨斯州的 Fisher-Rosemount 系统公司销售的 DeltaVTM控制器或任何其他期望的类型的控制器。该控制器 114B 通过 I/O 设备连接至一 个或。
25、多个现场设备116, 例如HART或现场总线现场(FF)设备或任何其他的智能或非智能的 现场设备, 包括例如那些使用AS 接 口和 CAN 协议中的任何协议的设备。程序流控制监控例程与 HART、 现场总线、 基金会现场 总线、和 Modbus 是兼容的。已知的现场设备 116 可以给控制器 114B 提供与 过程变量以及其他设备信息有关的模拟的或数字的信息。操作员界面 114A 可以存储和执 行对于控制过程运行的过程控制操作者可用的模块, 其包括控制优化器、 诊断专家、 神经网 络、 调谐器等。在过程控制系统 112、 114 中的任何给定的设备可以包括存储在相应的存储 器上的且由相应的处理。
26、器至少周期性地执行的若干个模块。 程序流控制监控例程可以包含 说 明 书 CN 103135518 A 6 4/8 页 7 于任何给定的过程控制系统模块中。 0029 诸如执行资产管理解决方案 (Asset Management Solutions : AMS) 的模块或任何 其他的监控和通信模块的计算机 118 的维护系统可以连接至过程控制系统 112 和 114 或其 中的单个的现场设备, 以实施维护和监控活动。例如, 维护计算机 118 可以通过任何期望的 通信线路或网络 ( 包括无线或手持设备网络 ) 连接至控制器 112B 和 / 或至现场设备 115 来相互通信, 且在某些情况下在。
27、现场设备 115 上重新设置或实施其他的维护活动。相似地, 诸如AMS模块的维护模块可以安装在分布式过程控制系统114中且由与分布式过程控制系 统 114 有关的一个或多个用户界面 114A 执行, 以实施维护和监控功能, 包括涉及现场设备 116 运行状态的数据收集。任何给定的维护系统可以包含程序流控制监控例程。 0030 工厂SCADA系统100还包括多个转动设备120, 例如涡轮机、 电机等等, 这些通过一 些永久的或临时的通信链路 ( 如总线、 无线通信系统或连接至设备 120 来读数且随后移除 的手持设备 ) 连接至维护计算机 122。维护计算机 122 可以存储和执行已知的监控和诊。
28、断 模块 123, 例如由诺克斯维尔、 田纳西的 CSI 系统公司销售的 RBMwareTM或任何其他用于诊 断、 监控和优化转动设备 120 的运行状态的已知的模块。维护人员经常使用模块 123 去维 护和监督转动设备 120 的性能, 来确定转动设备 120 的问题, 并确定转动设备 120 是否以及 什么时候必须维修或更换。任何一个转动设备模块可以包含程序流控制监控例程。 0031 工厂SCADA系统100还包括发电和配电系统124, 其具有与工厂有关的发电和配电 设备 125, 该发电和配电设备 125 通过例如总线连接至另一台计算机 126, 其运行并监督该 发电和配电设备 125 。
29、的运行。计算机 126 可以执行已知的诸如由例如 Liebert 和 ASCO 或 其他公司提供的功率控制和诊断模决 127, 以控制和维护该发电和配电设备 125。在发电和 配电设备上存储和执行多个模块。 任何一个发电和配电设备模块可以包含程序流控制监控 例程。 0032 提供计算机系统 130, 其通信地连接至与在过程工厂 100 内的多个功能性系统相 关的计算机或接口, 包括过程控制功能 112 和 114、 诸如那些在计算机 118、 114A、 122 和 126 中实现的维护功能和业务功能。 具体地, 计算机系统130通过总线132通信地连接至传统的 过程控制系统112和与该控制系。
30、统相关的维护接口118、 连接至分布式过程控制系统114的 过程控制和 / 或维护接口 114A、 连接至转动设备维护计算机 122 和发电和配电计算机 126。 总线 132 可以使用任何期望的或适合的局域网 (LAN) 或广域网 (WAN) 协议来提供通信。如 图 1 所示, 计算机 130 还通过同一个或不同的网络总线 132 连接至业务系统计算机和维护 规划计算机 135 和 136, 其可以执行例如企业资源规划 (Enterprise Resource Planning : ERP) 模块、 物料资源规划 (Material Resource Planning : MRP) 模块、 。
31、计算机维护管理系统 (Computer Maintenance Management Systems : CMMS)、 核算、 生产和客户订货系统模块、 维 护规划系统模块或任何其他期望的业务模块, 诸如零部件、 存货和原材料订货模块、 生产调 度模块等等。 计算机130还可以通过例如总线132连接至整个工厂范围的局域网137、 公司 的广域网138以及至计算机系统140, 该计算机系统140使得从远程的位置对工厂进行远程 监控或与工厂通信成为可能。任何一个计算机系统模块可以包含程序流控制监控例程。 0033 进一步提供了过程工厂内的多个设备的示例, 这些设备存储和执行多个模块, 图 2 示出。
32、了示例性的图形显示 200, 其可以由图形用户界面 (Graphical User Interface : GUI) 提供, 以向用户报告状态信息并使用户能够快速分析工厂内的系统的运行状态和性能。如 说 明 书 CN 103135518 A 7 5/8 页 8 图 2 所示, 给定的过程可以包括电机、 压缩机、 恒温调节器、 阀门、 调节器、 变速箱和其他与 具体的过程相关的设备。示出的给定的工厂系统具有一对罐 210、 240、 多个温度变送器 221、 251、 压力变送器 222、 252、 流量变送器 223、 253 等和管道, 所有这些可以如图 2 所示那 样相互连接。任何给定的数。
33、字设备控制器模块可以包含依据本发明的程序流控制监控例 程。 0034 应当理解, 任何给定的工厂系统可以包括现场设备, 这些现场设备涉及喷水、 远程 的泵、 移动轨道车、 旋转反应堆、 水源 / 热交换器、 温度分析 / 罐液位、 总生产标头、 内燃机 排放、 苯罐、 涡轮机单元、 泵振动、 旋转石灰窑、 过滤器堵塞检测、 安全喷淋、 水源维护、 移动 / 临时网络、 精炼厂管理、 轧辊轴承、 热水箱、 河水 ( 周围的 )、 蒸汽裂化器、 处理后的水的使 用、 过滤条件、 管道系统、 水源压力、 远程储罐、 冷芯盒、 压缩机空气、 移动运营商、 压缩机、 蒸 汽线路、 蒸汽分配线路、 旋转氧。
34、化铝窑、 电力工业中的应用、 储罐监控系统、 管道线路、 手工 阀、 燃料供应系统、 临时装置、 燃烧室壁、 远程罐、 树脂(批)温度、 NOx排放、 移动水源测试系 统、 过滤器堵漏 / 蒸汽气流、 热传递、 控制网络桥接、 空气压缩机、 焦化装置、 毛油的生产流 程、 高炉炉缸、 气体平衡 / 水源和炉温控制。有关给定的监控和 / 或控制设备的任何模块可 以包含根据本发明所述的程序流控制监控例程。关于有关工厂的设备的、 存储和执行多个 模块的其他示例, 图 3A-3D 示出了与工厂的控制相关的现场设备。这些设备可以被配置为 由来自诸如参照图 5 示出和描述的数字设备控制器的输出致动。 00。
35、35 图 3A 示出了现场设备 300a, 其包括线性阀门 305a、 数字阀门控制器 310a 和线性 阀门致动器315a。 图3B示出了现场设备300b, 其包括旋转阀门305b、 数字阀门控制器310b 和旋转阀门致动器 315b。图 3C 示出了现场设备 300c, 其包括泵 305c、 数字电机 / 泵控制器 310c 和电机 ( 牵引机 )315c。图 3D 示出了现场设备 300d, 其包括第一牵引机 305d、 数字牵 引机控制器 ( 未示出 ) 和第二牵引机 315d。应当理解, 任何给定的现场设备可以被配置为 与工厂实时运行有关的过程控制致动器。 任何给定的工厂监控设备模块。
36、可以包含程序流控 制监控例程。 0036 更进一步的涉及过程工厂的、 存储和执行多个模块设备的示例, 图 4A-4C 示出了 与工厂监控相关的现场设备。这些设备可以被配置为由诸如参照图 5 示出和描述的数字设 备控制器的输入监控。图 4A 示出了现场设备 400a, 其包括温度传感器 405a 和数字温度监 控器 / 控制器 410a。图 4B 示出了现场设备 400b, 其包括液位传感器 405b 和数字液位监控 器 / 控制器 410b。图 4C 示出了现场设备 400c, 其包括 Ph 传感器 405c 和数字 Ph 监控器 / 控制器 410c。应当理解, 任何给定的现场设备可以被配置。
37、为与过程工厂实时运行有关的过 程监控 / 控制器。任何给定的工厂监控设备模块可以包含程序流控制监控例程。 0037 现在参照图 5, 示出了数字设备控制器 500。数字设备控制器存储和执行与相关 的现场设备的控制和 / 或监控有关的模块的主机。数字设备控制器 500 包括处理器 510、 离散输入 515、 模拟输入 520、 离散输出 525、 模拟输出 530、 存储器 535、 近程现场通信模块 540、 远程现场通信模块 555 和远程现场通信天线 560。近程现场通信模块 540 包括数字电 路 545 和近程现场通信天线 550。通常, 处理器 510、 存储器 535 和有关的模。
38、块的主机为嵌 入式系统计时。 本发明所描述的程序流控制监控例程特别适合于期望有低的存储器和高的 性能的嵌入式模块。应当理解, 任何在图 3A-3D 和 4A-4C 中示出的给定的现场设备可以包 含包括嵌入式系统的数字设备控制器, 该嵌入式系统执行由程序流控制监控例程所监控的 说 明 书 CN 103135518 A 8 6/8 页 9 模块。本领域技术人员可以理解, 在各种工厂设备中存储和执行有多个单个的模块。 0038 程序流控制监控例程可以被设计为运行时间模块执行监控例程, 其具有带有时间 戳的模块错误检测。当其以 C+ 编写时, 程序流控制监控例程能够用于任何模块, 且对于以 C+ 编写。
39、的模块尤其是有益的。当其以 C+ 编写时, C 封装 (C-wrapper) 可用于故障时的动 作。因此, 需要更少的存储器开销, 每个监控模块 32 字节。相应的程序流控制监控例程不 需要使用外部的存储器 ( 即使用内部存储器 ) 来提供时间戳。 0039 以 C+ 编写的程序流控制监控例程可以在模块自身内部实现。给定的模块可以被 设计来检测模块错误且采取动作, 而不用依赖于外部设备 / 接口。相应的程序流控制监控 例程可以以面向对象编程 (Object Oriented Programming : OOP) 概念来设计。因此, 通过 添加 / 移除监控 (Monitor) 类的属性来完成监。
40、控机制的修改。在至少一个实施例中, 程序 流控制监控例程以面向对象编程设计, 以使得其对于不同的模块执行监控能够重复使用 N 次。为与其他应用通信的接口例程提供对于执行故障的立即响应。 0040 参照图6, 程序流控制监控例程600包括模块监控管理例程605和待由模块监控管 理例程 605 监控的模块列表 610。如图 6 所示, 例程 CMonitorMgr 使用例程 CCirDLinkList 类来创建待监控模块列表。例程 CMonitorMgr 独立于实时操作系统 (RTOS) 功能。例程 CMonitorMgr 不使用任何实时操作系统的应用程序接口来获取关于监控的线程的信息。例 程 C。
41、MonitorMgr605 和例程 CMonitor_TimeMinMax615 两者均使用例程 CSisTime 类 620 来 在程序流控制监控例程的每次执行中更新时间戳。 更新的时间戳与任何检测到的模块错误 有关。 0041 进一步参考图 6 并附加地参考在图 7 中作为元素 700 示出的表 1, 提供了功 能 705 的说明 710, 功能 705 由例程 CMonitorMgr605、 720 和例程 CMonitor_TimeMinMax 类 615、 715 提 供。 变 量 m_bEnabledMonitoring625 保 持 为 假,直 到 例 程 CMonitor_ T。
42、imeMinMax 通过例程 TriggerTime()719 收到第一次更新。在收到第一次更新之后, 变量 m_ulLastTriggerTime 将被更新且变量 m_bEnabledMonitoring 将被写为真, 例程 CMonitorMgr 将检查阈值时间限制。如果在例程 CMonitorMgr 已经调用检查时监控还没有 激活, 那么将不实施阈值时间检查。例程 CMonitorMgr 可以被配置为在中断级或线程级上 以周期性的时间运行。任何打算由例程 CMonitorMgr 监控的模块将调用 Register()721。 这最终将模块添加至例程 CMonitorMgr 的循环双向链表。
43、变量 m_LIST_monitor725。本公开 的程序流控制监控例程在运行时间内动态地确定需要被监控的模块的数量, 且相应地增加 或减少相应的存储器分配。 0042 任何给定的模块、 线程或者功能关于监控只可以被注册一次。如果试图尝试第 二次模块注册, 那么例程 CMonitorMgr 不会注册该模块且对于所收到的请求返回否定响 应。图 8 和 9 分别示出了从例程 CMonitorMgr 注册 800 和注销 900 监控的顺序。为了 从例程 CMonitorMgr 移除模块、 线程或功能, 例程 CMonitor_TimeMinMax 对象调用例程 Unregister()722。对于所。
44、接收到的从监控的注销, 如果在例程 CMonitorMgr 中找到了该模 块、 线程或功能, 那么例程 CMonitorMgr 从列表中移除该模块并返回肯定响应。如果在注销 时没有找到该模块、 线程或功能项, 那么例程 CMonitorMgr 将对所接收的请求发送否定响 应。 0043 图 10 示出了顺序图 1000, 其具有关于例程 CMonitorMgr 类 1005 的执行的详情。 说 明 书 CN 103135518 A 9 7/8 页 10 CMonitorMgr 以周期性的计划来运行程序流控制监控例程。该 CMonitorMgr 执行时间间隔 根据系统从几微秒到几秒不等, 且可以。
45、被配置在系统运行时间上。使用轮询和 / 或中断超 时来运行对每个已注册在例程 CMonitorMgr 类下的模块的周期性的检查。当接收到超时事 件 1010 时, 例程 CMonitorMgr 开始监控已注册的线程、 功能或模块。 0044 在图 11 中示出了程序流控制监控例程的执行 1100。如果变量 “Limit” 超出了配 置的最大限制或落到配置的最小限制之下, 那么将调用接口例程 DevExecutionFailure() 并采取工厂特定的警报和/或动作。 该警报和/或动作可以由设备开发者重写, 以赋予设备 特定的动作。当不需要最小限制检查时, m_ulMimTimeLimit 将被。
46、设置为 NO_LIMIT_CHECK, 以表明不会检查下限。相似地, 这可以应用到最大时间限制。 0045 图 12 示出了流程图 1200, 其示出了当 TriggerTime() 类收到来自正被监控的 模块的调用时所执行的例程。流程图 1200 中示出的基于中断的计时器可以被用于核实 CMonitorMgr自身是否正确地执行。 例程开始于开始块1205。 在块1210中实施对是否激活 程序流控制监控的确定。如果已经激活了, 在块 1215 中获取当前时间的快照 (snapshot), 随后在块 1215 中计算消逝的时间。在块 1225 中确定这是否是从该例程被重置后的第一次 执行。如果是。
47、, 那么在块 1230 中获得自上次触发时间起的最小时间值。如果不是, 那么在 块 1235 中将标识 “真” 分配给与重置后的第一次执行相关的变量。在块 1240 中实施自上 一次触发时间起的最大时间值的计算, 随后在该例程在块1250中结束之前, 在块1245中将 上一次触发时间设置为等于当前时间。如果 CMonitorMgr 自身不在执行, 那么将调用安全 功能以将相应的工厂过程设置为处于安全状态。 0046 图 13 示出了流程图 1300, 其示出了一个例程, 当该例程执行时, 该例程确定由程 序流控制监控例程监控的模块是否在期望的限制之内具有相关联的执行次数。 例程开始于 开始块1。
48、305。 在块1310中, 检查变量 “WithinLimit Status” 是否等于 “真” , 随后在块1315 中, 检查监控是否已激活。 如果监控没有被激活, 那么例程继续进行至块1355。 如果监控已 激活, 那么在块 1320 中检查变量 “MinTimeLimit” 是否等于变量 “NO_TIME_LIMIT” 。如果 相等, 那么在块 1325 中实施测试, 以确定变量 “MinTime” 是否小于变量 “MinTimeLimit” 。 在块 1330 中实施检查, 以确定变量 “MaxTimeLimit” 是否等于变量 “NO_TIME_LIMIT” 。在 块1335中获取。
49、当前时间的快照, 且计算变量 “GetElapsedTime” , 随后在块1340中获得变量 “Maxtime” 。在块 1345 中确定变量 “MaxTime” 是否大于变量 “MaxTimeLimit” 。如果大于, 那么确定变量 “WithinLimit” 的状态是否等于 “假” 。在块 1355 中返回被监控的模块的状 态。当模块执行时间超出可接受的范围时, 返回相应的模块错误状态。 0047 如 图 14 中 的 顺 序 表 1400 所 示,当 模 块 发 生 故 障 时 执 行 接 口 例 程, DevExecutionFailure() 以用于监控功能, 线程或者 CMonitorMgr 在默认情况下会自身产 生警报。 默认动作可以由设备开发者重写, 以具有工厂特定的动作, 诸如关掉特定的某件设 备。 0048 很多时候, 期望使安全功能以预定的顺序而被执行。如参照图 15 和 16 所描述的 并如顺序表 1500 和流程图 1600 所示的那样监控安全顺序执行。如图 15 所示地操控变量 “SSequenceExecution” 1505、 布尔型的 “bE。