CUSTOM GUI CONTROL FOR VISUALIZING FIELD DATA
20180059921 ยท 2018-03-01
Inventors
Cpc classification
H04L67/025
ELECTRICITY
G06F3/04847
PHYSICS
Y02P90/02
GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
G05B19/409
PHYSICS
International classification
G06F3/0484
PHYSICS
Abstract
A method of custom GUI control. Field data is sent to a data acquisition module coupled to a processing block that assembles a serialized object message (SOM) by a selected topic including data values, display sub-controls coupled to an IP data provider that stores the topics, an algorithm for publishing SOMs and a publisher/subscriber pattern including clients. The clients have a GUI application including a custom GUI control subscribed to the IP data provider. The IP data provider publishes SOMs by the selected topic as call-backs over an IP bus shared by the clients including to the first client including an initial SOM which generates the custom GUI control and stores the selected topic as a referable instance for populating GUI components and a subsequent SOM having an updated value, wherein the GUI application accesses the custom GUI control to populate the GUI components by only overwriting the changed values/parameters.
Claims
1. A method of custom graphical user interface (GUI) control, comprising: sending measured field data from an industrial process run in a plant including processing equipment having associated field devices generating measured field data to a data acquisition module coupled to a processing block for assembling a serialized object message including a value of said measured field data, display sub-controls by a selected topic from a plurality of topics coupled to an IP data provider, said IP data provider having a memory storing said plurality of topics, an algorithm for publishing said serialized object message as a call-back, and a publisher/subscriber pattern comprising a plurality of clients each having a GUI application including a display with at least one display element having GUI components controlled by a custom GUI control and subscribed to by a published message to said IP data provider for said call-back that includes at least one of said plurality of topics; said IP data provider publishing an initial serialized object message by said selected topic having an initial value and said display sub-controls as a call-back over an IP bus to at least a first client which generates said custom GUI control from said display sub-controls and stores said selected topic as a referable instance for populating said GUI components including a value component, and said IP data provider publishing a subsequent said serialized object message having an updated value and said selected topic as a call-back over said IP bus to at least said first client, wherein said GUI application in response to identifying said selected topic accesses said custom GUI control to populate said GUI components with only overwriting said updated value in said value component.
2. The method of claim 1, wherein said serialized object message comprises a JavaScript Object Notation (JSON) message or a Binary JSON message.
3. The method of claim 1, wherein said IP data provider comprises a Message Queuing Telemetry Transport (MQTT) broker.
4. The method of claim 1, wherein said processing equipment includes at least one storage tank, and wherein said measured field data comprises tank gauging data.
5. The method of claim 1, wherein said display sub-controls include attributes for a plurality of said values, timestamp, status, validity, units of dimension, and new ones of said values in a trend chart.
6. The method of claim 1, further comprising one of said plurality of clients publishing a configuration for said serialized object message to said IP data provider.
7. A data processing and visualization system, comprising: a field layer having a data acquisition module coupled to receive measured field data from an industrial process run in a plant including processing equipment having associated field devices generating measured field data, said data acquisition module coupled to a processing block for assembling a serialized object message by a selected topic from a plurality of topics including a value of said measured field data and display sub-controls coupled to an IP data provider, said IP data provider having a memory storing said plurality of topics and a publisher/subscriber pattern comprising a plurality of clients in an application layer each having a graphical user interface (GUI) application including a display having at least one display element having GUI components controlled by a custom GUI control and subscribed by a published message to said IP data provider that includes at least one of said plurality of topics to said IP data provider for call-backs; said memory having an algorithm for: publishing said call-backs as said serialized object message by said selected topic including said value and said display sub-controls over an IP bus shared by said plurality of clients, publishing an initial one of said serialized object message by said selected topic having an initial value and said display sub-controls as a call-back to at least a first client, wherein in response said first client generates said custom GUI control from said display sub-controls, and stores said selected topic as a referable instance for populating said GUI components including a value component, and publishing a subsequent one of said serialized object message having an updated value of said selected topic to at least said first client, wherein said GUI application in response to identifying said selected topic, accesses said custom GUI control to populate said GUI components with only overwriting said updated value in said value component.
8. The data processing and visualization system of claim 7, wherein said serialized object message comprises a JavaScript Object Notation (JSON), or a Binary JSON message.
9. The data processing and visualization system of claim 7, wherein said IP data provider 135f comprises a Message Queuing Telemetry Transport (MQTT) broker.
10. The data processing and visualization system of claim 7, wherein said display sub-controls include attributes for a plurality of said values, timestamp, status, validity, units of dimension, and new ones of said values in a trend chart.
11. The data processing and visualization system of claim 7, further comprising a configuration database coupled between said processing block and said IP data provider for receiving and storing a new configuration from one of said plurality of clients.
12. A computer program product, comprising: a non-transitory data storage medium that includes program instructions executable by a processor to enable said processor to execute a method of custom graphical user interface (GUI) control, comprising: code for sending measured field data from an industrial process run in a plant including processing equipment having associated field devices generating measured field data to a data acquisition module coupled to a processing block for assembling a serialized object message including a value of said measured field data, display sub-controls by a selected topic from a plurality of topics coupled to an IP data provider, said IP data provider having a memory storing said plurality of topics, an algorithm for publishing said serialized object message as a call-back, and a publisher/subscriber pattern comprising a plurality of clients each having a GUI application including a display with at least one GUI component controlled by a custom GUI control and subscribed to by a published message to said IP data provider for said call-back that includes at least one of said plurality of topics; code for said IP data provider publishing an initial serialized object message by said selected topic having an initial value and said display sub-controls as a call-back over an IP bus to at least a first client which generates said custom GUI control from said display sub-controls and stores said selected topic as a referable instance for populating said GUI components including a value component, and code for said IP data provider publishing a subsequent said serialized object message having an updated value and said selected topic as a call-back over said IP bus to at least said first client, wherein said GUI application in response to identifying said selected topic accesses said custom GUI control to populate said GUI components with only overwriting said updated value in said value component.
13. The computer program product of claim 12, wherein said serialized object message comprises a JavaScript Object Notation (JSON) message or a Binary JSON message.
14. The computer program product of claim 12, wherein said IP data provider comprises a Message Queuing Telemetry Transport (MQTT) broker.
15. The computer program product of claim 12, wherein said display sub-controls include attributes for a plurality of said values, timestamp, status, validity, units of dimension, and new ones of said values in a trend chart.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
DETAILED DESCRIPTION
[0023] Disclosed embodiments are described with reference to the attached figures, wherein like reference numerals are used throughout the figures to designate similar or equivalent elements. The figures are not drawn to scale and they are provided merely to illustrate certain disclosed aspects. Several disclosed aspects are described below with reference to example applications for illustration. It should be understood that numerous specific details, relationships, and methods are set forth to provide a full understanding of the disclosed embodiments.
[0024] One having ordinary skill in the relevant art, however, will readily recognize that the subject matter disclosed herein can be practiced without one or more of the specific details or with other methods. In other instances, well-known structures or operations are not shown in detail to avoid obscuring certain aspects. This Disclosure is not limited by the illustrated ordering of acts or events, as some acts may occur in different orders and/or concurrently with other acts or events. Furthermore, not all illustrated acts or events are required to implement a methodology in accordance with the embodiments disclosed herein.
[0025] Also, the terms coupled to or couples with (and the like) as used herein without further qualification are intended to describe either an indirect or direct electrical connection. Thus, if a first device couples to a second device, that connection can be through a direct electrical connection where there are only parasitics in the pathway, or through an indirect electrical connection via intervening items including other devices and connections. For indirect coupling, the intervening item generally does not modify the information of a signal but may adjust its current level, voltage level, and/or power level.
[0026]
[0027] The field layer 130 includes a data acquisition module 135a (e.g., a Communication Interface Unit (CIU)) that has a variety of information in its configuration database 135e generally supplied by a service tool application (not shown) in the application layer 250 sent to the IP data provider 135f. The field layer 130 and application layer 250 are collectively shown as a data processing and visualization system 270 that has its processing features shown implemented by a processor 160 running algorithms 161 stored in a memory 160. Although the application layer 250 and field layer 130 are shown in
[0028] Data processing of field data from the field devices 110 over the bus 125 (e.g., Modbus) is performed by the data acquisition module 135a which functions as an interface unit and the processing block 135d assembles the pre-processed field data received from the data acquisition module 135a into a complete serialized object (e.g., JSON object). As known in the art, a JSON object is an unordered collection of name/value pairs in a string wrapped in curly braces with colons between the names and values, and commas between the values and names.
[0029] The serialized object message assembled by the processing block 135d includes a value of the measured field data by a topic from a plurality of topics stored in the memory 135f.sub.1 of the IP data provider 135f. The topics function as an identifier, and the serialized object message is published by the processing block 135d as a payload to the IP data provider 135f (e.g., Message Queuing Telemetry Transport (MQTT) broker of an Open Process Control Unified Architecture (OPC UA) server). The IP data provider 135f publishes a new serialized message over the IP bus 139 each time new field data arrives from the data acquisition module 135a and receives new configuration information over the IP bus 139 when sent by the GUI application 252.
[0030] The memory 135f.sub.1 also stores a publisher/subscriber pattern comprising a plurality of clients including at least a first client that each has a GUI application 252 including a display with at least one display element 252a.sub.1 with at least one GUI component 252a.sub.2 that is controlled by the custom GUI control handler 252c. The published messages from the IP data provider 135f are by a selected topic from the available plurality (tree) of topics for call-backs to the clients. The memory 135f.sub.1 has a stored algorithm for transmitting the call-backs as a single serialized object message (temporary: e.g., JSON message) by the selected topic including the value, a, and display sub-controls over an IP bus 139 shared by said plurality of clients. The topics function as addresses and can comprise a particular equipment or type of equipment and a parameter, such as tank1/level1.
[0031] By control system 200 using publish subscribe features of a modern Internet Protocol (IP) connectivity protocol (such as a machine-to-machine (M2M) protocol based on Internet of Things (IIoT) technologies) because of their broader bandwidth as compared to serial remote terminal unit (RTU) lines (e.g., Modbus), the data gets delivered to the operator having the display element 252a1 with the GUI components 252a2 significantly faster. Other advantages include the IP communications simplifying configuration changes as they are published by the GUI application 252 back to the IP data provider 135f for storage in the configuration database 135e. The GUI application 252 can send back modified data regarding the custom GUI control 251, e.g. configuration changes or manual overwrites of measured data.
[0032] However, configuration updates can be provided by generally any other application hosting instances of the custom GUI control 251, such as a service tool application (not visualized) in the application layer 250 to the IP data provider 135f, as well as other updates of data and/or commands such as kill, manual overwrite and resurrects. The send button as visualized in
[0033] The publisher subscriber pattern of a publisher/subscriber model is used to deliver (push) field data to clients running a GUI application 252, such as a WINDOWS or LINUX GUI applications. Stored messages are organized in the memory 135f.sub.1 of the IP data provider 135f around a tree of topics, and clients that subscribe to messages stored at the memory 135f1 are delivered particular topics or to groups of topics they are subscribed to. The data pushed to the clients is generally used by the client using a GUI application 252 to fill the GUI components 252a2 of the display element 252a.sub.1 for representing field data with both text and graphics to clients such as operators at operator stations generally running at a personal computer (PC) or mobile device.
[0034] As known in communications, the IP suite is the computer networking model and set of communications protocols that is used on the Internet and similar computer networks commonly known as TCP/IP based on its most important protocols, the Transmission Control Protocol (TCP) and the IP being the first networking protocols defined during its development. The IP communications can comprise, but is not limited to machine (M2M)/Internet of Things known as MQTT, Advanced Messaging Queuing Protocol (AMQP), and OPC UA. The process data from the plant 105 which may be referred to as a device layer is converted from a serial protocol (e.g., Modbus) to IP communications which pushes the data directly to the GUI application 252 by using a publish subscriber pattern. For example, in collaboration with a MQTT broker, live data from field devices in the plant 105 can be pushed into the GUI application 252 instead of the GUI application layer pulling the data on request or at selected time intervals. The use of a MQTT broker enables the data to get pushed (published) to the GUI application 252.
[0035] The custom GUI control 251 in the GUI application 252 is programmed by the initial serialized object/JSON message published by the IP data provider 135f over the IP bus 139 (e.g., TCP/IP bus) to know how to handle all parameters of the received serialized object message. The custom GUI control 251 will serve a variety of standard features by context menus e.g. trending, conversions to other units and verbose information of the data. This arrangement substantially simplifies the creation of GUI applications. By embedding these options in the generic GUI control component all data will be visualized equally and individual implementations are no longer needed. The custom GUI control 251 can be developed in different languages including C#, PHP, ASP.NET, Perl, etc. to serve PC applications, Web applications or native mobile apps in different operating systems including WINDOWS, IOS, LINUX and others.
[0036] In operation of the communications, the GUI application 252 subscribes to call-backs from the IP data provider 135f (e.g., IIoT broker) which provides serialized object type (e.g., JSON) messages containing a field with a unique name (e.g. the MQTT topic or OPC item). The topic is the complete branch e.g. Site1/Tank1/Gauge1/Level and not just Level. The received serialized message received by the GUI application 252 contains the MQTT topic or OPC item. This topic is used to create a referable instance of custom GUI control 251 for the GUI application 252. The remaining fields of the serialized message all get used to populate respective sub-controls (GUI components) in the custom GUI control 251, such as the status, validity, units of dimension, a new value in a trend chart, etc.
[0037] For the next (and subsequent) call-back(s), all the GUI application 252 has to obtain is the topic from the serialized object type message (the topic is the Tankl/Level shown below in the example JSON message) received from the IP data provider 135f and pass it on to the custom GUI control 251 which was instantiated (created based on this topic before). The sub-controls (GUI Components) of the custom GUI control 251 are based on the serialized object type message which will atomically update all of the GUI components 252a.sub.2 (e.g., in one example elements are Category, Dimension, DimensionID, EntityID, MaxUpdateRate, MinUpdateRate, Name, NValue, Priority, Status, Timestamp) of the display element 252a.sub.1. An example JSON message for tank gauging can comprise: Topic e.g.: Tank1/Level and the following JSON message contents:
TABLE-US-00001 { Category, Dimension, DimensionID, EntityID, MaxUpdateRate, MinUpdateRate, Name, NValue, Priority, Status, Timestamp, etc. }
[0038]
[0039] Step 302 comprises the IP data provider publishing an initial serialized object message by the selected topic as a call-back over an IP bus 139 shared by the clients to at least the first client which generates the custom GUI control and stores the selected topic as a referable instance for populating the GUI components including a value component. Step 303 comprises the IP data publishing a subsequent serialized object message having an updated value of the selected topic as a call-back over the IP bus to the first client. The GUI application in response to identifying the selected topic accesses the custom display control to populate the GUI components with only overwriting the updated value in the value component.
EXAMPLES
[0040] Disclosed embodiments of the invention are further illustrated by the following specific Examples, which should not be construed as limiting the scope or content of this Disclosure in any way.
[0041] The GUI components of an example display element 252a.sub.1 of a WINDOWS PC is controlled by a custom GUI control handler 252c that receives a JSON message 410 are both shown in
[0042] The rules in
[0043]
[0044] The DisplacerPosition element 501 is shown having the text DisplacerPosition with the adjacent textbox containing 16500 for the DisplacerPosition value, the # as status and the trend chart. The displacer position is a measured value. On demand of the user the trend chart for the DisplacerPosition parameter shown to the top right side in in
[0045]
[0046] Regarding the examples above, when more fields get defined for the JSON message in the design new sub-controls can be created to allow filling of new GUI components 252a.sub.2. This enables more data parameters to be shown to the user in the same generic way as described above.
[0047] While various disclosed embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. Numerous changes to the subject matter disclosed herein can be made in accordance with this Disclosure without departing from the spirit or scope of this Disclosure. In addition, while a particular feature may have been disclosed with respect to only one of several implementations, such feature may be combined with one or more other features of the other implementations as may be desired and advantageous for any given or particular application.
[0048] As will be appreciated by one skilled in the art, the subject matter disclosed herein may be embodied as a system, method or computer program product. Accordingly, this Disclosure can take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a circuit, module or system. Furthermore, this Disclosure may take the form of a computer program product embodied in any tangible medium of expression having computer usable program code embodied in the medium.