DETAILED ACTION
This office action is in response to Applicant’s arguments and amendments filed on 7/30/2025. Claims 1-20 have been amended. Therefore, Claims 1-20 are still pending in the present application.
Response to Amendments/Arguments
Applicant’s argument/remarks, on page 10, with respect to rejections to claim(s) 12 under 35 USC § 112 (b) have been fully considered and are persuasive. Therefore, rejections to the claims under 35 USC § 112 have been withdrawn. The amendments overcome the rejections.
Applicant’s argument/remarks, on pages 10-12, with respect to rejections to claims 1-20 under 35 USC § 103(a) have been fully considered and they are persuasive. Therefore, rejections to the claims have been withdrawn based on the amendments. However, upon further consideration, a new ground(s) of rejection is made in view of Kenst et al.
On page 11, the Applicant argues that:
“None of the cited references teach a firmware extension comprising functionality to locate and provide information from CIP objects”. These arguments are respectfully persuasive.
On page 11, the Applicant argues that:
“Rischar also fails to disclose receiving, via a deployment interface, a user selection to activate the firmware extension loaded in the industrial PLC. Rather”. The arguments are respectfully unpersuasive.
Rischar teaches a tool that allows user to download, install and run/activate an extension software program. Also, a program cannot be activated in a remote controller if it is not downloaded first. Lawson also teaches an interface with options to activate, delete and disable software from first computer tool software already loaded in a second remote controller/platform (see Lawson 0071, 0101). Lawson was also cited to teach these limitations.
In response to applicant's argument that Lawson is a nonanalogous art, it has been held that a prior art reference must either be in the field of the inventor’s endeavor or, if not, then be reasonably pertinent to the particular problem with which the inventor was concerned, in order to be relied upon as a basis for rejection of the claimed invention. See In re Oetiker, 977 F.2d 1443, 24 USPQ2d 1443 (Fed. Cir. 1992). In this case, the claimed invention is simply directed to an interface with options to activate, delete, and disable a program/software extensions after the program is loaded in a remote system or controller and which Lawson teaches an interface with same options and solves the same problem of remotely configuring a system. Remotely configuring a controller/computer with a interface with options of activating, deleting, and disabling was widely used in a lot of computer systems including computer with Microsoft OS.
On page 13, the Applicant further argues that:
“Rischar teaches away from the use of virtualization”. The arguments are respectfully unpersuasive.
As stated previously (OA of 03/31/2025), and in response to the arguments above, Rischar Paragraph 0011 suggests that it was well known to use virtualization to provide further capabilities in PLC or industrial controllers. Rischar only suggests that virtualization requires more memory in the controllers. However, Richard does not suggest or forbids the use of virtualization in this paragraph.
On page 14, the Applicant further argues that:
“Rischar does not teach a firmware extension. The Office Action has applied an overly broad interpretation of the term "firmware" to read on Rischar' s loadable modules. In Rischar, the operating system and firmware are disclosed as distinct elements, and Rischar explains explicitly that the loadable modules provide functionality to extend the operating system without updating the firmware… Rischar [0013]. Thus Rischar's operating system extension cannot be reasonably interpreted to be a firmware extension as recited in the present claims in view of the knowledge of one of ordinary skill, the disclosure of the present application, and the disclosure of Rischar. The Applicant notes that claims must be given their broadest reasonable interpretation”. These arguments are respectfully unpersuasive.
The objective or result of the current invention is exactly the same objective/result as Rischar’s invention. For instance, the original disclosure of this instant application [0022] recites “the present technology provides a framework for adding new functionality to industrial controllers without the need to perform entire firmware updates…”. The current invention generate extensions called firmware extensions. Rischar generate loadable modules software that bind to and/or use firmware and other resources and which suggests “firmware extensions” modules (see 0013, 0016, 0059).
The disclosure does not explicitly define the terms “firmware” or “firmware extension”, and some other terms which acquire different meaning in the state of the art of computer science. For instance, the published disclosure [0021] recites “executing firmware (i.e., embedded software) extensions”, thus, the disclosure exemplifies the firmware as embedded software. The original disclosure also recites 0031 “extension executable 112 is representative of any extension executable that may be developed in accordance with the present disclosure…A firmware extension, such as extension executable 112, provides one or more components to perform one or more functions not natively available within firmware of controller 131”, thus, a firmware extension is any executable software being installed in the PLC . Based on this broad definition, Rischar clearly teaches extensions as being executables and which performs some function within the PLC (see 0043-0045).
The disclosure does not explicitly teach the algorithm or code included in said firmware extensions and thus, they have been interpreted in the BRI in light of the disclosure and state of the art as “software executables” stored in a PLC.
The Applicant’s simply states that “Thus Rischar's operating system extension cannot be reasonably interpreted to be a firmware extension as recited in the present claims in view of the knowledge of one of ordinary skill”, but does not provide any explicit guidance or evidence on how to interpret the said term “firmware extension”. The Examiner agrees that firmware and operating systems are widely known and distinct software programs, and which bind together to allow a computer system to function properly.
The Applicant’s in a previous office action interpreted and stated in the arguments that “the general understanding of the terms "firmware" and "embedded software core" as referring to code that is specifically adapted to particular hardware” based on the NPL reference Wikipedia “Firmware” cited by the Applicant. The Applicant and the disclosure does not explain which particular hardware is adapted by the firmware or the algorithm of said firmware extension. The same NPL reference provides different broad definitions and interpretation of the term firmware such as “operating system’, “software” “program that will run on the system and provide all of its functions and “machine instructions’, “any computer program that is linked to hardware including machine instructions for BIOS”. The same NPL reference gives examples or definitions of Firmware such as timing and control system for washing machines, BIOS, operating systems, etc. Thus, the term firmware extension acquires different meaning as previously suggested by the Applicant’s cited reference (see Applicant’s response of 01/24/2025 pages 12-13) and, thus, extension has been interpreted as software/program.
Information Disclosure Statement (IDS)
The information disclosure statement (IDS) submitted on 06/10/2025 and 8/20/2025 was filed after the mailing date of the non-final Application 03/31/2025. The submission is in compliance with the provisions of 37 CFR 1.97. Accordingly, the information disclosure statement is being considered by the examiner.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim(s) 1, 3-5, 8-9, 11, 15-16, 18, 19 are rejected under 35 U.S.C. 103 as being unpatentable over Rischar et al (EP 3059647) in view of Govil et al (US 20080148048), Lawson et al (US 20130212129), and Kenst et al (US 20080109829).
As per claim 1, Rischar teaches an industrial programmable logic controller (PLC) (see Fig. 1 and 3 PLC 12; also, see [0032] “The industrial controllers A and B may be Programmable Logic Controllers (PLC's)”) comprising: one or more computer-readable storage media (see Fig. 1 memory 34; also, see [0034] “Hardware components of the industrial controllers A and B may each include…a memory 34 and a disk 36 or other form of non-volatile storage, including but not limited to Flash memory and/or solid state drives;);
a processing system operatively coupled to the one or more computer-readable storage media (see Fig. 1 processor 30 and also, see [0019] and [0028] and [0067] “An industrial controller comprising a processor executing: an operating system stored in non-transient memory for managing hardware components of the industrial controller…”;); and
program instructions stored on the computer-readable storage media, wherein the program instructions comprise a control program that, when read and executed by the processing system, directs the industrial PLC to (see Fig. 3 PLC 12 and see [0019] “an industrial controller comprises a processor executing: an operating system stored in non-transient memory for managing hardware components of the industrial controller…”; the term “control program” has been interpreted in the BRI in light of the specification as software or operating system executing instructions; also, see [0039] and [0052] “…The first and second application modules 182 and 184 may be modules of a control program running on an industrial controller 40 for controlling a controlled process….”):
load, using a deployment interface (the deployment interface has been interpreted in BRI in light of disclosure wherein it acquire several definitions based examples such as GUI, a CIP protocol or an extension development environment 111 including a computer, see original disclosure figs. 1-3; Rischar further teaches see Fig.1 interface 42 and see [00034] “a control network interface element 42 (allowing connection and communication with the control network 16 and/or 35 other networks”; also, see Fig. 3 interface 120; also, see [0042] “…embedded linker/loader/compiler 120…”, component 120 also is a deployment interface”; also, see claim 1 and 6 CIP connections; also, see [0040] “…the invention. The electronic computer 50 includes a design and configuration environment 100, such as RSLogix 5000 from Rockwell Automation, Inc. The design and configuration environment 100 may employ a graphical user interface or simply a high level computing language such as C++. The user designs, modifies and/or updates the project accordingly and produces a source module 102, which may include source application code, source library code, and/or other source data as generally understood in the art...”), a firmware extension into the industrial PLC (see [0019-0020], [0043-0045]; the term firmware extension has been interpreted in the BRI in light of the disclosure as executables software modules to be stored in a PLC and which provides functions for the PLC, see original disclosure 0031), wherein:
the firmware extension extends functionality of firmware in the industrial PLC (see [0019-0020] “a loadable module manager stored in non-transient memory configured to receive a second application module… The second application module may be configured to extend …at least a portion of the operating system while the first application module controls the at least a portion of the controlled process…”; also, see [0043] “…source modules, as well as executable and object files, may be loaded…”; see Fig. 3 module manager loads application modules including the extension application modules such as second application module Mod-A2 which is an extension software; also, see [0044] “…Accordingly, the loadable module manager 138 binds and places the application module 134 ("EXECUTABLE") into service among the loaded application modules 140 as a running application module 142 ("MOD_A3"). The running application module 142 ("MOD_A3") may, in turn, extend or modify at least a portion of the operating system while one or more of the loaded application modules 140 continues to control the controlled process”; also, see [0045] “loaded application modules 140”; also, see Col 18 lines 25-30 “…wherein the second application module is configured to extend or modify the at least a portion of the operating system without modification to the firmware”, also, loading is interpreted in the BRI as preparing a program for its execution by copying the instructions in memory for execution. That is the purpose of a loader such as the loadable manager 138”),
the firmware extension is loaded in a(see Fig. 5a the extensions are loaded in an execution environment separated from the OS and the kernel space. The kernel is part of the operating system; also, see [0013] “The present invention provides a "loadable module" architecture for industrial controllers in which new control program modules which provide updated functions or features may be loaded to extend or modify the underlying operating system and/or add or modify other services that are part of the industrial controller without updating the firmware and without disrupting or otherwise compromising the ability of the industrial controller to maintain continuous control over the controlled); and
the firmware extension comprises functionality to locate and provide particular information from each of multiple(se [0035] “source code modules may be delivered and then compiled and linked to create [resulting object modules within the industrial controller”; Also, see [0047], [0051], and [0057]);
provide, via the deployment interface, options to activate, (Rischar further teaches in [0040] “…The electronic computer 50 includes a design and configuration environment 100, such as RSLogix 5000 from Rockwell Automation, Inc. The design and configuration environment 100 may employ a graphical user interface or simply a high level computing language such as C++. The user designs, modifies and/or updates the project accordingly and produces a source module 102, which may include source application code, source library code, and/or other source data as generally understood in the art...”, this design environments allow a user the options to send and activate extensions; also, see Fig. 8 the files are sent and executed/activated; also, see [0062] “Finally, in a sixth process block 334, the fully bound modules are loaded and executed…”) after the firmware extension is loaded in the industrial PLC (also, see [0062] “Finally, in a sixth process block 334, the fully bound modules are loaded and executed” an extension or program can only be activated/executed after being loaded);
receive, via the deployment interface, a user selection to activate the firmware extension loaded in the industrial PLC (see Rischar further teaches in [0040] “…The electronic computer 50 includes a design and configuration environment 100, such as RSLogix 5000 from Rockwell Automation, Inc. The design and configuration environment 100 may employ a graphical user interface or simply a high level computing language such as C++. The user designs, modifies and/or updates the project accordingly and produces a source module 102, which may include source application code, source library code, and/or other source data as generally understood in the art...”, this design environments allow a user the options to send and activate extensions, the user select or chooses to send or not send programs to Controllers 12 or 14; also, see [0062]);
in response to the user selection, execute the firmware extension in the industrial PLC (see [0019-0020] “a loadable module manager stored in non-transient memory configured to receive a second application module… The second application module may be configured to extend …at least a portion of the operating system while the first application module controls the at least a portion of the controlled process…”; also, see [0043] “…source modules, as well as executable and object files, may be loaded…”; see Fig. 3 module manager loads application modules including the extension application modules such as second application module Mod-A2 which is an extension software; also, see [0044] “…Accordingly, the loadable module manager 138 binds and places the application module 134 ("EXECUTABLE") into service among the loaded application modules 140 as a running application module 142 ("MOD_A3"). The running application module 142 ("MOD_A3") may, in turn, extend or modify at least a portion of the operating system while one or more of the loaded application modules 140 continues to control the controlled process”; also, see [0045] “loaded application modules 140”; also, see Col 18 lines 25-30 “…wherein the second application module is configured to extend or modify the at least a portion of the operating system without modification to the firmware”, also, loading is interpreted in the BRI as preparing a program for its execution by copying the instructions in memory for execution. That is the purpose of a loader such as the loadable manager 138”);
during execution of the control program, when directed by the control program to perform a native function, call a native component of the firmware to perform the native function (see Fig. 3 and [0019] “an operating system stored in non-transient memory for managing hardware components of the industrial controller; a first application module stored in non-transient memory for controlling at least a portion of a controlled process via the operating system…”; see [0042] “local firmware… In addition, a resource manager 122 in the industrial controller A may reference a data structure 124, a library manager 126, and a local firmware 128 in the industrial controller A, and provide such resource information to the embedded linker/loader/compiler 120”; also, see Col 20 claim 2 “the operating system is configured to communicate with firmware before managing the hardware components”), wherein the native component of the firmware is embedded in hardware of the industrial PLC (see [0042] “local firmware… In addition, a resource manager 122 in the industrial controller A may reference a … a local firmware 128 in the industrial controller A, and provide such resource information to the embedded linker/loader/compiler 120”; thus, the firmware is embedded in hardware of the PLC in an embedded software core 120. The term firmware and embedded software core has been interpreted as suggested in the arguments in the BRI as “the terms "firmware" and "embedded software core" as referring to code that is specifically adapted to particular hardware”); and
during execution of the control program, when directed by the control program to perform an external function, call an external component provided by the firmware extension to perform the external function (see Col 16 lines 25-30 “…wherein the second application module is configured to extend or modify the at least a portion of the operating system without modification to the firmware”; also, see [0052]; also, see Col 20 claim 2).
While Rischar teaches that the system can provide virtualization (see 0011) and also teaches a computer with a design environment for the creation of extension applications (see 0035 and Fig. 3 100), Rischar does not explicitly teach:
the firmware extension is loaded in a virtualized execution environment isolated from an operating system (OS) kernel of the industrial PLC,
provide, via the deployment interface, options to delete, and disable the firmware extension after the firmware extension is loaded in the industrial PLC,
receive, via the deployment interface, a user selection to activate the loaded firmware extension in the industrial PLC; in response to the user selection, execute the firmware extension in the industrial PLC, and
the firmware extension comprises functionality to locate and provide particular information from each of multiple, distinct common industrial protocol (CIP) objects in the industrial PLC.
However, Govil teaches a computer system and method comprising steps of virtualization wherein, an extension is loaded in a virtualized execution environment isolated from an operating system (OS) kernel of the controller (see the Abstract “Hardware virtualization support is used to isolate kernel extensions …”; see [0010] “The invention isolates kernel extensions (such as device drivers) using hardware virtualization support. An operating system kernel is protected from a kernel extension by executing the kernel and the kernel extension in separate hardware protection domains”; also, see Fig. 3a-c; also, see [0027] “The memory 110 includes a kernel 600 and at least one kernel extension 604. The kernel 600 is a set of computer instructions (also referred to as "kernel code") comprising the core of an operating system. The kernel 600 may include, for example, computer instructions for managing applications, allocating computer resources, and prioritizing the requirements of the devices 103. The computer instructions of the kernel 600 execute with a special execution privilege level on the CPU 104”; also, see [0028] and [0036], [0041], [0045]-[0048]).
Therefore, it would have been obvious to one of ordinary skilled in the art before effective filing date of the claimed invention to which said subject matter pertains to have modified Rischar’s invention to include steps of virtualization wherein an extension is loaded in a virtualized execution environment isolated from an operating system (OS) kernel of the controller as taught by Govil in order to load and execute the firmware extension isolated from the kernel software of the PLC as taught by Richard in order to protect the operating system and Kernel from any action from the extensions than could damage the OS ?kernel of the controller (see [0010] “An operating system kernel is protected from a kernel extension by executing the kernel and the kernel extension in separate hardware protection domains…”).
Rischar-Govil still does not explicitly teach provide, via the deployment interface, options to delete and disable the firmware extension after the firmware extension is loaded in the industrial PLC; receive, via the deployment interface, a user selection to activate the loaded firmware extension in the industrial PLC; in response to the user selection, execute the firmware extension in the industrial PLC.
However, Lawson teaches a system comprising a deployment interface providing, via the deployment interface, options to activate, delete, and disable a program/software after the program is loaded in a remote system or controller (see [0071] “Such applications can include, for example, control panel or dashboard templates that allow an administrator to configure and monitor aspects of a cloud-based industrial system running on cloud resources 812, virtual machine management templates that allow a user to create, start, stop, or delete virtual machines running on the cloud resources 812”, wherein virtual machine are software programs executed in a remote system such as cloud resources/processors and memory…”; also, see [0101] “…When installed and executed on a client device 1406 (or accessed remotely by client device 1406, as in FIG. 8), virtual machine management template 1412 can generate…control panel 1414 can include intuitive interface controls that allow a user to create, start, stop, or delete virtual machines on cloud platform 1402 directly from the control panel. These can include, for example, controls for selecting a type of virtual machine to be deployed, naming the virtual machine, specifying a hostname of a cloud-based host on which the virtual machine is to run, specifying a cloud-based hypervisor that is to perform resource management for the virtual machine, and defining a resource allocation for the virtual machine…”; also, see [0101] “Virtual machine control panel 1414 can include intuitive interface controls that allow a user to create, start, stop, or delete virtual machines on cloud platform 1402 directly from the control panel…”, thus, this suggests to activate, delete, and disable a program/software after the program is loaded in the remote system), receive, via the deployment interface, a user selection to activate the program/software loaded (see [0101] “…These can include, for example, controls for selecting a type of virtual machine to be deployed…”), in response to the user selection, execute the software/program (see [0101] “Virtual machine control panel 1414 can include intuitive interface controls that allow a user to create, start, stop, or delete virtual machines on cloud platform 1402 directly from the control panel.…These can include, for example, controls for selecting a type of virtual machine to be deployed…”; also, see [0071] “…, virtual machine management templates that allow a user to create, start, stop, or delete virtual machines running/executing on the cloud resources 812…”).
Therefore, it would have been obvious to one of ordinary skilled in the art before effective filing date of the claimed invention to which said subject matter pertains to have modified Rischar-Govil’s combination as taught above to include a deployment interface providing, via the deployment interface, options to activate, delete, and disable a program/software after the program is loaded in a remote system or controller, receive, via the deployment interface, a user selection to activate the loaded program/software, in response to the user selection, execute the software/program as taught by Lawson in order to allow the selection, activation, deletion, disabling of the firmware extensions programs of Rischar by providing a template or user interface with these functions to facilitate and speed up the process of implementing and executing software in automated systems remotely (see [0008] “…embodiments of the present disclosure relate to the use of cloud templates that allow industrial devices and other client devices to quickly and easily implement cloud-based solutions for industrial automation... cloud templates are provided that can be incorporated in a variety of devices, including but not limited to industrial controllers… Virtual machine management templates are also provided that facilitate creation, deployment, and control of cloud-based virtual machines used to monitor or control portions of an automation system via a cloud platform”).
While CIP objects being used by software programs installed in a PLC controller to obtain information are inherent function/ limitations in Rockwell, Allen Bradley PLC, and other brand of controllers including the Logix controllers ® SLC, PLC-5, Micro800, and while Rischar teaches CIP resources including (00420—0046, see page 21 claim 6 the resources is a CIP connection) and software modules using object files (see 0035), Rischar-Govil-Lawson still does not explicitly teach the firmware extension comprises functionality to locate and provide particular information from each of multiple, distinct common industrial protocol (CIP) objects in the industrial PLC.
Kenst teaches an industrial automation system comprising application/software comprises functionality to locate and provide particular information from each of multiple, distinct common industrial protocol (CIP) objects in the industrial PLC (see [0004]; see Fig. 2 applications 220 locate and provide particular information from CIP objects 210, see [0023] “Various types of objects can be provided to support communications between layers and between components of a system. These can include CIP-aware application objects that support interfaces to the CIP core layer 220. Link-specific application objects are instantiated by a communications port within the respective link layer 230. These are standard CIP application objects in that they support data flows for CIP accesses but also allow direct association between that link-specific object and its instantiating port…”; also, see [0024] “The CIP Core 220 provides components for an application to link layer interface. This includes the Connection Manager 250 which facilitates connection creation and management and is a facilitator for unconnected message origination. Transports in the core layer 220 provide the connected data interface between application and link objects. The core layer 220 can also include Message Router Services that encapsulates knowledge of message router request and response formats. The core layer 220 can also include a registry for applications that support CIP (or other network protocol) unconnected message target behavior”; also, see [0025]; also, see Fig. 4 applications/software 420 using CIP objects 430, and see [0027-0029] and see [0031-0033]) and because using CIP objects provides a standardized form of communication and at the same time provides safety and security.
Therefore, it would have been obvious to one of ordinary skilled in the art before effective filing date of the claimed invention to which said subject matter pertains to have modified Rischar-Govil-Lawson’s combination as taught above to include application/software comprises functionality to locate and provide particular information from each of multiple, distinct common industrial protocol (CIP) objects in the industrial PLC as taught by Kenst in order to apply the use of these objects within the firmware extension of Rischar in order to facilitate the communication of data and perform functions within the PLC and outside the PLC (see “[0028-0029] and [0060]).
As per claim 3, Rischar-Govil-Lawson-Kenst teaches the industrial PLC of claim 2, Rischar further teaches wherein the firmware extension comprises one or more constraints that define circumstances in which the control program calls the external component (see Col 16 lines 1-4 “wherein the loadable module manager is further configured to identify a dependency of the second application module and bind the second application module to a resource of the industrial controller to resolve the dependency…” and see lines 32-35 : wherein the loadable module manager is further configured to determine whether an installation requirement is met before the second application module is permitted…”, thus, dependencies and requirements are constraints that mut be satisfied in order to call the external component or second application; also, see [0015] “…loaded module meets admissibility criteria… Accordingly, admissibility criteria may ensure that new loaded modules do not compromise real time control capabilities of the control system”).
As per claim 4, Rischar-Govil-Lawson-Kenst teaches the industrial PLC of claim 1, Rischar further teaches wherein the firmware lacks a native component to perform the external function (an extension or plug-ins are software/program or code that is invoked/called, loaded and used because the system does not a native component that can perform the function of the extension. If the controller had the capability to perform the function, it would not have to call an extension. Rischar teaches that the extension extend the firmware capabilities. also, see Col 18 lines 25-30 “…wherein the second application module is configured to extend or modify the at least a portion of the operating system without modification to the firmware”).
As per claim 5, Rischar-Govil-Lawson-Kenst teaches the industrial PLC of claim 1, Rischar further teaches wherein the control program, when read and executed by the processing system, further directs the industrial PLC to:
once the external component has performed the external function, receive a result of the external function from the external component (the broadest definition of an extension is a function program that adds additional functionality to a PLC; The disclosure does not gives examples of results, thus, in the broadest reasonable interpretation the results of the external function is the results after executing the executable extension (external component) which comprises any output/result of the executable; see Rischar fig. 3 and see [0052] “The first application module 182 may have a dependency on the second application module 184, and the second application module 184 may have a dependency on the first application module 182…”; also, see [0062]; also, see Col 17 lines 1-3 “wherein the loadable module manager binds the second application module to at least one of the operating system and the first application module…”); and
use the result of the external function to perform at least one additional native function performed by an additional native component of the firmware (see Rischar fig. 3 and see [0052] “The first application module 182 may have a dependency on the second application module 184, and the second application module 184 may have a dependency on the first application module 182…”; also, see [0062] bound and binding the first and second applications; also, see Col 17 lines 1-3).
As per claim 8, Rischar teaches a computing apparatus (see Fig. 1 computing apparatus 50 and 12; also, see [0035]) comprising:
one or more computer-readable storage media (see Fig. 1 memory 34; also, see [0034] “Hardware components of the industrial controllers A and B may each include…a memory 34 and a disk 36 or other form of non-volatile storage, including but not limited to Flash memory and/or solid state drives; also, see Fig. 1 computing apparatus 50 and see [0035]);
a processing system operatively coupled to the one or more computer-readable storage media (see Fig. 1 processor 30 and also, see [0019] and [0028] and [0067] “An industrial controller comprising a processor executing: an operating system stored in non-transient memory for managing hardware components of the industrial controller…”; also, see [0035]); and
program instructions stored on the computer-readable storage media, wherein the program instructions, when read and executed by the processing system (Firmware interpreted in the broadest reasonable interpretation is software/program comprising code or instruction that are executed to provide functions or execute further software of the controller; also, see Fig. 3 PLC 12 and see [0019] “an industrial controller comprises a processor executing: an operating system stored in non-transient memory for managing hardware components of the industrial controller…”; the term “control program” has been interpreted in the BRI in light of the specification as software or operating system executing instructions; also, see [0039] and [0052] “…The first and second application modules 182 and 184 may be modules of a control program running on an industrial controller 40 for controlling a controlled process….” also, see [0035] computer 50 is a computing system for ), direct the computing apparatus to:
generate a firmware extension for an industrial programmable logic controller (PLC), wherein the firmware extension provides an external component to perform an external function, wherein existing firmware lacks a native component to perform the external function (see [0035]);
instruct the industrial PLC to install the firmware extension (see [0035]), using a deployment interface (the deployment interface has been interpreted in BRI in light of disclosure wherein it acquire several definitions based examples such as GUI, a CIP protocol or an extension development environment 111 including a computer, see original disclosure figs. 1-3; Rischar further teaches see Fig.1 interface 42 and see [00034], [0042] , [0040], and see claim 1 above same rationale applies herein), wherein:
the firmware extension is loaded in a(see Fig. 5a the extensions are loaded in an execution environment separated from the OS and the kernel space. The kernel is part of the operating system; also, see [0013] “The present invention provides a "loadable module" architecture for industrial controllers in which new control program modules which provide updated functions or features may be loaded to extend or modify the underlying operating system and/or add or modify other services that are part of the industrial controller without updating the firmware and without disrupting or otherwise compromising the ability of the industrial controller to maintain continuous control over the controlled); and
the firmware extension comprises functionality to locate and provide particular information from each of multiple(se [0035] “source code modules may be delivered and then compiled and linked to create [resulting object modules within the industrial controller”; Also, see [0047], [0051], and [0057])
provide, via the deployment interface, options to activate, (Rischar further teaches in [0040] “…The electronic computer 50 includes a design and configuration environment 100, such as RSLogix 5000 from Rockwell Automation, Inc. The design and configuration environment 100 may employ a graphical user interface or simply a high level computing language such as C++. The user designs, modifies and/or updates the project accordingly and produces a source module 102, which may include source application code, source library code, and/or other source data as generally understood in the art...”, this design environments allow a user the options to send and activate extensions), loaded in the industrial PLC (also, see [0062] “Finally, in a sixth process block 334, the fully bound modules are loaded and executed” an extension or program can only be activated/executed after being loaded);
receive, via the deployment interface, a user selection to activate the firmware extension loaded in the industrial PLC (see Rischar further teaches in [0040] “…The electronic computer 50 includes a design and configuration environment 100, such as RSLogix 5000 from Rockwell Automation, Inc. The design and configuration environment 100 may employ a graphical user interface or simply a high level computing language such as C++. The user designs, modifies and/or updates the project accordingly and produces a source module 102, which may include source application code, source library code, and/or other source data as generally understood in the art...”, this design environments allow a user the options to send and activate extensions, the user select or chooses to send or not send programs to Controllers 12 or 14);
in response to the user selection, execute the firmware extension in the industrial PLC (see [0019-0020] “a loadable module manager stored in non-transient memory configured to receive a second application module… The second application module may be configured to extend …at least a portion of the operating system while the first application module controls the at least a portion of the controlled process…”; also, see [0043] “…source modules, as well as executable and object files, may be loaded…”; see Fig. 3 module manager loads application modules including the extension application modules such as second application module Mod-A2 which is an extension software; also, see [0044] “…Accordingly, the loadable module manager 138 binds and places the application module 134 ("EXECUTABLE") into service among the loaded application modules 140 as a running application module 142 ("MOD_A3"). The running application module 142 ("MOD_A3") may, in turn, extend or modify at least a portion of the operating system while one or more of the loaded application modules 140 continues to control the controlled process”; also, see [0045] “loaded application modules 140”; also, see Col 18 lines 25-30 “…wherein the second application module is configured to extend or modify the at least a portion of the operating system without modification to the firmware”, also, loading is interpreted in the BRI as preparing a program for its execution by copying the instructions in memory for execution. That is the purpose of a loader such as the loadable manager 138”);
provide, to the industrial PLC, a control program comprising logic for controlling an industrial automation process, wherein the logic of the control program directs the industrial PLC to, during execution of the control program (see [0035] and see Fig. 3 PLC 12 and see [0019] “an industrial controller comprises a processor executing: an operating system stored in non-transient memory for managing hardware components of the industrial controller…”; the term “control program” has been interpreted in the BRI in light of the specification as software or operating system executing instructions; also, see [0039] and [0052] “…The first and second application modules 182 and 184 may be modules of a control program running on an industrial controller 40 for controlling a controlled process….”):
call a native component of the firmware to perform a native function (and see Fig. 3 and [0019] “an operating system stored in non-transient memory for managing hardware components of the industrial controller; a first application module stored in non-transient memory for controlling at least a portion of a controlled process via the operating system…”; see [0042] “local firmware… In addition, a resource manager 122 in the industrial controller A may reference a data structure 124, a library manager 126, and a local firmware 128 in the industrial controller A, and provide such resource information to the embedded linker/loader/compiler 120”; also, see Col 20 claim 2 “the operating system is configured to communicate with firmware before managing the hardware components”), wherein the native component of the existing firmware is embedded in hardware of the industrial PLC (see [0042] “local firmware… In addition, a resource manager 122 in the industrial controller A may reference a … a local firmware 128 in the industrial controller A, and provide such resource information to the embedded linker/loader/compiler 120”; thus, the firmware is embedded in hardware of the PLC in an embedded software core 120. The term firmware and embedded software core has been interpreted as suggested in the arguments in the BRI as “the terms "firmware" and "embedded software core" as referring to code that is specifically adapted to particular hardware”); and
call the external component provided by the firmware extension to perform the external function (see Col 16 lines 25-30 “…wherein the second application module is configured to extend or modify the at least a portion of the operating system without modification to the firmware”; also, see [0052]; also, see Col 20 claim 2).
While Rischar teaches that the system can provide virtualization (see 0011) and also teaches a computer with a design environment for the creation of extension applications (see 0035 and Fig. 3 100), Rischar does not explicitly teach the firmware extension is loaded in a virtualized execution environment isolated from an operating system (OS kernel of the industrial PLC,
provide, via the deployment interface, options to delete, and disable the firmware extension, the firmware extension comprises functionality to locate and provide particular information from each of multiple, distinct common industrial protocol (CIP) objects in the industrial PLC, receive, via the deployment interface, a user selection to activate the firmware extension in the industrial PLC; in response to the user selection, execute the firmware extension in the industrial PLC.
However, Govil teaches a computer system and method comprising steps of virtualization wherein, an extension is loaded in a virtualized execution environment isolated from an operating system (OS) kernel of the controller (see the Abstract “Hardware virtualization support is used to isolate kernel extensions …”; see [0010] “The invention isolates kernel extensions (such as device drivers) using hardware virtualization support. An operating system kernel is protected from a kernel extension by executing the kernel and the kernel extension in separate hardware protection domains”; also, see Fig. 3a-c; also, see [0027] “The memory 110 includes a kernel 600 and at least one kernel extension 604. The kernel 600 is a set of computer instructions (also referred to as "kernel code") comprising the core of an operating system. The kernel 600 may include, for example, computer instructions for managing applications, allocating computer resources, and prioritizing the requirements of the devices 103. The computer instructions of the kernel 600 execute with a special execution privilege level on the CPU 104”; also, see [0028] and [0036], [0041], [0045]-[0048]).
Therefore, it would have been obvious to one of ordinary skilled in the art before effective filing date of the claimed invention to which said subject matter pertains to have modified Rischar’s invention to include steps of virtualization wherein an extension is loaded in a virtualized execution environment isolated from an operating system (OS) kernel of the controller as taught by Govil in order to load and execute the firmware extension isolated from the kernel software of the PLC as taught by Richard in order to protect the operating system and Kernel from any action from the extensions than could damage the OS ?kernel of the controller (see [0010] “An operating system kernel is protected from a kernel extension by executing the kernel and the kernel extension in separate hardware protection domains…”).
Rischar-Govil still does not explicitly teach provide, via the deployment interface, options to delete and disable the firmware extension; receive, via the deployment interface, a user selection to activate the firmware extension in the industrial PLC; in response to the user selection, execute the firmware extension in the industrial PLC.
However, Lawson teaches a system comprising a deployment interface providing, via the deployment interface, options to activate, delete, and disable a program/software (see [0071] “Such applications can include, for example, control panel or dashboard templates that allow an administrator to configure and monitor aspects of a cloud-based industrial system running on cloud resources 812, virtual machine management templates that allow a user to create, start, stop, or delete virtual machines running on the cloud resources 812”, wherein virtual machine are software programs executed in a remote system such as cloud resources/processors and memory…”; also, see [0101] “…When installed and executed on a client device 1406 (or accessed remotely by client device 1406, as in FIG. 8), virtual machine management template 1412 can generate…control panel 1414 can include intuitive interface controls that allow a user to create, start, stop, or delete virtual machines on cloud platform 1402 directly from the control panel. These can include, for example, controls for selecting a type of virtual machine to be deployed, naming the virtual machine, specifying a hostname of a cloud-based host on which the virtual machine is to run, specifying a cloud-based hypervisor that is to perform resource management for the virtual machine, and defining a resource allocation for the virtual machine…”), receive, via the deployment interface, a user selection to activate the program/software (see [0101] “…These can include, for example, controls for selecting a type of virtual machine to be deployed…”), in response to the user selection, execute the software/program (see [0101] “…These can include, for example, controls for selecting a type of virtual machine to be deployed…”; also, see [0071] “…, virtual machine management templates that allow a user to create, start, stop, or delete virtual machines running/executing on the cloud resources 812…”).
Therefore, it would have been obvious to one of ordinary skilled in the art before effective filing date of the claimed invention to which said subject matter pertains to have modified Rischar-Govil’s combination as taught above to include a deployment interface providing, via the deployment interface, options to activate, delete, and disable a program/software, receive, via the deployment interface, a user selection to activate the program/software, in response to the user selection, execute the software/program as taught by Lawson in order to allow the selection, activation, deletion, disabling of the firmware extensions programs of Rischar by providing a template or user interface with these functions to facilitate and speed up the process of implementing and executing software in automated systems (see [0008] “…embodiments of the present disclosure relate to the use of cloud templates that allow industrial devices and other client devices to quickly and easily implement cloud-based solutions for industrial automation... cloud templates are provided that can be incorporated in a variety of devices, including but not limited to industrial controllers… Virtual machine management templates are also provided that facilitate creation, deployment, and control of cloud-based virtual machines used to monitor or