Distributed Industrial Performance Monitoring and Analysis

By introducing a distributed data engine and data analysis network into the process control system, the problem of low data processing and communication efficiency in the prior art is solved, real-time performance monitoring and analysis of industrial processes is realized, and the security, reliability and economic benefits of the system are improved.

CN113341899BActive Publication Date: 2025-04-25FISHER ROSEMOUNT SYST INC
View PDF 12 Cites 0 Cited by

Patent Information

Application Number
CN202110696630.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2016-09-23
Filing Date
2016-10-10
Publication Date
2025-04-25
Estimated Expiration
2036-10-10

AI Technical Summary

Technical Problem

Existing process control systems have limitations in real-time performance monitoring and analysis, including insufficient data storage capacity, limited communication bandwidth, insufficient processing capacity, and inability to process large-scale streaming data in real time.

Method used

It adopts a distributed data engine to embed data monitoring and analysis engines into process control devices, streaming through data analysis networks, supports local analysis and large-scale analysis, and provides real-time results and optimization.

Benefits of technology

Real-time performance monitoring and analysis of industrial processes is realized, data processing capabilities and communication efficiency are improved, fault detection and process operation can be detected in a timely manner, and process operations are improved, and factory safety, reliability and economic benefits are improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113341899B_ABST
    Figure CN113341899B_ABST
Patent Text Reader

Abstract

A distributed industrial process monitoring and analysis system and method for operations within a process plant is provided. Multiple distributed data engines (DDEs) can be embedded within a process plant to collect and store data generated by a data source (e.g., a process controller). Therefore, data can be stored in a distributed manner in the DDEs embedded throughout the process plant. The DDEs can be connected via a data analysis network to facilitate data transmission by subscription or query. The DDEs can be configured into multiple clusters, which can further include local clusters and centralized clusters. The local cluster can obtain streaming data from the data source and stream the selected data to the data consumer. The centralized cluster can register the local cluster, receive data from the local cluster, and perform data analysis functions on the received data. The analyzed data can be further sent to the data consumer.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of the invention application with application date of October 10, 2016, application number 201610885149.1, and invention name “Distributed Industrial Performance Monitoring and Analysis”.

[0002] CROSS-REFERENCE TO RELATED APPLICATIONS

[0003] This application claims priority to U.S. Provisional Application No. 32 / 239,620, filed on October 9, 2015, entitled DISTRIBUTED INDUSTRIAL PERFORMANCE MONITORING AND ANALYTICS, the entire contents of which are hereby expressly incorporated herein by reference. This application is related to the following applications: (i) U.S. Application No. 13 / 784,041, filed on March 4, 2013, entitled “BIG DATA IN PROCESS CONTROL SYSTEMS”, (ii) U.S. Application No. 14 / 174,413, filed on February 6, 2014, entitled “COLLECTING AND DELIVERING DATA TO A BIG DATAMACHINE IN A PROCESS CONTROL SYSTEM”, (iii) U.S. Application No. 14 / 456,763, filed on August 11, 2014, entitled “SECURING DEVICES TO PROCESS CONTROL SYSTEMS”, (iv) U.S. Application No. 14 / 456,763, filed on August 11, 2014, entitled “SECURING DEVICES TO PROCESS CONTROL SYSTEMS”, and (v) U.S. Application No. 14 / 456,763, filed on August 11, 2014, entitled “DATA MODELING STUDIO”, (v) U.S. Application No. 14 / 169,965, filed on January 31, 2014, entitled “MANAGING BIG DATA IN PROCESS CONTROL SYSTEMS”, (vi) U.S. Application No. 14 / 212,411, filed on March 14, 2014, entitled “DETERMINING ASSOCIATIONS AND ALIGNMENTS OF PROCESS ELEMENTS AND MEASUREMENTS IN A PROCESS”, (vii) U.S. Application No. 14 / 212,493, filed on March 14, 2014, entitled “DISTRIBUTED BIG DATA IN A PROCESS CONTROL SYSTEM”, (viii) U.S. Application No. 14 / 216,823, filed on January 31, 2014, entitled “MANAGING BIG DATA IN PROCESS CONTROL SYSTEMS”, (vii) U.S. Application No. 14 / 212,493, filed on March 14, 2014, entitled “DISTRIBUTED BIG DATA IN A PROCESS CONTROL SYSTEM”, (viii) U.S. Application No. 14 / 216,823, filed on January 31, 2014, entitled “MANAGING BIG DATA IN PROCESS CONTROL SYSTEMS” U.S. Application No. 14 / 506,863, filed on October 6, 2014, entitled “REGIONAL BIG DATA IN PROCESS CONTROL SYSTEMS”; (ix) U.S. Application No.14 / 507,188, (x) U.S. Application No. 62 / 060,408, filed on October 6, 2014, entitled “DATA PIPELINE FOR PROCESS CONTROL SYSTEM ANALYTICS”, and (xi) U.S. Application No. 14 / 507,252, filed on October 6, 2014, entitled “AUTOMATIC SIGNAL PROCESSING-BASED LEARNING IN A PROCESS PLANT”, the entire disclosures of which are expressly incorporated herein by reference. . Technical Field

[0004] The present disclosure relates generally to process plants and process control systems and, more particularly, to real-time performance monitoring and analysis of real-time data generated by process plants and process control systems. Background Art

[0005] Distributed process control systems such as those used in chemical, petroleum or industrial or other process control plants to manufacture, refine, transform, generate or produce physical materials or products typically include one or more process controllers that are communicatively coupled to one or more field devices via an analog, digital or combined analog / digital bus, or via a wireless communication link or network. The field devices, which may be, for example, valves, valve positioners, switches and transmitters (e.g., temperature, pressure, level and flow rate sensors), are located in a process environment and typically perform physical or process functions, such as opening or closing valves, measuring process and / or environmental parameters such as temperature or pressure, etc. to control one or more processes performed within a process plant or system. Intelligent field devices, such as field devices that follow the well-known Fieldbus protocol, may also perform control calculations, alarm functions and other control functions typically implemented within a controller. The process controller (typically also located in a plant environment) receives signals indicating process measurements obtained by the field devices and / or other information about the field devices, and executes a controller application, which, for example, runs different control modules that make process control decisions, generates control signals based on the received information, and communicates with other control modules such as those being processed. and The controller and the field control devices coordinate with control modules or blocks executed in field devices such as Fieldbus field devices. The control modules in the controller send control signals to the field devices through communication lines or links to control the operation of at least a portion of the process plant, such as to control at least a portion of one or more industrial processes running or executed in the plant. For example, the controller and the field control devices control at least a portion of the process controlled by the process control system of the process plant.

[0006] Information from field devices and controllers is usually available to one or more other hardware devices, such as operator workstations, personal computers or computing devices, data historians, report generators, centralized databases, or other centralized management computer devices, through data highways or communication networks, which are typically placed in control rooms or other locations away from harsher factory environments. Each of these hardware devices is usually concentrated across a process plant or a portion of a process plant. These hardware devices run applications that can, for example, enable operators to perform functions related to control processes and / or operating process plants, such as changing the settings of process control routines, modifying the operation of control modules in controllers or field devices, viewing the current state of processes, simulating the operation of processes to train employees or test process control software, retaining and updating configuration databases, etc. The data highways used by hardware devices, controllers, and field devices can include wired communication paths, wireless communication paths, or a combination of wired and wireless communication paths.

[0007] For example, the DeltaV TMThe control system includes multiple applications that are stored in different devices located in different places within the process plant and executed by these devices. The configuration application located in one or more workstations or computing devices enables users to create or change process control modules, and download these process control modules to dedicated distributed controllers via data highways. Typically, these control modules consist of communicatively interconnected function blocks, which are objects of object-oriented programming protocols, which perform functions based on inputs to the control scheme within the control scheme, and provide outputs to other function blocks within the control scheme. The configuration application can also allow configuration designers to create or change operator interfaces, which are used by viewing applications to display data to operators, and enable users to change settings, such as set points within process control routines. Each dedicated controller and in some cases one or more field devices store and execute corresponding controller applications, which run the control modules assigned and downloaded to them to achieve actual process control. A viewing application that can be executed on one or more operator workstations (or on one or more remote computing devices in communication with the operator workstations and the data highway) receives data from the controller application via the data highway and displays the data to a process control system designer, operator, or user using a user interface, and can provide any of a variety of different views, such as an operator view, an engineer view, a technician view, etc. A data historian application is typically stored in and executed by a data historian device that collects and stores some or all of the data provided across the data highway, while a configuration database application can be run in another computer attached to the data highway to store the current process control routine configuration and its associated data. Alternatively, the configuration database can be located on the same workstation as the configuration application.

[0008] In a process plant or process control system, when an abnormal condition or a fault occurs (e.g., when an alarm is generated, or when a process measurement or actuator is found to have excessive variation), an operator, instrument technician, or process engineer typically uses analytical tools in conjunction with his or her knowledge of the process controlled by the system and its flow paths through the system to attempt to determine upstream measurements and process variables that may have contributed to the abnormal condition or the fault. For example, an operator may feed a DeltaV Analyzer with historical data logs that have been captured over time from the output of process control equipment (e.g., field devices, controllers, etc.). TMBatch analysis products or continuous data analysis tools attempt to determine the contribution of individual process variables and / or measurements to abnormal or fault conditions. Typically, the user decides which historical data logs and / or other time series data to feed into the analysis tool and identifies candidate upstream factors (e.g., measurements, process variables, etc.) based on his or her knowledge of the process. These data analysis tools then use principal component analysis (PCA) or other analysis techniques (e.g., partial least squares, linear regression, etc.) to determine which of the candidate upstream factors affect the quality parameters of the downstream predictions. Therefore, the accuracy and effectiveness of the output provided by the analysis tool is based on or limited by the user's knowledge, and therefore may not provide complete or correct insight into the source of the abnormal condition or fault.

[0009] Additionally, such analysis is often performed offline from the process, and therefore, the process may change or move while the analysis is being performed. For example, a typical process plant typically performs one or two cycles of a particular analysis (e.g., a data collection and analysis cycle) per day, and only some time after the analysis has been performed are the results of the analysis and any prescriptive actions developed and implemented in the plant. Therefore, not only may the accuracy of the analysis results be questionable, but prescriptive actions developed therefrom may not be optimal or may no longer be applicable to the currently executing process.

[0010] Furthermore, the architecture of currently known process control plants and process control systems is strongly influenced by limited controller and device memory, communication bandwidth, and controller and device processor capabilities. For example, in currently known process control system architectures, the use of dynamic and static non-volatile memory in controllers is typically minimized or at least carefully managed. As a result, during system configuration (e.g., a priori), a user typically must select which data in the controller to archive or save, how often it will be saved, and whether to use compression, so the controller is configured accordingly with this limited set of data rules. As a result, data that may be useful in troubleshooting and process analysis is often not archived, and if it is collected, useful information may have been lost due to data compression.

[0011] Still further, the size of data sets for industrial or process control plants has steadily increased to the point where current data processing analytical applications are insufficient. Typically, known analytical techniques only attempt to extract value from the data, but do not address the specific size of data sets from which the value is to be extracted, and notably, do not operate in a seamless manner on very large data sets (such as all the process data generated by a plant). Furthermore, known analytical techniques are generally unable to handle streaming or streaming data.

[0012] The limitations of currently known process plant monitoring and analysis and process control systems discussed above and other limitations may undesirably manifest themselves in the operation and optimization of a process plant or process control system, such as during plant operation, troubleshooting, and / or predictive modeling. Generally speaking, real-time analysis using real-time, current industrial process performance data is not possible using known monitoring and analysis tools. Summary of the invention

[0013] Disclosed herein are techniques, systems, devices, components and methods for distributed industrial process performance monitoring and / or analysis. The techniques, systems, devices, components and methods may be applied to industrial process control systems, environments, and / or factories, which are interchangeably referred to herein as "automation", "industrial control", "process control", or "process" systems, environments, and / or factories. Typically, such systems and factories provide control of one or more processes that operate to manufacture, refine, transform, generate, or produce physical materials or products in a distributed manner. Typically, the techniques, systems, devices, components, and methods include embedding data monitoring and / or data analysis engines (also interchangeably referred to herein as "distributed data engines", "data engines", or "DDEs") in a distributed manner to coordinate operations to control industrial process devices. For example, a distributed data engine may be manufactured to operate with other devices to control processes (e.g., process control devices such as field devices, controllers, I / O cards, etc.) executed in a process plant or process control system, and / or a distributed data engine may be locally coupled to or directly coupled to such a device. Additional data engines may be embedded in or manufactured into other devices included in the process plant, such as communication nodes, workstations or other operator interfaces, servers, etc. In some configurations, the data engine is connected to various communication links within the process plant or otherwise connected to the process plant in order to have a view or window into real-time data transmitted during the execution or control of processes within the plant.

[0014] Data is streamed between various embedded data engines, for example, by using one or more data communication channels and networks, which are typically found outside conventional communication systems, such as those found in distributed control systems (DCS), programmable logic systems (PLS), and process control safety and health monitoring systems (SHM). In order to avoid confusion with such conventionally known process control communication networks and links, the communication channels and networks used for streaming communication between data engines are interchangeably referred to herein as "data analysis communication channels", "data analysis channels", "data analysis communication networks", or "data analysis networks". Streaming data may include real-time data viewed or observed by a data engine. For example, when a distributed data engine is connected to a communication link of a conventional process control system (and therefore viewing data that is traversing the link), the data engine may stream a copy of the data that is traversing the conventional communication link to one or more other data engines via the data analysis network. In another example, when a distributed data engine is manufactured or embedded in a process control device, the analysis data streamed by the data engine using the data analysis network may include a copy of the data received, generated, or otherwise processed by the device. Additionally or alternatively, the streaming data may include data corresponding to one or more analyses performed locally at the device, such as analysis results, prescriptive actions, etc. This architecture allows analysis services to be locally bound and provided close to or even at the data source, while providing larger-scale analysis, thereby providing timely results and optimizations while minimizing bandwidth usage and processing cycles for the entire system, as explained in more detail below.

[0015] In one aspect, a distributed industrial process monitoring and analysis system includes a plurality of distributed data engines (DDEs) embedded in a process plant operating to control a process. Each of the DDEs is coupled to a corresponding one or more data sources in the process plant, and the one or more data sources respectively generate data obtained as a result of the process being controlled. In addition, each of the DDEs stores data generated by the corresponding one or more data sources coupled to each DDE. The system also includes a data analysis network that supports streaming analysis data between the plurality of DDEs, and also supports transmission of queries for data stored at the plurality of DDEs.

[0016] In another aspect, a method includes announcing the presence of a cluster included in a data analysis network of a process control plant, wherein the process control plant operates to control a process. The method also includes registering a data source that responds to the announcement and generates continuous data due to the plant's control of the process. In addition, the method includes receiving continuous data generated by the data source, and streaming at least some of the continuous data generated by the data source to a consumer via the data analysis network. One or more portions of the method can be performed, for example, by a cluster.

[0017] In yet another aspect, a method includes: announcing the presence of a centralized cluster included in a data analysis network of a process control plant, wherein the process control plant operates to control a process. The method also includes: registering a local cluster that is responsive to the announcement and is configured to store streamed continuous data generated as a result of controlling the process. The local cluster is embedded in the process plant and is communicatively coupled to one or more data sources, wherein the one or more data sources generate at least a portion of the continuous data during operation to control the process. In addition, the method may include: receiving at least a portion of the streamed continuous data from the local cluster, performing one or more data analysis functions on the streamed continuous data received from the local cluster, and streaming the output of the one or more data analysis functions to a data consumer via the data analysis network. One or more portions of the method may be performed, for example, by a centralized cluster.

[0018] In another aspect, the system includes a data analysis module bound to a continuous data stream. The continuous data stream has content generated in real time by a data source included in a process plant, wherein the process plant operates to control a process, and the content of the continuous data stream is generated as a result of the operation for controlling the process. The system also includes a user interface that displays continuous output generated in real time by the data analysis module operating in real time on the continuous data stream. The continuous output displayed on the user interface includes continuous updates of one or more predicted values.

[0019] In yet another aspect, a performance monitoring and analysis system for industrial process control includes a platform that provides a set of user controls and a canvas that enables a user to create a data graph representing a data model. The platform also enables a user to evaluate or compile a data graph to execute on an input data set to generate output data. The input data set includes time series data (and optionally other data) obtained by an online process plant controlling a process. As used herein, the term "time series data" generally refers to a series of data points, values, or sets generally generated by one or more data sources over a time interval.

[0020] The data graph includes a set of data blocks interconnected by a set of lines, and data is transmitted between the data blocks via the set of lines. Each data block in the set of data blocks corresponds to a corresponding data operation, includes zero, one or more input connectors, and includes zero, one or more output connectors. The corresponding input data is received at each data block via the input connector, and the corresponding data block provides the corresponding output data obtained by each data block performing its corresponding data operation on the corresponding input data via the output connector. In addition, the input connector is included in the first data block of the set of data blocks, the corresponding data operation of at least one data block included in the set of data blocks includes a data analysis function, and different parts of the data graph are asynchronously and independently compilable and executable. In some embodiments, for example, when the input connector and the output connector are not configured, the input and output data can be processed internally by the data block.

[0021] In one aspect, a method for performing real-time analysis in a process control environment includes: creating a first diagram on a graphical user interface. The first diagram represents a first programming instruction suitable for causing a processor to manipulate data previously generated and stored by the process control environment. The method also includes: compiling the first programming instruction represented by the first diagram, executing the compiled first programming instruction represented by the first diagram to create a first result output, and evaluating the first result output to determine a predicted value of a model used to create the first result output. In addition, the method includes: automatically generating a second diagram based on the first diagram. The second diagram represents a second programming instruction, and the second programming instruction is suitable for causing the processor to perform the following operations: bind to a live data source and use at least the model used to create the first result output to evaluate the data received from the live data source. In addition, the method includes: compiling the second programming instruction represented by the second diagram, and executing the compiled second programming instruction to predict aspects of the operation of the process control environment.

[0022] In another aspect, a system for performing real-time analysis in a process control environment includes: a plurality of process control devices operating in a process plant; and a controller communicatively coupled to the plurality of process control devices via a control network. The system also includes: a big data storage node including a tangible, non-transitory storage medium storing data of the operation of the process control environment; a processor communicatively coupled to the big data storage node; and a program memory communicatively coupled to the processor. The program memory may include a tangible, non-transitory storage medium storing instructions that, when executed by the processor, cause the processor to: display a graphical user interface including an editing canvas; and receive a selection of a plurality of graphical programming elements to be placed on the editing canvas, thereby creating a first graph. The first graph may represent a first programming instruction that is adapted to cause the processor to manipulate data stored on the big data storage node. Additionally, when the instruction is executed by the processor, the processor may execute the compiled first programming instruction to create a first result output, and create a predictive model based on the first result output. When the instructions are executed by the processor, the processor may also be caused to automatically generate a second diagram based on the first diagram. The second diagram represents second programming instructions, which are suitable for causing the processor to perform the following operations: bind to a live data source and evaluate data received from the live data source using at least a model for creating a first result output. When the instructions are executed by the processor, the processor may also be caused to compile the second programming instructions represented by the second diagram and execute the compiled second programming instructions to predict aspects of the operation of the process control environment.

[0023] In another aspect, an analysis service for performing data analysis in a process control environment includes a block definition library. The library can be stored on a tangible, non-transitory medium, and each block definition stored in the library can include: (i) a target algorithm for performing an action on data in the process control environment, and (ii) one or more block attributes. The analysis service also includes: a machine-readable instruction set stored on the tangible, non-transitory medium, and the machine-readable instruction set, when executed by a processor, is suitable for: (1) presenting a canvas to a user via a display; (2) presenting the block definition library to the user; (3) receiving one or more selections of one or more corresponding block definitions; (4) placing one or more blocks corresponding to one or more block definitions on the canvas to create a module including the one or more blocks; (5) facilitating configuration of one or more attributes for any one or more of the following: (i) the one or more blocks, (ii) the module, or (iii) the one or more blocks and the module; and (6) causing evaluation of the following: (i) one or more of the blocks or (ii) the module.

[0024] In addition, the analysis service includes an execution service running on a processor, the execution service being configured to: (1) receive a request for evaluating the one or more blocks or the modules; (2) compile instructions corresponding to the one or more blocks or the modules; (3) create one or more job processes for executing the compiled instructions and cause the one or more job processes to execute the compiled instructions; and (4) receive results of the one or more job processes. The analysis service also includes a communication network that couples the one or more processors executing the one or more job processes to one or more distributed data engines. Each distributed data engine can include a tangible, non-transitory storage medium for storing data generated in the process control environment.

[0025] In fact, data generated by the operation of a process plant or data about the operation of a process plant can be stored in multiple data storages, such as relational or non-relational databases. These data storages may use various data structures and query mechanisms so that different query syntax is required to access data in different data storages. Standardized queries are described herein to facilitate data access to data storages using various formats. Standardized queries using standardized query formats contain information required for accessing data in data storages, but the standardized queries may not be directly executed to obtain such data. In fact, queries specific to a data source are generated based on standardized queries. This can include: extracting query parameters from standardized queries, and generating one or more queries specific to a data source using query formats specific to a data source associated with a specific data source. Queries specific to a data source can be executed to access its corresponding data source and select data from its corresponding data source, and the data can then be formatted to generate a data frame, which presents the data indicated in the standardized query in any desired format. This can include aligning the sampling rate, data attributes, or other data characteristics obtained by queries specific to a data source for data. In some embodiments, data from multiple data sources utilizing different data source specific query formats may be combined into an aggregate data frame for further use in process control or analysis.

[0026] In another aspect, a method, system, and computer-readable medium storing instructions for obtaining time series data from an electronic data source are described, including: receiving an indication of the electronic data source from which the data is to be obtained; receiving an indication of a time range within which the data is to be obtained; receiving an indication of a characteristic of the data to be obtained; determining a data source-specific query format associated with the electronic data source; generating a data source-specific query that complies with a data source-specific format based on the indication of the time range and the indication of the characteristic of the data to be obtained; causing the data source-specific query to be executed to select the data from the electronic data source and / or receive the data from the electronic data source. The indication of the time range and the indication of the characteristic of the data are expressed in the standardized query format independent of the electronic data source, and the electronic data source can be a relational database or a non-relational database.

[0027] The method includes a standardized query using a standardized query format. An indication of a time range and an indication of characteristics of the data are received in the standardized query. An indication of an electronic data source may also be received in the standardized query. The standardized query further indicates a format for the data or file to return the data, such as a JavaScript Object Notation (JSON). The standardized query may also be a JSON formatted file. The standardized query format may use a syntax different from the native syntax used by the electronic data source. The syntax used by the standardized query format cannot be directly executed to obtain the data from the electronic data source.

[0028] The indication of the time range includes at least one start time and at least one end time. The indication of the time range similarly includes a sampling rate for the data to be obtained. The indication of the characteristics of the data to be obtained includes an indication of one or more types of measurement results about the operation of the process plant. The one or more types of measurement results may include measurement values ​​from one or more field devices in the process plant. The indication of the one or more types of measurement results includes one or more tags, aliases, and data types associated with the data.

[0029] The method also includes receiving an indication of a format in which the data is to be received from the electronic data source, and the data may be received from the electronic data source in the indicated format. In some embodiments, an indication of a format may be received in which the data is to be obtained, and the data received from the electronic data source may be converted to the indicated format.

[0030] The data source-specific query format may be determined based on the type of electronic data source. Generating the data source-specific query may include mapping a time range indication and characteristics of the data to be obtained to the determined data source-specific query format. Causing the data source query to be executed may include sending the data source-specific query to an interface of the electronic data source, so that the interface queries the electronic data source using the data source-specific query.

[0031] A data frame may be generated and include data received from the electronic data source. The data frame may include a plurality of data points. Each data point is associated with a moment in the time range. Each data point may also be associated with a moment in the time range that is aligned with a sampling period that is an integer multiple of a start time or is the start time.

[0032] On the other hand, a method, system, and computer-readable medium storing instructions for obtaining time series data from an electronic data source are described, including: receiving a standardized query using a standardized query format from a data requesting entity; extracting query parameters from the standardized query; generating a data source-specific query having the data source-specific query format based on the extracted query parameters; executing the data source-specific query to obtain the data from the electronic data source, and / or providing the obtained data to a data receiving entity. The standardized query format is different from the data source-specific query format used by the electronic data source. The electronic data source is a relational database or a non-relational database. The data requesting entity can be a query block in an analysis program, such as the data analysis studio discussed herein. The data receiving entity can be the same entity as the data requesting entity. The standardized query uses syntax that cannot be directly executed to obtain the data from the electronic data source.

[0033] Extracting the query parameters from the standardized query may include determining a time period and a data parameter for the data. The time period may have a start time and an end time, and the data parameter may indicate a type or characteristic of the data to be obtained from the electronic data source. Extracting the query parameters from the standardized query may also include determining a sampling rate.

[0034] Providing the obtained data to the requesting entity may include returning a set of data points associated with the time period. Each data point includes a timestamp indicating the moment of one or more values ​​associated with the data point. The timestamp may be limited to a start time or an integer multiple of the period of the sampling rate after the start time. In order to obtain a complete time series, one or more data points may be added to the data set using a timestamp indicating an integer multiple of the period of the sampling rate after the start time. The added data points may use the value of a data entry in an electronic data source, the value of the data entry being associated with the closest time before each timestamp of the one or more added data points. The set of data points may be formatted based on a format specified in a standardized query.

[0035] The type or characteristic of the data indicated by the data parameter may be a type of measurement result or a measurement result from a type of measurement device. The type or characteristic of the data may also indicate a specific measurement device, which may be a field device located in a process plant. The data parameter may also indicate a label for the data to be obtained, an alias for the data provided to the data requesting entity, and / or a data format type for the data provided to the data requesting entity.

[0036] Providing the data to the data requesting entity includes sending a data frame containing the obtained data to the data requesting entity. The standardized query may include an indication of a format of the data frame. The data frame is formatted according to the indication of the format of the data frame. The standardized query may indicate that the data frame provided to the data receiving entity is a JSON document.

[0037] In another aspect, a method, system, and computer-readable medium storing instructions for accessing a process plant from multiple electronic data sources are described, including: receiving a standardized query, the standardized query using a standardized query format; generating a query specific to a first data source based on the standardized query; generating a query specific to a second data source based on the standardized query; causing the query specific to the first data source to be executed to obtain a first data set from the first electronic data source; causing the query specific to the second data source to be executed to obtain a second data set from the second electronic data source; and generating a data frame including an aggregation of the first data set and the second data set. The first data set and the second data set of data each include multiple data points of information measured by one or more field devices in the process plant.

[0038] The first data source-specific indication may use a first query format associated with a first electronic data source, and the second data source-specific query may use a query format associated with a second electronic data source. The standardized query may include a first indication of the first electronic data source and a second indication of the second electronic data source. In some embodiments, the first electronic data source may be a relational database and the second electronic data source may be a non-relational database. The first indication may identify the first query format and the second indication may identify the second query format. In some embodiments, the first indication and the second indication are placed before an indication of a data column.

[0039] The standardized query format may use a query syntax that is different from both the query syntax of the first query format and the query syntax of the second query format. The query syntax of the standardized query format cannot be directly executed to obtain the first data set from the first electronic data source or to obtain the second data set from the second electronic data source. For example, the standardized query is contained in a JavaScript Object Notation (JSON) file.

[0040] The standardized query includes an indication of a time range, the time range identifying time periods corresponding to data entries in the first data set and the second data set. The time range may include a plurality of time periods, the plurality of time periods may be separated by excluded time periods for which no data is queried. The time range may also identify a first time period associated with the first data set and a second time period associated with the second data set. The standardized query includes an indication of a sampling rate of the aggregated data frames.

[0041] The first data set may include data having a first sampling rate, and the second data set may include data having a second sampling rate. In this instance, generating the aggregated data frame may include aligning the first and second sampling rates. Aligning the first and second sampling rates may add data points corresponding to the unsampled moments required to obtain the desired sampling rate. Such added data points are given values ​​of sampled data that are directly before the added data points in time. Aligning the first and second sampling rates may similarly include removing sampled data points.

[0042] The system for implementing these methods may also include one or more processors, the one or more processors are communicatively connected to one or more data sources and one or more program memories, the one or more program memories store computer-readable instructions, and the computer-readable instructions, when executed by the one or more processors, cause the computer system to perform some or all of the system functions described above. Computer-readable media can store similar computer-readable instructions, which can be executed by one or more processors of a computer system, so that the computer system performs some or all of the system functions described above. Additional or alternative aspects of these methods, systems, or computer-readable media can be implemented, as described in more complete detail below.

[0043] In addition, a novel frequency analysis analysis technique is disclosed, and the analysis technique can be provided by any of the systems, methods, devices and techniques described herein. The novel frequency analysis analysis technique can analyze streaming data to provide early warning fault detection in a process plant or process control system. More specifically, the frequency analysis analysis technique can create a new process variable set corresponding to the leading indicator of the identified fault, anomaly, performance degradation, target performance level, undesirable condition, and / or desired condition, and / or can determine the time series data of the new process variable by performing a rolling FFT on the streaming process data. The rolling FFT can convert the streaming process data from the time domain to the frequency domain, where the value of the new process variable set can be determined in the frequency domain. The value of the determined new process variable can be transformed back to the time domain for monitoring. The presence of the leading indicator detected in the monitored time domain data can cause the indication of the predicted fault, anomaly, performance degradation, and / or other undesirable condition to be generated and / or presented, and can cause changes in the operation of the process plant, thereby avoiding, preventing, and / or mitigating the impact of undesirable disturbances, events and / or conditions. Similarly, detecting the presence of a leading indicator within the monitored time domain data can cause an indication of a predicted desired condition (such as a target performance level) to be generated and / or presented, and in some cases, along with the time or time interval at which the expected condition is predicted to occur. BRIEF DESCRIPTION OF THE DRAWINGS

[0044] Figure 1 depicts a block diagram illustrating an example system process plant or process control system including a distributed, embedded industrial process performance monitoring and / or analysis engine;

[0045] Figure 2A depicts a block diagram of an example system for distributed industrial process performance monitoring / analysis;

[0046] Figure 2B An embodiment of an arrangement of an example distributed industrial process performance monitoring and analysis system associated with an example process control system is depicted;

[0047] Figure 3 depicts a block diagram of an example industrial process performance monitoring and / or analysis engine;

[0048] Figure 4A depicts an example data graph showing various data block characteristics and interconnections;

[0049] Figure 4B Describes a sample Data Analytics Studio user interface;

[0050] Figure 4CDepicting example relationships between a data block definition library, a data block definition, a data module, a data block, a data block instance, and a wire;

[0051] Figure 4D Describes examples of drafting or creating a data module;

[0052] Figure 4E depicts a zoomed-in area of ​​a Data Studio canvas on which a data module is being created;

[0053] Figure 4F-4H depicts example data block definition templates for different types of data blocks;

[0054] Fig. 4I Describes example processes for evaluating, compiling, or deploying data graphs;

[0055] Figure 4J Depicting an example architecture that supports the presentation of standard and customized visualizations;

[0056] Figure 4K depicts an example scenario in which a composited data block is created;

[0057] Figure 4L depicts a sample offline data graph;

[0058] Figure 4M Describes from Figure 4L The online data graph generated by transforming the example offline data graph in;

[0059] Figure 4N-1 and Figure 4N-2 Describes a sample Data Analytics Dashboard user interface;

[0060] Fig.4O Depicts a high-level block diagram of the control loops that control and optimize process plant performance;

[0061] Figure 4P Describes an example method for providing localized data analysis services;

[0062] Figure 4Q depicts an example method for providing localized data analytics services;

[0063] Figure 5A A block diagram depicting an example architecture for an analytics service according to the present specification;

[0064] Figure 5B A more detailed description is shown in Figure 5A A block diagram of an example data service entity of the architecture depicted in;

[0065] Figure 5C According to the presently described embodiments, a flow chart illustrating a method for presenting a properties dialog box for a block placed on a programming canvas is depicted;

[0066] Figure 5D depicts an example programming canvas on which an example offline graph is configured;

[0067] Figure 5E Depicted with Figure 5D The example online graph corresponding to the offline graph;

[0068] Fig. 5F depicts a sample properties dialog box for a module;

[0069] Figure 5G depicts a sample properties dialog box for a block of an offline module, in which the properties are relevant to both offline and online operation;

[0070] Fig. 6A depicts a block diagram of an example analytical query system;

[0071] Figure 6B A block diagram depicting an example analysis configuration using standardized queries;

[0072] Figure 6C depicts an example standardized query;

[0073] Fig.6D a flow chart depicting an example standardized query method;

[0074] Fig. 6E a flow chart depicting an example standardized query method;

[0075] Fig. 7A A graph depicting example process flow measurements of a flare system of a refinery during a time interval;

[0076] Figure 7B Depicts that during another time interval Fig. 7A Figure 1. Example process flow measurement in Figure 2.

[0077] Figure 7C a diagram depicting example process flow data for a refinery, wherein the refinery includes flare events in the data;

[0078] Fig.7D Depicts the effect of applying the rolling FFT to Figure 7C A graph of time series data determined by process flow data in the

[0079] Fig. 7E Depicts the use of PCA to analyze Fig.7D Plot of the results for frequency domain data near the flare event;

[0080] Figure 7F Depicts the use of PCA to analyze Fig.7D A plot of the results for frequency domain data near another flaring event in ; and

[0081] Figure 7G A flow chart of an example method for providing early fault detection in a process plant is depicted. DETAILED DESCRIPTION

[0082] Disclosed herein are techniques, systems, devices, components, and methods for distributed industrial performance monitoring and analysis. In summary, the novel performance monitoring and analysis techniques provide knowledge discovery and actionable knowledge about an industrial process plant, process control environment, and / or process control system that operates to control one or more industrial processes in real time. Typically, the industrial processes performed by such process plants or control systems are controlled in the process plants or control systems to manufacture, refine, transform, generate, or produce physical materials or products. Examples of such process plants or control systems include refineries, paper mills, chemical manufacturing, pharmaceuticals, food processing and distribution, and the like.

[0083] The most important concerns in any process control system, plant, or environment are its safety, reliability, and economic efficiency. Safe operation is particularly important for any process control system or plant because uncontrolled processes, malfunctions, failures, and / or preventable human errors may result in explosions, fires, releases of hazardous chemicals, damage to the environment, loss of equipment, and / or loss of human life. The reliability of equipment and process operation is important to maintaining and / or improving the economic efficiency and profitability of the plant. In addition, by adjusting the operation of the plant to improve performance, the economic efficiency and profitability of the plant can be improved.

[0084] Failures that occur in a process control system may affect its safety, reliability, and / or economic efficiency. Failures typically occur in a process control system when events combine to create a situation that the process control system is not designed to handle, such as unknown changes in feedstock composition, equipment degradation, equipment failure, and abnormal (or erroneous) user operation actions. Other examples of failures include unplanned equipment shutdowns, releases of chemicals to the atmosphere, lift-off of pressure relief valves, temperature excursions of equipment, and performance degradation. Of course, failures are not limited to systemic or large-scale events; a failure may be any abnormal event or combination of events that has or may cause economic, safety, and / or environmental impacts.

[0085] Typically, when a fault is detected (e.g., automatically by a process control system), an alarm is generated at an operator interface. The operator can then attempt to diagnose the root cause of the fault and take corrective action. Therefore, some important factors in managing faults include early fault detection and reduction of false alarms, which may include, for example, timely and reliable fault detection, diagnosis of the root cause of the fault, and execution of corrective action that returns the instrument, controller, process, and / or equipment that is the source of the fault to normal operation.

[0086] Known data monitoring and analysis tools attempt to keep process plants within normal operating zones and provide a first line of defense against the occurrence of failures. However, such tools typically focus on a single loop or very limited scope within a process plant. They cannot address all (or even a large portion) of a typical modern process control plant, where thousands of process variables are observed at very fast rates. Furthermore, known data monitoring and analysis tools cannot address unusual events, such as degradation of equipment performance, removal of field equipment, or large changes in operating conditions caused by circumstances outside the immediate, limited scope of each tool.

[0087] On the other hand, the novel distributed industrial process performance monitoring and analysis technology, system, device, component, and method disclosed herein can address (e.g., monitor and / or analyze) the monitoring and analysis of industrial processes of any size range, from the entire process plant down to a single loop or even a single device. In fact, in some configurations, the novel technology disclosed herein can simultaneously address multiple process plants (e.g., multiple refineries owned and operated by a single company or even different companies, if data is available). In general, the novel performance monitoring and analysis technology disclosed herein discovers and provides knowledge of early detection of indications and / or advance warning of possible failures that may occur in process plants and control systems, thereby allowing sufficient time to take normative or corrective actions to prevent failures from occurring. In some cases, the novel technology disclosed herein also discovers and provides normative actionable knowledge to prevent possible failures from occurring and / or limit the impact of their occurrence. In addition, the novel technology disclosed herein can discover or provide knowledge indicating possible improvements in plant efficiency, as well as discover or provide actionable knowledge to achieve efficiency improvements.

[0088] Example process control system with distributed industrial process monitoring and analytics

[0089] As discussed above, a process plant, process control system, or process control environment that includes or supports at least some of the novel distributed industrial process monitoring and analysis techniques described herein operates to control one or more industrial processes in real time. Therefore, a process plant or control system may include one or more wired or wireless process control devices, components, or elements therein that perform physical functions (e.g., opening or closing valves, measuring temperature, pressure, and / or other process and / or environmental parameters, etc.) to control processes performed within a process plant or system. A process plant or process control system may include, for example, one or more wired communication networks and / or one or more wireless communication networks. A process plant or control system may include a centralized database, such as a continuous, batch, and other types of historical databases.

[0090] For example, Figure 1 is a detailed block diagram of an example process plant or process control environment 5 that includes or supports any or all of the distributed industrial process monitoring and analysis technologies described herein. The process control system 5 includes multiple distributed data engines of a distributed industrial process monitoring and analysis system that is included in, integrated with, or supported by the process control plant or environment 5 (a more complete description of the distributed industrial process monitoring and analysis system is provided in subsequent sections). Each of the distributed data engines of the industrial process monitoring and analysis system is directly or indirectly connected (e.g., physically connected or wirelessly connected) to some component or portion of the process plant 5. For example, the distributed data engine may be embedded in or manufactured into a specific device or node of the process plant 5 to form a single entity, the data engine may be attached or coupled to a specific device or node of the plant 5, or the data engine may be attached or coupled to a conventional communication link of the plant 5. In Figure 1 In the figure, the circled “DDE” represents the corresponding example distributed data engine.

[0091] As previously discussed, a distributed data engine can be embedded in a process control device whose main function is to automatically generate and / or receive process control data to perform functions to control a process in real time in a process plant environment 5. For example, a corresponding data engine can be embedded or manufactured into a process controller, a field device, and an I / O device. In the process plant environment 5, a process controller receives a signal indicating a process measurement result obtained by a field device, processes the information to implement a control routine, and generates a control signal that is sent to other field devices via a conventional wired or wireless communication link or network to control the operation of a process in the plant 5. Typically, at least one field device performs a physical function (e.g., opening or closing a valve, increasing or decreasing a temperature, etc.) to control the operation of a process, and some types of field devices communicate with the controller by using an I / O device. Process controllers, field devices, and I / O devices can be wired or wireless, and any number and combination of wired and wireless process controllers, field devices, and I / O devices can be included in a process plant environment or system 5, and can each include a corresponding distributed data engine.

[0092] For example, Figure 1 A process controller 11 is shown that is communicatively connected to wired field devices 15-22 via input / output cards 26 and 28, and to wireless field devices 40-46 via a wireless gateway 35 and a process control data highway or backbone 10 (which may include one or more wired and / or wireless communication links and may be implemented using any desired or appropriate or communication protocols (such as, for example, an Ethernet protocol). In one embodiment, the controller 11 is communicatively connected to the wireless gateway 35 using one or more communication networks other than the backbone 10, such as by using any number of other wired or wireless communication links that support one or more communication protocols, such as, for example, Wi-Fi or other IEEE 802.11 compliant wireless local area network protocols, mobile communication protocols (e.g., WiMAX, LTE, or other ITU-R compliant protocols), Profibus, Fieldbus, etc. Backbone 10 and these other communication networks are examples of "conventional" process control communication networks, as referred to herein.

[0093] Controller 11 (for example, it can be DeltaV sold by Emerson Process Management TMThe controller 11 may be operable to implement a batch process or a continuous process using at least some of the field devices 15-22 and 40-46. In one embodiment, in addition to being communicatively connected to the process control data highway 10, the controller 11 also uses communication with, for example, standard 4-20 mA devices, I / O 26, 28, and / or any smart communication protocol (e.g., Fieldbus protocol, protocol, Any desired hardware and software associated with the IEEE 802.11 protocol, etc., to communicatively connect to at least some of the field devices 15-22 and 40-46. Figure 1 In the embodiment, the controller 11, the field devices 15-22 and the I / O cards 26, 28 are wired devices, and the field devices 40-46 are wireless field devices. Of course, the wired field devices 15-22 and the wireless field devices 40-46 can be any other desired standard or protocol, such as any wired or wireless protocol, including any standard or protocol developed in the future.

[0094] Figure 1 The process controller 11 includes a processor 30 that implements or oversees one or more process control routines 38 (e.g., the routines are stored in a memory 32). The processor 30 is configured to communicate with the field devices 15-22 and 40-46 and with other nodes communicatively connected to the controller 11. It should be noted that portions of any control routine or module described herein (including quality prediction and fault detection modules or function blocks) may be implemented or executed by a different controller or other device (if so desired). Likewise, the control routine or module 38 described herein to be implemented within the process control system 5 may take any form, including software, hardware, firmware, etc. The control routine may be implemented in any desired software format, such as using object-oriented programming, ladder logic, sequential function charts, function block diagrams, or using any other software programming language or design paradigm. The control program 38 may be stored in any desired type of memory 32, such as a random access memory (RAM) or a read-only memory (ROM). Likewise, the control program 38 may be hard-coded into, for example, one or more EPROMs, EEPROMs, application specific integrated circuits (ASICs), or any other hardware or firmware elements. Thus, the controller 11 may be configured to implement a control strategy or control routine in any desired manner.

[0095] In some embodiments, the controller 11 implements the control strategy using what are commonly referred to as function blocks, where each function block is an object or other portion (e.g., a subroutine) of an overall control routine and operates in conjunction (via a communication method referred to as a link) with other function blocks to implement a process control loop within the process control system 5. A control-based function block typically performs one of an input function, such as a function associated with a transmitter, sensor, or other process parameter measurement device, a control function, such as a function associated with a control routine that performs PID, MPC, fuzzy logic, etc. control, or an output function to perform a physical function in the process control system 10. Of course, there are hybrid and other types of function blocks. Function blocks can be stored in and executed by the controller 11, which is typically where these function blocks are used for, or associated with, standard 4-20mA devices and certain types of smart field devices (e.g., device), or can be stored in and implemented by the field device itself, which can be achieved by using In the case of Fieldbus devices, the controller 11 may include one or more control routines 38 that may implement one or more control loops and may be executed by executing one or more of the function blocks.

[0096] The wired field devices 15-22 may be any type of device, such as sensors, valves, transmitters, positioners, etc., and the I / Os 26 and 28 may be any type of I / O devices that conform to any desired communication or controller protocol. Figure 1 In the embodiment, the field devices 15-18 are standard 4-20 mA devices or devices that communicate with the I / O card 26 via analog lines or combined analog and digital lines. equipment, and field equipment 19-22 is used The Fieldbus communication protocol communicates with an intelligent device (such as an I / O card 28) via a digital bus. Fieldbus field devices). However, in some embodiments, at least some of the wired field devices 15, 16, and 18-21 and / or at least some of the big data I / O cards 26, 28 additionally or alternatively communicate with the controller 11 (and / or other big data nodes) using the process control data highway 10 and / or by using other suitable control system protocols (e.g., Profibus, DeviceNet, Foundation Fieldbus, ControlNet, Modbus, HART, etc.).

[0097] like Figure 1As shown in FIG, each of the controller 11, I / O cards 26 and 28, and wired field devices 15-16, 18-21 includes a corresponding embedded distributed data engine as indicated by the circled "DDE", which is connected via one or more data analysis communication channels and / or networks (in Figure 1 ) communicates with other distributed data engines.

[0098] exist Figure 1 In the embodiment, the wireless field devices 40-46 communicate via a conventional wireless process control communication network 70 using a method such as The wireless field devices 40-46 may communicate directly with one or more other devices or nodes in the process control data analysis communication network 112 that are also configured to communicate wirelessly (using, for example, the wireless protocol or another wireless protocol). To communicate with one or more other nodes that are not configured to communicate wirelessly, the wireless field devices 40-46 may utilize a wireless gateway 35 connected to the process control data highway 10 or another conventional process control communication network.

[0099] The wireless gateway 35 may provide access to the various wireless devices 40-58 of the wireless communication network 70. Specifically, the wireless gateway 35 provides a communicative coupling between the wireless devices 40-58, the wired devices 11-28, and / or other nodes or devices of the process control plant 5. For example, the wireless gateway 35 may provide a communicative coupling by using the process control data highway 10 and / or by using one or more other conventional communication networks of the process plant 5.

[0100] Similar to the wired field devices 15-22, the wireless field devices 40-46 of the wireless network 70 can perform physical control functions within the process plant 5, such as opening or closing a valve or obtaining a measurement of a process parameter. However, the wireless field devices 40-46 are configured to communicate using the wireless protocol of the network 70. Therefore, the wireless field devices 40-46, the wireless gateway 35, and the other wireless nodes 52-58 of the wireless network 70 are producers and consumers of wireless communication packets.

[0101] In some scenarios, the wireless network 70 may include non-wireless devices. For example, Figure 1 The field device 48 in the example may be a legacy 4-20mA device, and the field device 50 may be a conventional wired To communicate within the network 70, the field devices 48 and 50 may be connected to the wireless communication network 70 via a wireless adapter or a wireless adapter 52a, 52b therein. The wireless adapters 52a, 52b may support other communication protocols, such as Fieldbus, PROFIBUS, DeviceNet, etc. In addition, the wireless network 70 may include one or more network access points 55a, 55b, which may be separate physical devices that communicate with the wireless gateway 35 by wire, or may be provided as an integrated device with the wireless gateway 35. The wireless network 70 may also include one or more routers 58 for forwarding packets from one wireless device to another wireless device within the wireless communication network 70. The wireless devices 40-46 and 52-58 may communicate with each other and with the wireless gateway 35 through the wireless links 60 of the wireless communication network 70 and / or via the process control data highway 10.

[0102] like Figure 1 As shown in FIG, each of the adapter 52a, access point 55a, and router 58 includes a corresponding embedded distributed data engine as indicated by the circled "DDE", which is connected via one or more data analysis communication channels and / or networks (in Figure 1 ) communicates with other distributed data engines.

[0103] In some embodiments, the process control plant 5 includes one or more other wireless access points 72 that communicate using other wireless protocols, such as Wi-Fi or other IEEE 802.11 compliant wireless local area network protocols, mobile communication protocols (e.g., WiMAX (Worldwide Interoperability for Microwave Access), LTE (Long Term Evolution), or other ITU-R (International Telecommunication Union Radiocommunication Sector) compatible protocols), shortwave radio communications (e.g., near field communications (NFC) and Bluetooth), or other wireless communication protocols. Typically, such wireless access points 72 allow handheld or other portable computing devices (e.g., user interface devices 73) to communicate on a corresponding conventional wireless process communication network that is different from the wireless network 70 and supports a different wireless protocol than the wireless network 70. For example, the wireless or portable user interface device 73 can be a mobile workstation or diagnostic test device used by an operator within the process plant 5. In some scenarios, in addition to the portable computing device, one or more process control devices (e.g., controller 11, field devices 15-22, or wireless devices 35, 40-58) also communicate using the wireless protocol supported by the access point 72.

[0104] In some embodiments, the process control system 5 includes one or more gateways 75, 78 to systems external to the instant process control system 5. Typically, such systems are consumers or suppliers of information generated or operated by the process control system 5. For example, the process control plant 5 may include a gateway node 75 to communicatively connect the instant process plant 5 with another process plant. Additionally or alternatively, the process control plant 5 may include a gateway node 78 to communicatively connect the instant process plant 5 with external public or private systems, such as laboratory systems (e.g., laboratory information management systems or LIMS), operator patrol databases, material handling systems, maintenance management systems, product inventory control systems, production scheduling systems, weather data systems, shipping and handling systems, packaging systems, the Internet, another provider's process control system, or other external systems.

[0105] like Figure 1 As shown, each of the access point 72, the user interface device 73 and the gateway 75 includes a corresponding embedded distributed data engine as indicated by the circled "DDE", which is connected via one or more data analysis communication channels and / or networks (in Figure 1 ) communicates with other distributed data engines.

[0106] It should be noted that although Figure 1 Only a single controller 11 included in the process plant 5 is shown with a limited number of field devices 15-22 and 40-46, wireless gateway 35, wireless adapter 52, access point 55, router 58, and wireless process communication network 70, but this is merely an illustrative and non-limiting embodiment. Any number of controllers 11 can be included in the process control plant or system 5, and any number of controllers 11 can communicate with any number of wired or wireless devices and networks 15-22, 40-46, 35, 52, 55, 58 and 70 to control the process in the plant 5.

[0107] Example Distributed Industrial Process Performance Monitoring / Analysis System Architecture

[0108] Figure 2A A block diagram of an example system 100 for distributed industrial process performance monitoring / services, also referred to interchangeably herein as a data analysis system (DAS), is included. The DAS 100 may be combined with, for example, Figure 1 5 in the process plant 5 to operate, and for ease of explanation in this article is so discussed. However, it is to be understood that at least a portion of the DAS 100 can be combined with other process plants and / or process control systems other than the process plant 5 to operate.

[0109] In general, the DAS 100 supports localized performance monitoring and / or analysis, as well as large-scale (e.g., system-wide and / or across multiple devices or nodes of a process plant 5) performance monitoring, data mining, and data analysis for a process plant environment. To this end, the system 100 includes a plurality of distributed data engines (DDEs) that Figure 2A 102a-102e and in Figure 2B Examples of DDEs are indicated in the drawings with reference numerals 102f-102h. As used herein, reference numeral "102x" refers to any one or more of DDEs 102a-102h. Figure 2A At least some of the distributed data engines shown in Figure 1 For example, Figure 2A The data engine 102a is included in Figure 1 The data engine in the wireless gateway 35, and Figure 2A The data engine 102b is embedded in Figure 1 In addition, the system 100 includes a data engine in the controller 11. Figure 1 102c is connected to the data highway 10, the distributed data engine 102d is embedded in the centralized big data device 108 of the process plant 5, and the distributed data engine 102e is embedded in the big data cloud node 110, wherein the big data cloud node 110 can serve the data analysis needs of the process control plant 5 (and in some configurations, other process control plants). Of course, the system 100 is not limited to five data engines 102a-102e or eight data engines 102a-102h, but can also include any number of distributed data engines, at least some of which are embedded in or manufactured to their corresponding data sources (e.g., corresponding process control devices of the process plant 5) and / or at least some of which are otherwise connected to some other data source (e.g., component, part, etc.) of the process plant 5.

[0110] As mentioned above, typically the distributed data engine does not communicate using any of the conventional process control communication networks (e.g., Figure 1The distributed data engines 102x may communicate with other distributed data engines using a conventional process control communication network, a wireless network 70, a wired connection between an I / O card 28 and devices 19-22, etc., but in some configurations, some distributed data engines 102x may transmit at least some information to other data engines using a conventional process control communication network. However, in general, the data engines 102x communicate with other data engines 102x using one or more data analysis communication networks 212 that are separate and distinct from the conventional process control network. The analytical data is streamed between the distributed data engines or nodes of the network 112, for example, by using an analytical streaming service, a streaming and / or queuing protocol, and / or by using a messaging broker or system 115 that supports streaming, such as a custom streaming source, Flume, HDFS, ZeroMQ, Kafka, Microsoft Message Bus, MQTT, AMQP, RabbitMQ, etc., a specially customized historical object communication protocol such as described in the aforementioned U.S. application Ser. No. 14 / 506,863 entitled “STREAMINGDATA FOR ANALYTICS IN PROCESS CONTROL SYSTEMS,” or another suitable communication protocol. The multiple branches of the data analysis communication network 112 are in Figure 2A 102x, but for clarity, the network 112 is not fully depicted. Thus, in one embodiment, at least a portion of the data analysis communication network 112 may be, in a sense, an overlay network on top of a conventional process control communication network within the plant 5. For example, at least some of the physical devices comprising the DDE 102x and the data analysis network 112 may be located within the premises of the process plant 5, and in some cases, may be located within the equipment of the process plant 5.

[0111] In another embodiment, at least a portion of the data analysis communication network 112 may be implemented alongside or substantially parallel to a conventional process control communication network, such as Figure 2B As shown in Figure 2B , the process plant 5 includes various process control devices or components that are communicatively connected to a conventional process control communication network, for example, to help control one or more processes within the plant 5. Three of such process control devices / components each have a corresponding DDE 102f, 102g, and 102h embedded therein and associated therewith, and each of the DDEs 102f, 102g, and 102h is communicatively connected to a data analysis network 112. However, most of the equipment supporting and / or including the data analysis network 112 is not located among the equipment of the process plant 5, but instead, may be remotely located at an enterprise data center.

[0112] In another embodiment, at least a portion of the data analysis communication network 112 may be implemented as a logical network within the process plant 5. In this embodiment, for example, both process control data and analytical data may be transmitted over the same physical communication link that logically has the appearance of separate links, such as one conventional process communication link and one data analysis communication link.

[0113] Regardless of the implementation of the data analysis network 112, the data analysis network 112 intersects with a conventional process control communication network at a device or node within the process control system 5, and the device or node transmits information to other devices or nodes within the process control system 5 via the conventional process control communication network, and a distributed data engine (e.g., data engines 102a, 102b, 102f, 102g, 102h) is embedded therein, and / or transmits information to other devices or nodes within the process control system 5 by means of a distributed data engine connected to the conventional process control communication network so as to have a window for transmitting data thereon.

[0114] The data analysis network 112 may use any desired communication technology and / or communication protocol. At least some portions of the data analysis network 112 may use wired technology, and at least some portions of the data analysis network 112 may use wireless technology. However, in general, the data analysis network 112 may support data packet transmission protocols and / or technologies, such as IP or other asynchronous data packet protocols over Ethernet.

[0115] At a higher level or layer, the data analysis network 112 may use a protocol with streaming capabilities, a message broker that handles real-time data feeds, and / or a messaging system that handles real-time data feeds 115, such as Apache Kafka. Figure 2A As shown, the streaming capability 115 provided by the data analysis network 112 allows the distributed performance monitoring / analysis system or DAS 100 to locally bind various analytical services and provide various analytical services close to the data source (e.g., close to or located at the equipment or node of the process plant 5 in which the distributed data engine 102x is embedded, such as Figure 1At the same time, the streaming capability 115 of the system 100 also allows the system 100 to provide larger-scale predictions and optimizations because only data generated by specific sources (which are necessary to support broader or higher-level data analysis) need to be transmitted to the receiving data engine. For example, if the data engine 102d is performing specific data analysis only on specific data generated by each of the controllers of the process plant 5 and captured within one hour after a specific configuration change is instantiated at each controller, the data engine 102b embedded at the controller 11 only streams the required data to the engine 102d (for example, during the one hour after the specific configuration change is instantiated, only the output data generated by the controller 11 is streamed to the data engine 102d, but other output data generated by the controller 11 is not streamed).

[0116] As shown in FIG2 , portions of a distributed performance monitoring / analysis system or DAS 100 are locally located within a process control environment or plant 5. For example, distributed data engines 102a, 102b, 102c, and 102d are located within the premises of the process plant 5. Figure 2A As shown in , other parts of the system 100 are remotely set. For example, the data engine 102e is located in the cloud 110. Other data engines 102x can be set at one or more remote locations (not shown), such as at a server bank that serves multiple process plants or process control systems. Of course, in some configurations, the system 100 can omit the data engine that is set locally, or can omit the data engine that is set remotely. That is, the system 100 can provide performance monitoring and analysis (e.g., via one or more distributed data engines) entirely within the site of the object process control environment 5 (e.g., locally), entirely outside the site of the object process control environment 5 (e.g., remotely), or by using a combination of distributed data engines within and outside the site (e.g., both locally and remotely).

[0117] Example Types of Performance Monitoring and Analysis for Industrial Control Systems

[0118] Typically, performance monitoring and analysis of industrial control systems includes collecting data generated by the subject control system (e.g., data generated in real time while the system is operating to control one or more processes), and performing one or more analytical functions or operations on at least some of the collected data to determine knowledge about how the control system is performing and, in some cases, to determine actions that can be taken to improve the performance of the system. Data analysis for industrial process control systems can be considered to fall into three general categories: descriptive analysis, predictive analysis, and prescriptive analysis. These categories of analysis are generally discussed below.

[0119] Descriptive analytics allows users to discover what happened, when it happened, how often it happened, and what problems were caused by what happened within a process control system or plant. Typically, descriptive analytics are performed on data obtained from monitoring a process system or plant (e.g., a posteriori), and can use techniques such as basic calculations, scaling, and standard statistics.

[0120] Prescriptive analytics allows users to optimize operations within a process control system or plant. For example, prescriptive analytics allows users to answer questions such as: What is the best answer? What is the best outcome given a given uncertainty? What are significantly different and better options? Predictive analytics can identify, monitor, and control important quality variables or important indicators of process operations in industrial process control plants and systems. In addition, predictive analytics can identify: what will happen to important quality variables or important indicators of process operations given a set of future inputs or causal conditions. The predicted values ​​can then be used by prescriptive analytics to generate prescriptive actions. Typically, prescriptive analytics uses techniques such as constraint-based optimization and multi-objective optimization, however, known data monitoring and analysis tools are preliminary and severely limited in their scope.

[0121] For example, using known data monitoring and analysis tools, users and operators can optimize a single piece of equipment or unit of a plant by using a constraint-based optimization tool that operates on data (e.g., a posteriori) obtained from monitoring the single piece of equipment or unit. However, because a process control system or plant includes multiple pieces of equipment and process units, the overall process may still be far from optimal due to process interactions between multiple units. Multi-objective optimization techniques for interacting units or coordinated optimization across a portion of a process control system are available in known data and analysis tools (e.g., first principles-based modeling), but due to increased process complexity, such coordinated optimization techniques are difficult and often take too long to perform (if they are even possible) to be useful. For example, known multi-objective optimization tools operate on data (e.g., a posteriori) obtained from monitoring multiple pieces of equipment or units to identify an optimal operating point and determine a trajectory for maneuvering the current operating point to the optimal point. However, each cycle of data collection and calculations thereon may take so long that by the time a prescriptive action is identified, the process has moved so far away from its operation that the identified prescriptive action is no longer optimal, or may even be ineffective, counterproductive, and / or dangerous. Furthermore, when a user attempts to reduce or scale down the size and scope of the calculations (and therefore the time required for the calculations) by limiting the number of variables input into a multi-objective optimization tool, the user makes a human judgment as to which variables are selected as inputs, which not only limits the scope, but may also be incorrect, and may therefore produce misleading or incorrect results.

[0122] In addition, known data monitoring and analysis tools are generally unable to provide the identification and values ​​of important quality variables on demand (e.g., due to limitations of available measurement technology) and are unable to provide relevant results in a timely manner. For example, currently used techniques for predictive analysis of process control systems include offline techniques (e.g., in a laboratory) or online techniques (e.g., by an analyzer), both of which have their respective disadvantages. Offline determination of important quality variables is undesirable because the significant delays caused in laboratory testing will render any output suboptimal or even invalid for the current process conditions (e.g., the measured signal cannot be used as a feedback signal). Using an online analyzer to determine important quality variables is also less desirable because known online analyzers are problematic, expensive, and require frequent, costly maintenance. Such limitations may have serious implications for the quality of the product, the generation of waste, and the safety of operations.

[0123] In addition, for large-scale monitoring situations, conventional, centralized performance monitoring solutions have serious limitations. Appropriate performance monitoring systems should have fault tolerance, operational reliability, and economic benefits, all of which are compromised when centralized performance monitoring solutions are applied to large-scale monitoring situations. Specifically, centralized monitors take care of the faults of all units of the process at the same time. Once a fault is found in a unit, the centralized monitor becomes limited in the ability to detect other faults occurring in the same time period from other units, because the centralized monitor uses all measured variables in its calculations, and when a variable is unavailable or a communication channel is blocked, this monitoring system may stop running. In addition, the real-time capability of the centralized monitor is limited by the minimum sampling rate of the variable, which reduces the efficiency of the monitoring system. In addition, different variables in the factory can have very different dynamic scales (even in the same unit), and a single monitoring solution is usually not applied to all variables of the entire process or unit, especially, a single monitoring solution is suboptimal for the situation when variables affect each other (e.g., across interactive process units). Furthermore, when there is geographic distribution in a process control system (e.g., long distances between various process units, such as in an oil pipeline), each unit is typically equipped with a separate performance monitor, thereby providing local (rather than global) performance monitoring, as well as transmission delays, data loss, and battery limitations.

[0124] Unlike the preliminary, univariate, and / or centralized predictive monitoring and analysis techniques currently in use, and unlike the a posteriori nature of descriptive and prescriptive analysis, the novel distributed performance monitoring and analysis systems, methods, devices, components, and techniques for industrial control systems and plants described herein allow users to monitor what is currently happening at any point in time in a process control system or plant, and to predict what may happen next or subsequently based on current data. The novel techniques disclosed herein allow users to answer questions such as: "What is happening now," "What will happen next," "What will happen if these trends continue?" with little or no user or human bias about the characteristics of the process data.

[0125] The novel technology described herein for distributed performance monitoring and analysis of industrial control systems generally includes a platform (e.g., Figure 2A 100) and applications operating on or in conjunction with the platform. The platform uses a data-driven approach augmented with device and process knowledge to support, for example, estimation, monitoring, and data mining of a process control system or plant (e.g., process control system 5) before, during, and after the process control system or plant is operating to control one or more processes. In some implementations, the platform can support multiple process control systems or plants.

[0126] Performance monitoring / analytics applications operating on or in conjunction with the platform may include, for example, inferred measurement, equipment monitoring, fault detection, process prediction, causality, other monitoring applications, and / or other analytical applications. Techniques that may be used by the applications include data mining, optimization, predictive modeling, machine learning, simulation, distributed state estimation, etc. Thus, the performance monitoring / analytics applications may be used to monitor, predict, and diagnose performance degradation and failures of any number of any portion of the process control system 5, including in aspects such as instrumentation, equipment, control, user interaction, and process.

[0127] Thus, the distributed industrial performance monitoring and analysis techniques described herein may include an inference mechanism that provides continuous online estimates of important process variables based on readily available process measurements. To maintain the data model over an extended period of time, the system may also support capabilities for monitoring, tuning, and enhancing the data model. In the simplest case, methods that may be used include detuning the model (e.g., increasing the normal operating range to a prediction of + / - 3s). More complex examples include model switching and model adaptation.

[0128] In fact, as part of a research and prototype testing program, the inventors used the technology described herein to establish a prototype industrial process performance data monitoring and data analysis framework to solve the soft sensor development problem in the presence of nonlinear, non-Gaussian distributions, regardless of data sampling, process constraints, and / or other factors. In these prototypes and studies, monitoring and analysis of data generated by multiple soft sensors for special chemical processes, batch processes, and hydrocarbon processes are performed, and the resulting knowledge can be used to improve the obtained process. Our industrial partners have reported significant economic and environmental benefits. Examples of our research and prototypes are described in subsequent chapters.

[0129] Return now Figure 2A , the distributed industrial performance monitoring and analysis system or DAS 100 is provided for use in supporting process plant environments (e.g., Figure 1The system 100 can support the tools, configurations and interfaces required for large-scale data mining and data analysis of process plants 5) while supporting localized performance monitoring. For example, the system 100 may include: a user interface application (e.g., a data analysis studio) for configuring and developing data analysis models, a runtime engine for executing models (which can operate on real-time data generated by the process control system in whole or in part), and the same user interface application or another user interface application (e.g., a runtime dashboard) for displaying analysis results. The system 100 can operate on or support multiple types of data sources, including real-time values ​​(e.g., real-time continuous values) as previously mentioned, event collection, batch data collection, operator patrol data, LIMS data, external data such as supply chain and / or weather data, and any other type of data associated with the process control system, including both structured and unstructured data. The system 100 can provide a set of "out-of-the-box" standard analyses, such as descriptive statistics, histograms, correlation graphs, etc. In addition, the system 100 can provide a structured environment for users to create desired analyses and view both source data and n-order data generated by applying multiple different data analyses to identify implicit relationships within various data sets of a process control system, and / or predict product capabilities, quality, and other characteristics. In general, the system 100 can provide knowledge discovery and actionable knowledge about a process control system (e.g., to improve or optimize the performance of the process control system, correct and / or predict failures, increase reliability, improve safety, increase economic benefits, etc.), which can be represented as a data model.

[0130] like Figure 2A As shown in , the system 100 can be highly distributed, for example, multiple distributed data engines 102x can be included. The network 112 of embedded data engines 102x can interconnect multiple (e.g., hundreds, thousands, or even millions) sensors and sources of process control system information. As previously mentioned, the data engines 102x are clustered near, at, or within the devices and nodes of the process control system (e.g., manufacturing equipment, process control equipment, communication nodes, material handling systems, laboratory systems, users of the factory, and even the process itself). Therefore, the embedded nature of the distributed industrial performance and analysis system 100 is tightly coupled to the physical process control plant. However, embedding and integrating the data engine 102x into the manufacturing structure of the process control system equipment and nodes may make the data engine 102 almost invisible to the end user. Typically, the data engine 102x is small, wirelessly connected to the network 112, bandwidth-limited, and operates under physical constraints such as limited energy and the need for sufficient heat dissipation because it may be embedded in process control devices such as temperature sensors or other types of sensors.

[0131] As previously mentioned, the distributed data engines 102x are interconnected with other data engines 102x using streaming protocols and / or queuing protocols over the network 112. Each distributed data engine 102x can support one or more data monitoring and / or data analysis applications. The sheer number of connected clusters of applications requires the use of statistically correct (rather than deterministic) algorithms for resource accounting, fault detection and correction, system management, etc., and each cluster can host functions of interest to localized requirements.

[0132] Thus, the distributed industrial performance monitoring and analysis system 100 can increase the safety, efficiency, and productivity of process control plants. For example, the system 100 can precisely control process parameters, thereby reducing the overall cost of process manufacturing. In addition, integrating the system 100 into the process control environment 5 can achieve better product quality and less scrap through strict process control and real-time quality assurance; more flexible, rapidly configurable production lines due to programmable subsystems; system health monitoring, which leads to more efficient, preventive, and low-cost maintenance; a safer work environment due to better monitoring and control; and better component assembly techniques, such as through the use of smart RFID tags, to name just a few of the countless benefits.

[0133] In addition, the distributed industrial performance monitoring and analysis system 100 can improve the human-machine interaction between the user and the process control system 5 to the extent that a real-time, human-plus-machine control loop is generated within the process plant 5. For example, the improved human-machine interaction can improve quality and productivity by ensuring that there are no operator / maintenance / reliability errors, and by reducing accidents. In addition, the availability, reliability and continuous quality of service of the process control plant 5 can be achieved through the advanced control, redundancy, intelligent alarming, self-diagnosis and maintenance provided by the system 100.

[0134] Example Industrial Performance Data Monitoring / Data Analysis Engine

[0135] Turning now to the distributed industrial performance distributed data monitoring and analysis engine 102x, in general, the distributed data engine 102x can be a node in the data analysis communication network 112 that collects, observes, acquires, receives, processes, stores, caches, and / or analyzes all or most process control-related data (e.g., big data) generated or otherwise observed by one or more data sources (e.g., by devices or components in which the data engine 102x is embedded or by components coupled or attached to the data engine 102x). In some cases, the distributed data engine 102x can generate additional data (e.g., the results of the analysis it performs), and / or can send or forward selected data to other nodes of the data analysis network 112. The terms "process control big data", "process big data", and "big data" as used interchangeably herein generally refer to all (or substantially all) data generated, received, and / or observed by devices and / or components included in and associated with a process control system or plant (e.g., process control system or plant 5), in particular, all (or substantially all) data generated, received, and / or observed when the process control system or plant is executing in real time to control one or more processes. In one embodiment, all data (including all process data and all analytical data) generated, created, received at the device, or otherwise observed by all devices included in and associated with the process plant 5 are collected and stored as big data within the data analysis communication network 112. In process plants and process control environments, such collection and analysis of big data is important for improving safety, reliability, and economic efficiency because the dimension of time and the presence or omission of specific data points may be critical. For example, if a specific data value is not transmitted to a receiving component of the process plant within a certain time interval, the process may become uncontrolled, which may result in fire, explosion, loss of equipment, and / or loss of human life. Furthermore, multiple and / or complex time-based relationships between different components, entities, and / or processes operating within and / or outside of a process plant may impact operational efficiency, product quality, and / or plant safety.

[0136] The process control big data generated, collected, observed, acquired, received, stored, cached, processed, analyzed, and / or forwarded by the distributed data engines 102x may include data that has been used directly to control processes within the plant 5 or data generated in accordance with controlling processes within the plant 5, for example, first order real-time and configuration data generated or used by, for example, controllers, input / output (I / O) devices, and field devices. Additionally or alternatively, the data engines 102x may generate, collect, observe, analyze, store, receive, acquire, cache, and / or forward data related to the transmission and routing of such first order process control data and other data within the process plant 5, for example, data related to network control of the data analysis communication network 112 and / or other communication networks in the plant 5, data indicating bandwidth, network access attempts, diagnostic data, etc. In addition, some of the data engines 102x may generate, collect, observe, store, cache, acquire, receive, or forward data indicating results, learning, and / or information that has been learned within the process control data analysis communication network 112 by processing and / or analyzing the process control big data that it has collected. Typically, such analysis results, learnings, and / or learned information are generated based on analysis performed by one or more data engines 102x.

[0137] Thus, the distributed data engine (e.g., DDE 102x) is interchangeably referred to herein as a "big data appliance," "big data appliance node," or "device node." In most cases, the distributed data engine 102x of the big data appliance node includes multi-core hardware (e.g., a multi-core processor) for sending and receiving big data in real time (e.g., via streaming), and in some embodiments, for caching and / or storing real-time big data for subsequent streaming or other transmission over the process control data analysis communication network 112. Thus, the distributed data engine 102x also includes a memory (e.g., a high-density memory) for caching and / or storing big data. Examples of real-time data that can be sent, received, streamed, cached, collected, stored, acquired, received, cached, and / or otherwise observed by the data engine 102x can include process control data such as measurement data, configuration data, batch data, event data, and / or continuous data. For example, real-time data corresponding to configurations, batch recipes, set points, outputs, rates, control actions, diagnostics, alarms, events, and / or changes thereto can be collected. Other examples of real-time data may include process models, statistical information, status data, network, and plant management data, and analytical results. Descriptions of various types of example big data appliances and components thereof that may be used with any or all of the techniques described herein may be found in the aforementioned U.S. Patent Applications Nos. 13 / 784,041, 14 / 174,413, and 14 / 212,493, but it is understood that any or all of the techniques described herein may be used with other appropriate big data appliances.

[0138] Typically, the distributed data engine 102x usually operates on large data that has been generated or provided by one or more data sources within the process plant or system 5 and / or is otherwise associated with the real-time operation of the process plant or system 5. For example, the DDE 102x can collect and time-stamp data that is received at and / or generated by a device embedded with the DDE 102x, or that is received at and / or generated by a data source corresponding to the DDE 102x. The collected data can be stored (at least temporarily) in the local memory of the data engine 102x. In some cases, a dedicated historical object communication protocol (such as described in the aforementioned U.S. application No. 14 / 506,863 entitled "STREAMING DATA FORANALYTICS IN PROCESS CONTROL SYSTEMS") or another appropriate communication protocol or a messaging system such as Kafka can be used to transmit or stream at least some of the data to one or more other data engines 102x.

[0139] In some embodiments, one or more data engines 102x support large-scale data mining and data analysis on multi-dimensional data including real-time continuous values, event collection, batch data collection, operator tour data, and / or other data. The distributed data engine 102x can be configured to perform one or more data analyses on its locally collected data and / or data collected by other DDEs 102x. For example, the DDE 102x can include various tools for operating on structured data (e.g., time series and table data stored in memory, relational and / or non-relational databases, or streaming data) and unstructured data (e.g., PDFs). In addition, the DDE 102x can support any one or more desired target environments and execute corresponding target code therein (e.g., Java, C#, R scripts, Python scripts, Scripts, Statgraphics, etc.). The DDE 102x can execute learning algorithms (e.g., partial least squares regression, principal component analysis, etc.), classification techniques (e.g., random forests, pattern recognition, etc.), and / or other data analysis to generate results and / or useful information such as predicting product capabilities, quality, and / or other desired characteristics. The results of the local analysis can be stored in the local memory of the data engine 102x and can itself be regarded as additional big data. In addition, some data engines 102x can include interfaces for configuring and developing models, runtime engines for executing models, and dashboards for displaying results at user interfaces. For example, the distributed data engine 102x can be configured with analysis for runtime in a manner such as discussed in the aforementioned U.S. application No. 62 / 060,408 entitled "DATA PIPELINE FOR PROCESS CONTROL SYSTEM ANALYTICS" and / or as discussed in later chapters of the present disclosure. The displayed results can include standard descriptive statistics, histograms, correlation diagrams, and / or other data representations that can identify implicit relationships within various data sets.

[0140] In some cases, the distributed data engine 102x is embedded in, manufactured in, or directly coupled to a host data source (e.g., Figure 2A 102a, 102b, and 102c shown in FIG. 102), or otherwise reside with the host data source. In some cases, the distributed data engine 102x may be a separate big data node (e.g., Figure 2Ad and 102e shown in ). That is, in these cases, the data engine 102x is not embedded in or resident with a data source of the process control system or plant 5, but can observe data that has been generated by one or more data sources in other ways (for example, when a distributed data engine is coupled to a conventional process communication link, such as data engine 102c). Whether embedded or separate, the data engine 102x analyzes big data that has been locally generated and / or provided by one or more data sources to discover or learn knowledge. The learned knowledge can be stored at the data engine 102x, locally operated on by the data engine 102x, and / or provided or sent as big data to other data engines 102x, such as a receiving big data node. Additionally, the distributed data engine 102x can provide a portion of its known or stored big data to other data engines 102x and / or other nodes (e.g., local or remote user interface nodes) of the analysis network 112.

[0141] Figure 3 A simplified block diagram of an example distributed industrial process performance data monitoring and / or data analysis engine 150 is included, an instance of which may be included in Figure 2A The process control data analysis communication network 112 (eg, the distributed data engine 102x) is described in detail below. Figure 3, the example distributed data engine 150 includes a big data storage area 155 for caching, storing, and / or historizing big data, one or more big data device receivers 160, and one or more big data device request servers 165. Each of the big data device receivers 160 is configured to receive and / or observe data from one or more data sources 168. In one example, the big data device receiver 160 receives and / or observes data propagated on a conventional process control communication network via a network interface to a conventional process control communication network (e.g., data highway 10, Fieldbus network, WirelessHART network, etc.). Additionally or alternatively, the big data device receiver 160 can receive data from its corresponding one or more data sources 168 via a local interface, such as from a process control device or other type of device that is embedded or manufactured with the DDE 150 or to which the DDE 150 is locally, directly, or otherwise tightly coupled. Additionally or alternatively, the big data device receiver 160 can receive big data packets, for example, via a data analysis network interface 175. The received big data packets may have been streamed from another DDE 150 and / or may have been generated by a big data source resident with the data engine 150. Regardless of the one or more sources 168 of the received / observed data, the big data device receiver 160 processes the received / observed data packets and / or messages to obtain the substantive data and timestamps carried therein and stores the substantive data and timestamps in the big data storage area 155 of the data engine 150, for example, as time series data and optionally also as metadata. The term "metadata" as used herein generally refers to data about data, such as statistical information about the data, category information about the data, summary information, descriptive information, definitions, etc. The big data storage node area 155 may include multiple local and / or remote physical data drives or storage entities, such as RAID (redundant array of independent disks) storage, solid-state storage, cloud storage, high-density data storage, and / or any other appropriate data storage technology that is suitable for data groups or data center storage, appears to other nodes as a single or monolithic logical data area or entity, and can be configured to locally store and / or historize big data.

[0142] Each of the big data appliance request service providers 165 is configured to access the time series data and / or metadata stored in the big data appliance storage area 155, for example, each time a request by a requesting entity or application such as a local or remote data analysis application, a user interface application, or another application occurs. For example, the big data appliance request service provider 165 can publish the selected data stored in the big data appliance storage area 155 to the subscribers of the selected data at any given time interval. In another example, the big data appliance request service provider 165 can obtain the data stored in the local big data appliance storage area 155 each time a request to execute a data analysis application remotely occurs. Other examples of accessing data stored at the DDE 150 will be discussed in subsequent chapters. Such data can be stored in a variety of data formats, including relational or non-relational databases or other data structures. In some embodiments, a standardized query format can be used to access data in any of these data sources.

[0143] In some embodiments, the distributed data engine 150 includes one or more big data analyzers 170 to perform corresponding data analysis and / or learning on at least a portion of the big data stored in the memory 155. The execution of local analysis and / or learning can be performed in response to a command or instruction generated by a user or by another node. In addition or alternatively, the execution of local analysis and / or learning can be performed in an automatic and / or autonomous manner without using any input from a user or other node to initiate and / or perform learning analysis. For example, data analysis and / or learning can be performed in a manner such as previously discussed, in a manner such as discussed in the aforementioned U.S. application No. 62 / 060,408 entitled "DATA PIPELINE FOR PROCESS CONTROL SYSTEM ANALYTICS", or in some other appropriate manner. In one embodiment, the big data analyzers 170 perform large-scale data analysis (e.g., data mining, data discovery, etc.) on the stored data individually or collectively to discover, detect or learn new information or knowledge. Data mining generally involves the process of examining large amounts of data to extract new or previously unknown data or patterns of interest (such as unusual records or groups of data records). The big data analyzer 170 may also perform large-scale data analysis (e.g., machine learning analysis, data modeling, pattern recognition, predictive analysis, correlation analysis, etc.) on the stored data to predict, calculate, or identify implicit relationships or inferences within the stored data.

[0144] In one embodiment, multiple big data analyzers 170 (and / or multiple instances of at least one big data analyzer 170) can operate in parallel and / or cooperatively to analyze data stored in the big data storage area 155 of the distributed data engine 150 and / or analyze data stored in one or more other big data storage areas of other distributed data engines 102x. In addition, as a type of collaborative data analysis and learning, multiple big data analyzers 170 can share, exchange or transmit calculated parameters and model information to each other. Multiple big data analyzers 170 can reside on the same big data node together, or can reside on different big data nodes. Examples of collaborative data analysis that can be used with any or all of the techniques described herein can be found in the aforementioned U.S. Patent Application No. 62 / 060,408 entitled "DATA PIPELINE FOR PROCESS CONTROL SYSTEM ANALYTICS", but any appropriate collaborative data analysis technology can be used with any or all aspects of the present disclosure. The results of the analysis performed by the big data analyzer 170 may be stored in the big data appliance storage area 155 and / or may be returned to a requesting entity or application.

[0145] In one embodiment, at least a portion of the big data receiver 160, the big data device request service 165, and / or the big data analyzer 170 is included or implemented on one or more integrated circuits, semiconductors, chips, or other suitable hardware. For example, the big data analyzer 170 that performs spectrum analysis can be implemented by an integrated circuit chip included in a big data node, such as described in the aforementioned U.S. application 14 / 507,252 entitled "AUTOMATIC SIGNAL PROCESSING-BASED LEARNING IN A PROCESS PLANT". In one embodiment, at least a portion of the big data receiver 160, the big data device request service 165, and / or the big data analyzer 170 includes computer executable instructions stored on a memory and executable by a process running on the distributed data engine 150. For example, at least some portions of the big data receiver 160, the big data device request service 165, and / or the big data analyzer 170 include corresponding computer executable instructions stored on one or more non-transitory tangible memories or data storage devices, and the instructions can be executed by one or more processors to perform one or more of the corresponding big data functions.

[0146] In some embodiments, at least some of the big data analyzers 170 are not included in the distributed data engine 150, but instead co-reside on the same host data source device or component as the distributed data engine 150 and are communicatively connected to the data engine 150. For example, the data engine 150 (including the storage area 155, the receiver 160, and the server 165) can be implemented by a first computer executable instruction set, and the big data analyzers 170 can be implemented by a semiconductor chip or by a second computer executable instruction set, which can be stored on the same non-transitory tangible memory or data storage device as the first computer executable instruction set or it can not be stored on the same non-transitory tangible memory or data storage device as the first computer executable instruction set. In some embodiments, the big data analyzers 170 are not included in the data engine 150 and do not co-reside on the same host data source device or component as the data engine 150, but are nonetheless communicatively connected to the data engine 150. For example, the big data analyzers 170 can be located on another node of the data analysis network 112 that is not the DDE 150, such as a user interface node or an analysis server.

[0147] Figure 3 The distributed data engine 150 in the embodiment also includes one or more network interfaces 175, which are configured to allow the data engine 150 to send and receive payload big data on the data analysis network 112, and to communicate (e.g., signaling or other types of communications) with other data engines and nodes of the data analysis network 112. For example, the data engine 150 can subscribe to a type of data published by another node by using the network interface 175, and the data of the type generated by the publishing node and subscribed by the data engine 150 can be received via the network interface 175.

[0148] As previously discussed, various types of data, such as process-related data, plant-related data, and other types of data, may be generated, collected, observed, obtained, received, stored, cached, processed, analyzed, and / or streamed by the distributed data engine 102x. Process-related data may include continuous, batch, measurement, and event data generated while a process is being controlled in the process plant 5 (and, in some cases, such data indicates the impact of real-time execution of the process). In addition, process-related data may include process definition, layout, or setup data, such as configuration data and / or batch recipe data, data associated with configuration, data corresponding to execution and results, and the like.

[0149] Plant-related data (such as data related to the process plant 5, but which may not be generated by applications that directly configure, control or diagnose processes in the process plant) can be generated, collected, observed, obtained, received, stored, cached, processed, analyzed and streamed as big data by the distributed data engine 102x. Examples of plant-related data include vibration data, steam trap data, data indicating values ​​of parameters corresponding to plant safety (e.g., corrosion data, gas detection data, etc.), data indicating events corresponding to plant safety, data corresponding to the health of machines, data corresponding to assets in the plant (such as plant devices and / or equipment), data corresponding to the configuration, execution and results of device, machine and / or equipment diagnostics, and data useful for diagnosis and prognosis.

[0150] Other types of data, including data highway traffic and network management data associated with the process control big data network backbone and various communication networks of the process plant 5, user-related data (such as data related to user traffic, login attempts, queries and instructions), text data (e.g., logs, operating procedures, manuals, etc.), spatial data (e.g., location-based data), and multimedia data (e.g., closed-circuit television, video clips, etc.) can be generated, collected, observed, obtained, stored, cached, processed, analyzed and / or streamed as big data by the data engine 102x.

[0151] In some embodiments, dynamic measurement and control data may be automatically generated, collected, observed, obtained, stored, cached, processed, analyzed, and / or streamed as big data by the distributed data engine 102x. Examples of dynamic measurement and control data include data specifying changes in process operations, data specifying changes in operating parameters, records of process and hardware alarms and events (such as downloads or communication failures, etc.). Additionally, static data such as controller configurations, batch recipes, alarms, and events may be automatically collected by default when changes are detected or when a controller or other entity is initially added to the data analysis communication network 112.

[0152] Furthermore, in some scenarios, at least some static metadata describing or identifying dynamic control and measurement data is captured in the distributed data engine 102x when a change in metadata is detected. For example, if a controller configuration changes that affects measurement and control data in a module or unit (which must be sent by the controller), updates to the associated metadata are automatically captured by the data engine 102x. Additionally or alternatively, parameters associated with special modules for buffering data from external systems or sources (e.g., weather forecasts, public events, corporate decisions, etc.), surveillance data, and / or other types of monitoring data may be automatically captured by the data engine 102x.

[0153] In some cases, added parameters created by an end user are automatically captured in the distributed data engine 102x. For example, an end user may create special calculations in a module or may add parameters to a unit that need to be collected, or an end user may want to collect standard controller diagnostic parameters that are not transmitted by default. Parameters optionally configured by an end user may be transmitted in the same manner as default parameters.

[0154] User interface application for industrial performance monitoring / analysis

[0155] As previously mentioned, the data analysis system or DAS 100 may include one or more user interface applications via which data-related human-computer interactions are performed. Figure 2A The presence of exemplary instances of these user applications is depicted in the Figures 120a-120d. Figure 4A-Figure 4Q A user interface application for industrial performance monitoring / analysis is described in more detail. For example, the user interface application may be used by Figure 1 Process plant or system 5. Figure 2A Industrial performance monitoring / analysis system 100, and / or Figure 3 The monitoring and analysis engine 150 provides or combines Figure 1 Process plant or system 5. Figure 2A Industrial performance monitoring / analysis system 100, and / or Figure 3 However, the user interface application for industrial performance monitoring / analysis described herein may be provided by or in conjunction with other industrial performance monitoring and analysis systems for process control systems. However, for ease of discussion, the following also refers to Figure 1 , Figure 2 and Figure 3 To discuss the industrial performance monitoring / analysis user interface application. In addition, for ease of reading, the industrial performance monitoring / analysis user interface application is referred to herein using capital letters to distinguish it from general and / or other user interface applications, and is also referred to herein interchangeably as a "data analysis user application," "data analysis user interface application," "data analysis application," "DDE user interface application," or "user interface application."

[0156] The DDE user interface application provides an interface for users to interact with the distributed industrial process performance monitoring / analysis system or DAS 100 to define structures, query data, establish and evaluate draft data models. When the draft data model is finalized, the DDE user interface application allows the data model to be downloaded to the runtime engine and deployed to operate in conjunction with the online process control system. The deployed data model (also referred to as an executed or online data module) can be accessed and monitored via the runtime dashboard of the DDE user interface application. The DDE user interface application can also generate alarms and notifications corresponding to the executed data model.

[0157] Specifically, the DDE user interface application enables users to create, view and modify data models, each of which defines one or more data analyses (e.g., descriptive, predictive, and / or normative analyses) to be performed or implemented on an input data set. Data models are drafted and created in an offline mode (e.g., when the data model is disconnected from a live data source in an online or operational process control system), and in this mode, the data model is referred to herein as an "offline data module." Typically, offline data is defined by an offline data graph, and a user creates an offline data graph via a DDE user interface application by selecting a set of "blocks" or "data blocks" and interconnecting these blocks in a desired manner on the graph using a set of "lines." Each data block includes an input terminal, via which data is received into the block. Each data block also represents or defines a specific function, action, algorithm and / or operation to be performed by each data block on its input data, thereby generating output data that can be provided to other blocks via one or more output terminals. Each data block can be evaluated individually so that the offline diagram representation of the block and its interconnecting lines is compiled into executable code and executed, and the results of the execution of each data block are presented on the offline data graph. As will be discussed in later sections, the compilation of data blocks into code and its subsequent execution can be performed distributedly across different target environments and locations.

[0158] Similarly, the offline data graph can also be evaluated as a whole. Evaluation of the offline data graph includes compiling data blocks and lines, executing the compiled code to transmit input data and output data across the lines, and executing functions, actions, algorithms and / or operations as defined by the specific configuration of the blocks and lines of the offline data graph. Also similar to individual data blocks, compilation of the offline data graph and execution of the compiled offline data graph can be performed distributedly across different target environments and locations.

[0159] In addition, the DDE user interface application enables a user to transform an offline data module into an "online data module" so that the online data module of the data model is bound to or otherwise receives live (e.g., streaming) data generated by a live data source of an online process control system, performs one or more data analyses defined therein on the live data, and provides output to a user interface, historian, or other application. For example, the output data generated by the data model may include descriptive, predictive, and / or prescriptive information or data corresponding to the process plant and / or process controlled therein.

[0160] Specifically, a user can transform an online data graph of a particular data model into an online data graph of a particular data model. Similar to an offline data graph, an online data graph includes a set of data blocks interconnected by a set of lines, and since the offline and online data graphs generally correspond to the same data model, the functions, actions, algorithms and / or operations defined by the online data graph correspond to the functions, actions, algorithms and / or operations defined by the offline data graph. However, at least some of the blocks and interconnections differ between the offline data graph and the online data graph, primarily (but not necessarily only) to accommodate connecting the online data module to the online process plant.

[0161] Also similar to the offline data graph, the online data graph can be compiled in its entirety into executable code corresponding to the online data modules of the data model. Compilation of specific blocks of the online data graph results in the definition of bindings of the specific blocks to corresponding data sources and data consumption within the online process factory. Deployment of the online data modules instantiates these bindings and causes the executable files to run or execute, thereby integrating the online data modules with the online process factory so that the online data modules are executed in conjunction with the operation of the online process factory. The compilation of the online data graph and the resulting binding and execution of the online data modules can be performed in a distributed manner across different target environments and locations.

[0162] In a particularly useful embodiment, an online data module of a data model receives continuous, real-time data generated by equipment and components of a process plant due to ongoing control of an online process performed in the plant and operates at least in part on the data. For example, when the process plant and the process control system are operating to control the process, the online data module operates on continuous, real-time time series data generated by the online process plant and / or by the process control system included in the plant. The data model continuously operates on the continuous, real-time data stream (e.g., by executing one or more data analysis functions or other functions (if any) as defined by the data model thereon), and continuously generates a real-time result or output data stream, which can be displayed at a user interface (e.g., as a scrolling line graph or other depiction) and can continuously reflect the current value, real-time value of the output of the data model. In one example, the data output generated by the data model and displayed at the user interface includes at least one predicted value and its change in time. However, in general, for the purpose of fault detection, prediction and normalization of the process control plant or environment 5, the data model is capable of operating on a large amount of data generated by a variety of data sources within the process plant or environment 5.

[0163] In one embodiment, the DDE user interface application is web-based and accessed through a web browser so that various platforms (e.g., Apple Macintosh, Linux, Windows, etc.) and various users can use different instances of the application (sometimes simultaneously) at various computing devices. However, the DDE user interface application is not limited to a web-based implementation, and any other suitable implementation (which is platform-independent and can be extended to multiple users and / or instances simultaneously) can be used.

[0164] In addition, although the DDE user interface application is described herein as being applied to a single process plant or environment 5, wherein multiple instances of the DDE user interface application are executed simultaneously, this configuration is merely illustrative and is not intended to be limiting. For example, in some configurations, the DDE user interface application can be applied to multiple process control plants or environments that operate independently at different locations and for different processes. For example, multiple refineries of an oil company can use a single DDE user interface application provided by a server or computer group so that some instances of the DDE user interface application are executed at refinery A and some instances are executed at refinery B.

[0165] In any case, as previously discussed, the DDE user interface application abstracts the functions, actions, algorithms and / or operations that can be performed by data blocks on corresponding input data as blocks or data blocks. Examples of blocks or data blocks are named by their corresponding functions, such as, loading, clearing, manipulating, analyzing, visualizing, etc. Each data block can load or obtain corresponding input data, perform one or more corresponding functions, actions, algorithms, and / or operations on the obtained input data, and generate one or more corresponding results or corresponding output data. Multiple data blocks can be interconnected (e.g., serial, parallel, many-to-one, one-to-many, etc.) as desired to form an offline data graph representing or defining a draft data model or offline data module, and the draft data model / offline data module can be executed or evaluated by making the offline data module (or part thereof) applied to a set of one or more data sets or offline data resources or operating a set of one or more data sets or offline data resources. For example, during the execution or evaluation of an offline data module, the offline data graph is compiled into executable code, a specified data set is obtained and loaded into or used by the offline module, and each of the interconnected blocks of the compiled offline module is executed to perform corresponding operations on its corresponding input and provide corresponding results at its corresponding output, thereby generating one or more analysis outputs or results generated by the overall offline data module corresponding to the data model being developed or created. In one embodiment, during the offline evaluation, input data can be received from a streaming offline data source such as a test tool, environment, or factory, rather than loading a data set into a draft data model from a file. In addition, as will be explained in more detail below, the offline data module or draft data model can be evaluated step by step when it is developed. In the DDE user interface application, the platform or infrastructure for evaluating offline data blocks and offline data modules is a data analysis service, which will be described in a later chapter.

[0166] After the offline data module (or part thereof) has been evaluated, the user can consult and scrutinize the results of the evaluation, and can modify and re-evaluate the drafted model (or part thereof) accordingly until satisfactory results are reached. The user can finally determine the drafted data model / offline data module, transform it into an online data module, and execute or deploy the online data module to operate on the real-time, online, or streaming, live data generated due to the real-time operation of the process control environment or the factory 5. For example, the online data module or data model executed or deployed can continuously operate on the real-time data continuously generated due to the online operation of the process plant, and the online data module or model itself can continuously generate the real-time output data or results of its execution, which can be displayed and continuously updated on the user interface. The online execution or operation of the deployed online data module and the corresponding results can be monitored at the dashboard of the DDE user interface application, which is also described in more detail in later chapters.

[0167] As previously discussed, within a DDE user interface application, data blocks, data modules (whether online or offline), and portions thereof can be visually and / or graphically represented to a user as a diagram or data graph on a workspace or canvas provided by the DDE user interface application. Typically, each data graph includes a group of data blocks (e.g., which can be represented by two-dimensional shapes) interconnected by a group of lines (which can be represented by lines). A DDE user interface application typically includes two modes of operation (but, in some embodiments, can include more or less modes), both of which use data graphs to represent data modules and the data blocks included in the data modules.

[0168] One of these modes of operation is interchangeably referred to herein as a "data analysis studio," "data studio," or "studio." Typically, a user uses a data studio to design and develop a data analysis model. In addition, a data studio allows a user to transform an offline data module into an online data module, and to deploy a finalized offline module as a corresponding online data module. The data studio provides a workspace or drawing canvas on which a user can develop a data model into a data graph by creating and connecting blocks, which is a visual, graphical representation of a data model or a portion thereof. When a data model is developed within a data studio, it may be referred to as a draft data model or offline data module, and may be considered a sketch or prototype. An offline data module graph may include a greater number of data blocks and / or connections than the online data module from which it is derived, because some of the blocks and connections included in the offline module may be used to analyze and view data at different parts of the module, for example, in order to analyze and check whether a particular part of the data model is being evaluated and / or providing sufficiently useful and / or predictive data as desired. Typically, an offline graph of a data module is a representation of a workflow that (1) explores and cleans the original data set, and (2) can be built, adjusted, and evaluated for desired analytical operations such as classification, regression, aggregation, dimensionality reduction, etc. Offline data modules can be evaluated incrementally or continuously as they are developed. The results of the evaluation process of an offline data module or data model are communicated to the user via the data studio.

[0169] In some cases, the execution or evaluation of offline data modules may take a long time to complete. In these cases, the status and progress of the evaluation process of the offline data modules can be transmitted to the user via another operating mode of the DDE user interface application, which is interchangeably referred to as "data analysis dashboard", "analysis dashboard" or "dashboard" in this article. The dashboard is usually used by the user to view and / or manage the following modules: (i) in the offline data module being evaluated (for example, a draft data model), and / or (ii) online data modules (for example, a finalized data model, which has been deployed as a data module). The dashboard also represents the draft data model to be evaluated and the online data modules of the deployment represented by the corresponding diagram or visual, graphic representation. The deployed data module is called "online" because the deployed module is operating on the real-time data generated due to the online or runtime operation of the process control system or factory 5. Typically, the online graph of a data module is a representation of a workflow that is bound to one or more data sources (e.g., streaming data sources) within a process control system or plant 5 to perform real-time description, prediction, and / or normalization, and / or continuously adjust the data model during or at runtime. A deployed or online data module can execute continuously until it is explicitly terminated from the dashboard.

[0170] A. Data module diagram

[0171] An example diagram of a data module (whether offline or online) typically includes multiple data blocks and lines that interconnect the blocks together to form one or more data flow pipelines. As previously mentioned, a data block is typically an abstraction of a function or operation that a user wants to apply to a data set. For example, a specific block can load a data set from a data store or file on disk, another specific block can replace all missing values ​​in a data set (e.g., those values ​​that do not have a measurement value at a time corresponding to a time when another parameter / variable has a measurement value), and another specific block can perform a random forest analysis, etc. Typically, different data blocks correspond to different functions or operations that can be performed on a data set, and therefore, each data block can have a corresponding type or name, such as "load", "query", "fill", "column", "PCA (principal component analysis)", "PLS (partial least squares)", "explore", "write", etc.

[0172] Each block may have no attributes or may have multiple corresponding attributes. The attribute set of a block (which may be an empty set for some blocks) corresponds to its block type, so that all instances of the same block type have the same attribute set. For some blocks, the default values ​​of the attributes may be provided by the DDE user interface application, and for some blocks, the user may be allowed to input and / or modify one or more of the attribute values. The data block defines any default attribute values ​​of the corresponding attributes and data block types (as well as other information for some blocks). The data block definitions are stored in the data block definition library provided by the DDE user interface application. Typically, the data block definition library can be used for all open instances of the DDE user interface application, so that multiple data analysis users or engineers can use the resources provided by the library to develop and / or explore data at the same time.

[0173] Each block has zero, one, or more input connectors that specify the data (if any) that flows into the block from one or more other blocks or data sources. Additionally, each block has zero, one, or more output connectors that specify the data (if any) that flows out of the block (and potentially into the one or more receiving blocks via their corresponding input connectors). The interconnections between the inputs and outputs of the various blocks are represented on the data graph by lines. Any type of data can flow or be transmitted along any line, from simple scale factor values ​​to data frames that each contain millions of values ​​for the target code.

[0174] In addition, each block has a state. For example, when a block is first created, the block is in a "configured" or "configuring" or "unconfigured" state. After the block has been configured, the block is transferred to a "configured" state. When an offline block is being evaluated, it is in an "evaluation" state. After the offline block has been evaluated, the block is transferred to an evaluation "successful" state or an evaluation "failed" state. If the offline block is being configured or bound to a data source and / or a data consumer, its state is "configured" or "bound". After the online block has been deployed to the process control system and is operating on live data, its state is "deployed" or "executing". Of course, other states are also possible. Typically, each block includes a visual indicator indicating its current state. In addition, each data module as a whole can have an indicator indicating its current state.

[0175] Figure 4A An example data graph 200 is shown that depicts various possible data block characteristics and interconnections. The example data graph 200 includes a LoadData block 202a that is connected to a FillNaN block 202b via line 205. The representation of the LoadData block 202a includes an indication 208a of its current block state, an indication 210a of its current block type or name, an indication 212a of the result of the evaluation of the block, and an output connector 215a through which at least some of the data generated as a result of the evaluation of the LoadData block is transmitted to a recipient (in this scenario, to the FillNaN block 202b) via line 205.

[0176] Fill NaN block 202b includes an input connector 218b that receives data flowing from load data block 202a via line 205. Similar to load data block 202a, fill NaN block 202b includes an indication 208b of its current block state, an indication 210b of its current block type or name, an indication 212b of the result of its evaluation, and an output connector 215b through which at least some of the data generated as a result of the evaluation of the load data block is communicated via line 220 to a recipient or consumer (not shown).

[0177] Note that Figure 4A2, the load data block 202a does not have an input connector because the load data block 202a does not receive data output from any other data block of the data graph 200. Instead, the load data block 202a can be configured to load or obtain one or more input data sets from one or more data sources. The data sources can include offline data sources, such as data files, data sources (e.g., Seeq system), relational or non-relational databases, and / or the data sources can include online or streaming data sources, such as data streams generated by the distributed data engine 202x.

[0178] B.Data Analysis Studio

[0179] As mentioned previously, one of the operating modes of the DDE user interface application is the Data Analysis Studio. The Data Analysis Studio can be used by users to design, develop, view, and explore data models. Figure 4B An exemplary user interface presented by a data analysis studio 240 is depicted, which includes a navigation bar 242 and a workspace or drawing canvas 245. The navigation bar 242 provides controls and indicators via which a user can manage offline and online data modules, for example, by allowing the user to perform actions such as creating a new offline data module, identifying an offline or online module currently open and shown in the canvas 245, easily viewing the status (e.g., offline or online) of a data module currently open and shown in the canvas 245, saving / storing an offline data module currently open and shown in the canvas 245, converting an offline module to an online data module, switching between viewing offline and online data graphs of a data module, evaluating an offline data module, deploying an online data module, navigating to other data modules, and other such module management functions. Thus, the data analysis studio includes numerous user controls and indicators 248a-248n thereon, such as, but not limited to:

[0180] Module navigation controls 248a to enable the user to find and navigate to other data modules;

[0181] An identifier 248b of the data module currently opened on the canvas 245;

[0182] One or more indicators 248c, 248d indicating whether the view of the data module currently opened on the canvas 245 is an offline view or an online view;

[0183] One or more controls 248e, 248f via which a user can switch between an online view and an offline view of a data module currently open on the canvas 245;

[0184] User controls 248g via which a user can view and / or define properties of a data module currently open on the canvas 245;

[0185] User control 248h, via which the user can save the currently opened data module;

[0186] User controls 248i via which a user can evaluate at least a portion of a currently opened data module;

[0187] User control 248j, via which a user can deploy a currently opened data module;

[0188] An indicator 248k indicating the operational status of the currently turned on module; and / or

[0189] • One or more other user controls and / or indicators (not shown).

[0190] Figure 4B Also shown is a user control 248m, via which a user can view a library of data block definitions (in Figure 4B ), selecting a block definition from a data block definition library, and / or adding a block definition to a data block definition library. Figure 4B In the embodiment shown in FIG. 2 , the library user controls 248 m are shown as being located on the canvas 245 , however, in other embodiments, the controls 248 m may be located on the navigation bar 242 or at any desired location.

[0191] In fact, the number, type, location / positioning, form factor, arrangement, etc. of user controls and indicators shown in the example data analysis studio 240 is only one of many possible embodiments. A greater or lesser number and / or type of user controls and / or indicators may be included. Different locations / positionings of these user controls and / or indicators, as well as different form factors, arrangements, etc. may be utilized. In some embodiments, the navigation bar 242 may be omitted, and another mechanism for user access controls may be provided (e.g., a pop-up window, a drop-down menu, etc.).

[0192] 1. Data Analysis Studio - Offline Data Module

[0193] In the data analysis studio 240, a drawing canvas or workspace 245 is an area via which offline data modules can be exposed, defined, and evaluated. For example, on the drawing canvas or workspace 245, a user can access a block definition library of a DDE user interface application (e.g., via user control 248m), select various data block definitions stored therein, and interconnect (e.g., wire together) the selected block definitions to form a data graph of a data model. In addition, on the drawing canvas workspace 245, a user can edit the properties of a particular data block instance; evaluate a portion of a draft data model, including viewing the progress and results of the evaluation; and / or perform other actions related to offline data modules.

[0194] As previously discussed, each data block available in a data map is based on a block definition of the type of data block. That is, a particular instance of a given type of block has a set of properties according to the given type of block definition, but the particular instance may differ from other instances of the same given type of block, for example, in a manner similar to object classes and instances of object classes. Also as previously discussed, block definitions are stored in a block definition library that is accessed (e.g., toggled to view or hide) via user control 248m, which may be located on canvas 245.

[0195] exist Figure 4C An illustration of example relationships 250 between a data block definition library, a data block definition, a data module, a data block, a data block instance, and a line is shown in FIG. Figure 4C , block definitions are made available through a block definition library 252 provided by a DDE user interface application. In some embodiments, different access rights (e.g., read-only, read-write, etc.) to specific block definitions and / or to other data analysis library resources (and / or portions thereof) may be given to different users and / or user groups.

[0196] The block definitions 255 stored in the library 252 can be used to create instances 258 of the blocks 255 for use within the data module 260. One or more attributes 262 of the block definitions 255 can be specifically defined for the block instances 258. The block instances 258 are configured or designed to include one or more input connectors 265 via which data is received into the block instances 258, and the block instances 258 can be configured or designed to include one or more output connectors 270 via which output data (e.g., data resulting from evaluation of the block instance 258 operating on input data received via the input connectors 265) is provided to, for example, another block instance 258, written or stored to a user interface, etc. Each input connector 265 of the block instance 258 can receive data via one or more lines 272 of the data module 260, and each output connector 270 of the block instance 258 can provide data via one or more lines 272 of the data module 260. Each line 272 of a data block 260 may provide an interconnection between a particular output connector 270 of a particular block instance 258 and a particular input connector 265 of another particular block instance 258, thereby enabling data to be transferred between the two data block instances.

[0197] In an embodiment, block definitions are organized within library 252 by categories of functionality or action. Categories may include subcategories, subcategories may include sub-subcategories, etc. By way of illustrative and non-limiting example, block definition library 252 includes at least five categories of block definitions: data sources, filters, transformers, visualizations, and data consumers.

[0198] The block definitions included in the data source category generally define various actions related to the data source, which provides the input data on which the data module operates. For example, the block definitions in the data source category may include "Create Dataset" to generate an input data set, "Load Dataset" to load or obtain an existing data set from an offline or online data source, "Load DB" to load or obtain data from a database (e.g., a process control database or an analysis database), "Save Dataset" to historize the input data set into a long-term data storage (e.g., after it is created, such as for testing the input data set), etc. In addition, some of the data source categories may include one or more subcategories. For example, the Create Dataset and Load Dataset categories may each include corresponding subcategories for a specific data set format and / or the environment in which the data set is generated, such as CSV (comma separated values), Raspberry Pi, Seeq, etc. Typically, an offline data source block is configured to obtain or access a static data source, such as a data file, a process control database, an analysis database, etc. On the other hand, an online data source block is typically configured with a binding definition that associates a specific instance of the online data source block with one or more online data sources within a process plant. Compilation of the configured, online data sources instantiates the bindings so that the online data source block receives streamed data generated by one or more online data sources bound to the online data source block.

[0199] The data source category may include block definitions related to searching or obtaining selected data from one or more data sources (e.g., "query data source" or "query"). Query blocks may operate on offline data sources and / or online data sources. Generally, query block definitions allow data modules to query, obtain, or request specific types or characteristics of data (e.g., as indicated by columns, tags, or other appropriate identifiers) and / or query, obtain, or request data generated only during specific time intervals, which may be disjoint time intervals. Still further, query blocks are capable of querying any type of data regardless of the format and / or environment in which the data is captured or stored. Additional details of query blocks are provided in later portions of this application.

[0200] The block definitions included in the filter category generally define various filtering techniques that can be performed on the data set. For example, the block definitions in the filter category can include "clip", "high pass", "low pass", "SGF" (e.g., for Savitsky-Golay filtering), "exponential", "average", "wave", etc.

[0201] The block definitions included in the "Transformer" category of the data block definition library 252 generally define various techniques for manipulating, analyzing, and / or otherwise transforming the contents of a data set or the contents of a filtered data set. For example, the Transformer category may include sub-category data block definitions corresponding to cleaning input data sets, such as "Fill NaN" (e.g., to fill in entries in a data set that are not numbers), "Remove Outliers" (e.g., to remove outlier data), "Correct Bad Values" (e.g., to correct bad data detected within an input data set), "Exclude Bad Values" (e.g., to exclude detected bad data), and the like. In addition, the Transformer category may include sub-category data block definitions corresponding to manipulating the contents of an input data set, such as "Scale", "Move", "Separate", "Merge", "Center Normal", "Downsample", "Time Offset", "Column", and the like. In addition, in some embodiments, the Transformer category may include sub-category block definitions corresponding to aligning data within an input data set, such as "Time Delay", "Lag Correction", and the like.

[0202] The Transformer category may include sub-category data block definitions corresponding to analyzing input data sets to obtain knowledge and learn their contents, such as "Sensitivity", "Clustering", "Random Forest", "CBP" (e.g., Conditional Bayesian Probability Analysis), "K-Means", "Fourier Transform", "Fast Fourier Transform", "PLS", "PCA", etc. Certain sub-categories in the Transformer category may include one or more sub-subcategories. For example, the "PCA" subcategory in the Transformer category may include sub-subcategory data block definitions corresponding to various principal component analysis techniques (e.g., "PCA_NIPALS" (PCA and nonlinear iterative partial least squares), "PCA_SCD" (PCA and singular value decomposition), "PCA_Test", etc.).

[0203] The block definitions of the Visualization category generally define various techniques for presenting the output generated by the data module. For example, the Visualization category may include subcategories corresponding to graphs and / or other visual representations, such as "Line Graph", "Chart", "Bar Graph", "Scatter Plot", "Histogram", "Data Grid", "Data Cloud", "Animation", etc. The Visualization category may include subcategories corresponding to preparing output data for a particular graphical representation, such as "Round SigFig".

[0204] The block definitions of the data consumer category generally define actions associated with each consumer or recipient of the output data generated by the data module. For example, the data consumer category may include a subcategory "write" that causes the output data to be written or saved to a file, database, or other static storage area. The subcategory "write" in turn may have corresponding subcategories corresponding to various types of locations, databases, database formats, file formats, etc. that indicate where the output data can be written or saved or how the output data can be written or saved. The data consumer category may include a subcategory "publish" that causes the output data to be streamed (e.g., via the analytical data network 112) or otherwise published or transmitted to a subscriber or recipient of the data (e.g., to a distributed data engine 102x, to an online data module, to an application executed by a process control system, to a user interface, etc.). In some embodiments, in order to transform an offline publish block into its online version, the publish data block is configured and bound to a real-time data consumer (e.g., to an online data module, an executing application, a process control device, an element or component, etc. that has a subscription to the output of the data model). In an embodiment, the data consumer category may include a subcategory "Convert to Control" that causes the output data to be converted into a signal in a format understood by a conventional process control communication network and causes the signal to be transmitted to a process control entity, element, device, or component via the conventional process control communication network to affect or cause a change in the process plant 5. The subcategory "Convert to Control" may include, for example, sub-subcategories corresponding to various conventional process protocol formats (e.g., HART, PROFIBUS, WirelessHART, etc.) and / or various targets within the process plant 5 that are potential recipients of the changed signal (e.g., control loop input, control loop configuration, message priority, parameter value, etc.). For example, a convert to control block may be configured to be bound to a specific process control entity, element, device, or component within the process plant 5 for receiving the output of the convert to control block and modifying its operation accordingly.

[0205] The data block definition library 252 may include other data block definitions therein, each of which may or may not belong to a category. For example, an "explore" block allows a user to explore output data generated by multiple other data blocks in an offline mode. For example, an explore data block may receive multiple different data lines at its input connector, and may generate a visual representation that includes two groups of input data in a comparative manner, such as by aligning two input data sets over time and overlaying a line graph on top of another line graph, by creating a histogram in which the information of each corresponding data set is displayed next to the information of other data sets, and the like. The explore block allows the user to manipulate the visualization of its output, such as by increasing / decreasing the scaling of the x-axis and / or y-axis, classifying and / or filtering the statistical data displayed in the chart, and the like. It should be noted that the explore block is an example of a block that may not have an online counterpart, because its function is primarily to allow the user to explore and understand the output data generated by the drafted data module.

[0206] For a user to develop a new data model, the user can call upon the data block definition library 252 (e.g., by switching via user control 248m). The user can add a desired data block to the canvas 245 (and thereby add the data block to the data module under development depicted on the canvas 245) by dragging and dropping the definition of the desired data block from the library 252 to the desired location on the canvas 245. (Of course, dragging and dropping is merely one way to indicate the selection, positioning, and incorporation of a particular data block into a data module, and many other appropriate ways of doing so are possible). Following the drag and drop operation, the selected block definition is associated with the drafted data module, and a corresponding instance of the data block for the drafted data model is created and named. Figure 4DIn the exemplary scenario shown in , the draft module A1 is in the process of being developed, and its corresponding draft, offline data diagram is shown on the data studio canvas 245. As shown by indicator 248c, module A1 has an "offline" state. The user has added blocks A1-B1, A1-B2, and A1-B3 to the draft module A1, and has connected them using lines A1-W1 and A1-W2. The user has called library 252 via control 248m, selected block B4 from the library, and dragged and dropped block B4 onto canvas 245 (as indicated by dotted lines), and is in the process of naming the instance of block B4 "A1-B4". In the instance where block B4 has been named, the user can interconnect A1-B4 to one or more other data blocks of the draft module A1 with lines. For example, the user can make the cursor hover over the input connector of A1-B4, and click to create a new line connection to the selected input connector. The user can then click on the desired output connector of another block instance on canvas 245 to create a new line interconnecting the selected input connector to the desired output connector, thereby interconnecting the two block instances. In another example, the user can hover the cursor over the output connector of another block instance, click to create a new line connection to the selected output connector, and click on the desired input connector of A1-B4 to create the interconnection line. Of course, any suitable user control mechanism can be used to create line interconnections between block instances.

[0207] On the data studio canvas 245, a user can modify the value of a given attribute of a block for a particular block instance. To illustrate, Figure 4E A portion of a data studio canvas 245 on which a draft data module B1 is developed is depicted. Two block instances included in the draft module B1 are already located on the canvas 245 and interconnected, namely, B1-Fill NaN and B1-PCA. B1-Fill NaN is derived from a data source (in Figure 4E 280a and "score" 280b, and B1-PCA provides two outputs "model" 280a and "score" 280b to corresponding consumers or receiving blocks (also not shown). The user has indicated that he or she desires to modify the values ​​of the block definition attributes corresponding to the B1-PCA block instance (e.g., by hovering over the B1-PCA block instance, by double-clicking on the B1-PCA block, or by using any other suitable user control mechanism). In response to the activated user control, a window 282 including a list of defined attributes corresponding to the PCA block definition has appeared (e.g., as a floating dialog box, a pop-up window, or some other suitable representation). The user can then modify the values ​​of the various block attributes of B1-PCA as desired via window 282.

[0208] As previously discussed, the properties of each data block (if any) are defined by its corresponding block definition stored in the block definition library 252. Figure 4F-4H 252. An illustrative (but not limiting) example of block definitions and their corresponding properties is shown in FIG. 253. It should be understood that the block definition library 252 may include Figure 4F-4H One or more of the exemplary block definitions shown in , excluding these exemplary block definitions, and / or other block definitions. In addition, Figure 4F-4H The default values ​​for the attributes of each example block definition shown in can also differ from the examples described herein.

[0209] exist Figure 4F, a data block definition template of a "load DB" data block 285a is presented by a DDE user interface application, for example, because a user drags the load DB block definition from a library 252 onto a canvas 245 and then indicates that he or she desires to view and / or modify the block attribute values ​​of the load DB data block 285a to create a specific instance of the block 285a. The action or function performed by the load DB block 285a in the offline diagram of the data model includes loading (or otherwise obtaining its contents) a specific data set on which the data model is operated. For example, a specific input data set can be loaded or obtained from a database or file. The user can indicate a specific input data set to be loaded into the data model by entering the desired name, indicator, or value into the database name attribute field 285b and the data set attribute field 285c (e.g., via a drop-down menu, search and select (e.g., a process control database or other database associated with a process control system), free-form text input, etc.). For example, a user may select a desired database name 285b from a drop-down menu, and the selection of the desired database 285b causes a corresponding drop-down menu to be provided for a dataset field 285c, which includes only the datasets 285c of the selected / identified database 285b. The Load DB block 285a also includes a drawing attribute field 285d, which in this embodiment is a Boolean flag whose value indicates whether a drawing of the dataset 285c from the database 285b will be generated / rendered when the Load DB block instance is evaluated. If the drawing 285b is set to "yes", then after the block evaluation, a drawing of the loaded dataset 285c will be displayed on the graphical representation of the Load DB block instance shown on the canvas 245, for example, in the View Block Results area 212 of the Load DV block instance. For the Load DB block 285a, the drawing attribute 285d is optional, and its value defaults to "no" (e.g., when the block is evaluated, a drawing of the loaded input dataset will not be generated / rendered). When the user has entered all desired values ​​into the attribute fields 285b, 285c, and 285d of the load DB data block 285a, the user can save the modified attribute values, thereby configuring the load DB data block template 285a to create a specific instance of the load DB data block 285a to be used in the data model that the user is creating / developing. The user can name the specific instance, for example, by entering the desired name (e.g., "Load DB-1") into the block name field 210 of the block instance shown on the canvas 245.

[0210] Figure 4GA data block definition template for a "column" data block 286a presented by a DDE user interface application is shown. A particular instance of a column data block 286a extracts or obtains a selected set of data from a loaded / obtained data set (referred to herein as a "column" of data, or data referenced by a "label") as specified by its attribute value of a selected column attribute field 286b. For example, the column data block 286a receives a data set (or some indication thereof, such as a pointer, indicator, or other reference to a data set) via its input connector, for example, from an instance of a load DB data block 285a. The selected column attribute field 286b of the column data block 286a allows a user to select one or more columns, labels, or other portions of an input data set that the user desires to be operated on by other blocks of the data model. For example, as in Figure 4G , the user is in the process of scrolling through the list of labels for data set A and highlighting a desired label. Typically (but not necessarily), the selected columns or labels are a subset of the total columns or labels included in the input data set. The user can save the column or label selection 286b (and other block properties, if any), thereby configuring the column data block 286a to create a specific instance, such as a specific instance to be used in a data model that the user is creating / developing. The user can name the specific instance of the column 286a, for example, by entering the desired name into its block name field 210.

[0211] Figure 4H The data block definition template of "PCA_NIPALS" data block 287a presented by the DDE user interface application is shown. PCA_NIPALS data block 287a performs principal component analysis (PCA) and nonlinear iterative partial least squares operation on a set of data. For example, PCA_NIPALS data block 287a can receive the columns or labels (or their indicators or references to them) of the data determined by the instance of column data block 286a via its input connector. In another example, PCA_NIPALS data block 287a can receive the entire data set (or their indicators or references to them) that has been loaded by the DB 285a data block loading so as to be used by the data model via its input connector. The template of PCA_NIPALS block 287a allows the user to select the number 287b and / or confidence level 287c (if desired) of the components of PCA. Both attribute fields 287b, 287c are optional for the PCA_NIPALS block 287a and may be set to a default value (e.g., as defined in the block definition of PCA_NIPALS) or zero. Figure 4HIn the exemplary scenario shown in , the user has indicated that the current instance of PCA_NIPALS is to be configured to generate two components 287b and a confidence level 287c of at least 95%. The PCA_NIPALS data block 287a template can be configured (e.g., with or without modified attribute values) to create a specific instance to be used in a data model that the user is creating / developing, and the user can name the specific instance, for example, by entering the desired name into its block name field 210.

[0212] Certain types of data blocks are consumers or receiving data blocks that operate on output data generated by previous blocks. These types of consumer data blocks may require previous blocks to be evaluated in order to configure the consumer data block. For example, if an instance of load DB block 485a is wired to provide data for an instance of column block 486a, then evaluation of load DB block instance 485a will provide a data set from which a user can select specific columns or tags to configure column block instance 486a.

[0213] Turning now to the evaluation of offline data blocks and data modules, offline data modules can be repeatedly evaluated as they are being developed, and do not need to be fully completed to be evaluated. Thus, the evaluation of offline data modules can be performed asynchronously, so that the user can evaluate portions of a draft data module, modify the draft data module based on the evaluation, re-evaluate, modify again, re-evaluate again, and so on. For example, a user can create an initial data block for a data module, evaluate a single data block, then connect a second data block to the first data block, evaluate only the second data block (or evaluate both the first data block and the second data block as a whole), add four more data blocks, evaluate only the newly added data block (or evaluate all six data blocks as a whole), and so on. That is, when the desired number of data block instances and / or associated lines have been added to the job data diagram of the offline or draft data module, the module (or portion thereof) represented on the canvas 245 can be evaluated, for example, by activating a user control 248i on the evaluation navigation bar 242. For example, if the user desires to evaluate all blocks and lines presented on the canvas 245, the user can simply evaluate the user control 248i. On the other hand, if the user desires to evaluate only a subset of the blocks and lines presented on canvas 245, the user may select the desired blocks and / or lines (e.g., by clicking, lassoing, or other appropriate mechanism) and then activate control 248i to cause the selected group of blocks and lines to be evaluated.

[0214] Fig. 4IAn example of how an offline data chart 288 may be evaluated is shown. As the offline data chart 288 is being created or developed, a representation of its blocks and interconnections shown on the data studio canvas 245 is stored in a transmission file or document 290 (also referred to herein as a "configuration file"), which may have a lightweight data exchange format such as JSON (Java Script Object Notation) or any other desired format. Thus, the graphical, offline data chart 288 is bound to the transmission storage file or document 290. When a user indicates that he or she desires the offline data chart 288 or a portion thereof to be evaluated (e.g., by activating a user control 248i), the transmission file or document 290 is compiled into the language of the target execution environment, thereby generating executable code 292 for the data chart 288. In an embodiment, the transmission file or document 290 may be divided into multiple parts, each of which is compiled into a different target language that can be executed in a different target environment (e.g., multiple blocks or segments of executable code 292 in different target languages ​​may be generated from the transmission storage file or document 290). After the executable code 292 of the offline data graph 288 has been generated, a process is created to manage and coordinate the execution of the code 292, which may or may not be executed across different target environments and / or may or may not be executed by different processors.

[0215] As each block of the offline data graph 285 is executed or evaluated, the process can send feedback to the data studio. For example, based on the feedback from the process, the data studio updates the corresponding status indicator 208 of each data block of the offline graph 285 to indicate whether the block is being compiled, being evaluated, has successfully completed evaluation, or has not successfully completed evaluation (e.g., failed). In fact, typically, throughout Fig. 4I , feedback can be returned to the data studio and indicated on the user interface. For example, based on the feedback from the process, the data studio updates the module status indicator 248k and / or the offline status indicator 248c to indicate whether the module as a whole is undergoing compilation, undergoing evaluation, has successfully completed evaluation, or has not successfully completed evaluation.

[0216] In DDE user interface application, the infrastructure and action for evaluating offline data blocks, charts, and modules are provided by data analysis services. For example, the activation of evaluation user control 248i calls data analysis services to perform the evaluation of offline data blocks, figures, or the module (or part thereof) currently being developed on canvas 245, for example, it can utilize multiple different back-end platforms (for example, multiple different target languages, compilers, processors, and / or target environments). Therefore, DDE user interface application avoids the user from having to participate in the back-end platform (or even having its knowledge) for executing data blocks, figures, or modules. That is to say, the user can utilize data studio and dashboard features (for example, data block definition library 252, canvas 245, and associated user control), to design or plan (engineer) data modules not only using data graphs, but also in real time and independently of the back-end platform evaluation, test, and deployment of their designs, and these designs are managed "under cover" by data analysis services. In addition, DDE user interface application architecture advantageously allows to add or delete other back-end platforms and / or components without affecting the data module design, evaluation, test, and deployment functions facing the user.

[0217] A more detailed description of the data analysis service and its support for the evaluation is provided in the following sections.

[0218] refer to Figure 4A As previously discussed, the evaluation of a data module in offline mode can be an iterative process. As the user adds and configures blocks for the draft data module, the user can evaluate the added blocks, and the status of each block is indicated by its corresponding status icon (e.g., Figure 4A In the case where the evaluation of a block is unsuccessful or fails, the user can obtain details about the failure (e.g., by selecting or clicking on the "Failed" status indicator 208) so that the user can resolve any issues that caused the failure. In the case where the evaluation of a block is successful, the user can view the results of the block evaluation, for example, by selecting or clicking on the block's corresponding View Block Results icon 212. In embodiments, when the user selects "View Block Results" 212, a modal or visualization dialog may appear (e.g., as a pop-up window, floating dialog box, or other appropriate format), and the user can view and explore various visualizations to see the data block results.

[0219] In fact, when a data block is executed or evaluated, a data block can store one or more results of any type that may be useful for assisting a user in determining one or more effects of the data block operating on data transmitted to it (e.g., via lines and input connectors). The type of one or more results stored is typically specific to the block (and, in some cases, specific to a particular instance of the block) and can be defined or determined by the block developer. These results can be displayed to the user via a modal or visual dialog window.

[0220] In addition to block-specific and / or block-instance-specific results, the DDE user interface application can provide standard visualizations that are applicable to more than one (and in some cases, most or even all) data blocks. For example, as a block is executed, a standard set of various statistical information about the state of the data at the end of the execution of the block can be collected, so that for each column, each label, or each portion of the data set, the average, standard deviation, and other such statistical information can be calculated and stored with the resulting data set. When a visualization dialog for a particular block instance is presented (e.g., via activation of a corresponding user control 212), a calculated set of standard statistical information for each column, each label, or each portion is obtained from the data storage device and presented to the user. The user can then select the column / label / portion of interest and request the data studio to generate a corresponding chart or other visual format representing the statistical information of the column / label / portion (e.g., a line chart, a scatter plot, a histogram, a data grid, a data summary grid, calculated statistics and histograms showing data distribution, etc.). In an embodiment, the statistical information and the data set are stored separately because storing the statistical information independently of the derived data set advantageously allows the DDE user interface application to load only the required amount of data into the browser.

[0221] exist Figure 4J 300 for presenting standard and customized visualizations. In the exemplary architecture 300, the data block code of "Block 1" 302 executes and generates the resulting data set 305, the calculated standard statistics / other visualizations 308, and the results 310 specific to Block 1, which are stored in a local or remote storage area 312 managed by the DDE user application interface. At the data studio instance 315 (e.g., browser window), once the user selects the "View Block Results" user control 212 displayed on the Block 1 graphic, the calculated statistics 308 of Block 1 (e.g., the standard set and / or any customized visualizations) are loaded 318 to the data studio instance 315, and the user is able to select the desired column, label, or section of interest. Once the user selects the desired column / label / section of Block 1, the corresponding data is loaded 320 to the data studio instance 315 for the user to view and explore.

[0222] Over time, as multiple data modules are configured, common patterns of block configuration and usage may occur, for example, within the same process control system 5 and / or across an enterprise with multiple process control systems. If these commonalities are identified, it may be desirable to group a set of individual data blocks to form a new block that encapsulates their common behavior, e.g., a composite block. In certain scenarios, it may be desirable to define customized, single data blocks, such as when a particular set of attribute values ​​are found to repeat over time, or when a user desires to define customized data operations or functions. Customized and / or composite data blocks can be created and stored in a library 252 so that they can be used in other data modules. Figure 4K , which illustrates the creation of a composite data block. In a data graph 332, a user selects two individual data blocks with a particular relationship (e.g., "Fill NaN" and "Scale") 335 to form a new composite block. Using a modal dialog box, a pop-up window, or other appropriate interface provided by the data studio, the user configures or defines a new composite block with the desired name "Fill & Scale" and saves the new "Fill & Scale" composite block to the data block definition library 252 (reference numeral 338). At some time after "Fill & Scale" has been defined and saved, it can be incorporated into another data graph 339 instead of using separate "Fill NaN" and "Scale" data blocks.

[0223] Figure 4L An exemplary offline data volume 340 is depicted, which illustrates some of the features and principles described above and which are concurrently referenced herein. Figure 4A , Figure 4B ,and Figure 4F-4H To describe. Figure 4L In FIG. 3 , an exemplary offline data map 340 has been created by a user on a user canvas 245 in a data studio. Specifically, the user has called the block definition library 252, for example by activating a control 248m on the canvas 245, and has dragged and dropped a load DB block template 285a onto the canvas 245. In addition, the user has named a specific instance of the load DB block 285a as "load DB4M" (reference numeral 342a), and has configured the load DB4M block instance 342a to load a data set 4 from a database M, for example, by setting property values ​​in fields 285c and 285b of the load DB4M block 342a. In addition, although in FIG. Figure 4L, but the user has set the plot attribute value 285d of the load DB4M 342a to "yes", so that once the block load DB4M 342a is evaluated, a plot of the loaded data set 4 is generated and presented in the view block results field 212a of the load DB4M block 342a.

[0224] After the user configures the load DB4M block instance 342a, the user connects two recipient column block instances 342b, 342c to the output of the load DB4M block instance 342a. For example, the user drags and drops two different instances of the column data block template 286a onto the canvas 245 and names the instances "column X" (reference numeral 342b) and "column Y" (reference numeral 342c) accordingly. In addition, the user has connected each of the corresponding outputs in the column X block 342b and the column Y block 342c to the output of the load DB4M block 342a by using interconnecting wires.

[0225] The user has also configured the Column X block 342b and the Column Y block 342c based on the evaluation of the Load DB4M block 342a. Specifically, the user first evaluates the Load DB4M block 342a (e.g., by selecting the image of the block 342a on the canvas 245 and activating the "Evaluate" user control 248i), thereby causing the Load DB4M block 342a to compile and execute to load or obtain the data set 4 from the database M. Since the drawing property of the Load DB4M block 342a is set to "yes", the evaluation of the Load DB4M block 342a also causes the drawing of the loaded data set 4 to be displayed in, for example, the View Block Results field 202a of the Load DB4M block 342a (in Figure 4L 4). Using the drawing, the user views and explores the columns, labels, or subsets of data within the dataset 4, and subsequently configures the column X block 342b to receive the subset or columns of data that are labeled or marked as “X” in the dataset 4, and configures the column Y block 342c to receive the subset or columns that are labeled or marked as “Y” in the dataset 4 (e.g., by selecting the appropriate subset, column, or label indicator in the attribute field 286b of the column block template 286a for each of the column blocks 342b, 342c, respectively). Thus, evaluation of the column X block 342b results in only data from the dataset 4 that is characterized, labeled, or marked as “X” for loading or access at the block 342b, and evaluation of the column Y block 342c results in only data from the dataset 4 that is characterized, labeled, or marked as “Y” for loading or access at the block 342c.

[0226] The user has also dragged, dropped, and configured a partial least squares (PLS) block on the offline data graph 340. Specifically, the user has named a PLS block instance 342d "PLS4M_X_Y", and has configured the PLS4M_X_Y block 342d to receive the output of the column X block 342b and the output of the column Y block 342c at its corresponding input. The PLS4M_X_Y block 342c operates or performs a partial least squares function, action, algorithm, or operation on the data provided by the column X 342b and the column Y 342c, and the result (e.g., the corresponding PLS model generated based on the relationship between the column X and column Y data) is provided to the exploration 4M_X_Y block 342e via the output of the PLS4M_X_Y block 342d. Similar to the other blocks 342a-342d, the exploration 4M_X_Y block 342e is an instance of the corresponding exploration block definition that the user has dragged and dropped onto the canvas 245, named, and configured.

[0227] In offline graph 340, in addition to 342d, the explore 4M_X_Y block 342e is configured to receive the output generated by the PLS4M_X_Y block 342d, and the user has configured the explore 4M_X_Y block 342e to also receive the direct output of the column Y block 342c as input via line 342f. This configuration allows the explore 4M_X_Y block 342e to enable the user to explore the relationship between the output of the PLS4M_X_Y block 342c and the output of the column Y block 342c, for example, by presenting one or more visualizations and / or statistics. For example, typically, the output of the PLS4M_X_Y block 342c includes one or more predicted values. The Explore4M_X_Y block 342e allows a user to compare one or more predicted values ​​included in the output of the PLS4M_X_Y block 342c with the values ​​of the Column Y block 342c, for example, to determine whether the use of the Column X data 342b in the PLS4M_X_Y model 342d is sufficient to predict the Column Y data 342c.

[0228] It should be noted that in the offline data graph, PLS4M_X_Y block 342d and exploration 4M_X_Y block 342e do not need to evaluate one or more immediately following blocks before their own configuration can be completed. That is, the configuration of each block in PLS4M_X_Y block 342d and exploration 4M_X_Y block 342e can be independent of the evaluation of other blocks and executed at any time. However, since the offline data graph 340 represents one or more data pipelines or data streams, the evaluation of each downstream data block usually requires evaluation of one or more upstream data blocks before the downstream data blocks can be evaluated (of course, unless the receiver or downstream data block receives test or dummy input data set only for the purpose of separate block evaluation). In fact, in some scenarios, the user configures the entire offline data graph 340 as a whole, and / or the entire offline data graph 340 can be evaluated as a whole instead of evaluating on a block-by-block or part-by-part basis.

[0229] 2. Data Analysis Studio-Online Data Module

[0230] Now go to Figure 4B , after the offline data graph of the data model has been completed and evaluated to the user's satisfaction in the data studio, the offline data graph can be transformed or converted into its equivalent online form. In order to transform the offline data graph into its online form, the user can select or activate the online switch or user control 248f on the navigation bar 242, thereby causing the online data graph of the data model to be displayed on the canvas 245. Some offline data blocks may have online paired definitions (e.g., offline and online versions of the "load" data block), other offline data blocks may not require different online counterparts, but are included in the online data module (e.g., "fill NaN" block or "PCA_NIPALS" block), and other offline data blocks may be omitted in the online data module (e.g., "explore" block). The infrastructure and actions performed during the transformation of the offline graph into its online counterpart are provided by the data analysis service. For example, the activation of the user control 248f calls the data analysis service to perform the transformation of the offline data graph into its corresponding online data graph. How the data analysis service performs this transformation is provided in the description of the data analysis service below.

[0231] When an online data graph of a data module is presented on the canvas 245 of the data studio, a user can configure the online data module. Typically, configuring the online data module includes real-time process control data associated with the control process, which will be obtained as input data for the online data module, for example, by defining bindings that associate the online data module with corresponding data sources of the input data. In addition, configuring the online data module can include indicating one or more locations and / or consumers (e.g., by defining bindings) to which output data generated by the online data module will be provided (e.g., one or more consumer DDEs and / or applications, data storage devices, files, historical libraries, process control devices, routines, components, parts, etc.). In an embodiment, configuration and / or modification of data blocks, their corresponding attributes, and interconnection of online data modules are performed in a manner similar to that discussed above with respect to offline data modules.

[0232] If the user identifies a question or problem with the online data module or otherwise desires to modify the online data module, the user can flip or switch the online data module back to its offline representation, for example, by utilizing an offline switch or user control 248d, and the user can further modify and evaluate the offline data graph of the data model as described above. Subsequently, when the user flips or switches the offline data graph back to its online representation, the modified offline data graph is transformed into the corresponding online data graph of the data model.

[0233] Figure 4M Shown with Figure 4L The exemplary offline data graph 340 corresponds to the online data graph 345, and the following also refers to Figure 4A , Figure 4B , Figure 4F-4H ,and Figure 4L Let's discuss Figure 4M .exist Figure 4M In the exemplary scenario depicted in Figure 4L The offline diagram 340 in the embodiment defines the data model according to the expectation or expectation, and the data model is ready for deployment to the online process control system. Figure 4L ), the user has activated the online switch 248f of the data studio, thereby transforming the offline data map 340 into the corresponding online data map 345, as shown in Figure 4M As shown in , the online data graph 345 is presented on the canvas 245 of the data studio. This transformation is performed by the data analysis service of the DDE user interface application, and the specific actions, mechanisms, and architectures utilized by the data analysis service to perform this and other transformations are described in more detail in the following sections.

[0234] It should be noted that although the online data graph 345 and the offline data graph 340 represent the same data model, the sets of blocks and lines of the two data graphs 345, 340 are different. For example, the data pipeline of the offline data graph 340 that starts at the output of the load DB4M block 342a, traverses through the column Y block 342e, and terminates at the input of the explore 4M_X_Y block 342e is omitted from the online data graph 345. This is because the data pipeline is used in the offline data graph 340 to test and verify the offline PLS4M_X_Y block 342d, and is not necessary in the current online environment where the efficacy of the PLS4M_X_Y block 342d has been proven to the satisfaction of the user. However, in some embodiments, the user can choose to include the verification data pipeline in the online data graph 345, for example, if the user expects to have continuous testing and verification of the online data model in the online environment.

[0235] Another difference between the offline data graph 340 and the online data graph 345 is the Load DB4M block. In the offline data graph 340, the Load DB4M block 342a is configured to load data from the offline data source data set 4 of the database M. On the other hand, in the online data graph 345, the Load DB4M block 347a has been transformed into a block that can be connected to an online data source (e.g., an online streaming data source within the process plant 5). The user can configure the Load DB4M block 347a to bind to the desired online data source, and the compilation of the configured Load DB4M block 347a instantiates the binding.

[0236] In the online data graph 345, the Column X block 347b is generally similar or identical to its offline form 342b. However, as previously discussed, the online form of the PLS4M_X_Y block 347c receives only the inputs necessary for the PLS4M_X_Y block 347c to operate in an online environment, i.e., the output of the Column X block 347b.

[0237] In addition, online data graph 345 does not have the counterpart for offline exploration 4M_X_Y block 342e, because the exploration 4M_X_Y block 342e in the offline environment is used to provide the user with a view of how much the drafted data graph 340 can achieve the user's goal. However, in the online data graph 345, the output of PLS4M_X_Y block 347c is provided to "write" data block 347d, which is a type of data consumer data block. Write data block 347d makes the real-time output of PLS4M_X_Y block 347c in the online environment be written to a file or database, as identified in the configuration of write block 347d. Of course, if the user desires in this way, the output of PLS4M_X_Y block 347c can be provided to one or more other data consumers of the data model in addition or alternatively by interconnecting the output of PLS4M_X_Y block 347c with the input of other data consumer blocks. For example, the PLS4M_X_Y block 347c can be connected to a publish block so that the output of the PLS4M_X_Y block 347c is published to the data analysis network 112 and can be used by other data analysis applications. In another example, the PLS4M_X_Y block 347c can be connected to a conversion to control block so that the PLS4M_X_Y block 347c causes changes in the online process control system. For example, the conversion to control block can be configured to convert the output of the PLS4M_X_Y block 347c into an input signal for a process control function, loop, or application within the process plant 5, and cause the input signal to be transmitted to the corresponding process control industry, element, equipment, or component.

[0238] 3. Deployment of data modules

[0239] Typically, online data modules are not evaluated asynchronously (as is possible with offline data modules). Instead, the online data module is first configured (e.g., bound to a real-time data source and / or one or more data consumers / receivers) and then deployed as a whole to execute continuously and interact with the online process control system. A user can deploy a data module to an online process control system, for example, by clicking or activating a "Deploy" user control 248j on the navigation bar 242, thereby notifying the data analysis service to handle the deployment of the online data module. The infrastructure and actions for deploying data modules are described in more detail in the description of the data analysis service. However, typically, when an online data module is deployed, the online data module follows the same compilation and execution process as the offline data module being evaluated (e.g., as described in Fig. 4I However, one or more target environments of the online data module may be different from one or more target environments of its corresponding offline data module, and the online data module is bound to a real-time data source within a process control system or a plant.

[0240] In an embodiment, the DDE user interface application supports "one-click" deployment. That is, when an offline data module has been configured to the user's satisfaction, the user does not need to convert the data module to its online representation and configure the bindings for the data blocks of the online representation responsible for reading and writing data from the real-time data source. On the contrary, during the "one-click" deployment, once initiated by the user, any required bindings for the object data module are automatically determined and configured by the DDE user interface application. In an exemplary scenario, a user can assign a data module to execute on a specific DCS controller, for example, by using a dialog box or window provided by a data studio, which obtains information about the hierarchy of the DCS system. The user can browse the hierarchy and assign the data module accordingly. The DDE user interface application (e.g., data studio and / or data analysis service) then uses the assigned process control system element (in this scenario, a specific DCS controller) to automatically determine the necessary bindings. An exemplary infrastructure and actions for performing one-click deployment are described in more detail in the description of the data analysis service.

[0241] After the online data analysis module has been successfully deployed, any derived values ​​(e.g., descriptive, predictive, and / or prescriptive) generated by its execution can be displayed to the user, for example, via a data dashboard of a DDE user interface application. In an embodiment, the derived values ​​include at least one predictive value, and the corresponding real-time, live one or more data values ​​generated by the process control system 5 for one or more tags or process control elements applied by the predictive value can also be displayed in conjunction with the predictive value.

[0242] C. Data Analysis Dashboard

[0243] As previously discussed, the DDE user interface application includes a second mode of operation, a data analysis dashboard. The dashboard is typically used by a user to view and / or manage modules, which are (i) offline data modules being evaluated (e.g., draft data modules), and / or (ii) online data modules that have been deployed to an online process control system or plant. Using visual and other representations, the dashboard provides the user with a view of the status and other information corresponding to the evaluated offline data model, as well as a view of the deployed online data modules and the real-time or live information being generated by the online data modules. Typically, the data analysis dashboard mode provides an interface for the user, via which the user can monitor and manage online and offline data modules. The user can also terminate the evaluation of any offline data module and the execution of any online data module from the dashboard. Typically, but not necessarily, at least some of the information displayed on the data analysis dashboard is provided to the dashboard 350 by the data analysis service of the DDE user interface application.

[0244] Figure 4N-1 An exemplary user interface 350 presented by a data analysis dashboard of a DDE user interface application is depicted. A first portion 352 of the exemplary dashboard user interface 350 provides current data analysis summary information, such as an indication of the number of online data modules 355 currently being monitored by the DDE user interface application and an indication of live data streams 358 on which the online data modules 355 are operating. As previously discussed, the live data streams 358 are received from one or more data sources that continuously generate real-time data originating from an online process control plant or environment 5 that controls one or more industrial processes, and the executed online data modules 355 have been configured to receive the live data streams 358. The data analysis summary information also includes an indication of the number of offline data modules 360 that are currently being monitored by the DDE user interface application for evaluation. In some embodiments, the dashboard user interface 350 includes one or more other notifications or other information 362 related to the monitored data analysis modules (whether online or offline).

[0245] When the user clicks or otherwise activates one of the summary controls 355, 358, 360, 362, additional summary information corresponding to the selection is presented on a second portion 365 of the dashboard 350. Figure 4N-1 In the example, the user has selected to view the online data module 355 for the current execution (there are two at this moment, namely, FIG. 2 indicated by reference numeral 368, and FIG. 3 indicated by reference numeral 370). Figure 3 For each of the online data modules 360, 370, the second portion 365 of the dashboard 350 indicates its corresponding summary information, such as the name of the module 372, the start time 375 when the module was deployed, and the trend indication 378 of the module's output over the recent time interval (which can be a graph, such as Figure 4N-1 ), the latest prediction results or one or more prediction values ​​380, and / or other information (not shown). It should be particularly noted that on the dashboard 350, the trend indication 378 for each online data module 368, 370 is continuously updated to reflect the continuously generated output of the corresponding data module 368, 370, thereby allowing the user to monitor the execution of the online data module and its continuously generated results in real time.

[0246] In addition, the data analysis dashboard 350 allows the user to click on any summary information associated with any data module 360, 378 to view more details, for example, in a pop-up window, in a dialog box, or in other appropriate viewing mechanisms (not shown). For example, when the user clicks on the name of Figure 2 368, the dashboard 250 can present an online data module diagram of Figure 2 368 and an indication of one or more specific data flows 358 to which Figure 2 368 is bound. When the user clicks on the start information of Figure 2 368, an indication of the creator of Figure 2 368, the user who deployed Figure 2 368, and / or the owner of Figure 2 368 can be presented. Clicking on the trend 378 information of Figure 2 368 allows the user to manipulate and explore the output data trend of Figure 2 368, for example, by extending or shortening the viewed time interval, converting the trend information to another type of visualization (e.g., a bar chart, pie chart, scatter plot, etc.), applying and / or obtaining statistical information about the trend data over a given interval (e.g., average, rolling average, maximum, minimum, etc.), etc. Similarly, clicking on the last prediction 380 information of Figure 2 368 allows the user to manipulate and explore one or more values ​​of the latest prediction, for example, by viewing the time of the last prediction and how often the prediction was made, comparing the last prediction with the current live data value, etc.

[0247] When the user selects User Control 360 to view the currently executing offline data module (in Figure 4N-1 , additional summary information corresponding to the offline data module may be presented in the second portion 365 of the dashboard 350 when the offline data module is not present in the exemplary scenario of FIG. 350. In general, the summary information for the offline data module is similar to the summary information for the online data module, however, instead of indicating the associated live data stream, the summary information for the offline data module may indicate one or more test data files or data streams generated by one or more offline data sources (e.g., test tools, devices, and / or environments) on which the offline data module is executed. In addition, the summary information for the offline data module may indicate the current status, state, and / or progress of its execution.

[0248] In some scenarios, a user can configure and / or deploy an offline data module from a dashboard (rather than from a data studio). For example, a user can monitor the evaluation of an offline data module from a dashboard, and the offline data module successfully completes its evaluation. A user can activate a user control of a dashboard (not shown), via which the user can configure the data module to reference one or more live data sources on which an online data module is executed and data generated by the one or more live data sources. This configuration of an online data module being bound to one or more data sources is similar to the configuration described above, except that it is initiated from a dashboard rather than from a data studio. Alternatively, a user can utilize a one-click deployment for an offline data module via a dashboard.

[0249] When the user selects user control 358 to view the data associated with the module currently bound to the execution online data (in Figure 4N-1 When information associated with online data streams (three in the exemplary scenario of FIG. 1 ) is presented, additional summary information (not shown) corresponding to the online data streams is presented in the second portion 365 of the dashboard 350. The summary information for each live data stream may include an identifier of the data stream, an indication of the data source from which the data stream is being received, an indication of a corresponding process control system tag or other conventional process control system identifier of the live data source, information regarding one or more subscriptions to the data stream and / or publication of the data stream, an indication of one or more online data modules currently executing on the live data stream, a continuously updated visualization of the live data stream (e.g., a line graph, a bar graph, a scatter plot, etc., and / or basic statistics thereof), and / or other information.

[0250] In particular, it should be noted that Figure 4N-1 In the exemplary scenario depicted in FIG. 3 , the data stream overview 358 indicates that there are three live data streams currently being operated by the online data modules, while the online data module overview 355 indicates that there are only two executed online modules. Therefore, one of the two executed online modules 368, 370 operates on two data streams in the live data stream. The user can find this relationship by navigating to view the details of each online data module 368, 370 (which will provide an indication of the data streams to which the corresponding modules 368, 370 are bound), or by navigating to view the details of each data stream 358 (which will provide an indication of the online data module that is being executed to operate each data stream 358).

[0251] Figure 4N-2 An exemplary user interface 382 that may be presented by a data analysis dashboard of a DDE user interface application is depicted. In an embodiment, the user interface 382 is included in Figure 4N-1365 of the user interface 350 shown in FIG. 382. In an embodiment, the user interface 382 is a full screen view.

[0252] The user interface 382 includes one or more tiles or cards 385a-385j, each of which corresponds to a respective executed online data module and may be collectively referred to as a pallet or deck of cards 385x. Each of the cards 385x in the pallet may include information related to the online data module. Figure 4N-1 The information displayed for the executed online data modules 360, 370 is similar to the information displayed for the executed online data modules 360, 370, such as the name of the module, the start time when the module was deployed, the trend indication of the module's output over the most recent time interval, the latest prediction result or one or more prediction values, and / or other information. Although similar to the display for the executed online data modules 360, 370, the trend indication for each card in the card 385x is continuously updated to reflect the continuously generated output of its corresponding online data module, thereby allowing the user to monitor its execution and continuously generated results in real time.

[0253] Each of the cards 385x is resizable and movable, as desired by the user. In an embodiment, when a particular card 385x is in focus, the size of the particular card increases. The card 385x may begin focusing manually, such as when a user clicks on the particular card 385x, hovers over the particular card 385x, and the like. Additionally or alternatively, the card 385x may begin focusing automatically, such as when a particular data module requires urgent attention (e.g., a predicted value crosses a threshold, the data module itself requires user input or user intervention, the severity of the situation sorted in the card 385x, and the like). Other automatically generated indications of the required attention may be indicated on the user interface 382, ​​such as by highlighting or providing some other treatment to a particular card 385x, setting the size of the group of cards 385x according to the corresponding urgency of the group of cards 385, bringing a particular card 385x to the foreground or front of the tray, arranging the cards 385x in order of priority of attention, and the like. In an embodiment, the user may define specific situations in which specific processing will be automatically applied to the card 385x.

[0254] Now return to the data block definition library 252 stored in the DDE user interface application (for example, as shown in Figure 4CThe data block definitions 255 in the library 252 (shown in FIG. 1 ) can be automatically discovered by the DDE user interface application during its startup or visualization. In an embodiment, a lightweight data exchange format (such as a JSON file or document, or other appropriate format) is used to define the data block definitions. The definition file or document for a specific data block includes the block definition name and details the block attributes and connectors that define the specific data block. In some cases, a specific block definition can provide a definition for an offline representation and provide a definition for an online representation.

[0255] Because the DDE user interface application can continuously and dynamically discover block definitions, additional block definitions (e.g., for custom data blocks, synthesized data blocks, and / or other data blocks) can be added to the library 252 at any time when the DDE user interface application is executing. In an embodiment, additional block definitions are generated by a utility application (referred to herein as a "data block definition wrapper"). For example, when a user saves a custom or synthesized data block, the data block definition can be called, as previously described with respect to Figure 4K When the block definition wrapper executes, it creates an instance of the additional block definition and causes a corresponding JSON document or the like defining the additional block definition to be created and stored. For example, the created instance of the additional block definition generates a JSON document and stores it in the library 252. Figure 4K As an exemplary scenario, when a user saves a synthesized block definition 338 , a block definition wrapper executes such that a JSON document or the like for the synthesized block definition 338 is generated or stored.

[0256] During the configuration of a data block (no matter it is offline or online), a DDE user interface application may need to perform a certain function (e.g., business logic) to achieve the configuration experience required for helping users to successfully configure and use data blocks. Since the block definition is dynamically discovered by the DDE user interface application, this function itself is not embedded in the DDE user interface application. Therefore, in an embodiment, when the DDE user interface application is initialized, any associated function specific to a specific data block can also be dynamically loaded. Subsequently, a reference to the dynamically loaded function corresponding to the specific data block is maintained in the block definition of the specific data block, and is used by the DDE user interface application when the instance of the block definition of the specific block is configured. Additional details about block definition and associated functions are provided in the latter part of the application.

[0257] Industrial process monitoring and analysis systems integrated with process control systems

[0258] As above Figure 1-Figure 3 and Figure 4A-Figure 4N-2As seen in the discussion of , the distributed industrial process performance monitoring and / or analysis system or DAS 100 provides a platform that supports data analysis configuration, data modeling, data model execution, data visualization, and streaming services for industrial process plants. As previously discussed, although the various nodes of the monitoring and analysis system 100 are embedded within the process control system or plant 5, typically, the data communication network 112 of the analysis platform 100 exists outside (and independent of) the existing DCS, PLS, health monitoring, and other systems of the process plant 5. In an exemplary configuration, the data analysis network 112 is overlaid on top of the process plant 5, thereby separating the network 112 from most or all of the traditional process control communication networks 10, 70, etc. in the process plant 5. The conventional process control communication network continues to transmit process control data to control, manage, and / or administer control of the processes and operations of the plant 5, while the data analysis network 112 transmits analysis data (which may include a copy of the data transmitted via the conventional process control communication network) to discover knowledge, such as descriptive knowledge, predictive knowledge, and / or prescriptive knowledge, about the operation of the process plant 5. The architecture of the data analysis system 100 allows the data analysis system 100 to be easily added to or integrated into an existing, conventional process plant 5.

[0259] The indications discovered by the data analysis system 100 about the process plant 5 can be used to modify parameters, equipment, operations, and other parts of the process plant 5 to improve the performance of the plant 5 and reduce the occurrence of faults, failures, and other undesirable situations. Advantageously, the data analysis system 100 discovers knowledge about the process plant 5 in real time that is linked to the current, online operation of the process plant, so that the discovered knowledge is descriptive, predictive, and / or prescriptive of the current operation of the process plant 5. Thus, the data analysis system 100 and the process plant 5 form a control loop to control and optimize the performance of the process plant 5.

[0260] exist Fig.4O A high level block diagram 400 of a control loop for controlling and optimizing the performance of a process plant 5 is shown in FIG. Fig.4O, an online process plant 5 generates, operates, and transmits various types of control data 402 via a conventional process control communication network (e.g., network 10, 70, etc.) to control one or more industrial processes and generate process plant outputs 405. The distributed industrial process performance monitoring / analysis system 100 is connected to and integrated with the process plant 5 via an embedded distributed data engine 102x that captures analytical data 408 generated as a result of the process plant 5 controlling one or more processes to produce the outputs 405. As previously discussed, the captured analytical data 408 may include a copy of the first level or higher level process control data 402, as well as the results / outputs of analytical functions performed locally by the DDE 102x and / or by offline and online data analysis modules developed via a data studio of the data analysis system 100. In some cases, the captured analytical data 408 includes new analytical functions generated via the data studio and / or autonomously generated by the DDE 102x.

[0261] The data rational system or platform 100 receives, generates, transmits, and operates on the analysis data 408 to generate analysis output 410. The analysis output 410 may include the discovered knowledge about the process plant 5, such as knowledge describing the current operation of the process plant 5, knowledge predicting the occurrence of faults, failures, time intervals, performance, events, etc. given the current operation of the process plant 5, and / or knowledge that specifies one or more prescriptive actions that can be taken to mitigate the undesirable characteristics of the current plant operation and / or to mitigate the probability of the occurrence of undesirable predicted faults, failures, time intervals, performance, time, etc. given the current operation of the process plant 5. In some embodiments, the discovered knowledge 410 includes knowledge about the analysis data 408 itself. For example, the discovered analysis knowledge 410 may include the best offline data set that can be used to evaluate different offline data modules, a series of steps that have been reused by a data engineer and defined as a new data analysis user program, a new configuration of data blocks defined as a new data analysis technique, and the like. In fact, during testing of the prototype data analysis system 100 integrated into a refinery process plant, new data analysis techniques for industrial process plants were discovered by the control loop 400 and are explained in the following later section.

[0262] At least some of the discovered knowledge included in the analysis output 410 can be provided to a human-machine interface (HMI) 412, such as a data analysis user interface application. Via the HMI 412, a user can explore the discovered knowledge 410 about the process plant 5 generated by the data analysis system 100. In some cases, the exploration of the discovered knowledge 410 includes the user utilizing the data studio to create and execute additional data analysis modules to generate additional discovered knowledge 410 for additional exploration. At some point, based on the body of discovered knowledge 410, a user can make one or more changes 418 to one or more values, parameters, equipment, components, control loops, and / or other current operations of the online process plant 5, thereby optimizing the performance and output 405 of the process plant 5 and / or preventing or preventing the occurrence of faults, failures, and other undesirable situations.

[0263] In some cases, at least some of the discovered knowledge included in the analysis output 410 is provided directly to the process plant 5 to affect or implement one or more regulatory changes, such as in Fig.4O 410. For example, the discovered knowledge 410 may include normative actions, including changes to set points, changes to the configuration of controllers, changes to the priority of process control messages, or changes to some other value, parameter, configuration, etc. The data analysis system 100 may automatically and directly download or otherwise cause the changes to be implemented within the process plant 5 without any user intervention 418, thereby automatically optimizing the performance and output 405 of the process plant 5 based on the discovered knowledge 410 and / or preventing or preventing the occurrence of faults, failures, and other undesirable situations. It should be noted that when the analysis system 100 processes the current analysis data 408 based on the current operation of the process plant 5 and generates the discovered knowledge 410, this branch of the control loop 400 automatically updates the online process plant 5 to improve its current operation in real time. Thus, in contrast to existing analytical techniques that require hours or even days to calculate, determine, and implement prescribed actions, the prescriptive actions generated by the analytical system 100 are optimized for the current operating conditions of the plant 5 and are applied immediately to the process plant 5 and, in some cases, even before any user notices that an unexpected or desired situation is approaching.

[0264] Of course, for optimal implementation of prescribed actions within the process plant 5 as a whole, the control loop 400 requires both the autonomous branch 420 and the HMI control branch 418. For example, certain regulatory actions require human intervention, such as installing a replacement valve, sensor, or other component.

[0265] As previously discussed, the data analysis platform 100 enables analysis data to be streamed between multiple embedded distributed data engines (DDEs) 102x. Any type of first-order data generated by the process plant 5 due to the control process can be streamed. For example, process control data included in signals generated by process control devices (e.g., controllers, I / O cards, field devices, etc.) (which are usually transmitted via traditional process control communication networks for the purpose of controlling the process) can also be streamed in the data analysis network 112 for the purpose of data analysis. Therefore, the content or data included in process control signals, sensor signals, etc. can be copied and / or regenerated and streamed through the data analysis network 112. In addition, the second-order (or higher-order) process control data generated and transmitted via the traditional process control communication network (e.g., data to be historicalized in a process control database or historical library, process control configurations, process control user interface commands, process control network management signals, and any other signals that are traditionally sent and received via traditional process control communication networks due to the control process) can be streamed in the data analysis network 112 for the purpose of data analysis. Additionally, the data analysis network 112 may stream computed data or results of analytical functions or techniques that have been performed on traditional process control data and / or on computed analytical data.

[0266] Thus, the data analytics platform 100 provides both larger scale prediction and optimization simultaneously, in part by binding locally to data sources of the process plant 5, and / or by providing data analytics services or functionality close to data sources within the process plant 5. Only data necessary to support outer loop prediction and optimization need be transferred to the higher level / more capable analytics servers and cloud platforms of the analytics system 100.

[0267] As previously discussed, certain of the plurality of DDEs 102x of the data analysis system 100 are embedded in physical devices within the process plant 5. For example, certain of the plurality of DDEs 102x are each integrated with a corresponding process control device (e.g., controller 11; I / O cards 26, 28; field devices 15-16, 18-21, 42A, 42B, 44, etc.) and / or with a corresponding network routing and management device (e.g., gateway 35, 75, 78; adapter 52a; router 58; access point 52a, 72; etc.). In an embodiment, instead of being integrated into a single device or component of the process plant 5, the DDE can be a stand-alone device attached to a conventional process communication link or network (e.g., networks 10, 70, PLS networks; safety and health monitoring systems, etc.) as a periscope, monitor, or voyeur, and can copy / regenerate selected process control data transmitted via the conventional process communication link or network for streaming through the data analysis network 112 for data analysis purposes.

[0268] In some scenarios, more than one DDE can form a local data analysis cluster, data sources can register and join the data analysis cluster, and through the data analysis cluster, analytical data generated by the registered data sources can be received in the data analysis network 112 as analytical data. In the example, a group of DDEs form a local cluster and announce the existence of the local cluster. The local cluster appears as a single node or a single DDE instance 150 of the data analysis network 112, although the local cluster includes multiple DDEs interconnected via the data analysis network 112. Once a new data source is activated or started within the premises of the process plant 5, the data source scans or looks for local cluster announcements. The data source can detect the announcement of the local cluster and register with the local cluster, thereby joining the data analysis network 112. Subsequently, the registered data sources can request bandwidth from the analysis system 100 (e.g., via their local cluster) and can publish data to their local cluster, to another node of the data analysis network 112, or directly to the analysis system 100. Because the local cluster appears as an instance of the distributed data engine 150, the local cluster locally receives the generated analytical data (e.g., from the registered sources and / or other sources) via the corresponding big data receiver 160 and stores the locally generated analytical data in the corresponding local persistent storage 155. In addition, the local cluster can provide at least some of the stored analytical data to a requesting application (e.g., to another data analysis application, to a data module, to a user interface, to a data studio, to another application, etc.), for example, via a corresponding big data request servicer 165. In some cases, the local cluster can perform corresponding local data analysis functions on the stored data that has been received from the registered data sources and / or on other data streamed within the data analysis network 112, for example, via a corresponding big data request analyzer 170. The results or outputs of the local data analysis functions may be stored locally in the corresponding big data storage 155, and / or may be streamed to one or more DDEs outside the local cluster, for example, via the corresponding one or more data analysis network interfaces 175 of the local cluster, for example, to another local DDE or local cluster, a centralized data cluster, or to a subscribing application.

[0269] In some embodiments, local clusters register themselves with more centralized clusters that receive and store higher-level analytical data and perform corresponding, higher-level data analysis functions. For example, a particular centralized cluster (e.g., a regional cluster) can receive streamed data from all local clusters within a particular area of ​​the plant 5 and can perform data analysis on it. In another example, a particular centralized cluster can receive streamed data from all control loops of a particular type of configuration within the plant 5 and can perform data analysis on it. Similar to the local clusters, the centralized clusters have the appearance of a single node or instance of the DDE 150 in the data analysis network 112.

[0270] Thus, the ability of the distributed industrial process performance monitoring and analysis system 100 to provide DDEs and / or DDE clusters at various localized hierarchies or levels allows fault detection and prediction to be performed close to the data sources of the process plant 5, thereby providing real-time fault detection and prediction corresponding to the real-time data generated by the online data sources. This multi-level or clustered architecture also allows storage of analytical data throughout the system 100, and in fact, throughout the process plant 5, because the analysis system 100 includes portions embedded therein. In addition, the data analysis system 100 provides the ability to access data that has been stored at any DDE and provides a centralized system for analyzing configuration, diagnosing, and monitoring performance, faults, and failures.

[0271] In an embodiment, one or more centralized clusters provide a centralized location for a user or system administrator to establish rules for backup or historicalization of analytical data from multiple DDEs 102x. In an example, one or more centralized clusters are located in the premises of a process plant 5 and serve the process plant 5 as a whole. In another example, one or more centralized clusters are located or hosted in the cloud and serve the process plant 5 as a whole. In some configurations, one or more centralized clusters providing backup or historicalization of process plant 5 also serve other process plants. Typically, as previously discussed, analytical data are permanently stored at each DDE or cluster, such as stored in its corresponding large data storage area 155. In some cases, some analytical data received at a DDE or generated by a DDE can be cached at a DDE or cluster (e.g., based on one or more criteria such as number of subscribers, publication or transmission frequency, etc.) for faster access, when generally speaking, all local analytical data are moved to the permanent storage 155 at a DDE or cluster. Periodically or at predefined times, permanently stored analytical data at each DDE can be backed up, saved, or historized in a long-term data analysis storage, for example, at a centralized analytical data historian accessible via the data analysis network 112. For example, the data analysis historian can be a data analysis historian for the entire plant, and / or can be hosted in the cloud. However, typically, the data analysis historian is independent and separate from any process control data historian. Via a user interface accessing one or more centralized clusters, a user or system administrator can define a set of rules that indicate how often each specific DDE storage area 155 will be backed up, when the backup will occur, where the analytical data will be historized, and so on.

[0272] In an embodiment, one or more centralized clusters provide a centralized location for a user or system administrator to establish rules for replication of analytical data in clusters, nodes, and / or DDEs 102x of a data analysis system 100. For example, the set of replication rules may define which specific analytical data will be replicated in which specific nodes of the data analysis network 112, and how often specific analytical data will be updated in specific nodes. For example, the set of replication rules may define how often the results of analytical function A performed by node A are replicated at node BD (e.g., by streaming), so that the replicated results are available to node BD for performing their corresponding data analysis functions. Similar to historical and backup rules, the set of replication rules may be defined by a user or system administrator via a user interface accessing one or more centralized clusters. For example, a system administrator may manage the set of replication rules using a user interface, and the set of replication rules may be stored at one or more centralized clusters. The one or more centralized clusters that provide management of analytical data replication may be clusters of the same group that provide management of analytical data backup / historicalization, or may be clusters of different groups.

[0273] In an embodiment, one or more centralized clusters provide location services, streaming services (e.g., Figure 1 The centralized clusters 102x may be configured to provide location services, streaming services, data dictionaries, and / or other functions that may be utilized by local clusters, other centralized clusters, and / or separate DDEs 102x to establish analytical data exchange between them. The one or more centralized clusters that provide location services, streaming services, data dictionaries, and / or other functions may be the same group of clusters that provide management of analytical data replication and / or management of analytical data backup / historicalization, or may be different groups of clusters. A system administrator or user may utilize a user interface to access one or more centralized clusters to manage services, dictionaries, and other functions for establishing and providing analytical data exchange between clusters and nodes of the data analysis network 112.

[0274] Figure 4P An exemplary method 450 for providing localized data analysis services is depicted. In an embodiment, a cluster of distributed data engines 102x or DDEs executes at least a portion of method 450. In general, at least a portion of method 450 can be performed by any portion of a distributed industrial performance monitoring and / or analysis system (e.g., system 100). In fact, method 450 can be implemented using any portion of any of the systems, devices, equipment, and / or techniques described herein. However, for simplicity of discussion, method 450 is described below with respect to a cluster of one or more DDEs 102x of an analysis system 100, which appears as a single DDE instance 150, but this is merely one embodiment of many embodiments and is not intended to be limiting.

[0275] The exemplary method 450 includes notifying, by the cluster, of the existence of the cluster (block 452). The cluster is included in a data analysis network 112 of a process control plant 5 that is online and operating to control a process, and the cluster notification may be transmitted through the data analysis network 112, through one or more other networks, via a short-range wireless protocol (e.g., Bluetooth, NFC, etc.), or via any other suitable notification means.

[0276] The method 450 also includes receiving, by the cluster, a response to the cluster's notification from the data source. For example, the response from the data source may be a request for the data source to register with the cluster, and the method 450 may include registering the data source with the cluster and / or with the data analysis network 112 (block 455), thereby joining the data source to the data analysis network 112. The data source may be a device or component included in the process plant 5 and generating data as a result of an online process plant 5 controlling a process. In an example, the data source generates continuous, time series data originating from the controlled process.

[0277] In addition, method 450 includes receiving, by the cluster, data generated by the data source (block 458). For example, the data source may stream the data it generates to the cluster via the data analysis network 112. Additionally or alternatively, the cluster may subscribe to specific data generated and published by the data source. In certain embodiments, the cluster may query the data source for specific data, such as by using a query mechanism described in a later portion of this application. When the data source is a device or component that typically transmits process control data via one or more traditional process control communication networks (e.g., networks 10, 70), the data source may continue to transmit process control data via one or more traditional process control communication networks as usual, while also streaming a copy or replica of the content of the transmitted process control data to the cluster via the data analysis network 112.

[0278] Upon receiving data generated by a data source, the cluster may cache at least some of the received data, e.g., when the received data satisfies one or more caching conditions. Regardless of whether any of the received data is cached, all of the received data is stored locally in the cluster's persistent storage 155.

[0279] The method 450 includes streaming, by the cluster via the data analysis network 112, at least some of the data generated by the data source to a data consumer (block 460). The data consumer may be, for example, another analysis node or cluster, a data analysis application, a user interface and / or user interface application, an online data analysis module, another application, and / or a database or data historian. The data consumer may be bound to the data source and / or to a particular data stream that includes at least some of the data generated by the data source. The particular data that is desired to be received by the data consumer is typically time series data, and may be continuous data.

[0280] The data consumer may have queried the cluster for specific data generated by the data source, for example, by utilizing the query mechanism described in a later portion of this application, and the streaming (block 460) may be in response to the query generated by the data consumer. In an embodiment, the data consumer may subscribe to specific data generated by the data source and published by the data source or by the cluster. At any rate, the cluster retrieves the desired data that has been generated by the data source from its cache or from its local persistent data storage 155 and streams the data to the data consumer via the data analysis network 112 (block 460).

[0281] In some embodiments, method 450 includes performing, by the cluster, one or more data analysis functions or techniques on at least a portion of the data generated by the data source (in Figure 4P 155). One or more analysis functions or techniques may include descriptive analysis, predictive analysis, and / or normative analysis. One or more analysis functions or techniques may be performed by the cluster, for example, each time a request from an online data analysis module, another data analysis application, or a user occurs. In another example, one or more analysis functions or techniques may be automatically initiated or executed by the cluster. The results of the execution of one or more analysis functions or techniques may be returned to the requestor, and / or may be stored locally at the cluster in the permanent data storage 155. In some embodiments, one or more analysis functions or techniques are performed on data that has been generated by multiple data sources registered with the cluster and has been stored (and optionally cached) at the cluster.

[0282] Because the cluster receives first-order data generated by data sources within the process plant 5 and is placed close to these data sources within the process plant 5, the cluster is referred to as a "local" cluster in this article. In some embodiments, method 450 includes a local cluster that detects notifications generated by a centralized cluster (e.g., a regional cluster, an area cluster, a full plant cluster, etc.). The local cluster can register itself with the centralized cluster and can stream at least some of the local analytical data stored in its cache and / or its permanent data storage 155 to the centralized cluster. For example, the analytical data streamed to the centralized cluster can include data generated by the data source and / or the results of one or more analytical functions performed by the local cluster. Each time a request initiated by the centralized cluster occurs, the local cluster can stream data to the centralized cluster, and / or the local cluster can publish data subscribed by the centralized cluster.

[0283] In some embodiments, the method 450 includes historizing or backing up the data stored in the local persistent storage 155 of the cluster (in Figure 4P 100). Data backup may be initiated by the cluster, or data backup may be initiated by the centralized analytical data historian. In an embodiment, the cluster and the centralized analytical data historian may have a publisher / subscriber relationship. In an embodiment, the timing and / or amount of data to be backed up from the cluster may be defined by a system administrator of the system 100. The data to be backed up may be transmitted and / or streamed from the cluster to the analytical data historian for long-term storage and backup.

[0284] Figure 4Q An exemplary method 470 for providing centralized data analysis services is depicted. In an embodiment, a cluster of distributed data engines 102x or DDEs 102x executes at least a portion of the method 470. In general, at least a portion of the method 470 may be performed by any portion of a distributed industrial performance monitoring and / or analysis system (e.g., system 100). In fact, the method 470 may be implemented using any portion of any of the systems, devices, equipment, and / or techniques described herein. However, for simplicity of discussion, the method 470 is described below with respect to a cluster of one or more DDEs 102x of the system 100, which appears as a single DDE instance 150, but this is merely one embodiment of many embodiments and is not intended to be limiting.

[0285] Exemplary method 470 includes notifying, by the centralized cluster, of the existence of the centralized cluster (block 472). The centralized cluster and Figure 4P, because data sources are not usually registered directly to the centralized cluster. Instead, in some cases, local clusters or other types of clusters are registered to the centralized cluster, and the centralized cluster performs data analysis functions on the data received from these other clusters. However, similar to the local cluster, the centralized cluster is included in the data analysis network 112 of the process control plant 5, which is operated online to control the process, and the centralized cluster notification can be transmitted, streamed, and / or broadcasted through the data analysis network 112. As used herein, a "centralized" cluster generally refers to a cluster to which other clusters are registered. A centralized cluster can serve a control loop (e.g., a "control loop" cluster), a region of a process plant (e.g., a "regional" cluster), a region of a process plant (e.g., a "regional" cluster), an entire process plant (a "full plant" cluster), multiple process plants (an "enterprise" cluster), and the like. Typically, a centralized cluster includes multiple DDEs interconnected via a data analysis network 112, and the multiple DDEs have the appearance of being a single, single DDE instance 150.

[0286] The method 470 also includes receiving, by the centralized cluster, a response to the centralized cluster notification from another cluster. For example, the response from another cluster may be a request for another cluster to register with the centralized cluster, and the method 470 may include registering the other cluster with the centralized cluster (block 475). The registered cluster may be, for example, Figure 4P The registered cluster can be a local cluster such as the local cluster in , or the registered cluster can be another centralized cluster.

[0287] In addition, method 470 includes receiving, at the centralized cluster, streamed data from a registered cluster (block 478). For example, a registered cluster may stream a portion of its stored and / or cached data to the centralized cluster via the data analysis network 112. Thus, the streamed data typically includes time series data, which may be, for example, continuous data. Additionally or alternatively, the centralized cluster may subscribe to specific data published by a registered cluster. In some embodiments, the centralized cluster queries a registered cluster for specific data, for example, by using a query mechanism described in a later portion of this application. The streamed data may include data generated by a registered cluster, and / or may include data streamed to a registered cluster from a data source and / or from other clusters.

[0288] In some embodiments, the centralized cluster caches at least some of the streamed data it receives, for example, when the received data satisfies one or more cache conditions. Regardless of whether any of the data received at the centralized cluster is cached, all of the received data is stored locally in the persistent storage 155 of the centralized cluster.

[0289] At box 480, method 470 includes performing one or more data analysis functions or techniques on at least a portion of the received, streamed data (e.g., data stored in its cache and / or its permanent storage area 155). The one or more analysis functions or techniques may include descriptive analysis, predictive analysis, and / or normative analysis. For example, one or more analysis functions or techniques may be performed by the centralized cluster each time a request from an online data analysis module, another data analysis application, or a user occurs. In another example, one or more analysis functions or techniques may be performed automatically and / or periodically by the centralized cluster. The results or outputs of the execution of one or more analysis functions or techniques may be returned to the requestor and / or may be stored locally in the permanent data storage 155 of the centralized cluster. In some embodiments, one or more analysis functions or techniques are performed on data that has been generated by multiple registered clusters and that has been stored (and optionally cached) at the centralized cluster.

[0290] The method 470 includes streaming, by the centralized cluster via the data analysis network 112, at least some of the results or outputs of the one or more analysis functions or techniques to one or more data consumers (block 482). The one or more data consumers may include, for example, another analysis node or cluster, a data analysis application, a user interface and / or user interface application, an online data analysis module, another application, and / or a database or data historian. The one or more data consumers may be bound to the centralized cluster, to a particular analysis result / output, and / or to a particular data stream including a particular analysis result / output.

[0291] One or more data consumers may have requested the centralized cluster for specific analysis results / outputs, for example, by utilizing the query mechanism described in a later portion of this application, and the streaming (box 482) may be in response to queries generated by one or more data consumers. Additionally or alternatively, data consumers may subscribe to specific analysis results / outputs published by the centralized cluster. At any rate, the centralized cluster obtains the desired data from its cache or from its local permanent data storage 155 and streams the desired data to one or more data consumers via the data analysis network 112. In some cases, once the desired analysis result / output data is generated by one or more data analysis functions or techniques, the desired analysis result / output data is streamed.

[0292] In some embodiments, method 470 includes registering one or more additional local clusters with the centralized cluster and receiving corresponding analysis data from the one or more additional local clusters (in Figure 4Q4. In these embodiments, performing one or more data analysis functions or techniques (block 480) may include performing data analysis functions or techniques on analysis data received at the centralized cluster from the plurality of local clusters.

[0293] In some embodiments, method 470 includes historizing or backing up data stored in local persistent storage of the centralized cluster (e.g., data stored in big data storage area 155) (in Figure 4Q ). Data backup can be initiated by a centralized cluster, or data backup can be initiated by a centralized analytical data historian. In an example, a centralized cluster located in a centralized analytical data historian can have a publisher / subscriber relationship. The timing and / or quantity of data to be backed up from a centralized cluster can be defined by a system administrator of the system 100 at the centralized cluster or at another centralized cluster. For example, a system administrator can use a user interface to manage a set of rules for backups and / or portions thereof within the system 100, and the set of rules can be stored at a centralized cluster. The data to be backed up can be transmitted and / or streamed from the centralized cluster 152 and the analytical data historian for long-term storage and backup.

[0294] Additionally or alternatively, in certain embodiments, the method 470 includes providing a set of rules for replication of analytical data in clusters, nodes, and / or DDEs 102x of the data analysis system 100. For example, the set of replication rules may define which specific analytical data will be replicated in which specific nodes of the data analysis network 112, and how often specific analytical data will be updated in specific nodes. For example, the set of replication rules may define how often the results of analytical function A performed by node A are replicated at nodes BD, so that the replicated results are available to nodes BD for performing their corresponding data analysis functions. Similar to the historization and backup rules, the set of replication rules may be defined by a system administrator of the system 100 at one or more centralized clusters. For example, a system administrator may manage the set of replication rules using a user interface, and the set of replication rules may be stored at one or more of their centralized clusters.

[0295] In some embodiments, method 470 includes detecting a centralized cluster of notifications generated by another centralized cluster. For example, the notified cluster may be a regional cluster, an area cluster, or a full plant cluster located within the premises of the process plant 5. In some cases, the notified cluster may be hosted in the cloud and may provide analytical services for a portion of the plant 5, the entire plant 5, or multiple plants. The centralized cluster may register itself with the notified cluster and may stream analytical data stored in its cache and / or its permanent data storage 155 to the notified cluster. For example, the centralized cluster may stream at least some of the results of analytical functions that the centralized cluster has performed. The centralized cluster may stream data to the notified cluster with which the centralized cluster is registered, and / or the centralized cluster may publish data subscribed by the notified cluster.

[0296] In some embodiments, method 470 includes providing location services, streaming services (e.g., Figure 1 115), and / or may be used by other local or centralized clusters and individual DDEs 102x to establish a data dictionary for analytical data exchange between them (in Figure 4Q not shown).

[0297] Industrial performance monitoring / analysis services

[0298] The functions of enabling the transformation of offline data graphs to online data graphs, the execution of both offline and online blocks and modules, and the analysis represented by the graphs by the data studio are accomplished by analysis services provided by an industrial performance monitoring / analysis system (e.g., data analysis system (DAS) 100). Analysis services are interchangeably referred to herein as "services," "services," or "analysis services." Any or all of the analysis services described herein may be combined with Figure 1 Figure 2 Figure 3 , and / or Figure 4A-Figure 4Q any or all of which may be operated and / or combined with Figure 1 Figure 2 Figure 3 , and / or Figure 4A-Figure 4Q The invention may operate with any number of features and / or techniques described in the corresponding sections of the present disclosure.

[0299] In general, analytical services can compile, execute, and / or transform offline graphs (e.g., in a data studio and / or dashboard) and can compile, execute, and create online graphs (e.g., in a data studio and / or dashboard). The analytical services facilitate the exploration of large data sets - big data - without necessarily requiring knowledge of one or more specific types of data and without requiring the user of the analytical services to perform low-level programming to perform the analysis. Figure 5A, an exemplary block diagram architecture of analysis service 500 is shown in the context of a portion of system 100. More specifically, analysis service 500 is one of a plurality of computer-implemented processes, each of which is associated with various software entities (e.g., computer-executable instructions and data stored on one or more tangible, non-transitory computer media). As will be described in greater detail below, analysis service 500 interacts with the broader system 100 in large part via data generated and / or stored by various entities in system 100.

[0300] As described above, in an embodiment, the DDE user interface application is a web-based application. Figure 5A An embodiment of an analysis service 500 implemented in such an embodiment is depicted; that is, utilizing a web-based DDE user interface application. In its broadest sense, the analysis service 500 implemented in this manner includes client-side, server-side, and back-end computer-implemented processes. For example, as in Figure 5A As depicted in , the analysis service 500 includes a web client process 502, a web server process 504, an execution service process 506, and one or more job processes 508. Each process 502, 504, 506, 508 can be executed on one or more processors, executed in one or more workstations or servers, and executed in one or more physical and / or geographical locations. That is, although one instance of the web client process 502 can be executed on a workstation remote from the server on which the web server process 504 is executed, another instance of the web client process 502 can be executed on the same server on which the web server process 504 is executed, in fact, can be run on the same processor. As another example, the execution service process 506 can be run on a workstation within the confines of a process control environment, while one or more job processes 508 can be executed on one or more processors (e.g., a server farm) of a distributed process environment that is placed remote from the process control environment. In short, the analysis service 500 is designed to be flexible enough so that there is no requirement whether the various processes 502, 504, 506, 508 are executed on the same processor, workstation, processor bank, executed in one or more virtual machines, and / or executed in the same physical or geographic location. Advantageously, the architecture not only facilitates remote access to data analytics provided by the analysis service 500, and the ability to utilize distant processors and computing resources to perform analytics, but also allows the analysis service 500 to consume and / or analyze data across multiple process plants, however, their geographic locations may be different.

[0301] The web client process 502 operates according to principles that are not so different from commonly understood principles, but according to the description of the DDE user interface application described above. For example, the web client process 502 includes multiple software entities, which include, for example: a view entity 510, which presents the DDE user interface application (e.g., the canvas 245 and user controls 248a-n of the data analysis studio 240, the data analysis dashboard, etc.) to the user; a view model entity 512, which manages the conversion and transformation of application data, such as block states to a form that can be utilized by the user interface, and which generates views that provide views from online data modules and / or otherwise indicate the operation of online data modules; an application entity 514, which is a software entity (i.e., a web-based application) that is downloaded to the web client process 502 and resides on a client workstation or device that the user uses to interact with the DDE user interface application; and a data service entity 516, which passes data to and from the DDE user interface application.

[0302] The data service entity 516 receives data returned from various jobs executed, for example, in response to user input and requests. As described above, and described in further detail below, the DDE user interface application can request various analyses to be run on data from the process control environment (in some cases, currently being generated by the process control environment) in an exploratory mode for discovering relationships between different data (or data of known relationships) (e.g., in a data analysis studio), or in a predictive mode for performing real-time (or near real-time), continuous analysis to predict at least one value in the process control environment (e.g., in a dashboard). As used herein, the phrases "real-time" and "or real-time" mean "occurring simultaneously enough to remain useful for adjusting or otherwise affecting the current operation of the process plant." For example, when one or more blocks are placed on the canvas 245 and one or more of the blocks are executed, the results of the execution can be returned to the application entity 514 via the service entity 516 (e.g., using a web socket protocol connection from the web server process 504) and displayed to the user via the viewing entity 510.

[0303] At the same time, the data service entity 516 can communicate with the web server process 504 via other protocols (e.g., HTTP) to request and receive various types of information necessary for the operation of the application entity 514. As an example, when the application entity 514 is first executed, it can request and receive the latest block definition 255 from the block definition library 252 via the data service entity 516 using the HTTP protocol. Alternatively, the application entity 514 can initially receive only the category and list of available block definitions 255, and when the user selects, the application entity 514 can request and receive the specific block definition 255 selected by the user via the data service entity 516 using the HTTP protocol.

[0304] Turning now to the web server process 504, one or more server communication entities 518 communicate with the web client process 502. As described above, the communication between the one or more server communications can implement protocols such as HTTP, HTTPS, and web socket protocols, but the specific protocols described should not be considered limiting, because any other protocol suitable for the application can be implemented. In addition to communicating with the web client process 502, the server communication entity 518 can receive data from one or more processes that execute instructions (e.g., data analysis, data loading, data filtering, etc.) requested according to one or more blocks (e.g., illustrated programming elements) placed on the canvas 245. Data can be received from the process via, for example, a web socket (not shown) in the server communication entity 518, and the data is also transmitted to the web client process 502 via the web socket protocol.

[0305] The data service entity 520 provides data other than the data received from the process executing the instructions associated with each block to the web client process 502. For example, the data service entity 520 can obtain the block definition 255 from the block definition library 252 and transmit the block definition 255 to the application entity 514 and / or can transmit status information about the block execution from the execution service process 506 to the application entity 514 so that the status can be displayed by the viewing entity 510.

[0306] Go to Figure 5B, depicting the data service entity 520 in more detail. Specifically, the data service entity 520 includes a copy of (or a pointer to) the block definition 255 in the block definition library 252 and a set of data plug-ins 523. Each of the data plug-ins 523 is a set of computer executable instructions that conform to an interface that can be called from the application entity 514 to perform a specific job process. Each of the plug-ins 523 is independent of the application entity 514, and is loaded by the application entity 514 when the application entity 514 encounters metadata specifying the plug-in 523 to be loaded. The plug-in 523 may include logic specific to the application and / or the operating environment in which the analysis service 500 operates. That is, the set of plug-ins 523 for the process control environment that implements analysis service 500 may be different from the set of plug-ins for the financial services that implement analysis service 500 (remember, analysis service 500 facilitates the exploration of large data sets - big data - without necessarily requiring knowledge of one or more specific types of data and without requiring users of analysis service 500 to perform low-level programming to perform analysis), and may in fact be different from a set of plug-ins for a different process control environment that implements analysis service 500.

[0307] The separation of block definitions 255 from application entities 514 allows application entities 514 to use and deploy different block definitions depending on the needs of the customer. Block definitions can be created, added, modified, and / or removed without affecting the underlying operation of application entities 514 because logic specific to the application and / or operating environment is not hard-coded into application entities 514. By providing plug-ins 523 and block definitions 255 separately from application entities 514, application entities 514 can operate with similar functionality regardless of the specific block definitions 255 and plug-ins 523 required for a particular application.

[0308] Reference again Figure 5A As described above, the application entity 514 operates to facilitate the offline graph (e.g., Figure 4L240 in the offline diagram). To create the offline diagram, the user selects one or more blocks to place on the canvas 245 (e.g., by dragging), and "wires" the blocks together so that data is transferred between the blocks. Each of these blocks is an instance of a template block stored as a block definition in the block definitions 255 in the block definition library 252. When the user activates the user control 248m, the application entity 514 causes the viewing entity 510 to display the available categories of block definitions 255 and / or the available block definitions 255, from which the user can select a block to place on the canvas 245. In an embodiment, the block definition library 252 is stored in a storage device shared by one or both of the execution service process 506 or the web server process 504, and metadata in the block definition library 252 (e.g., block definition name, block definition category, etc.) is transmitted to the application entity 514, wherein the block definition is transmitted to the application entity 514 only when the block is selected to be placed on the canvas 245. Alternatively, when the application entity 514 is instantiated in the web client, the block definition library 252 is transferred to the application entity 514 as a whole and remains resident on the web client throughout the execution of the web client process 502. The master copy of the block definition library 252 can exist in a database (not shown) within the process control environment, in a cloud storage device accessible via a network, on a workstation, etc.

[0309] The block definitions 255 can be categorized according to the function of each block. Figure 5A The block definitions 255 are depicted divided into each of a number of depicted categories 521, but Figure 5A It is not intended to suggest that block definitions 255 that are categorized into any particular category 521 must be stored together, or must be stored separately from other block definitions 255. While this may be the case in some embodiments, in other embodiments, the block definitions 255 are not stored in any particular order, but rather each may be tagged with metadata that may indicate the category to which the block definition belongs. The metadata for any given block definition 255 may also indicate, by way of example and not limitation, the number of inputs and outputs, the properties required for execution of the block, the UI control category for each property, when to enable / disable control of each property (i.e., under what circumstances), plug-in information associated with the property, the default value of the property, and the like.

[0310] In many embodiments (but not all), a block includes properties that may or must be specified before the block can be compiled and executed. Since the block definition 255 is not necessarily built into the application entity 514, the values ​​of the properties from which a user can select a particular block may not be predetermined and / or provided to the application entity 514 when the application entity 514 is instantiated. Figure 5Cis a flow chart depicting a method 551 for presenting a property box for a block placed on the canvas 245. When a block is placed on the canvas 245, the application entity 514 obtains the corresponding block definition 255 from the data service entity 520 (or in an embodiment, from the database 529) (block 553). Thereafter, the application entity 514 may receive a command to display a property box for the block placed on the canvas 245 (block 555), for example, when a user double-clicks on the block.

[0311] When the application entity 514 receives a command to show the properties of a block (box 555), the application entity 514 parses the block definition property by property. For each property, the application entity 514 obtains metadata for the property (box 557), parses the metadata for the property to find plug-in information (box 559). If the application entity 514 finds plug-in information for the property (box 561), the application entity 514 finds and loads the specified plug-in (e.g., from the plug-in 523 in the data service entity 520) (box 563). The application entity 514 calls the plug-in executed by the metadata of the property to obtain the required property value (box 565). On the other hand, if the application entity 514 does not find the plug-in information for the property (box 561), the application entity 514 finds the default one or more values ​​of the property in the metadata of the property (box 567).

[0312] Regardless, having called the plug-in specified by the metadata of the property to obtain the property value (box 565) or discover one or more default values ​​for the property (box 567), the application entity 514 finds the UI control type (e.g., text box, drop-down selection, radio button, check box, etc.) in the metadata of the property (box 569) and adds the one or more values ​​and controls to the property box (box 571). If additional properties are present in the block definition (box 573), the application entity 514 obtains the metadata for the next property (box 557), and the method continues until there are no more additional properties (box 573). When no additional properties are found in the box definition, the application entity 514 displays a property dialog box (box 575) for the user to set the property.

[0313] In some embodiments and / or for some block definitions 255, one or more first attributes of the block may be displayed in an inactive or disabled state until one or more second attributes of the block are configured. Once the one or more second attributes are configured, the application entity 514 may re-execute one or more steps in the method 551 and / or may re-execute one or more of the plug-ins 523 associated with the first attributes.

[0314] For example, assume that a user places a "load" block on the canvas 245. The application entity 514 obtains the block definition 255. In an embodiment, the block definition 255 of the load block provides the application entity 514 with metadata about the block, and specifically indicates that the load block has three properties: block name, selected database (database name), and selected dataset (dataset name) to pull from the selected data. When the property configuration dialog box is triggered (e.g., by double-clicking on the load block), the application entity 514 needs to determine what to display. The application entity 514 can determine that there is no plug-in information in the metadata of the block name property, and instead find a default value, such as "load <##>". The application entity 514 can also find the control type designation text box for the block name indicated in the metadata of the block name property. The application entity interprets the default value (e.g., "load 01") and places it into the dialog box as a text box.

[0315] The application entity 514 that parses the block definition finds metadata for the database name attribute. Examining the metadata for the database name attribute, the application entity 514 finds plug-in information for the attribute and, accordingly, discovers, loads, and calls the specified plug-in. The specified plug-in (written for a specific application and / or operating environment (e.g., for a specific process control environment)) is programmed to discover a list of database names (and associated locations) from which data sets can be loaded. Having received the list of database names, the application entity 514 parses the metadata for the database name attribute and determines that it should be displayed in a drop-down selection control. The application entity 514 adds a drop-down selection control to a property dialog box in which the list of database names is returned by the plug-in.

[0316] The application entity 514 of the parsing block definition finds the metadata for the data set name attribute. The metadata for the data set name attribute specifies the plug-in and indicates that the data set name attribute is a drop-down select control, and also indicates that the control must be disabled until a database name is selected by the user. No more attributes are found in the block definition of the loaded block, and the application entity 514 displays a dialog box. Once the user selects a name from the database name drop-down select control, the application entity 514 knows (according to the data block definition) to call the plug-in specified in the metadata for the data set name attribute, passing the selected database name to the called plug-in as an argument. The plug-in returns the names of the datasets available in the selected database name, and populates the drop-down select control of the dataset name attribute with the names of the available datasets, and displays the dialog box again, this time enabling the control instead of disabling it. The user can then select a dataset name to complete the configuration of the data block.

[0317] Of course, once a block is placed on the canvas 245, after the block is configured to specify any desired properties, the block can be executed (i.e., the programming instructions specified in the block definition can be executed) so that any downstream blocks (i.e., any blocks having inputs "wired" to the outputs of the block) will have valid inputs from which valid outputs are produced. Figure 4L 340, for example, the load DB4M block 342a must be evaluated or executed before the block column X 342b and the column Y 342c can be configured because the configuration of the block column X 342b and the column Y 342c is based on the user selection from the output of the load DB4M block 342a. On the other hand, and with additional reference to Figure 4L Although the PLS4M_X_Y block 342d can be configured independently of the evaluation of the blocks Column X 342b and Column Y 342c, the blocks Column X 342b and Column Y 342c must be evaluated before the PLS4M_X_Y block 342d can be evaluated based on the input data set loaded into the offline data map 340.

[0318] The execution and evaluation of blocks and / or modules is asynchronous. This allows the user to continue to modify the block or module while it is being evaluated. For example, a user can start the execution of one block while continuing to edit and / or configure one or more other blocks. Advantageously, each block that can be compiled and executed separately can be evaluated and the results explored before selecting and / or configuring and / or executing downstream blocks. Therefore, a priori knowledge of the expected output of a particular block is not necessary, and it is not even necessary to know what the next block in the data flow will be before seeing the results of any particular block.

[0319] Any execution of the graph, offline or online, involves executing the functions of the service process 506 and the job process 508. In general, as previously described, any process 508 can be executed on one or more processors (which may or may not be one or more of the same processors) on which the service process 506 and / or the web server process 506 execute, on one or more processors on which the web client process 502 executes, and / or on one or more separate processors (e.g., processors on a cloud computing platform), and can be executed on one or more virtual machines configured on one or more processors. In addition, each job process 508 can be executed in a different target environment, for example, by executing each job process 508 in a dedicated virtual machine configured for the target environment. Each of the job processes 508 generally represents a portion of the code to be executed—in some instances, a particular job process 508 will execute the target script / code associated with a particular block, while in other instances, the instructions associated with a single block will be divided into smaller script / code segments for execution in multiple job processes 508.

[0320] Specifically, when the instructions associated with a single block are divided into small scripts / code segments so that they can be executed by different job processes, the different job processes can cooperate to achieve a form of parallelization. As used herein, "parallel computing" is used to represent the common practice of dividing tasks into smaller units and executing them in parallel; "multithreading" represents the ability of a software program to run multiple threads (if resources are available); and "distributed computing" represents the ability to spread processing across multiple physical or virtual machines. In principle, distributed computing can expand outward without restrictions. In view of these concepts, it should be understood that executing instructions on a distributed platform is not the same as executing instructions in a distributed mode; in the absence of explicit instructions to support distributed processing, instructions will be executed locally.

[0321] The ability to parallelize tasks is an inherent property in the definition of the task itself. Some tasks are easily parallelized because the computations performed by each process are independent of all other processes, and the desired set of results is a simple combination of the results from each process; we call these tasks "embarrassingly parallel".

[0322] Certain tasks require more effort to parallelize. Specifically, these "linearly parallel" tasks are those in which the calculations performed by one process are independent of the calculations performed by another process, but the desired set of results is a linear combination of the results from each process. For example, a "mean calculation" block can be defined by an instruction that calculates the average of a set of values ​​in a distributed database, in which a single set of data is stored across multiple physical storage devices. To give a more specific example, assume that the mean calculation block calculates the average temperature across a series of 300 bioreactors, each of which stores temperature data in the memory of an associated controller. The execution of the mean calculation block can be parallelized by assigning a set of temperature values ​​for the 300 bioreactors to each of a plurality of processes, and then calculating a "grand" average as a weighted average of the averages determined by each of the plurality of processes.

[0323] Tasks where the data must be organized in a meaningful way are harder to parallelize. "Data-parallel" tasks are those where the calculations performed by each process are independent of all other tasks, as long as each process has the "right" block of work. This might include, for example, calculating a separate temperature average for each of the same 300 bioreactors above (rather than an average across all 300 of them), assuming there are no cross-effects among the bioreactors. If each of these processes had temperature data for a single one of the bioreactors, then these tasks could be parallelized.

[0324] However, in order for such tasks to be data parallel, the data must be organized in blocks that align with the tasks. This may be the case if each of the 300 bioreactors in the above scenario stores its temperature data in a single corresponding database or location. However, if the data for all 300 bioreactors is stored in a single database and is not organized in any way within the database, the data will need to be reorganized before any type of analysis can occur. The reorganization of the data can be handled in the system described herein by other blocks in the diagram that are constructed to perform the analysis (e.g., by a data filtering block, a query block, etc.).

[0325] It is the responsibility of the execution service process 506 to create and manage the job process 508 and the parallelization and distribution of the job process in each processor. When the module or block is executed, no matter the module or block is executed as part of the online diagram or offline diagram, the configuration of the module or block is sent from the web server process 504 to the execution service process 506. In an embodiment, the configuration is sent as a JSON (Java Script Object Representation) file, however, the configuration file can utilize any data format suitable for language-independent, asynchronous browser / server communication. The configuration file includes the local source code of the environment in which the analysis (or part thereof) represented by the diagram 602 will be executed, as well as the values ​​of the environment properties and variables required for its execution.

[0326] Since a block definition does not require the block to execute in any particular environment, once a block (or a module that includes the block) is configured to select a target environment, new target environments can be added to those available in the analysis service without rewriting applications, block definitions, or even stored or executed blocks and / or modules.

[0327] Similarly, new block definitions 255 may be added to the block definition library 252 at any time without affecting any of the previously constructed modules or changing any of the operations of the analysis service 500 as a whole or the application entity 514 in particular. Figure 5B In an embodiment, the creation and addition of new block definitions are completed by the algorithm definition wrapper 525. In the algorithm definition wrapper 525, a user or developer can use a definition generator 527 to create a definition by developing an algorithm. The definition generator 527 generates a definition 255' and stores the definition 255' in the block definition library 252, such as in 529. As will become clearer in the later part of the specification, each block definition 255 can have a corresponding data plug-in 523, and the data plug-in 523 can be stored in a location known to the analysis service 500 (e.g., database 531). The data service entity 520 can obtain the block definition 525 and the data plug-in 523 when the application entity 514 is initialized / instantiated, and can provide them to the application entity 514.

[0328] Alternatively, instead of creating a new block definition, in some embodiments, a user-defined block definition may not have an associated algorithm, but may include attributes into which the user may place the user's own code. That is, one of block definitions 255 may allow the user to input the user's own algorithm into the block as an attribute.

[0329] As used herein, the terms "parameter" and "parameters" refer to one or more properties included in a configuration file and passed as parameters to one or more blocks / one or more modules of an execution service by way of the configuration file, respectively. The properties passed as parameters in the configuration file may include, for example, file paths, data set names, columns to be selected, confidence levels, and the number of components expected in the results of the PCA analysis, as well as any other information required for the compiler entity 526 to compile the executable code and the job process 508 to execute the compiled instructions. That is, not all properties of a block or module are required for execution - certain properties of a block or module, for example, may specify or otherwise relate to how the block or module is displayed in the data analysis studio and have no effect on how data is collected, manipulated, or processed / analyzed.

[0330] In an embodiment, the configuration file includes the definition of blocks and / or modules, and also includes any attributes required for compiling and executing blocks / modules. In an alternative embodiment, the configuration file only includes the identity of the block and the required configuration parameters, and the block definition is obtained from a memory (e.g., from a block definition library 252). In any case, the configuration parameters may be different depending on the block definition. Some blocks may not have configuration parameters, while other blocks may have one, two, or more configuration parameters. In addition, configuration parameters may be required or optional. For example, a data loading block (a block that loads a data set) or a query block (a block that searches for specific data in a data set) may need to formulate a data path for the location of the data to be loaded or queried. However, a column selection block may have "all columns" as a default selection, and therefore may not require a specific, forward-looking configuration for the selection of a subset of columns.

[0331] Other parameters in the configuration file may include environment parameters. By way of example and not limitation, the configuration file may include: specifying, for example, whether the job flow or a portion thereof will be executed offline or online; the target execution environment (e.g., Python, PySpark, local Spark, etc.); whether the execution will be local or distributed; the configuration of the distributed environment; an indication of the streaming data source to which the job flow or a portion of the job flow will be bound; the option to create a new job, or to bind and continue to execute a persistent job; the option to cache data across persistent jobs; the option to include validation variables in the execution of the online graph for evaluating the accuracy of the execution model; or other environment variables.

[0332] Configuration of blocks, modules, and / or environment parameters can occur in any of a variety of ways. As described above, for example, many parameters are passed to a configuration file based on properties set in the corresponding block or module. In the process of building a graph, it is often (but not always) necessary for a user to configure and execute a particular block before a downstream block can be configured and / or executed. This is the case where a user is using a first block to load data and a second block downstream to select columns from the data - the load block must be configured before the load block can be executed (e.g., with a path to load data from, a selection of loaded data, etc.), and must be executed before the columns available in the data are known to the second block so that the user can select the columns.

[0333] Alternatively or additionally, once the execution of a block or module is requested, one or more parameters can be added to the configuration file. For example, this may be the case when a user does not specify one of the properties of a block or module. This may also be the case when one or more properties are programmed to be specified only once execution is requested. In an embodiment, for example, the data analysis studio prompts the user to specify when to select a block or module for execution, the target environment for execution, and / or the target processor or processor library on which the block or module is executed. In addition, in certain embodiments, one or more parameters in the configuration file can be passed from the data analysis studio environment itself. Parameters such as preferred execution environments, restrictions on physical locations where processing can / must occur (e.g., preventing or requiring cloud execution), etc. can be specified in the application itself for all blocks / modules executed from within the application. Once the execution of any particular block or module is requested, these parameters are passed to the configuration file.

[0334] Anyway, still refer to Figure 5A , a job listener entity 522 receives an execution request having a configuration file for one or more blocks or one or more modules to be executed, and creates one or more job manager entities 524 corresponding to the one or more blocks and / or one or more modules for which execution is requested. The job manager entity 524 receives the configuration file and, based on the specified target execution environment, sends the configuration file to one or more of the graph compiler entities 526 to be compiled into instructions that can be executed by a processor in the specified target environment. The graph compiler entities 526 can be designed so that each of the graph compiler entities 526 is operable to compile the configuration file into any of a number of specified target environments, or can be designed so that each of the graph compiler entities 526 is operable to compile a configuration file that specifies only one specific target environment. In either case, the output of the job compiler entity 526 is computer-readable instructions that can be executed by a processor in the specified target environment.

[0335] The job manager entity 524 that sends the configuration file to the graph compiler entity 526 sends the compiled output from the graph compiler entity 526 to the job executor entity 528. The job executor entity 528 determines which resource or resources (e.g., processor resources) are available to execute the compiled output based on the specified configuration parameters including the target environment for the job, whether the job should be distributed, whether the job should be local or remote, and any / or other variables (including but not limited to one or more sources of input data and one or more destinations of output data), and then creates a job process 508 using the identified resources. Each job process 508 executes the compiled output in a specific target environment to implement a specific target algorithm (i.e., specified by the compiled instructions). In an embodiment, some or all of the job processes 508 may be executed by a big data analyzer 170 embedded in the distributed data engine 150.

[0336] Thus, at least each of the following scenarios is possible in this flexible architecture: a single block or module executed as multiple job processes 508 in a distributed manner across multiple processors; a single block or module executed as multiple job processes 508 continuously on a single processor; a single block or module executed as a single job process 508 on a single processor; multiple blocks executed as corresponding multiple job processes 508 in a distributed manner across multiple processors, etc. In addition, although it is generally expected that the job processes 508 corresponding to a single block or module will be executed in the same target environment (e.g., Python, PySpark, etc.), there is no requirement that all processes for different blocks in a module, or different modules in an object, operate in a single target environment. In some instances, for example, a particular target environment may be better suited to completing a target algorithm associated with a block in a module, while other blocks in the module may be more efficiently executed in different target environments, and therefore, blocks may be configured to be specified in target environments with different corresponding attributes, with the end result that job processes 508 associated with different blocks will be executed in different environments.

[0337] Further, it is expected that in many instances, the blocks associated with a particular module or object will be executed on a job process 508, which are all distributed or all local. However, in view of the above description, it should be apparent that efficiency can be obtained by executing one or more blocks of a module or object locally while executing other blocks of a module or object on one or more remote processors (e.g., in a cloud computing environment). For example, consider a diagram in which a first block performs a query to obtain specified data from a database (or other data storage) set away from an analysis service 500 and a second block performs an analysis on the data returned by the query. Creating a job process 508 at a processor local to the database (e.g., in an embedded DDE at a database) to perform a query on data local to the embedded DDE may be more effective than performing a query on a processor away from the database. When the database is in another geographic region (e.g., when a user queries data of a process control environment other than the process control environment where the user is currently located), this may be particularly the case. The query results may then be analyzed based on a second block in the same job process (and processor), in a different job process in the same processor, or in a different job process in a different processor (eg, in a local processor).

[0338] The job executor entity 528 also keeps track of the job processes 508, particularly in distributed processing applications, and keeps track of data dependencies. Thus, when each job process 508 is completed, output data is returned to the job executor entity 528. The job executor 528 determines whether some or all of the data is passed to another job process 508 and / or passed back to the web server process 504 for display in the application entity 514 by the web client process 502. During the execution of the job process 508, the job executor entity 528 can receive status information that can be passed back to the web server process 504 for display in the application entity 514. The job process 508 can also return predictive data to the job executor entity 528, particularly when the job process 508 is executing an online graph (or a portion of an online graph), which is continuously executed until explicitly stopped. When predictive data is generated, the predictive data may be returned to the job executor entity 528 and passed to the web server process 504 for display in the application entity 514, keeping in mind that the predictive data may simultaneously be written back to a location in the process control environment according to one of the blocks in the online diagram (e.g., a DDE storage location, a controller that performs a control function, etc.). In an embodiment, one or more status and / or predictive data is passed between the job process 508 and the job executor entity 528 via a backchannel streaming communication channel established during job creation to allow the job processes 508 to communicate with each other and / or the job executor entity 528.

[0339] As will become apparent from the following examples, the flow of data through the analysis server 500 depends, to some extent, at least on the exact blocks and / or modules configured, the properties configured for each of the blocks or modules, and whether the graph being executed is an offline graph or an online graph.

[0340] Example 1 - Creating an Offline Graph

[0341] Figure 5D 6 is a schematic diagram of a canvas 600 of an example, wherein a configured offline graph 602 is provided on the canvas 600, and the configured offline graph 602 includes blocks 604a-604g and lines 606a-606h. Figure 5A , the canvas 600 will be displayed by the web client process 502, and in particular by the viewing entity 510 and the application entity 514. The application entity 514 will receive data (including the block definition library 252) via the service entity 516, and the data service entity 516 communicates with the network server process 540 via the server communication entity 518.

[0342] In general, there are ways to construct Figure 5D The offline diagram 602 is drawn. First, the user can trigger the block definition trigger 248m to open the block definition library 252 (see Figure 4D ). From the block definition library 252, the user can select each of the blocks 604a to 604g at a time and arrange the blocks 604a-604g onto the canvas 600. The user can then arrange lines 606a to 606h to connect the blocks: arrange line 606a between the output terminal 608a of block 604a and the input terminal 610b of block 604b; arrange line 606b between the output terminal 608b of block 604b and the input terminal 610c of block 604c; arrange line 606c between the output terminal 608b of block 604b and the input terminal 610d of block 604d; arrange line 606d between the output terminal 608b of block 604b and the input terminal 610d of block 604e; and arrange line 606e between the output terminal 608b of block 604b and the input terminal 610d of block 604e. 604a to 604g and lines 606a to 606h. After blocks 604a to 604g and lines 606a to 606h are arranged in this way, offline map 602 will remain unconfigured.

[0343] Alternatively, the user can select and arrange blocks 604a-604g one at a time, and as each block is arranged on canvas 600, the user can configure properties for each of blocks 604a-604g, optionally (and in most cases) executing each of blocks 604a-604g after the properties of each block are configured.

[0344] The user may configure each of the blocks 604a-604g one at a time by clicking on the block and specifying the properties associated with the block in the block properties window 612 for that block (whether the blocks 604a-604g are arranged and wired prior to property configuration, or the blocks 604a-604g are arranged one at a time and the properties of each block are configured prior to arranging the next block). Figure 5D , block 604A (query block) is selected and a block properties window 612 for the query block 604a is displayed. Figure 5DIn the example canvas 600 depicted in FIG. 5 , a block properties window 612 for a query block 604a includes a query properties input area 614 in which a user may enter a query. Although a detailed description of the query language is left for discussion in a later portion of the specification, for current purposes, it is sufficient to assume that, upon execution of the query block 604a, the query entered into the query properties input area 614 may specify the location of the data to be queried. The block properties are stored as parameters in a configuration file associated with the block. The configuration file may reside on a web client executing the web client process 502, or may be located on a web server executing the web server process 504.

[0345] After configuring the properties of the query block 604a, the user typically executes the execution block 604a before arranging the next downstream block and / or starting to configure the properties of the next downstream block (in this example, block 604b). In order to execute the block 604A, the user will activate the evaluation user control 248i. This will cause the configuration file associated with the block 604A to be transmitted to the execution server process 506 via the data service entity 520 of the network server process 504. The execution service process 506 will receive the configuration file (for example, as a JSON file), and the job listening entity 522 will create a job management entity 524 to handle the execution request. The job management entity 524 will engage the appropriate graph compiler entity 526 to compile the configuration file into executable instructions (i.e., compiled query code) suitable for the target environment specified by the parameters in the configuration file. The graph compiler entity 526 returns an output file including the compiled code, and may also return metadata indicating the target environment suitable for the compiled code. (Optionally, the job management entity 524 can retain knowledge of the target environment during the compilation process.) The job management entity 524 transmits the output file to the job execution entity 528 (which determines whether the code should be executed locally or remotely, whether the code should be executed in a distributed system, etc. based on parameters of a configuration file associated with the target environment), and selects and reserves the processor and memory that will execute the instructions contained in the output file. The job execution entity 528 then creates one or more job processes 508 to execute the output file.

[0346] When the execution output file is complete (in the case of an offline block or offline module), or as a result is available (for an online module), the result is returned to the job execution entity 528. Because, in this case, there are no other pending executions (because the graph is an offline graph and the block just executed (query block 604A) is the only configured block), the result is returned to the network server process 504 via the server communication entity 508, and ultimately returned to the application entity 514 on the web client process 502. The output data may include all of the data returned by the query, but may also include various statistical information (metadata) about the query data, such as (but not limited to) the mean, standard deviation, and median for each column of the data returned by the query. In an embodiment, the metadata and result data are stored separately from each other. This is advantageous in allowing a user to view information about the result data without having to load all of the result data, which may be time or resource (such as computer memory) intensive. The user can view the block results by clicking on the view block results control 212 (see Figure 4A ) to view the returned data and / or metadata about the returned data. The default view may include metadata for the results of each variable inclu...

Claims

1. A method comprising: announcing the existence of the cluster via a cluster included in a data analysis network of a process control plant that operates to control a process, the cluster comprising a plurality of distributed data engines; registering a data source with the cluster, the data source responsive to the notification and generating continuous data resulting from control of the process in the process control plant; receiving, by the cluster, continuous data generated by the data source; streaming at least some of the continuous data generated by the data source to a data consumer via the data analysis network through the cluster, wherein (i) one of the distributed data engines publishes to the data analysis network at least some of the data generated by one or more corresponding data sources corresponding to the one of the distributed data engines, and (ii) another of the distributed data engines subscribes to at least some of the data generated by one or more corresponding data sources corresponding to the one of the distributed data engines and published by the one of the distributed data engines, and Therein, the data analysis network is separate and distinct from all other process control communication networks used in the process control plant for controlling the process.

2. The method of claim 1, wherein: The data consumer is bound to the data source.

3. The method of claim 1, wherein: The data source is a process control device that transmits the continuous data over a process control communication network to control the process, and Receiving the continuous data generated by the process control device includes receiving, via the data analysis network, a copy of at least some of the contents of the continuous data, the continuous data being sent by the process control device over the process control communications network to control the process.

4. The method of claim 1, wherein: Receiving the continuous data generated by the data source comprises: Data that has been generated by the data source and published to the cluster is received.

5. The method of claim 1, further comprising: storing, at the cluster, the continuous data generated by the data source; as well as At the cluster, at least a portion of the continuous data generated by the data source is cached.

6. The method of claim 5, further comprising: Periodically historizing data stored at the cluster includes sending the data stored at the cluster to an analytical data historian via the data analysis network.

7. The method of claim 1, further comprising: A query for at least some of the continuous data generated by the data source is received from the data consumer via the data analysis network, and wherein streaming the at least some of the continuous data generated by the data source to the data consumer is based on the query.

8. The method of claim 1, wherein: Streaming at least some of the continuous data to the data consumer includes streaming at least some of the continuous data to a user interface.

9. The method of claim 1, wherein: Streaming at least some of the continuous data to the data consumer includes streaming at least some of the continuous data to be used as input to a data analysis function to a data analysis function.

10. The method of claim 1, wherein: The cluster is a local cluster, and the method further comprises: detecting, by the local cluster, a notification generated by a regional cluster or a centralized cluster; registering the local cluster to the regional cluster or the centralized cluster through the local cluster; and The analysis data corresponding to the local cluster is streamed to the regional cluster or the centralized cluster via the data analysis network through the local cluster.

11. The method of claim 10, wherein: Streaming the analytical data corresponding to the local cluster to the regional cluster or the centralized cluster includes publishing the analytical data corresponding to the local cluster to the regional cluster or the centralized cluster.

12. The method of claim 10, further comprising: performing, by the local cluster, one or more data analysis functions on at least a portion of the continuous data generated by the data source; and Wherein, streaming the analysis data corresponding to the local cluster to the regional cluster or the centralized cluster includes: streaming the results of performing the one or more data analysis functions on the at least a portion of the continuous data generated by the data source to the regional cluster or the centralized cluster.

13. The method of claim 12, wherein: Performing one or more data analysis functions on at least a portion of the continuous data generated by the data source includes: The one or more data analysis functions are performed on the at least a portion of the continuous data generated by the data source, and the one or more data analysis functions are performed on data generated by another data source registered with the local cluster.

14. The method of claim 1, wherein: The plurality of distributed data engines are embedded within the process control plant and coupled to the data analysis network.

15. A method comprising: announcing, by a centralized cluster included in a data analysis network, the existence of the centralized cluster, the cluster including a plurality of distributed data engines; registering a local cluster with the centralized cluster, the local cluster being responsive to the notification and configured to store and stream continuous data generated as a result of controlling a process in a process control plant, wherein the local cluster is embedded in the process control plant and is communicatively coupled to one or more data sources, wherein the one or more data sources generate at least a portion of the continuous data during operation to control the process; receiving at least a portion of the streamed continuous data from the local cluster via the centralized cluster; performing one or more data analysis functions on at least a portion of the streamed continuous data received from the local cluster; and streaming the output of the one or more data analysis functions to a data consumer via the data analysis network, wherein (i) one of the distributed data engines publishes to the data analysis network at least some of the data generated by one or more corresponding data sources corresponding to the one of the distributed data engines, and (ii) another of the distributed data engines subscribes to at least some of the data generated by one or more corresponding data sources corresponding to the one of the distributed data engines and published by the one of the distributed data engines, and Therein, the data analysis network is separate and distinct from all other process control communication networks used in the process control plant for controlling the process.

16. The method of claim 15, wherein: The data consumers are bound to the centralized cluster.

17. The method of claim 15, wherein: The one or more data sources communicatively coupled to the local cluster include process control equipment, and wherein at least a portion of the streamed continuous data is received from the local cluster at the centralized cluster via the data analysis network and includes a copy of at least a portion of the content of data transmitted by the process control equipment over a process control communication network to control the process.

18. The method of claim 15, wherein: Receiving the at least a portion of the streamed continuous data from the local cluster includes receiving data that has been published by the local cluster to the centralized cluster.

19. The method of claim 15, further comprising: At the centralized cluster, the at least a portion of the streamed continuous data received from the local cluster and the outputs of the one or more data analysis functions are stored.

20. The method of claim 19, further comprising: Periodically historizing data stored at the centralized cluster includes sending the data stored at the centralized cluster to an analytics data historian via the data analytics network.

21. The method of claim 15, further comprising: A query is received from the data consumer via the data analytics network for outputs of the one or more data analytics functions, and wherein streaming the outputs of the one or more data analytics functions is based on the query.

22. The method of claim 15, wherein: The output of the one or more data analysis functions is a continuous output.

23. The method of claim 15, wherein: Streaming the output of the one or more data analysis functions to the data consumer includes streaming the output of the one or more data analysis functions to a user interface.

24. The method of claim 15, wherein: Streaming the output of the one or more data analytics functions to the data consumer includes streaming the output of the one or more data analytics functions to a data analytics application executing in the data analytics network.

25. The method of claim 15, wherein: Streaming the output of the one or more data analysis functions to the data consumer includes streaming the output of the one or more data analysis functions to a subscriber.

26. The method of claim 15, further comprising: registering one or more additional local clusters to the centralized cluster, and receiving corresponding data from the one or more additional local clusters; and Wherein, performing the one or more data analysis functions on at least a portion of the streamed continuous data received from the local cluster includes: performing the one or more data analysis functions on at least a portion of the streamed continuous data received from the local cluster and the corresponding data received from the one or more additional local clusters.

27. The method of claim 15, further comprising: registering the centralized cluster to another centralized cluster through the centralized cluster; and Wherein, streaming the output of the one or more data analysis functions to the data consumer comprises: streaming the output of the one or more data analysis functions to the other centralized cluster.

28. The method of claim 27, wherein: The another centralized cluster is hosted in a cloud computing environment.

29. The method of claim 15, wherein: The centralized cluster is hosted in a cloud computing environment.

30. The method of claim 15, wherein: The plurality of distributed data engines are embedded within the process control plant.

31. The method of claim 15, further comprising: A location service and / or a data dictionary for establishing analytical data exchange between clusters is provided by the centralized cluster.

32. The method of claim 15, further comprising: An interface is provided through the centralized cluster via which a user manages a set of rules for replication and backup within the data analytics network.

33. A distributed industrial process monitoring and analysis system comprising: a plurality of distributed data engines embedded within a process plant, the process plant operating to control a process, each of the distributed data engines being coupled to a respective one or more data sources, the one or more data sources generating data as a result of the process plant controlling the process, and each of the distributed data engines storing data generated by the respective one or more data sources; as well as a data analytics network that supports streaming of analytics data between the plurality of distributed data engines and transmission of queries for data stored at the plurality of distributed data engines, wherein the data analytics network is separate and distinct from all other process control communication networks used in the process plant for controlling the process, Wherein, (i) one of the distributed data engines publishes to the data analysis network at least some of the data generated by the corresponding one or more data sources corresponding to the one of the distributed data engines, and (ii) another of the distributed data engines subscribes to at least some of the data generated by the corresponding one or more data sources corresponding to the one of the distributed data engines and published by the one of the distributed data engines.

34. The system of claim 33, wherein: At least one of the plurality of distributed data engines is integrated with a process control device that operates to control the process.

35. The system of claim 34, wherein: The process control device sends a signal to another process control device over a process control communication network to control the process.

36. The system of claim 33, wherein: A query for data stored at the plurality of distributed data engines is generated by one or more of: the distributed data engines, a user interface, or an application.

37. The system of claim 36, wherein: The query on the data stored at the plurality of distributed data engines includes a query on the data stored across more than one distributed data engine.

38. The system of claim 33, wherein: Data stored at the plurality of distributed data engines is periodically transmitted to an analytical data historian via the data analysis network, and the analytical data historian is independent of a process control data historian accessible via a process control communication network of the process plant.

39. The system of claim 33, wherein each of the distributed data engines includes a cache in addition to a data storage area for storing data generated by the corresponding one or more data sources.

40. The system of claim 33, wherein: A first distributed data engine of the plurality of distributed data engines advertises a cluster with corresponding one or more data sources coupled to the first distributed data engine registered.

41. The system of claim 40, wherein: The corresponding one or more data sources coupled to the first distributed data engine publish data generated by the corresponding one or more data sources as a result of controlling the process to the cluster advertised by the first distributed data engine.

42. The system of claim 39, wherein the data published by the first distributed data engine includes a result of data analysis, wherein: The data analysis is performed by the first distributed data engine using at least some of the data generated by the corresponding one or more data sources coupled to the first distributed data engine.

43. The system of claim 39, wherein: The cluster advertised by the first distributed data engine is a local cluster, and wherein the second distributed data engine advertises a regional cluster with which the first distributed data engine is registered and to which the first distributed data engine publishes data.

44. The system of claim 43, wherein: The second distributed data engine corresponding to the regional cluster provides at least one of a positioning service or a data dictionary for establishing data exchange with another regional cluster.

45. The system of claim 43, wherein one or more additional distributed data engines corresponding to one or more additional local clusters are registered in the regional cluster and publish data to the regional cluster.

46. ​​The system of claim 43, wherein: The third distributed data engine notifies the centralized cluster, the second distributed data engine is registered in the centralized cluster and publishes data to the centralized cluster.

47. The system of claim 46, wherein: The second distributed data engine publishes at least a portion of the data stored at the second distributed data engine to the centralized cluster via the data analysis network.

48. The system of claim 46, wherein: The data published by the second distributed data engine to the centralized cluster includes results of data analysis performed by the second distributed data engine using data received at the second distributed data engine from another distributed data engine.

49. The system of claim 46, wherein one or more additional distributed data engines corresponding to one or more additional regional clusters are registered in the centralized cluster and publish data to the centralized cluster.

50. The system of claim 46, wherein: The centralized cluster is hosted in a cloud computing environment.

51. The system of claim 46, wherein: The process plant is a first process plant, and wherein other clusters corresponding to other process plants are registered in the centralized cluster and publish data to the centralized cluster.

52. The system of claim 46, wherein: The centralized cluster stores a rule set for the data analysis network, the rule set including rules corresponding to at least one of replication or backup.

53. The system of claim 33, further comprising a user interface for managing a rule set for the data analysis network, the rule set comprising rules corresponding to at least one of replication or backup.

54. The system of claim 33, wherein: The other one of the distributed data engines performs one or more data analysis functions on the subscribed data.

55. The system of claim 54, wherein: Results of the one or more data analysis functions performed by the other one of the distributed data engines are published to the data analysis network.

56. The system as described in claim 33 further includes: a data analysis user interface application, through which a user develops a data analysis model, and the data analysis model obtains data stored in one or more distributed data engines and predicts one or more values ​​of the process plant based on the data obtained from the one or more distributed data engines.

57. The system of claim 56, wherein: The data obtained by the data analysis model from the one or more distributed data engines includes continuously updated data generated by the process plant in controlling the process; as well as The data analysis model is continuously executed on the continuously updated data obtained from the one or more distributed data engines to generate a continuous output including a continuous update of the one or more predicted values ​​for the process plant.

58. The system of claim 57, wherein: The continuously updated data obtained by the data analytics model from the one or more distributed data engines includes data streamed from the one or more distributed data engines to the data analytics model via the data analytics network.

59. The system of claim 57, wherein: The data analysis model sends a query to the one or more distributed data engines via the data analysis network to obtain the continuously updated data.

60. The system of claim 57, wherein: The continuous output generated by the data analysis model is displayed on a user interface using a continuously updated graphical visualization.

61. The system of claim 60, wherein: A continuously updated graphical visualization of the one or more predicted values ​​is displayed on the user interface in conjunction with a continuously updated graphical visualization of one or more actual values ​​generated by the process plant and corresponding to the one or more predicted values.

62. The system of claim 61, further comprising: An indication of an accuracy of the data analysis model is presented, the accuracy based on a comparison of the one or more predicted values ​​to the one or more actual values.

63. The system of claim 57, wherein: The continuous output generated by the data analysis model is streamed to at least one distributed data engine of the plurality of distributed data engines.

64. The system of claim 33, further comprising: A user interface for a user to obtain data stored in any one of the plurality of distributed data engines.

65. The system of claim 33, wherein: The analytical data streamed via the data analysis network includes: results of data analysis functions performed by the plurality of distributed data engines and at least one of: data generated by process control equipment when controlling processes within the process plant, historical data, and other data.

66. The system of claim 65, wherein: Results of the data analysis functions performed by the plurality of distributed data engines include a new analysis function generated by another data analysis function.

67. The system of claim 65, wherein: Data generated by process control equipment while controlling a process within the process plant is (i) transmitted over one or more process control communication networks to control the process, and (ii) transmitted over the data analysis network; as well as The historized data is (iii) transmitted over one or more process control communication networks to a process control data historian for storage, and (iv) transmitted over the data analysis network to an analysis data historian for storage.

68. The system of claim 33, wherein: At least some of the distributed data engines use different formats to store data generated by corresponding one or more data sources.

Citation Information

Patent Citations

  • Collecting and delivering data to a big data machine in a process control system

    US10223327B2

  • Automatic signal processing-based learning in a process plant

    US10282676B2

  • Streaming data for analytics in process control systems

    US10909137B2

  • Big data in process control systems

    US20140250153A1

  • Distributed big data in a process control system

    US20140277604A1