Automation device data interface

The subject invention pertains to facilitating communication between industrial automation devices such as controllers and data systems and/or services. Systems and methods are provided that receive statements or other unit of data interaction from an automation device, provide the statements to an appropriate system or service for processing, and optionally return a response such as a result set. Furthermore, in accordance with an aspect of the invention native controller code, variables, or tags can be mapped to stored data, procedures or combinations of data and/or procedures and updated automatically or semi-automatically.

TECHNICAL FIELD

The subject invention relates generally to industrial automation systems and more particularly toward data interaction and connectivity.

BACKGROUND

Industrial controllers are special purpose processing devices used for controlling (e.g., automated and semi-automated) industrial processes, machines, manufacturing equipment, plants, and the like. A typical controller executes a control program or routine in order to measure one or more process variables or inputs representative of the status of a controlled process and/or affect outputs associated with control of the process. Such inputs and outputs can be digital and/or analog. A typical control routine can be created in a controller configuration environment that has various tools and interfaces whereby a developer can construct and implement a control strategy using industrial and conventional programming languages or graphical representations of control functionality. Such control routine can be downloaded from the configuration system into one or more controllers for implementation of the control strategy in controlling a process or machine.

Measured inputs received from a controlled process and outputs transmitted to the process can pass through one or more input/output (I/O) modules in a control system. Such modules can reside locally or remotely from the controller. Inputs and outputs can be recorded in I/O memory. The input values can be asynchronously or synchronously read from the controlled process by one or more input modules and output values can be written directly to memory by a processor for subsequent communication to the process by specialized communications circuitry. An output module can interface directly with a controlled process by providing an output from memory to an actuator such as a motor, drive, valve, solenoid, and the like. During execution of the control routine, values of the inputs and outputs exchanged with the controlled process can pass through memory. Values of inputs in memory can be asynchronously or synchronously updated from the controlled process by dedicated and/or common scanning circuitry. Such scanning circuitry can communicate with input and/or output modules over a bus on a backplane or network and asynchronously or synchronously write values of the outputs in memory to the controlled process. The output values from the memory can be communicated to one or more output modules for interfacing with the process.

Industrial controllers can communicate with databases, for example to store and/or retrieve data. Conventionally, database communication is accomplished by continuously polling automation devices and sampling data to determine if the automation device includes data that needs to be written to a database. Alternatively, an application could wait to be messaged a controller indicating that it has data that should be retrieved and written to a database or that desires to obtain data from the database. An industrial protocol such as CIP (Control and Information Protocol) is conventionally employed to poll, message, retrieve and/or receive data from the automation layer, which is subsequently presented to a database. However, all transmissions such as reads and writes are limited by proprietary industrial control protocol (e.g., CIP—Control and Information Protocol) connection size (e.g., 512 bytes). Furthermore, all requests transmitted in an industrial protocol are first routed to an Ethernet card or box that converts the requests and transmits them to a database.

SUMMARY

Briefly described, the subject invention concerns systems and methods to facilitate communication, interaction, and connectivity between industrial automation devices or systems and data supply systems or services. For example, the disclosed systems and methods can simplify reading and writing control system data to and from a database or interacting with a service.

In accordance with an aspect of the invention, an interface system is disclosed including a device interface component and a data interface component. The device interface receives commands, statements or other units of data or database interaction, including but not limited to declarative SQL statements, from an automation device such as an industrial controller and transmits the received statements to the data interface component. The data interface component subsequently transmits the statements to a database system for execution or evaluation and obtains a response. The response is then transmitted back to the data interface component, the device interface component, and ultimately to the automation device providing the statements. This enables automation devices to interact with a database in its native language (e.g., SQL, OQL, OOQL, MDX, . . . ), among other things.

In accordance with another aspect of the invention, the device interface component can obtain statements, commands, expressions in the form of protocol strings, for example, from one or more automation devices and transmit them to the data interface component. The data interface component can subsequently provide such statements to a service including but not limited to a network and web service for evaluation. Any results produced by the evaluation can subsequently be transmitted back to the one or more automation devices via the data and device interface components.

According to other aspects of the invention, the provided interface system can reside and execute as middleware, on a controller or other automation device, or on a database server.

According to an aspect of the subject invention, the device interface component can correspond to a socket based middleware application gateway including, for example, a BSD (Berkley Software Distribution) socket or Winsock. The socket can be open to send and receive statements, responses, and/or results through a middleware application communicatively coupled with JDBC drivers to a database, for example. This provides a raw data pipe between a control device and a database. Besides a socket interface, other middleware application interfaces include Common Industrial Protocol (CIP) object, web service interface, and reliable messaging such as JMS, MQTT, MSMQ, and MQ.

The data interface component can be implemented as a JDBC (Java Database Connectivity) connector or interface, in accordance with an aspect of the invention. Such an interface can facilitate communication with a database employing a database driver or API, thereby enabling the database to be updated, queried or otherwise manipulated in accordance with statements or commands received and transmitted thereto. The data interface component can also be implemented as a service connector to support interaction with services such as network and web services.

According to another aspect of the invention, an automation device such as a controller can include an interface system as well as database system. A controller can therefore act as a database serving information to other automation devices through as well as leverage the JDBC reliable messaging and/or inter-process communication to exchange information with upper layer information management systems including but not limited to MES (Manufacturing Execution System) or ERP (Enterprise Resource Planning).

According to another aspect of the invention, a mapping component can be employed to map native control code, variables, and/or tags, among other things, to stored data values. For example, the mapping can include one or more statements, commands, transactions, or other units of database interaction. The monitoring component can operate behind the scenes to automatically or semi-automatically update control code variables or tags, among other things, to ensure they mirror or alias particular stored data values or combinations thereof.

In accordance with still another aspect of the invention, methods are disclosed to facilitate communication with a database as well as a myriad of services. For example, statements or commands are received from an automation device such as a controller and transmitted to a database system or service for execution or evaluation. Subsequently, a response or result set can be received and transmitted back to the automation device.

To the accomplishment of the foregoing and related ends, certain illustrative aspects of the invention are described herein in connection with the following description and the annexed drawings. These aspects are indicative of various ways in which the invention may be practiced, all of which are intended to be covered by the present invention. Other advantages and novel features of the invention may become apparent from the following detailed description of the invention when considered in conjunction with the drawings.

DETAILED DESCRIPTION

The present invention is now described with reference to the annexed drawings, wherein like numerals refer to like or corresponding elements throughout. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed. Rather, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present invention.

Referring initially toFIG. 1, an interface system100is illustrated that facilitates data interaction in accordance with an aspect of the subject invention. More specifically, interface system can facilitate interaction between an automation device such as a controller and a database and/or a service (e.g., network, web . . . ). System100includes a device interface component110and a data interface component120.

Device interface component110receives commands, statements, transactions or other unit of database or data interaction from one or more industrial automation devices. Database statements can include but are not limited to SQL (Structured Query Language) statements. Alternatively, multidimensional database statements such as MDX (Multidimensional Expressions), object-oriented database statements including OQL (Object Query Language), OOQL (Object-Oriented Query Language) or other statements or commands could be received depending on the structure and/or type of database involved in the interaction. The data statement(s) can be communicated to the device interface component via TCP/IP (Transmission Control Protocol/Internet Protocol) or like protocols, frameworks, inter-process communication (messages, queues, pub/sub, sockets, TIPC (Transparent Inter-Process Communication)) or communication models. Device interface component110can thus correspond to a socket, which enables communication between two different processes on the same or different machines. Here, device interface component110can be a socket that is in communication with one or more automation devices and stands prepared to receive and/or send data or data packets. Secure communications such as secure sockets layer (SSL) or other security means between a client and device interface component110. Device interface component110is communicatively coupled to data interface component120.

Data interface component120can receive or retrieve one or more statements, commands, transactions, or other unit of database or data interaction from the device interface component110and transmit them to a database management system (DBMS). Additionally, data interface component120can receive a response such as a result set from a database management system and transmit the response back to the device interface component110. In accordance with an aspect of the invention, the data interface component120can be implemented utilizing JDBC (Java Database Connectivity) API (Application Programming Interface) for Java programs and a database driver associated with the database to be accessed. The driver is beneficial at least because it provides efficient and secure communication with a database. Component120may have a username and password or be provided one by a secure means. One aspect is to contain the authentication information in component120, and not include IT layer, database usernames and passwords in a “zero” configuration interface component110. Further, this architecture reduces revision management issues between the device interface component110and the database because the data interface component120contains the database JDBC driver.

Furthermore, the device interface component110can provide a mechanism to perform data filtering. In other words, the statements, transactions, or other units of database interaction received by the interface component110can be selectively and/or periodically provided to the data interface component120to facilitated efficient processing thereof. Rather than immediately transmitting every statement received, the interface component can batch them and transmit them to the data interface component at particular intervals or upon receipt of a predetermined number of statements, transactions or the like. The device interface component110can also include or employ artificial intelligence or knowledge or rule based components, systems, processes, means, or mechanisms (e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines, classifiers . . . ) to aid in determining batch size as well as if an when to transmit the batch. The device interface component110can infer (as that term is defined herein) the optimal time and batch size to transmit to the data interface component120. For example, the device interface component110could infer and/or detect database load and transmit batches at particular times when the database is available for processing.

For purposes of clarity and understanding and not limitation, consider a programmable logic controller (PLC) that seeks to write the some values to a database. The controller could transmit a native declarative database statement such as “INSERT INTO Table, values (10, 20, 30);” to the device interface component110. The device interface component110could receive this statement and transmit it to the data interface component120. Data interface component120could then transmit the statement to a database management system including but not limited to a relational database management system (RDBMS), object database management system (ODBMS) and Post-Relational Database. For example, such database management systems can correspond to, but are not limited to, DB2, MSSQL, MySQL, Informix, Sybase, Cloudscape, Oracle, Post-GRE, Versant, and Matisse. The database management system could then execute the statement thereby entering the values into the specified table. Upon completion, a response indicative of a successful write or an error can be transmitted back to the automation device, from the database management system through the data interface component120and device interface component110back to the PLC. This aspect of the subject invention enables the PLC programmer to have an efficient means to detect a successful database write, and the design assures them they no longer need to keep a duplicate copy of the data that now resides in the database.

It should be appreciated that although described in terms of sockets and JDBC, other implementations are also possible and within the scope of the subject invention. For example, the device interface component110can represent a CIP (Common Industrial Protocol) object(s) interface(s) that can enable both TCP and non-TCP/IP devices such as ControlNet and DeviceNet to exchange the data requests and communicate them to the data interface component120. The interface object(s) can provide declarative interfaces as well as “pre-defined” interfaces such as an insert and/or select CIP service, as well as transparently map CIP data types to the datatypes supported by the database vendor (e.g., SQL). Further a CIP database table object can be mapped to a database table, such that this CIP object will then present a data schema, or data attributes which mirror the actual database table which it is assigned. In another example, both device interface component110and data interface component120can employ one or more of a combination of inter-process communication (IPC) mechanisms. In general, IPC can be employed to exchange data between processes, for example, within the same entity, over a network and/or throughout a distributed environment. IPC can also be utilized to enable one application to control another application, and/or for several applications to share the same data without interfering with one another. Examples of IPC mechanisms include, but are not limited to, Common Gateway Interface (CGI), Fast CGI, TIPC, Berkley sockets, std I/O such as stdin, stdout and stderr, file descriptors, named pipes, memory mapped files, queues and named queues, mailboxes, semaphores, shared or dual port memory, RISC OS messages, Mach ports, OS/2 named pipes, Microsoft Windows DDE, Novell SPX, Apple Macintosh IAC (e.g., AppleEvents) and/or different forms of software componentry, such as CORBA, Component Object Model (COM) and/or distributed COM (DCOM), and/or web services, and/or reliable messaging such as MSMQ, MQ, MQTT, and JMS.

Furthermore, while the interface system100is described herein with respect to interaction with database systems, system100is not so limited. The interface system100can facilitate interaction between an automation device or system and a myriad of different data sources or services. The device interface component110could receive strings, statements, expressions, or the like and interact with a data service via data interface component120. For example, a device interface component110could receive a protocol string that specifies a network time to be received, retrieved, or otherwise obtained. The device interface component110could then transmit this string to the data interface component120that obtains the time from a network service. Similarly, interface system100and more particularly data interface component120can enable interaction with a web service.

FIG. 2depicts a database communication system200in accordance with an aspect of the invention. System200can include one or more automation devices210an interface system100and a database management system220. As presented, the interface system100, described supra, can be implemented as middleware in accordance with an aspect of the subject invention. Accordingly, the interface system100can be provided between one or more automation devices210and one or more database management systems220. Hence, interface system100can be embodied on a separate computer system or machine than either or both of the automation devices210and the database management system220. Automation devices210can include programmable logic controllers (PLCs), control systems, modules, and any other components or systems that control and/or facilitate automation of industrial and/or manufacturing processes. The one or more automation devices210can generate and/or transmit declarative database statements, commands (e.g., SQL, OQL, OOQL, MDX . . . ), transactions (e.g., groups of statements or commands, which include Java Transaction API (JTA) and Transact-SQL), or other unit of database interaction to the interface system100. Furthermore, it should be noted that the transmission of statements, commands and the like could be initiated remotely. For example, an operator could send a command to a controller from a remote personal computer, for example over the Internet, to send all its data, tags, objects, and the like to interface system100to persist such data. The interface system100can subsequently transmit the statements to database management system220. Database management system220can subsequently send a response indicative of the success of the operation and/or a result set corresponding to the evaluated statement(s) to the interface system100. Interface system100can then transmit the response and/or result(s) back to the one or more automation devices210.

The results could be copied to PLC variables or further utilized in control logic code, for example. The PLC may asynchronously or synchronously copy the controller tags or other information to/from the declarative database statements in coordination with the control loops it is performing. Further, the controller can use special event processing tasks specifically designed to interface data with the database request responses events. Furthermore, it should be appreciated that database system220can include stored procedures. Accordingly, the one or more automation devices210can invoke one or more stored procedures utilizing statements transmitted via interface system100. The PLC or other automation device210may store any type of information such as data, input/output discrete or process values or derived values, performance related information, alarms, events, messages, error logs, quality information, application programs, configuration information, recipe information, LDAP or active directory information, firmware images, etc. in the database system220. Further, it should be appreciated that database system220is a general label that may include a singularity or plurality of database instances, as well as from various vendors and limited functionality source implementations performing a database function. The database system component220also is meant to include relational database management systems (RDBMS) and Object Database Management Systems (ODBMS)

FIG. 3illustrates a database interaction system300in accordance with an aspect of the subject invention. Database interaction system300can include one or more industrial automation devices210and a database management system220. According to this aspect of the invention, interface system100can reside on and be executed by an automation device210or control system component such as a PLC. The one or more automation devices210can generate a database statement, such as a SQL statement, command, or transaction. The statement, command or transaction can be received by the interface system100residing on one or more automation devices210. The statements can then be communicated by the interface system100execution with respect to one or more automation devices to a database management system220. The statements can then be executed or evaluated with respect to a database or data store. Furthermore, such statements could invoke one or more stored procedures222residing on the database system220. A response including any results generated as a result of statement execution can be transmitted to the interface system100on one or more automation devices210. The interface system can then supply the response or result set to the statement-issuing device210.

FIG. 4illustrates a database interaction system400in accordance with an aspect of the subject invention. System400includes one or more automation devices210and a database management system220. According to this aspect of the invention, the interface system100can reside on database server410associated with the database management system220as a servlet, for instance. Hence, one or more automation devices210can communicate with the database system220via interface system100. The interface system100can receive communications from the automation devices210, for example utilizing TCP/IP data packets, reliable messages such as MSMQ, MQTT, MQ, JMS, or even via remote method invocation (RMI), via inter-process communication, web services, etc. An automation device210may or may not contain a username and password for the database. In this example, the database security credentials may be only contained in interface system100, while a secure reliable communication technology like secure sockets layer (SSL), IP filtering, firewall, ingress and/or egress filtering, or IP security protocol (IPsec) is leveraged between system100and device210. However, this does not exclude the option of the automation device authenticating against an authentication proxy, or the database by any viable means including but not limited to username, password, and digital certificate. The interface system100can subsequently transmit the database statements, commands, or transactions to the database management system220for processing or evaluation. The database system220can also include stored procedures222. Hence, it should be appreciated that the received database statements can invoke such stored procedures222. The database system220can subsequently return a response such as a result set corresponding to the database statements and/or an indication that statement execution was successful or in error. The response and/or results can be transmitted to the interface system100, which can provide such data back to one or more automation devices210.

FIG. 5illustrates a system500in accordance with an aspect of the subject invention. System500includes an automation device210that comprises interface system100, database system220and optional stored procedures222. System500enables at least one automation device210such as a controller to also act as a database serving information to other automation devices210through as well as leverage the JDBC reliable messaging and/or inter-process communication to exchange information with upper layer IT systems including but not limited to MES (Manufacturing Execution System) or ERP (Enterprise Resource Planning) shown by component510. The local database system or component220may also act as a data cache between the large ERP and MES databases (not shown). This enables a PLC controlling a manufacturing line to buffer work in progress when network connectivity or availability of the ERP/MES servers is interrupted.

The automation data, control variables, and tags may be mapped between a database220and the actual device internal values transparent to the user. Hence, a remote ERP/MES client or system510can make a syntactically correct SQL declarative statement such as select from a Table where VIN_ID=123456, which could return a result set containing the build parameters for a vehicle with vehicle VIN ID=123456. Similarly, the ERP/MES system510could now modify this vehicle's color from blue to red by executing a SQL statement such as “UPDATE TABLE SET COLOR=”RED” WHERE VIN=123456, rather than try and find the PLC data value in an array of strings, etc, as is the current convention. This is possible because the build parameters may actually be stored in a local database, the PLC variables and tags can be mirrored in the local database, or the PLC leverages the interface component100to fetch the latest build parameters just in time (e.g., in real time) for that specific control loop when it performs the vehicle's painting. System or component510can represent a single instance of or a plethora of upper layer MES and ERP IT systems such as SAP, Oracle, IBM WebSphere and/or Server Foundation, Microsoft, webMethods Integration Servers, and other database, quality and information management systems. Further, it should be appreciated that the interface system100supports moving information between the automation device and the database as a transaction.

Turning toFIG. 6, an exemplary system600is depicted to illustrate how aspects of the invention can be employed in an industrial automation environment. It should be appreciated that system600is provided to facilitate understanding of aspects of the invention and not to limit the scope thereof. System600includes a database management system or data warehouse system220(e.g., Oracle, MSSQL, MySQL, DB2, Access, Versant, Post-GRE, Matisse . . . ). System600also includes a controller610such as a programmable logic controller (PLC) or other control system. The controller610interacts with the database system employing an interface system100as described with respect toFIG. 1. The controller can also interact with a plurality of automation systems including RFID (Radio Frequency Identification) reader620, RFID print and apply system630, display system640. The controller610can receive data from an RFID reader system620and store such data to the database220utilizing the interface system100. For instance, the controller610can collect batches of data and employ declarative query commands or statements specifying the storage and/or organization of the data with respect to a database. Additionally, the controller610can retrieve data from the database system220via interface system100, and provide such data to a RFID print and apply system630to enable generation of RFID tags, for example. The controller could also retrieve and supply data from the database system220to the display system640to enable population of user interfaces or displays with data as well as respond to requests and/or commands from users. Still further yet, the controller610can interact with MES/ERP (Manufacturing Enterprise System/Enterprise Resource Planning) systems650(e.g., SAP, IBM Web Sphere, MRF-PRO . . . ). Such systems are business management systems that provide a plurality of tools and applications with respect to all facets of business including but not limited to sales, manufacturing, marketing, planning, inventory control, and order tracking. Controller610can provide an uplink of data such as RFID data to the MES/ERP system650from database system220utilizing interface system100.

FIG. 7depicts a database interaction system700in accordance with an aspect of the subject invention. System700can include one or more automation devices210an interface system100and a database management system(s)220. As described throughout, the interface system100facilitates communication between automation devices or components and a database system. As illustrated, interface system100resides between automation device(s)210and database management system220as provided in system200ofFIG. 2. However, it should also be appreciated that interface system100can also be located on an automation device210, on the a database server, or together with a database system on an automation device210as described with respect to systems300,400, and500ofFIGS. 3-5, respectively, among other orientations. Furthermore, the database management system220may include one or more of a relational database management system (RDBMS) and object database management system (ODBMS), amongst other data management systems. Automation devices220can include programmable logic controllers (PLCs), control systems, modules, and any other components or systems that control and/or automate industrial or manufacturing processes. The one or more automation devices210can generate and/or transmit declarative database statements, commands (e.g., SQL, MDX . . . ), transactions (e.g., groups of statements or commands), or other unit of database interaction to the interface system100. The interface system100can subsequently transmit the statements to database management system220. Database management system220can then send a response indicative of the success of the operation and/or a result set corresponding to the evaluated statement(s) to the interface system100. Interface system100can then transmit the response and/or result(s) back to the one or more automation devices210. Furthermore, it should be appreciated that database system220can include stored procedures. Accordingly, the one or more automation devices210can invoke one or more stored procedures utilizing statements transmitted via interface system100.

System700also includes a mapping component710. Mapping component710can map java objects, automation device variables, tags, data, and the like to stored or persisted data, for example via one or more database statements, commands, transactions or other units of database interaction. More specifically, the mapping component710can include or be communicatively coupled to a plurality of rules or a schema that can be employed to perform the mapping or aliasing. Further, this mapping component can perform the relational to/from object database mapping (R/O Mapping). The automation devices210may persist objects data in the object database. A mapping component may relate these databases between each other and remote databases. The automation layer configuration, programming, and devices may include and/or leverage object/relational mapping tools such as CocoBase by Thought, Inc. Hence, the mapping component could receive a variable or tag and map it to one or more corresponding statements, commands, queries, or the like. The statements can then be transmitted via the interface system100to the database system220for evaluation or execution. The results of the evaluation can be provided to the mapping component710utilizing interface system100. It should also be appreciated the results of these statements could be fetched from memory such as local cache, if available, or alternatively from a web service or inter-process communication. The mapping component710can then copy the results to the appropriated variables or tags or otherwise utilize the results in control logic code.

The data flow between the automation device210and database system220can thus be performed transparently to a programmer. For instance, control tags can be configured, mapped, linked or aliased to a database value, row, table, or stored procedure, such that when the user or other entity utilizes the automation alias they are in effect operating through interface system100without having to be explicit about the data movement. The data exchange occurs according to the mapping rules, such as use of a local cache, involve inter process communications, rule based such as periodic update, dead band, change of state, trigger synchronous and asynchronous updates, etc. Furthermore, such mirroring or aliasing of control system variables, tags, or the like can be done automatically or semi-automatically by mapping component710.

By way of example and not limitation, consider a situation where a programmable logic controller includes an addition command such as add (z=x+y), where z, x, and y are all integers. The mapping component could receive this command and map x to the query statement “Select weight From IngredientsTable Where type=flour” and map y to the statement “Select weight From LiquidTable Where type=water.” These query statements could then be submitted for evaluation (if not available in cache) to the database system220utilizing interface system100. The results of the statements could then be returned to the mapping component, which could add the values together to determine the value of z. Subsequently, a PLC SQL instruction can utilized to perform an update such as “Update totalweight From OutputTable Set totalweight=z Where batch=1234.” Thus, from this example it should be appreciated that control logic can include or directly reference declarative database statements, commands, and the like as well as employ such statements indirectly through mapping component710or any combination thereof. Further, local data tags that are references or aliases for a local database value may be updated by a remote client. In this case, a PLC controller or automation device is using a data value that may actually be distributed to multiple devices, and updated or managed by a central server.

The aforementioned systems have been described with respect to the interaction between several components and/or systems. It should be appreciated that such systems can include those components and/or systems specified therein, some of the specified components, and/or additional components specified in other systems. Additionally, it should be noted that one or more components may be combined into a single component to provide aggregate functionality or divided into several subcomponents. The components may also interact with or be integrated with one or more other components or systems not specifically described herein but known by those of skill in the art.

In view of the exemplary systems described supra, a methodology that may be implemented in accordance with the subject invention will be better appreciated with reference to the flow charts ofFIGS. 8-12. While for purposes of simplicity of explanation, the methodology is shown and described as a series of blocks, it is to be understood and appreciated that the subject invention is not limited by the order of the blocks, as some blocks may, in accordance with the subject invention, occur in different orders and/or concurrently with other blocks from what is depicted and described herein. Moreover, not all illustrated blocks may be required to implement the methodology in accordance with the present invention.

Additionally, it should be further appreciated that the methodologies disclosed hereinafter and throughout this specification are capable of being stored on an article of manufacture to facilitate transporting and transferring such methodologies to computers. The term article of manufacture, as defined supra, is intended to encompass a computer program accessible from any computer-readable device, carrier, or media.

Turning toFIG. 8, a method of data interaction800is illustrated in accordance with an aspect of the subject invention. At reference numeral810, one or more database statements, commands, transactions, or other unit of database or data interaction are transmitted from an automation device such as a controller to a database, database management system, data warehouse system or other system or service. Such statements can be declarative database statement such SQL or OQL statements, specified in string variables, for instance. Such statements can specify storage of data and/or retrieval of data. Furthermore, such statements can invoke one or more stored procedures. These database statements can be transmitted utilizing a protocol such as TCP/IP and the like. Initiation of the transmission can be local or remote. For example, a controller could receive a command to persist all its data, objects, tags, and the like to a database. At820, the automation device receives a response. The response can include an indication of whether or not execution of the statement(s) was successful and/or a result set. Subsequently, the result set can be copied to some controller variable to effect operation of some device or otherwise utilized in programmatic logic (e.g., ladder logic . . . ).

FIG. 9is a flow chart diagram illustrating a method900of facilitating communication between automation devices and data systems. At reference numeral910, one or more database statements, commands, transactions, or other units of database or data interaction are received from an automation device. The statement can be a declarative statement such as a SQL statement or the like. Furthermore, the statement can provide for storage of data to a data system such as a database, retrieval of data, and/or manipulation of stored data. Still further yet, the statements can reference and invoke stored procedures. At920, the received statement(s) are transmitted to a data system such as a database (e.g., DB2, MSSQL, MySQL, Oracle, Versant, Post-GRE, Matisse . . . ) or service for execution or evaluation. Statements can be transmitted to a database employing a database driver or application programming interface (API). Furthermore, database connectivity systems, interfaces, or connectors can be employed including but not limited to JDBC (Java Database Connectivity), ODBC (Open Database Connectivity), Java Transaction API (JTA), reliable messaging (IBM Websphere MQ, Microsoft Message Queuing (MSMQ), MQ Telemetry Transport (MQTT), Java Messaging Specification (JMS)), and web services. Automation data values may be persisted by object database management systems, and data files. Automation data contained in Java objects may leverage known as Plain Old Java Object (POJO) persistence model, Java Data Objects (JDO) as defined by the Java Specification Requests i.e. JSR-000012, JSR-243, etc. At930, a response to the statement(s) is received from the data system. The response can be an indication of successful execution or an error and/or a result set. The response can then be transmitted back to an automation device, at940.

FIG. 10depicts a database interaction methodology1000in accordance with an aspect of the subject invention. At reference numeral1010, database statements, commands, transactions, or other unit of database interaction are received from an interface. The statements can be declarative database statements, for example in a structured query language (e.g. SQL, MDX . . . ). Such statements can seek to add data, amend data, or retrieve data from a database. At1020, the database statements are executed or evaluated. For example, values are inserted into a table, modified, and/or retrieved. At1030, a response is returned to the interface. The response can include an indication as to whether the statement(s) was able to be executed. Furthermore, the response can include a results or a result set, for example if the statement(s) include a data query. A similar methodology can be employed with respect to services such as webs services.

FIG. 11illustrates a method of database interaction1100in accordance with an aspect of the subject invention. At reference numeral1110, an interface is deployed. The interface can include the interface system100as described above. Such an interface can be deployed as middleware on a machine separate from the automation device and a database system, on the automation device, or on a database system server. At1120, a database driver or API (Application Programming Interface) is loaded to facilitate communication with a specific database and/or a particular database vendor (e.g., DB2, MSSQL, MySQL, Oracle, Versant, Post-GRE, Matisse . . . ). Such drivers or database vender APIs are advantageous at least because they provide for efficient and secure communication with a database. At1130, connections are established between the interface and one or more automation devices, and the interface and a database. Once the connections are established, the interface is operable to facilitate communication between one or more automation devices and a database. At1140, data is transmitted via the interface from automation devices to the database and/or from the database to the automation devices. For example, the automation device can issue database commands or statements, for example, which are transferred to the database utilizing the interface for execution or evaluation. Responses including but not limited to query result sets can be returned to one or more automation devices from the database via the interface.

FIG. 12depicts a method of data interaction1200in accordance with an aspect of the subject invention. At reference numeral1210, one or more mapped statements, commands or the like are obtained. The mapped statements can correspond to declarative database systems such as a SQL or OQL statement, command, or query. At1220, the result(s) of such statements can be obtained. The result(s) could be obtained from a database, a web service, or an inter-process communication, among other things. For example, the mapped statement could be transmitted via an interface system as described herein to a database system. The database system could evaluate the statement and provide results. Alternatively, the results could be fetched from a local cache or memory and fetched from the database only when the result is not already in memory. At1230, control values can be updated. For example, control variables or tags can be updated with the obtained result value(s). Additionally or alternatively, the result(s) could simply be employed further in control logic.

In order to provide a context for the various aspects of the invention,FIGS. 13 and 14as well as the following discussion are intended to provide a brief, general description of a suitable computing environment in which the various aspects of the present invention may be implemented. While the invention has been described above in the general context of computer-executable instructions of a computer program that runs on a computer and/or computers, those skilled in the art will recognize that the invention also may be implemented in combination with other program modules. Generally, program modules include routines, programs, components, data structures, etc. that perform particular tasks and/or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the inventive methods may be practiced with other computer system configurations, including single-processor or multiprocessor computer systems, mini-computing devices, mainframe computers, as well as personal computers, hand-held computing devices, microprocessor-based or programmable consumer electronics, industrial controllers, and the like. The illustrated aspects of the invention may also be practiced in distributed computing environments where task are performed by remote processing devices that are linked through a communications network. However, some, if not all aspects of the invention can be practiced on stand-alone computers. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

With reference toFIG. 13, an exemplary environment1310for implementing various aspects of the invention includes a computer1312. The computer1312includes a processing unit1314, a system memory1316, and a system bus1318. The system bus1318couples system components including, but not limited to, the system memory1316to the processing unit1314. The processing unit1314can be any of various available processors. Dual microprocessors and other multiprocessor architectures also can be employed as the processing unit1314.

The system memory1316includes volatile memory1320and nonvolatile memory1322. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer1312, such as during start-up, is stored in nonvolatile memory1322. By way of illustration, and not limitation, nonvolatile memory1322can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEPROM), or flash memory. Volatile memory1320includes random access memory (RAM), which acts as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), and direct Rambus RAM (DRRAM).

It is to be appreciated thatFIG. 13describes software that acts as an intermediary between users and the basic computer resources described in suitable operating environment1310. Such software includes an operating system1328. Operating system1328, which can be stored on disk storage1324, acts to control and allocate resources of the computer system1312. System applications1330take advantage of the management of resources by operating system1328through program modules1332and program data1334stored either in system memory1316or on disk storage1324. It is to be appreciated that the present invention can be implemented with various operating systems or combinations of operating systems.

A user enters commands or information into the computer1312through input device(s)1336. Input devices1336include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices connect to the processing unit1314through the system bus1318via interface port(s)1338. Interface port(s)1338include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s)1340use some of the same type of ports as input device(s)1336. Thus, for example, a USB port may be used to provide input to computer1312and to output information from computer1312to an output device1340. Output adapter1342is provided to illustrate that there are some output devices1340like displays (e.g., flat panel and CRT), speakers, and printers, among other output devices1340, that require special adapters. The output adapters1342include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device1340and the system bus1318. It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s)1344.

Computer1312can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s)1344. The remote computer(s)1344can be a personal computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically includes many or all of the elements described relative to computer1312. For purposes of brevity, only a memory storage device1346is illustrated with remote computer(s)1344. Remote computer(s)1344is logically connected to computer1312through a network interface1348and then physically connected via communication connection1350. Network interface1348encompasses communication networks such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet/IEEE 802.3, Token Ring/IEEE 802.5 and the like. WAN technologies include, but are not limited to, point-to-point links, circuit-switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL).

Communication connection(s)1350refers to the hardware/software employed to connect the network interface1348to the bus1318. While communication connection1350is shown for illustrative clarity inside computer1312, it can also be external to computer1312. The hardware/software necessary for connection to the network interface1348includes, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems, power modems and DSL modems, ISDN adapters, and Ethernet cards.

FIG. 14is a schematic block diagram of a sample-computing environment1400with which the present invention can interact. The system1400includes one or more client(s)1410. The client(s)1410can be hardware and/or software (e.g., threads, processes, computing devices). The system1400also includes one or more server(s)1430. The server(s)1430can also be hardware and/or software (e.g., threads, processes, computing devices). The server(s)1430can house threads to perform transformations by employing the present invention, for example. One possible communication between a client1410and a server1430may be in the form of a data packet transmitted between two or more computer processes. The system1400includes a communication framework1450that can be employed to facilitate communications between the client(s)1410and the server(s)1430. The client(s)1410are operatively connected to one or more client data store(s)1460that can be employed to store information local to the client(s)1410. Similarly, the server(s)1430are operatively connected to one or more server data store(s)1440that can be employed to store information local to the servers1430.

What has been described above includes examples of the present invention. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the present invention, but one of ordinary skill in the art may recognize that many further combinations and permutations of the present invention are possible. Accordingly, the present invention is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the terms “includes,” “has,” and “having” are used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.