IP Library Granted Patent US 12,416,911
Granted Patent B2
US 12,416,911 · App. 18/136,052 · Granted Sep 16, 2025

Modular process control system

Inventors: Mark J. Nixon (Thorndale, TX); Anthony Amaro, Jr. (Cedar Park, TX)
Assignee: FISHER-ROSEMOUNT SYSTEMS, INC.
G05B19/4185G06F8/63G06F9/45558G06F9/505G06F9/541G05B2219/1134G06F2009/4557G06F2009/45591
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,416,911
App. No.
18/136,052
Granted
Sep 16, 2025
Kind
B2
Abstract

In one aspect, a micro-service control architecture provides a modular, flexible platform for designing, diagnosing, updating and/or expanding process control systems. Each service is containerized to provide portability and isolation from other components of the process control system. In another aspect, a function block diagram includes a “shadow” block that acts as an interface to an external, custom calculation engine, thereby enabling the custom calculation engine to operate synchronously with respect to other function blocks of the function block diagram.

Claims (64)

1. A method of incorporating custom calculations in a process control system, the method comprising:

controlling a physical process using a plurality of function blocks, wherein

each of the plurality of function blocks (i) has one or more respective inputs and/or one or more respective outputs, and (ii) implements a respective control algorithm,

controlling the physical process includes executing the plurality of function blocks in an order dictated by an arrangement of connections between inputs and outputs of different function blocks of the plurality of function blocks, and

executing the plurality of function blocks includes executing a shadow block, of the plurality of function blocks, that provides an interface to at least one input and at least one output of a custom calculation engine running externally to the plurality of function blocks in a container, wherein the shadow block obtains data output by the custom calculation engine and directly applies the data output by the custom calculation engine to a subsequent function block of the plurality of function blocks.

2. The method of claim 1 , wherein executing the shadow block includes:

transferring data received at one or more inputs of the shadow block to the container that includes the custom calculation engine; and

transferring data output by the custom calculation engine from the container to one or more outputs of the shadow block.

3. The method of claim 2 , wherein the container is an instance of a Docker image, an instance of an LXD image, a Windows container, a BSD jail, a chroot jail, or a virtual machine.

4. The method of claim 2 , wherein:

the shadow block provides the interface to the at least one input and the at least one output of the custom calculation engine via an application programming interface (API) of the container; and

transferring the data received at the one or more inputs of the shadow block to the container, and transferring the data output by the custom calculation engine from the container to the one or more outputs of the shadow block, both include transferring data via the API of the container.

5. The method of claim 4 , wherein the shadow block provides the interface to the at least one input and the at least one output of the custom calculation engine via (i) the API of the container and (ii) a container wrapper object that translates container data to runtime data that is interpretable by the process control system.

6. The method of claim 5 , comprising maintaining, by the container wrapper object, one or more of:

assignment of the shadow block to the container;

cached values of data transferred to and/or from the container;

attributes of the container;

license status of the container; and

diagnostic data associated with the container.

7. The method of claim 2 , comprising, prior to controlling the physical process:

obtaining an image of the custom calculation engine from a third party via an Internet link; and

creating an instance of the image of the custom calculation engine at a physical device of the process control system.

8. The method of claim 1 , wherein:

the plurality of function blocks are function blocks of a function block diagram as specified by the International Electrotechnical Commission (IEC) 61131-3 specification; and

the custom calculation engine is implemented outside of the function block diagram.

9. The method of claim 1 , wherein:

at least a first function block of the plurality of function blocks is an input block that retrieves sensor data generated by a first field device of the process control system; and

at least a second function block of the plurality of function blocks is an output block that drives a second field device of the process control system.

10. The method of claim 1 , wherein executing the shadow block includes enforcing an execution order in which the shadow block does not provide data from the at least one output of the custom calculation engine to a subsequent function block of the plurality of function blocks until after the shadow block provides data, from a previous function block of the plurality of function blocks, to the at least one input of the custom calculation engine.

11. The method of claim 1 , comprising:

changing a status or mode of the shadow block to match a status or mode of the custom calculation engine.

12. The method of claim 1 , wherein controlling the physical process includes:

executing one or more additional shadow blocks, of the plurality of function blocks, that provide one or more additional respective interfaces to the at least one input and the at least one output of the custom calculation engine.

13. The method of claim 1 , comprising:

maintaining a status of the shadow block that indicates at least one of (i) whether the custom calculation engine is available, (ii) whether the custom calculation engine is being manually overridden, or (iii) whether the custom calculation engine is operating within the process control system.

14. A process control system, comprising:

one or more hardware control devices configured to:

control a physical process of a process control system using a plurality of function blocks, wherein

each of the plurality of function blocks (i) has one or more respective inputs and/or one or more respective outputs, and (ii) implements a respective control algorithm,

controlling the physical process includes executing the plurality of function blocks in an order dictated by an arrangement of connections between inputs and outputs of different function blocks of the plurality of function blocks, and

executing the plurality of function blocks includes executing a shadow block, of the plurality of function blocks, that provides an interface to at least one input and at least one output of a custom calculation engine running externally to the plurality of function blocks in a container, wherein the shadow block obtains data output by the custom calculation engine and directly applies the data output by the custom calculation engine to a subsequent function block of the plurality of function blocks.

15. The process control system of claim 14 , wherein executing the shadow block includes:

transferring data received at one or more inputs of the shadow block to the container that includes the custom calculation engine; and

transferring data output by the custom calculation engine from the container to one or more outputs of the shadow block.

16. The process control system of claim 15 , wherein the container is an instance of a Docker image or an instance of an LXD image.

17. The process control system of claim 15 , wherein:

the shadow block provides the interface to the at least one input and the at least one output of the custom calculation engine via an application programming interface (API) of the container; and

transferring the data received at the one or more inputs of the shadow block to the container, and transferring the data output by the custom calculation engine from the container to the one or more outputs of the shadow block, both include transferring data via the API of the container.

18. The process control system of claim 17 , wherein the shadow block provides the interface to the at least one input and the at least one output of the custom calculation engine via (i) the API of the container and (ii) a container wrapper object that translates container data to runtime data that is interpretable by the process control system.

19. The process control system of claim 18 , wherein the container wrapper object maintains one or more of:

assignment of the shadow block to the container;

cached values of data transferred to and/or from the container;

attributes of the container;

license status of the container; and

diagnostic data associated with the container.

20. The process control system of claim 15 , wherein:

the plurality of function blocks are function blocks of a function block diagram as specified by the International Electrotechnical Commission (IEC) 61131-3 specification; and

the custom calculation engine is implemented outside of the function block diagram and by one or more devices other than the one or more hardware control devices.

21. The process control system of claim 14 , wherein:

at least a first function block of the plurality of function blocks is an input block that retrieves sensor data generated by a first field device of the process control system; and

at least a second function block of the plurality of function blocks is an output block that drives a second field device of the process control system.

22. The process control system of claim 14 , wherein executing the shadow block includes enforcing an execution order in which the shadow block does not provide data from the at least one output of the custom calculation engine to a subsequent function block of the plurality of function blocks until after the shadow block provides data, from a previous function block of the plurality of function blocks, to the at least one input of the custom calculation engine.

23. The process control system of claim 14 , wherein one of the one or more hardware control devices maintains a status of the shadow block that indicates at least one of (i) whether the custom calculation engine is available, (ii) whether the custom calculation engine is being manually overridden, or (iii) whether the custom calculation engine is operating within the process control system.

24. The process control system of claim 14 , wherein the one or more hardware control devices each comprise a respective processor and a respective memory, the respective processors executing instructions stored in the respective memories to implement the plurality of function blocks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2023
From: NIXON, MARK J.; AMARO, ANTHONY, JR.
To: FISHER-ROSEMOUNT SYSTEMS, INC.
Reel/Frame 063999/0830 →
Continuity (2)
Division 16577053 · Sep 20, 2019
Related Publication 20230297408A1 · Sep 21, 2023
References Cited (32)
US 6738388B1 · Stevenson · 2004 [cited by examiner]
US 7249356B1 · Wilson · 2007 [cited by examiner]
US 8539061B2 · Shi · 2013 [cited by applicant]
US 10140453B1 · Fridakis · 2018 [cited by applicant]
US 11269676B2 · Taylor · 2022 [cited by examiner]
US 20090049453A1 · Baran et al. · 2009 [cited by applicant]
US 20110040390A1 · Blevins · 2011 [cited by examiner]
US 20130204398A1 · Minamizawa et al. · 2013 [cited by applicant]
US 20150095788A1 · Thiele et al. · 2015 [cited by applicant]
US 20160033952A1 · Schroeter · 2016 [cited by examiner]
US 20180063286A1 · Braga Ameixieira et al. · 2018 [cited by applicant]
US 20180173205A1 · Miller et al. · 2018 [cited by applicant]
US 20180321662A1 · Nixon et al. · 2018 [cited by applicant]
US 20190079804A1 · Thyagarajan · 2019 [cited by applicant]
US 20190097900A1 · Rodriguez et al. · 2019 [cited by applicant]
US 20200204463A1 · Guan et al. · 2020 [cited by applicant]
US 20200257275A1 · Tewari · 2020 [cited by examiner]
US 20200310394A1 · Wouhaybi et al. · 2020 [cited by applicant]
US 20200409450A1 · Hovis et al. · 2020 [cited by applicant]
US 20210004275A1 · Avagyan et al. · 2021 [cited by applicant]
US 20210075888A1 · Mishra · 2021 [cited by applicant]
US 20210168071A1 · Chawki · 2021 [cited by applicant]
US 20210195806A1 · Kommula et al. · 2021 [cited by applicant]
US 20210250388A1 · Wang et al. · 2021 [cited by applicant]
EP 3472717A2 · 2019 [cited by applicant]
WO WO2019043687A2 · 2019 [cited by applicant]
Goldschmidt et al., “Container-Based Architecture for Flexible Industrial Control Applications,” Journal of Systems Architecture, 84:28-36 (2018). [cited by applicant]
Gruner et al., “Alternatives for Flexible Deployment Architectures in Industrial Automation Systems,” IEEE 23rd International Conference on Emergin Technologies and Factory Automation (ETFA), 1:35-42 (2018). [cited by applicant]
Search Report for Application No. GB2013936.6, dated Apr. 28, 2021. [cited by applicant]
Sinha et al., “A Scalable Approach for Re-Configuring Evolving Industrial Control Systems,” Proceedings of the 2014 IEEE Emerging Technology and Factory Automation (ETFA), pp. 1-8 (2014). [cited by applicant]
T.-D. Nguyen, E.-N. Huh, and M. Jo, “Decentralized and revised content-centric networking-based service deployment and discovery platform in mobile edge computing for IoT devices,” IEEE Internet Things J., vol. 6, No. 3… [cited by applicant]
Office Action for Japanese Application No. 2020-149119, dated May 7, 2024. [cited by applicant]