Flexible code approach

A flexible coding system dynamically controls industrial processes, addressing inflexibility and high maintenance costs by allowing on-the-fly modifications and machine learning-driven optimizations.

WO2026006348A1PCT designated stage Publication Date: 2026-01-02MEGA FLUID SYSTEMS INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
PCT/US2025/035108
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-06-25
Filing Date
2025-06-25
Publication Date
2026-01-02

AI Technical Summary

Technical Problem

Static hardware and software systems in industrial processes result in inflexible environments with high maintenance costs and downtime, requiring manual changes that disrupt operations.

Method used

A flexible coding system that allows for dynamic control of industrial processes using programmable instructions stored in an array, enabling on-the-fly modifications and adjustments through an interface, and utilizing machine learning to refine processes.

Benefits of technology

Enables seamless process changes without downtime, reduces maintenance costs, and enhances process optimization through continuous refinement.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2025035108_02012026_PF_FP_ABST
    Figure US2025035108_02012026_PF_FP_ABST
Patent Text Reader

Abstract

Computer-implemented methods, computer program products, and computer systems comprise program code executed by a processor(s) that obtains a sequence of instructions to control a tool to perform a process, stores the sequence of instructions in an array, obtains, from an external interface to the tool via an input / output device communicatively coupled to the one or more processors, a trigger to initiate the sequence of instructions, executes each instruction, where each instruction controls an aspect of the process performed by the tool, and modifies the process, where the modifying the array updates one or more elements of the sequence of instructions and changes the process performed by the tool.
Need to check novelty before this filing date? Find Prior Art

Description

FLEXIBLE CODE APPROACHCROSS-REFERENCE TO RELATED APPLICATION

[0001] This application claims priority from U.S. Provisional Application No. 63 / 664,177 filed June 25, 2024, entitled, “FLEXIBLE CODE APPROACH”, which is incorporated herein by reference, in its entirety, for all purposes.BACKGROUND OF INVENTION

[0002] Program code can be used to control the operation of machinery and tools. However, the static nature of some of these tools can translate to a lack of flexibility in processes. Thus, static elements in hardware systems and software systems can create inflexible environments with much downtime as well as to high maintenance costs. For example, in semiconductor facilities, many tools include filters. To change the functionality of a filter in these facilities, which with traditional approaches means changing the filters themselves, one must manually make a change at the tool, which can place the tool out of commission for a week.

[0003] Artificial intelligence (Al) refers to intelligence exhibited by machines. Artificial intelligence (Al) research includes search and mathematical optimization, neural networks, and probability. Artificial intelligence (Al) solutions involve features derived from research in a variety of different science and technology disciplines ranging from computer science, mathematics, psychology, linguistics, statistics, and neuroscience. Machine learning has been described as the field of study that gives computers the ability to learn without being explicitly programmed.SUMMARY OF INVENTION

[0004] Shortcomings of the prior art are also overcome, and additional advantages are provided through the provision of a method for flexibly adjusting a process. The method includes: obtaining, by one or more processors communicatively coupled to a tool, a sequence of instructions to control the tool to perform a process; storing, by the one or more processors, the sequence of instructions in an array; obtaining, by the one or more processors, from an external interface to the tool via an input / output device communicatively coupled to the one or moreprocessors, a trigger to initiate the sequence of instructions; executing, by the one or more processors, each instruction, wherein each instruction controls an aspect of the process performed by the tool; and modifying, by the one or more processors, the process, wherein the modifying comprising modifying the array, via an interface, wherein the modifying the array updates one or more elements of the sequence of instructions and changes the process performed by the tool.

[0005] Shortcomings of the prior art are also overcome, and additional advantages are provided through the provision of a system for flexibly adjusting a process. The system includes: a memory, one or more processors in communication with the memory, and program instructions executable by the one or more processors via the memory to perform a method. The method includes: obtaining, by the one or more processors communicatively coupled to a tool, a sequence of instructions to control the tool to perform a process; storing, by the one or more processors, the sequence of instructions in an array; obtaining, by the one or more processors, from an external interface to the tool via an input / output device communicatively coupled to the one or more processors, a trigger to initiate the sequence of instructions; executing, by the one or more processors, each instruction, wherein each instruction controls an aspect of the process performed by the tool; and modifying, by the one or more processors, the process, wherein the modifying comprising modifying the array, via an interface, wherein the modifying the array updates one or more elements of the sequence of instructions and changes the process performed by the tool. .

[0006] Systems and methods relating to one or more aspects of the technique are also described and may be claimed herein. Further, services relating to one or more aspects of the technique are also described and may be claimed herein.

[0007] Additional features are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention.BRIEF DESCRIPTION OF DRAWINGS

[0008] One or more aspects of the present invention are particularly pointed out and distinctly claimed as examples in the claims at the conclusion of the specification. The foregoing and objects, features, and advantages of one or more aspects of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawing.

[0009] FIG. 1 depicts a technical architecture of some embodiments of the present invention.

[0010] FIGS. 2-7 (FIG. 7 is inclusive of FIGS. 7A-7B) depict a graphical user interface that is an aspect of some embodiments of the present invention.

[0011] FIG. 8 depicts a machine learning system that is an aspect of some embodiments of the present invention.

[0012] FIG. 9 depicts a technical architecture of some embodiments of the present invention.

[0013] FIG. 10 depicts a technical architecture of some embodiments of the present invention.

[0014] FIG. 11 depicts a technical architecture of some embodiments of the present invention.

[0015] FIG. 12 is a workflow that illustrates various aspects of some embodiments of the present invention.

[0016] FIG. 13 is a workflow that illustrates various aspects of some embodiments of the present invention.

[0017] FIG. 14 depicts a computer system configured to perform an aspect of an embodiment of the present invention.

[0018] FIG. 15 depicts a computer program product incorporating one or more aspects of the present invention.DETAILED DESCRIPTION OF THE INVENTION

[0019] Aspects of the present invention and certain features, advantages, and details thereof, are explained more fully below with reference to the non-limiting examples illustrated in the accompanying drawings. Descriptions of well-known materials, fabrication tools, processing techniques, etc., are omitted so as not to unnecessarily obscure the invention in detail. It should be understood, however, that the detailed description and the specific examples, while indicating aspects of the invention, are given by way of illustration only, and not by way of limitation. Various substitutions, modifications, additions, and / or arrangements, within the spirit and / or scope of the underlying inventive concepts will be apparent to those skilled in the art from this disclosure. The terms software and program code are used interchangeably throughout this application and can refer to logic executed by both hardware and software. Components of the system that can be utilized to execute aspects of embodiments of the present invention may include specialized hardware, including but not limited to, a GPP, an FPGA and a GPU (graphics processing unit). Additionally, items denoted as processors may include hardware and / or software processors or other processing means, including but not limited to a software defined radio and / or custom hardware. Software and hardware, including computer readable media discussed herein can include external computing systems communicatively coupled to processors executing program code as well as executing the program code. Systems controlled by the program code herein can include, but are not limited to, various elements of systems including, but not limited to, Supervisory Control and Data Acquisition (SCAD A) systems, Flexible Manufacturing Systems (FMSs), and Factory Monitoring and Control Systems (FMCSs). Elements of these systems can be utilized by the program code herein for redundancy, safety, backup, and / or disaster recovery. Additionally, the program code herein can utilize these systems to monitor and add additional alarms and / or paging in a process controlled by the program code while the program code maintains control of the processes.

[0020] Various hardware and software systems, especially those that perform multi-step processes, can sometimes include a large amount of hardcoding, which has the benefit of customizing hardware and software for specific uses but has the drawback of lacking flexibility. Industrial processes, including but not limited to, manufacturing, cleaning, coding, sterilizing systems, although controlled by software, are often somewhat static and for a change to be implemented, the systems must be serviced manually, which can result in downtime. The examples address this lack of flexibility by providing a flexible coding system that controls thefunctionality of various formerly static systems in a dynamic manner, allowing for changes to portions of the systems (and processing and aspects of the systems) on the fly. The examples herein include computer-implemented methods, computer program products, and computer systems that include program code executing on one or more processors that generates and controls a flexible coding framework that provides a flexible control system for one or more machines conducting various industrial processes, including but not limited to, manufacturing, cleaning, coding, and / or sterilizing. For systems for which the examples herein are implemented, a user can provide a process change through an interface that can be immediately implemented in the systems rather than build a complete new one and lose the cost of materials and the reaction capability of a particular constituent s). The changes that can be implemented by program code in the examples herein can include, but are not limited to, a robot controlled by the program code, and / or a custom chemical mixture which is changed on the fly in order to increase a deposition rate or adhesion, (such as on a synthetic replacement bone structure). In some examples, the program code can implement a change by inserting a new sequence that operates valves / pumps / metrology to change an existing mixture to a new one. The types of changes listed above that can be implemented by program code in the examples herein are provided for illustrative purposes only and not to suggest any limitation.

[0021] The examples herein can be understood as blank slates rather than specific tools. Users can load parameters into the examples herein and in some examples, based on scanning the bar code, the program code can proceed with a sequence, which can include running a filer.Even without prior knowledge of a tool that the program code will control, the program code can utilize the examples herein to configure the tool (e.g., the program code can provide the process or sequence to be executed by the tool). For example, a user can add a filter to a tool, utilizing the examples herein, and place a pre-condition on the filter without any expertise regarding the tool itself. The program code in the examples herein can step a tool through a process. A nonlimiting example of a sequence that the program code can be configured with to operate a tool can include the following actions: test a pressure chamber, put isopropyl alcohol (IP A) in the chamber, pressure test the chamber, optionally heat the chamber (depending on the filter), etc. The program code moves a tool from one action to a next action as endpoints are reached. As will be explained below, the examples herein also include alarms that are configurable to be triggered under conditions relevant to the process executed by the program code.

[0022] The examples herein are inextricably linked to computing and directed to a practical application. The computer-implemented methods, computer program products, and computer systems described herein serve as configuration and control systems for various processes, including but not limited to industrial processes. A practical application to which the examples herein are directed is providing a flexible control system for tools to replace present static control systems. The flexible control system allows users to implement changes on-the- fly, to the processes executed by the tools, decreasing the overhead previously associated with changes. This flexibility also enables testing and improvement of the processes as the instructions can be changed easily and executed until a process is considered perfected e.g., a golden recipe is achieved). The examples herein are inextricably tied to computing at least because they comprise dynamic software-based control systems for tools. These examples comprise program code that implements instructions on the fly (stored in an array in a database, which can be modified via a user interface) to control what can be multi-step processes in tools and the program code executes these instructions. The flexible framework control systems described herein enable the configuration, testing, control, and / or operation of tools to accomplish various tasks including but not limited to, semi-conductor fabrication, wet processing of semiconductor wafers, fabrication of artificial limbs, sterilization of contact lenses, and / or turbine engine component re-conditioning. The framework can be utilized as a dynamic control system for a variety of tools, including robots such as a linear robot or a carousel robot. Certain instructions can be re-used to control different tools. In some examples, the examples are also inextricably tied to computing because in addition to comprising a control system framework, the program code utilizes artificial intelligence to inform and continuously refine the framework to (iteratively) tune performance of the tools controlled by the framework.

[0023] The examples herein, in addition to being inextricably tied to computing and directed to a practical application, also provide significantly more than existing tool control system approaches. As mentioned before, control systems for the tools into which the present examples can be implemented are static and any change is manual and requires both downtime and labor. This approach offers significantly more because it can implement changes to tool processes on-the-fly and avoid downtime and costs for manual changes.

[0024] FIG. 1 illustrates an example of a flexible control system 100 comprising program code executing on one or more processors which can be utilized to dynamically control one or more tools. This example provides many of the aspects in a module for ease of understanding. Various embodiments can distribute this functionality into one or more modules. The flexible control system 100 includes a module 110, and various external components 120. The module 110 includes a core 112 that comprises much of the functionality of the flexible control system 100, including the core manager 114, which controls the operation of many of the other aspects in the core 112. Meanwhile, the external components 120 include an external interface 122 (which can include a graphical user interface (GUI), a scheduler 124, and an alarm manager 126. The scheduler 124 is not included in some examples herein but is provided in FIG. 1 for illustrative purposes.

[0025] Referring first to the module 110 of the flexible control system 100, the module 110 includes the core 112, which will be discussed in greater detail here, as well as an input / output (VO) 116 that can be utilized to couple the flexible control system 100, and specifically, the module 110 to a tool which program code comprising the module 110 will control. The I / O 116 can be of a specific type that is compatible with a vendor and / or architecture, to communicatively couple the core 112 to a tool. Although this example includes a single core 112, some examples can include more than one core and could utilize these cores either to control tools to perform different processes and / or to control different tools. Thus, the module 110 is a grouping structure that holds one or more core 112, based on process and interoperability requirements. Program code comprising the core 112 also acts as a hand shaking structure to the external components 120, which can include a scheduler 124. The module 110 is also a data interface project-specific interfaces and managers. Thus, program code comprising the core 112 can obtain requirements for a given process or tool and convert these requirements into a recipe or process to control the tool to perform the process in accordance with the requirements. When implemented in a technical architecture, the module can reside externally from the tool its code controls or can be loaded onto a memory resource of the tool. The code structure of the core 112 itself is flexible and can be implemented and / or accessible to a variety of tools. For example, the code structure of the core 112 can be implemented in a tool or a resource accessible to a tool that is running semi-conductor wafers through a wet process. Thisparticular process and / or sequence is provided as a non-limiting example and for illustrative purposes only.

[0026] As aforementioned, the module 110 comprises the core 112. The core 112 comprises program code (executed by one or more processors communicatively coupled to and / or included in the module 110). The control system of the core 112 itself is the core manager 114. The core 112 also includes a dynamic I / O map 118, which is a predefined structure to bridge project specific I / O 116 to portions of the core 112, include the control array 119 (which includes the flexible code that governs the processes performed by the tools controlled by the program code of the core 112) and a comparator 117 within (or communicatively coupled to) the core manager 114.

[0027] The same control array 119 can be utilized to load and execute sequences (processes) which control a large variety of tools. In some cases, the control array 119 is adjusted based on the type of tool it will control. Some non-limiting examples of tools that can be controlled by the control array 119 (in combination with the other aspects of the examples herein) are a linear robot with five tanks, a carousel robot with eight tanks, a chemical blender, and a coder (e.g., used to generate specific artificial bones for victims of disasters). This flexible control array 119 is stored in a database and includes instructions (or steps) in the processes to be performed by tools controlled by the flexible control system. FIG. 2 illustrates how values the program code converts to instructions comprising the control array 119 are visualized by the program code through a GUI so that a user can modify the instructions or recipe for a tool performing a given function. The recipe in FIG. 2 is a representation of the contents of this control array 119. The core 112 also comprises a data structure (a map structure) utilized by the program code to pass data from the control array 119 to the dynamic VO map 118. In this manner, the program code can control tools to perform dynamic processes defined in the control array 119. As such, the core 112 is a hand shaking structure to external assets.

[0028] In some examples herein, the control arrays 119 can be understood as large or small arrays that report up to a data set. Thus, to visualize the control arrays 119, to a user, the program code can utilize enables an existing external report generator can be used to provide cradle to grave documentation of the complete process. The transparency enabled by theprogram code is advantageous as well as essential to fulfill industrial reporting requirements when the examples herein are utilized to control processes in certain industries where reporting is utilized to manage and verify workflows (e.g., including performing audits). Certain industries in which the examples herein can be implemented have less stringent and / or specific reporting requirements (e.g., medical, bio pharma, military, research grade or semiconductor grade chemical production). Because of the flexibility and transparency of the examples herein, reports generated utilized data provided by the arrays can provide reporting data in real-time, including capturing changes implement of the fly, including but not limited to CIP work, custom edits, etc.

[0029] Referring to FIG. 1, as aforementioned, the core 112 comprises the core manager 114 and the dynamic I / O map 118. In general, the core manager 114 provides a fixed structure for a sequence to be mapped and a clock mechanism to advance, pause, or stop the execution of the program code mapped to the structure. The elements comprising the core manager 114 (and hence governed by program code comprising the core manager 114 in this example) are a comparator 117, a control array 119, and a clocking mechanism referred to herein as a stepper 115. Program code comprising the comparator 117 compares control array 119 values to the I / O values to advance the stepper 115. Hence, the program code of the stepper 115 steps tools through a process which is defined in the control array 119. The program code can advance a sequence or process to a next step once it has determined that an end point has been reached.The program code can receive feedback throughout the process, including inputs, to indicate the status of a process performed by a tool controlled by the program code. The comparator 117 determines when the program code should advance to process to what can be understood as a subsequent step and can instruct the stepper 115 to advance the process. The control array 119 can also be implemented as a pre-structured table to map a sequencer. As illustrated in FIG. 1, based on determinations from the program code of the comparator 117, the program code of the stepper 115 can advance a process, including to a next step or process defined in the control array 119. The control array 119 transmits its progress to the comparator 117, which the comparator 117 compares to inputs from external I / O 122, via the dynamic I / O map 118. Based on the comparison by the program code of the comparator 117, the comparator 117 (based on performing its comparison and obtaining results) can provide an instruction to the stepper 115 advance the process via controlling the tool to commence an aspect of the process based on datastored in the control array 1 19. In-between the stepper 1 15 and the control array 1 19 and the control array 119 and the comparator 117 there can be program code comprising an exception manager 113. The program code comprising the exception manager 113 acts as a gate keeper for sequence functions that control stepping based on control array 119 values or conditions e.g., case control, step pointer / repeater, exit conditions, external interface).

[0030] The core 112 (or at least components thereof) are communicatively coupled to the external components, which include an external interface 122 (which can include a graphical user interface (GUI), a scheduler 124, and an alarm manager 126. The external interface 122 provides a pre-defined format mask to transfer control data to and from to external data users (humans, systems, hardware) and facilitates manual or fully automatic loading of sequences (for processes defined in the control array 119). A user can load or modify a sequence based on making inputs into a GUI (e.g., FIG. 2), or can provide a structured document that can be obtained and interpreted by the program code of the external interface 122 (e.g., a spreadsheet). Meanwhile, the scheduler 124 manages multi module and multi core handshaking and control priorities and houses the loaded sequence and multi-sequence variations and triggers. Finally, the alarm manager 126 provides a pre-defined format mask to transfer alarm data to and from to external data users (humans, systems, hardware). Unlike in some existing systems, the alarm manager 126 is flexible and can be readily configured and re-configured to alarm under different conditions, based on the process (sequence) being executed.

[0031] In some examples, program code executing on one or more processors can reconfigure a new “environment” based on the machine-learning. In the new environment, the program code can adjust alarm set points and / or end state trigger(s) and / or multiple conditions being sequentially or simultaneously satisfied to result in a trigger / end state. These adjustments and re-configurations performed automatically by the program code provide significantly more than refining based on Statistical Process Control (SPC) because unlike in SPC, the program code can implement these changes internally, while operating (e.g., at runtime), without waiting for external input to implement a change. A given example can be configured to enable these inline changes in real-time as the program code machine learns a variable or sub system and does not degrade it.

[0032] In utilizing the examples here to control a tool to perform a sequence or process, not only can a user configure a control array 117, a user (or process) can also configure alarms by configuring the alarm manager 126. In some cases, a user can hot swap alarms. The alarm manager 126 can include alarms configured to trigger. For example, based on configuring alarms via an alarm manager 126, the same flow meter can work at 10 or 20 gallons under different conditions.

[0033] As noted earlier, a sequence or process can be imported into a control array 117 and stored in a database. A user can replace modules (activities, parameters) in a sequence via a GUI. FIG. 2 is an example of a GUI generated by the program code (executing on one or more processors) that a user can utilize to modify a sequence. Utilizing the GUI, a user can highlight a recipe (e.g., sequence), a line of a recipe, and can modify the aspects in the line. The aspects are stored in a database and thus, the details displayed on the right in FIG. 2 are pulled by the program code from a database accessible to the program code. FIGS. 3-6 provide similar examples of the GUI interface. FIGS. 7A-7B (collectively FIG. 7) also display the GUI but show a user editing a path for a given recipe. The array includes inputs while the paths can be understood as outputs (of each aspect in a sequence or recipe). The database records that populate the array can be understood as lines of the recipe. As illustrated in FIGS. 2-7, a user can also utilize this GUI to generate a new recipe in addition to managing existing receipts.

[0034] Because of the flexibility of the code and the ease with which processes can be changed, in addition to performing processes, the examples herein can be utilized to test processes, both by repeating processes on a given tool and / or triggering a simulation. The program code obtains feedback during the testing process which can be used to refine the process. A user can continuously make changes to a process until final process is adopted. For example, for fabrications, a user will seek to create a golden recipe, which the user can lock, utilizing the GUI, so that no further modifications are possible.

[0035] In some examples, the program code utilizes one or more machine learning algorithms to automatically refine processes. In these examples, the program code obtains data from devices (e.g., Internet of Things (loT) devices) monitoring the tools controlled by the program code as they perform the sequence of actions controlled by the program code. Theprogram code can utilize this feedback as well are historical data and / or requirements data, to automatically refine the process.

[0036] FIG. 8 is one example of a machine system 800 that can be utilized, in one or more aspects, to perform cognitive analyses of various data related to the processes controlled by the program code, including but not limited to data obtained by monitoring the process-in-progress. Machine learning (ML) solves problems that are not solved with numerical means alone. In this ML-based example, program code extracts various attributes (815) from data obtained from devices monitoring the execution of the process by the tool, and / or the knowledge base (which includes past recipe templates and / or process requirements documents). The program code can utilize these attributes to develop a predictor function, h(x), also referred to as a hypothesis, which the program code utilizes as a machine learning model 830, in this case, to anticipate whether certain changes to the process will achieve a desired result. The program code can identify various attributes and / or parameters in the ML training data 810, which can be stored in one or more contents database 820 (e.g., in a knowledge base), the program code can utilize various techniques to identify issued with a current process and how to mitigate these issues. Embodiments of the present invention utilize varying techniques to select attributes (elements, patterns, features, components, etc.), including but not limited to, diffusion mapping, principal component analysis, recursive feature elimination (a brute force approach to selecting attributes), and / or a Random Forest, to select the attributes related to various parts of a sequence. The program code can utilize a machine learning algorithm 840 to train the machine learning model 830 (e.g., the algorithms utilized by the program code), including providing weights for the conclusions, so that the program code can train the predictor functions that comprise the machine learning model 830 to generate and / or implement recommended changes in the processes. The conclusions can be evaluated by a quality metric 850. By providing a diverse set of ML training data 810 from multiple process runs, the program code trains the machine learning model 830 to identify and weight various attributes (e.g., features, patterns, components) to enable the program code to recommend and / or automatically implements changes to recipes to improve the underlying processes as well as individual steps in the processes.

[0037] Depending on the processes executed by the program code in the examples herein, the configuration of the system can vary. The inclusion of multiple cores and / or multiplemodules can enable a given system to provide processing instructions to multiple types of systems. FIG. 9 illustrates an example that includes three modules with one core and I / O group in each dedicated to each module. FIG. 9 illustrates multiple cores that run in parallel with their own VO and may only be related and / or controlled by scheduler or external interface communications. FIG. 10 includes a single module and a single I / O group with three cores. Hence, FIG. 10 illustrates an addition of inter-core communications (setpoints, etc.) with a common set of I / O. Meanwhile, FIG. 11 includes two modules, each with two cores and a single I / O group. FIG. 11 can be understood as multiples of FIG. 10, but with external scheduler and controls (e.g., Module 1 is the entire chemical blend preparation and qualification process, where Module 2 is the use of that blend to build up an artificial bone element to specification). Since one is dependent on the other (e.g., quality, quantity, and availability) that part (scheduler / external interface) can be a part that is optimized as the other two can be well defined and / or well characterized.

[0038] The machine learning aspects of the present invention can be utilized to generate a second sequence, to be applied in specific situations, while maintaining a golden sequence as the primary sequence for operating one or more tools in a given process. An example of how this particular aspect can be implemented can be understood by utilizing the non-limiting yet illustrative example of smart sensoring. Smart sensoring, generally, involves monitoring a process based on pre-determined events, triggering events such as notifications, timers, and / or process steps. Smart sensoring can include hard coding sensors in or proximate to tools performing a process to recognize certain conditions. Traditionally, smart sensoring (e.g., hardcoding) is implemented in systems that are common to tools and to tool sets in order to provide a higher level of safety and risk reduction.

[0039] A non-limiting example of where smart sensoring can be utilized is in cabinet leak detection and remediation. In cabinet leak detection, program code (in this case, hard-coded sensors) detect a leak in a bottom of an enclosure cabinet, and provide a notification (e.g., an alarm), so that in the case of pumped sump systems, the leaking material can be removed safely.

[0040] Some implementations of smart sensoring include two levels of sensors that are used in a sequence with two different alarms, two timers, and at least one sump pump. The programcode can be implemented so that when the program code detects a leak (e.g., a leak of the lowest level): 1) the program code (e.g., comprising a sensor) sends a warning or notification; 2) the program code starts a first timer; and 3) the program code turns on the sump pump. When the first timer completes its cycle, if the initial leak detection is still in a state where the program code would send an alarm, then the program code sends a second e.g., critical) alarm. Alternately if program code comprising a sensor performing a second leak detection is triggered: 1) the program code sends a second notification or alarm (if the system is equipped);2) the program code starts a second timer; and 3) the program code turns on a second sump pump (if the system is so equipped). When the second timer completes, if the program code in this second level does not still detect a trigger for the second alarm (e.g., the system is not in an alarm state), the program code allows the system to continue to operate (e.g., pump out). If the program code still detects the conditions that triggered the alarm after the second timer has lapsed, the program code can send a third alarm (e.g., a process or critical alarm).

[0041] Aspects of the examples herein can be implemented in a system that utilizes smart sensoring in order to generate and provide alternative sequences, which can be executed under conditions that vary from those where a primary or golden sequence would be executed. In examples herein, program code can automatically adjust (or recommend adjustments) on the fly from initial factory settings in a smart sensoring environment. For example, the program code can adjust the timing of various timers in these systems. The adjustment of factory setting is desirable because different alarming conditions can be more appropriate based on local conditions (e.g., water pressure, sump pump line size, number of other items pumping into the same header at the same time for a sump pump, etc.). In existing systems, as described above, a sequence can be hard-coded, but in the examples herein, smart sensoring changes can be implemented on the fly. As noted above, when the system is configured with the aspects described herein, the original hard coded sequence can be preserved as a golden sequence, but as the program code adjusts (e.g., based on machine learning), the program code can generate a new sequence based on analyzing output during execution of the golden sequence, and the program code can store the new sequence. In some examples, the program code generates, implements, and / or stores multiple sequences for the same hardware. The program code can determine which sequence to implement in the same hardware based on various conditions, including but not limited to, the operations of the hardware being controlled. The program code can generateand / or store separate sequences for normal operations, maintenance operations, and shutdown and cleaning operations. Thus, the program code can utilize different smart sensoring logic with common hardware, including but not limited to applying different sequences to different parts of the system, for optimization purposes or safety related reasons, depending upon the operation or process in which the one or more tools controlled by the program code are engaged.

[0042] FIG. 12 is a workflow 1200 that illustrates various aspects of some examples herein. As illustrated in FIG. 12, program code (executed by one or more processors communicatively coupled to a tool) obtains a sequence of instructions to control the tool to perform a process (1210). The program code stores the sequence of instructions in an array (1220). The program code obtains, from an external interface to the tool via an input / output device communicatively coupled to the one or more processors, a trigger to initiate the sequence of instructions (1230). This trigger can be a command from a scheduler communicatively coupled to the one or more processors.

[0043] When the program code obtains the sequence of instructions comprises, the program code can route the sequence of instructions from an external device to the array via a dynamic input / output map. The program code executes each instruction (e.g, each instruction controls an aspect of the process performed by the tool) (1240). When the program code executes each instruction, for each instruction, the program code can obtain an external input, determine, based on comparing the external input to the sequence of instructions if a prior instruction reached an endpoint, and based on determining that the prior instruction reached an endpoint, the program code can execute the instruction.

[0044] Returning to FIG. 12, the program code modifies the process by modifying the array, via an interface, to update one or more elements of the sequence of instructions and changes the process performed by the tool (1250). In some examples, the program code can store the sequence of instructions in a database communicatively coupled to the one or more processors which execute the program code. Additionally, when the program code modifies the instructions, the program code can configure an alarm module to trigger an alarm when an event in the process occurs. In some examples, the program code executes the modified process (1260). In some examples, when modifying the array, the program code stores the originalvalues as a golden sequence. The program code then makes the modifications and stores the modified sequence as a secondary sequence. In certain implementations, multiple sequences, including a golden sequence and a secondary sequence, can be used by the program code to direct different operations on common hardware. Thus, when there is more than one sequence available, the program code can obtain, via an interface, a selection of a process to be performed by the common hardware. Based on the selection, the program code can control the hardware to execute the golden sequence or the secondary sequence. In some examples, the selection may be of a particular process and the sequences are mapped by the program code behind the scenes to the processes that can be selected.

[0045] FIG. 13 is a workflow 1300 that illustrates various aspects of some examples herein and specifically, illustrates how the program code can apply one or more machine learning algorithms to modify the process. In FIG. 13, the program code monitors the execution of the process based on collecting data from one or more devices proximate to the tool (1310). The program code stores the collected data (1320). The program code can generate a report based on the stored data. The program code cognitively analyzes the collected data to generate recommended changes to improve the process (1330). In some examples, to cognitively analyze the data, the program code applies a machine learning algorithm. In some examples, the program code modifies the array based on the recommended changes (1340). The program code utilizes the modified array to execute the process (1350). In some examples, the program code can monitor execution of the process based on obtaining outputs from one or more devices proximate to the tool, automatically apply a machine learning algorithm to the outputs, and progressively generate, refinements to the process based on the machine learning. The program code can automatically implement the refinements to the process and execute the process with the refinements. In some examples, the program code can apply the progressively generated refinements to the process during runtime of the process.

[0046] FIG. 14 illustrates a block diagram of a resource 400 in computer system, such as, which is part of the technical architecture of certain embodiments of the technique. Returning to FIG. 14, the resource 400 may include a circuitry 502 that may in certain embodiments include a microprocessor 504. The computer system 400 may also include a memory 506 (e.g, a volatile memory device), and storage 508. The storage 508 may include a non-volatile memory device(e g., EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, firmware, programmable logic, etc.), magnetic disk drive, optical disk drive, tape drive, etc. The storage 508 may comprise an internal storage device, an attached storage device and / or a network accessible storage device. The system 400 may include a program logic 510 including code 512 that may be loaded into the memory 506 and executed by the microprocessor 504 or circuitry 502.

[0047] In certain embodiments, the program logic 510 including code 512 may be stored in the storage 508, or memory 506. In certain other embodiments, the program logic 510 may be implemented in the circuitry 502. Therefore, while FIG. 14 shows the program logic 510 separately from the other elements, the program logic 510 may be implemented in the memory 506 and / or the circuitry 502. The program logic 510 may include the program code discussed in this disclosure that facilitates the reconfiguration of elements of various computer networks, including those in various figures.

[0048] Using the processing resources of a resource 400 to execute software, computer- readable code or instructions, does not limit where this code can be stored. Referring to FIG. 15, in one example, a computer program product 500 includes, for instance, one or more non- transitory computer readable storage media 602 to store computer readable program code means or logic 604 thereon to provide and facilitate one or more aspects of the technique.

[0049] As will be appreciated by one skilled in the art, aspects of the technique may be embodied as a system, method or computer program product. Accordingly, aspects of the technique may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a "circuit," "module" or "system". Furthermore, aspects of the technique may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.

[0050] Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of acarrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus or device.

[0051] A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device. The location of a computer readable storage medium can vary in the examples herein.

[0052] Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus or device.

[0053] Program code embodied on a computer readable medium may be transmitted using an appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.

[0054] Computer program code for carrying out operations for aspects of the technique may be written in any combination of one or more programming languages, including an object- oriented programming language, such as Java, Smalltalk, C++ or the like, and conventional procedural programming languages, such as the "C" programming language, PHP, ASP, assembler or similar programming languages, as well as functional programming languages and languages for technical computing (e.g., Python, Matlab). The program code may execute entirely on the user's computer, partly on the user's computer, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). Furthermore, more than one computer can be used for implementing the program code, including, but not limited to, one or more resources in a cloud computing environment.

[0055] Aspects of the technique are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general -purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks.

[0056] These computer program instructions, also referred to as software and / or program code, may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function / act specified in the flowchart and / or block diagram block or blocks.

[0057] The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks.

[0058] The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the technique. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and / or flowchart illustration, and combinations of blocks in the block diagrams and / or flowchart illustration, can be implemented by special purpose hardwarebased systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

[0059] In addition to the above, one or more aspects of the technique may be provided, offered, deployed, managed, serviced, etc. by a service provider who offers management of customer environments. For instance, the service provider can create, maintain, support, etc. computer code and / or a computer infrastructure that performs one or more aspects of the technique for one or more customers. In return, the service provider may receive payment from the customer under a subscription and / or fee agreement, as examples. Additionally, or alternatively, the service provider may receive payment from the sale of advertising content to one or more third parties.

[0060] In one aspect of the technique, an application may be deployed for performing one or more aspects of the technique. As one example, the deploying of an application comprises providing computer infrastructure operable to perform one or more aspects of the technique.

[0061] As a further aspect of the technique, a computing infrastructure may be deployed comprising integrating computer readable code into a computing system, in which the code in combination with the computing system is capable of performing one or more aspects of the technique.

[0062] As yet a further aspect of the technique, a process for integrating computing infrastructure comprising integrating computer readable code into a computer system may be provided. The computer system comprises a computer readable medium, in which the computer medium comprises one or more aspects of the technique. The code in combination with the computer system is capable of performing one or more aspects of the technique.

[0063] Further, other types of computing environments can benefit from one or more aspects of the technique. As an example, an environment may include an emulator (e.g., software or other emulation mechanisms), in which a particular architecture (including, for instance, instruction execution, architected functions, such as address translation, and architected registers) or a subset thereof is emulated (e.g., on a native computer system having a processor and memory). In such an environment, one or more emulation functions of the emulator can implement one or more aspects of the technique, even though a computer executing the emulator may have a different architecture than the capabilities being emulated. As one example, in emulation mode, the specific instruction or operation being emulated is decoded, and an appropriate emulation function is built to implement the individual instruction or operation.

[0064] In an emulation environment, a host computer includes, for instance, a memory to store instructions and data; an instruction fetch unit to fetch instructions from memory and to optionally, provide local buffering for the fetched instruction; an instruction decode unit to receive the fetched instructions and to determine the type of instructions that have been fetched; and an instruction execution unit to execute the instructions. Execution may include loading data into a register from memory; storing data back to memory from a register; or performing some type of arithmetic or logical operation, as determined by the decode unit. In one example, eachunit is implemented in software. For instance, the operations being performed by the units are implemented as one or more subroutines within emulator software.

[0065] Further, a data processing system suitable for storing and / or executing program code is usable that includes at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements include, for instance, local memory employed during actual execution of the program code, bulk storage, and cache memory which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.

[0066] Input / Output or I / O devices (including, but not limited to, keyboards, displays, pointing devices, DASD, tape, CDs, DVDs, thumb drives and other memory media, etc.) can be coupled to the system either directly or through intervening VO controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modems, and Ethernet cards are just a few of the available types of network adapters.

[0067] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms "a,” "an" and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms "comprises" and / or "comprising", when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components and / or groups thereof.

[0068] The corresponding structures, materials, acts, and equivalents of all means or steps plus function elements in the descriptions below, if any, are intended to include any structure, material, or act for performing the function in combination with other elements as specifically noted. The description of the technique has been presented for purposes of illustration and description but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill inthe art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular uses contemplated.

Claims

Claims:

1. A computer-implemented method comprising: obtaining, by one or more processors communicatively coupled to a tool, a sequence of instructions to control the tool to perform a process; storing, by the one or more processors, the sequence of instructions in an array; obtaining, by the one or more processors, from an external interface to the tool via an input / output device communicatively coupled to the one or more processors, a trigger to initiate the sequence of instructions; executing, by the one or more processors, each instruction, wherein each instruction controls an aspect of the process performed by the tool; and modifying, by the one or more processors, the process, wherein the modifying comprising modifying the array, via an interface, wherein the modifying the array updates one or more elements of the sequence of instructions and changes the process performed by the tool.

2. The computer-implemented method of claim 1, further comprising: storing, by the one or more processors, the sequence of instructions in a database communicatively coupled to the one or more processors.

3. The computer-implemented method of claim 1, wherein executing each instruction comprises: obtaining, by the one or more processors, an external input; determining, by the one or more processors, based on comparing the external input to the sequence of instructions to determine if a prior instruction reached an endpoint; and based on determining that the prior instruction reached an endpoint, executing, by the one or more processors, the instruction.

4. The computer-implemented method of claim 1, wherein modifying the process further comprises: configuring, by the one or more processors, an alarm module to trigger an alarm when an event in the process occurs.

5. The computer-implemented method of claim 1, wherein obtaining the sequence of instructions comprises: routing, by the one or more processors, the sequence of instructions from an external device to the array via a dynamic input / output map.

6. The computer-implemented method of claim 1, wherein the trigger to initiate the sequence of instructions comprises a command from a scheduler communicatively coupled to the one or more processors.

7. The computer-implemented method of claim 1, further comprising: executing, by the one or more processors, the modified process.

8. The computer-implemented method of claim 7, further comprising: monitoring, by the one or more processors, execution of the process based on collecting data from one or more devices proximate to the tool; storing, by the one or more processors, the collected data; and cognitively analyzing, by the one or more processors, the collected data to generate recommended changes to improve the process.

9. The computer-implemented method of claim 8, wherein the cognitively analyzing comprises applying a machine learning algorithm.

10. The computer-implemented method of claim 8, further comprising: automatically modifying, by the one or more processors, the array based on the recommended changes; andutilizing, by the one or more processors, the modified array to execute the process.

11. The computer-implemented method of claim 7, further comprising: monitoring, by the one or more processors, execution of the process based on obtaining outputs from one or more devices proximate to the tool; automatically applying, by the one or more processors, a machine learning algorithm to the outputs; and progressively generating, by the one or more processors, refinements to the process based on the machine learning.

12. The computer-implemented method of claim 11, further comprising: automatically implementing, by the one or more processors, the refinements to the process; and executing, by the one or more processors, the process with the refinements.

13. The computer-implemented method of claim 11, further comprising: applying, by the one or more processors, during runtime of the process, the progressively generated refinements to the process.

14. The computer-implemented method of claim 8, further comprising: generating, by the one or more processors, a report based on the stored data.

15. The computer-implemented method of claim 1, wherein modifying the array further comprises: prior to the modifying, storing, by the one or more processors, original values in the array as a golden sequence; and storing, by the one or more processors, the updated one or more elements of the sequence as a secondary sequence.

16. The computer-implemented method of claim 15, wherein the golden sequence and the secondary sequence direct different operations on common hardware.

17. The computer-implemented method of claim 16, further comprising: obtaining, by the one or more processors, via the interface a selection of a process to be performed by the common hardware; and based on the selection, controlling, by the one or more processors, the hardware to execute the golden sequence or the secondary sequence.

18. A computer system comprising: a memory; and one or more processors in communication with the memory, wherein the computer system is configured to perform a method, said method comprising: obtaining, by the one or more processors communicatively coupled to a tool, a sequence of instructions to control the tool to perform a process; storing, by the one or more processors, the sequence of instructions in an array; obtaining, by the one or more processors, from an external interface to the tool via an input / output device communicatively coupled to the one or more processors, a trigger to initiate the sequence of instructions; executing, by the one or more processors, each instruction, wherein each instruction controls an aspect of the process performed by the tool; and modifying, by the one or more processors, the process, wherein the modifying comprising modifying the array, via an interface, wherein the modifying the array updates one or more elements of the sequence of instructions and changes the process performed by the tool.

19. The computer system of claim 18, further comprising: storing, by the one or more processors, the sequence of instructions in a database communicatively coupled to the one or more processors.

20. A computer program product for comprising: one or more computer readable storage media and program instructions collectively stored on the one or more computer readable storage media readable by at least one processing circuit, wherein the at least one processing circuit is communicatively coupled to a tool, to: obtain a sequence of instructions to control the tool to perform a process; store the sequence of instructions in an array; obtain, from an external interface to the tool via an input / output device communicatively coupled to the one or more processors, a trigger to initiate the sequence of instructions; execute each instruction, wherein each instruction controls an aspect of the process performed by the tool; and modify the process, wherein the modifying comprises modifying the array, via an interface, wherein the modifying the array updates one or more elements of the sequence of instructions and changes the process performed by the tool.

Citation Information

Patent Citations

  • System and method for smart selection and building of industrial automation control systems from industrial automation control libraries and objects

    US20210096523A1

  • Insight driven programming tags in an industrial automation environment

    US20230297061A1