The subject invention relates to industrial control systems and, more particularly, to enabling utilization of legacy devices when updating an industrial control system data model.
Due to advances in computing technology, businesses today are able to operate more efficiently when compared to substantially similar businesses only a few years ago. For example, internal networking enables employees of a company to communicate instantaneously by email, quickly transfer data files to disparate employees, manipulate data files, share data relevant to a project to reduce duplications in work product, etc. Furthermore, advancements in technology have enabled factory applications to become partially or completely automated. For instance, operations that once required workers to put themselves proximate to heavy machinery and other various hazardous conditions can now be completed at a safe distance therefrom.
Further, imperfections associated with human action have been minimized through employment of highly precise machines. Many of these factory devices supply data related to manufacturing to databases that are accessible by system/process/project managers on a factory floor. For instance, sensors and associated software can detect a number of instances that a particular machine has completed an operation given a defined amount of time. Further, data from sensors can be delivered to a processing unit relating to system alarms. Thus, a factory automation system can review collected data and automatically and/or semi-automatically schedule maintenance of a device, replacement of a device, and other various procedures that relate to automating a process.
While various advancements have been made with respect to automating an industrial process, utilization and design of controllers has been largely unchanged. In more detail, industrial controllers have been designed to efficiently undertake real-time control. For instance, conventional industrial controllers receive data from sensors and, based upon the received data, control an actuator, drive, or the like. These controllers recognize a source and/or destination of the data by way of a symbol and/or address associated with source and/or destination. More particularly, industrial controllers include communications ports and/or adaptors, and sensors, actuators, drives, and the like are communicatively coupled to such ports/adaptors. Thus, a controller can recognize device identify when data is received and further deliver control data to an appropriate device.
As can be discerned from the above, data associated with conventional industrial controllers is created, delivered, and/or stored with a flat namespace data structure. In other words, all that can be discovered by reviewing data received and/or output by a controller is an identity of an actuator or sensor and a status thereof. This industrial controller architecture operates efficiently for real-time control of a particular device—however, problems can arise when data from industrial controllers is desired for use by a higher-level system. For example, if data from the controller was desired for use by a scheduling application, individual(s) familiar with the controller must determine which data is desirable, sort the data, package the data in a desired format, and thereafter map such data to the scheduling application. This introduces another layer of software, and thus provides opportunities for confusion in an industrial automation environment. The problem is compounded if several applications wish to utilize similar data. In operation, various controllers output data, package it in a flat namespace structure, and provide it to a network. Each application utilizing the data copies such data to internal memory, sorts the data, organizes the data, and packages the data in a desired format. Accordingly, multiple copies of similar data exist in a plurality of locations, where each copy of the data may be organized and packaged disparately.
Furthermore, updating data structures of controllers is associated with another array of implementation problems. For instance, some legacy controllers or other devices may not be associated with sufficient memory and/or processing power to support an updated application, and it is not cost effective for a company to replace every controller within an enterprise. Therefore, not only will multiple copies of data be existent within an industrial automation environment, but multiple copies of disparately structured data will be existent upon a network. Applications may require disparate mapping modules to enable mapping between controllers associated with first and second architectures. Thus, simply updating an architecture of controllers does not alleviate current deficiencies associated with industrial controllers in an industrial automation environment.
The following presents a simplified summary of the claimed subject matter in order to provide a basic understanding of some aspects described herein. This summary is not an extensive overview, and is not intended to identify key/critical elements or to delineate the scope of the claimed subject matter. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.
A proxy server is described herein, wherein the proxy server enables use of a common, structured data model throughout an industrial automation environment (regardless of existence of legacy devices and/or third party devices). The proxy server includes hardware and software that can bridge disparate communication networks and convert data packets associated with a flat namespace to one that is hierarchically structured. The proxy server can include software for defining and configuring data packets into a common, structured data model, and can further include hardware for collecting data packets from legacy controllers/devices and third party controllers/devices. For instance, the aforementioned software can include an editor that enables a user to map data elements collected by the hardware into data structures that conform to the hierarchically structured data model. For instance, the user can define a set of events that relate to completion of certain operations. In other words, the events can be constructed from the data and its logical combination through use of predefined rules.
A data structure defined by the editor can include several data elements and can further include a message or information event. For instance, “milling operation at station ten was completed with a measured diameter of 0.001 inches” can be an information event. The editor can further enable a user to configure a method for transferring structured data or events from the proxy server to a software application running on another computing platform or server. The data transport can be one of several known transport mechanisms such as MQ messaging, web services, XML, etc. In summary, the software enables mapping of collected data into meaningful information and configuration of transfer of information to other controllers or software applications running on various computing platforms.
The proxy server can further include a communications interface to a network on which a programmable controller resides as well as an interface to a server (such as an OPC server) that collects and forwards data from such controllers utilizing a known interface protocol. Thus, the OPC server can reside outside the proxy server or be embedded within the proxy server. Moreover, the proxy server can connect to one or more networks at a single instance in time. Thus, the proxy server can act as a bridge between different communication networks, and can further automatically convert data from a first format to a hierarchically structured data format. Furthermore, the proxy server can administer uniform security over several devices. For example, some devices do not support security functions, and other devices need to be individually programmed. Rather than leaving devices disassociated with security functions and/or tediously updating one device at a time, the proxy server can be employed as a security agent.
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, however, of but a few of the various ways in which the principles of the invention can be employed and the subject invention is intended to include all such aspects and their equivalents. Other advantages and novel features of the invention will become apparent from the following detailed description of the invention when considered in conjunction with the drawings.
The claimed subject matter is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the claimed subject matter. It may be evident, however, that such matter can be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the invention.
As used in this application, the terms “component” and “system” and the like are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an instance, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a computer and the computer can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
Furthermore, the claimed subject matter may be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer to implement the disclosed subject matter. The term “article of manufacture” as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. For example, computer readable media can include but are not limited to magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips . . . ), optical disks (e.g., compact disk (CD), digital versatile disk (DVD) . . . ), smart cards, and flash memory devices (e.g., card, stick, key drive . . . ). Additionally it should be appreciated that a carrier wave can be employed to carry computer-readable electronic data such as those used in transmitting and receiving electronic mail or in accessing a network such as the Internet or a local area network (LAN). Of course, those skilled in the art will recognize many modifications may be made to this configuration without departing from the scope or spirit of the claimed subject matter. Moreover, the word “exemplary” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs.
Turning now to the drawings,
Another advantage associated with a hierarchically structured data model is an ability to perform tracking and tracing across system/process boundaries. In more detail, factory data can be correlated to material data through employment of the hierarchically structured data model. Thus, which materials are associated with particular batches and other information that can be quite useful in an industrial automation environment can be easily discovered through employment of the hierarchically structured data model (which can correlate factory data to other data). In contrast, conventionally an individual would need to manually undertake such correlation, thereby increasing possibility of error.
Today's controllers (PLCs, numeric controllers, robotic controllers, smart devices, and the like), however, may not support such a data model, and it would be financially burdensome to simultaneously replace legacy/third party devices that do not support the aforementioned hierarchically structured data model. It is, however, desirable to maintain a consistent data model throughout an enterprise, thus enhancing system interoperability as consistency in data format for review/programming. The proxy server 102 facilitates such consistency. In more detail, the proxy server 102 includes an interface component 104 that facilitates reception of data from a PLC 106 that is not configured in accordance with the hierarchically structured data model and/or cannot support the hierarchically structured data model. While this figure and other later described figures depict PLCs, it is understood that other factory controllers, such as robotic controllers and numeric controllers, as well as smart devices utilized in a factory floor, can output data that is structured in a flat manner. These factory devices can be collectively referred to as “controller” for purposes of interpreting the claims. For instance, the PLC 106 can be a legacy device and/or a device associated with a vendor that does not support the hierarchically structured data model, and the interface component 104 can be any suitable hardware, software, or a combination thereof that facilitates reception of data from the PLC 106.
The proxy server 102 further includes a mapping component 108 that transforms/converts data formatted in accordance with properties/abilities of the PLC 106 to data formatted in accordance with the aforementioned hierarchically structured data model. For instance, the proxy server 102 can include and/or be associated with a data store 110 that comprises one or more templates, wherein the templates facilitate mapping between the data model supported by the PLC 106 and the hierarchically structured data model (which can, for example, be modeled upon ISA S95, ISA S88, and/or a combination thereof). Accordingly, the mapping component 108 can recognize structure of data that is received from the PLC 106 and thereafter locate and employ a corresponding template that enables transformation/conversion of the data model of the PLC 106 to the hierarchically structured data model.
Furthermore, programming of the PLC 106 can be undertaken by way of the proxy server 102. For example, an Information Technology (IT) individual can program the PLC in accordance with the hierarchical data model, rather than in accordance with the data model associated with such PLC 106. Thus, the PLC 106 can be programmed in a top-down manner. In other words, when opening an editor, an IT individual can be presented with a high-level view of an enterprise, and can “drill down” to program a desired sensor or output behavior on a selected PLC. As a specific example, an IT individual can open an editor and be proved with a view of an enterprise. Thereafter, the individual can select a desired factory, a desired cell, a desired line, and a desired piece of equipment and/or PLC, and program the selected PLC as desired, regardless of whether the selected PLC is capable of understanding the hierarchical data model. Similarly, to retrieve data, an individual need simply traverse through the data model hierarchy and request desired data, which can then be returned to the user in accordance with the hierarchical data model. The proxy server 102 generally and the mapping component 108 specifically provide for the above-described conversion of data.
The proxy server 102 enables a reviewer/programmer of data to be provided with a consistent representation of data regardless of existence of disparate data formats associated with devices on a factory floor. For instance, a first line may include PLCs from a first provider, while a second line may include PLCs from a second provider, and the PLCs can be configured to operate with disparate data models. Accordingly, to review data from each PLC, an IT individual need be familiar with each disparate data type. If there are several disparate systems, then individuals must be knowledgeable of various data formats. The proxy server 102 facilitates provision of a consistent data model regardless of vendor and/or capabilities of the PLC 106.
Now turning to
The interface component 206 can then output data to a prescribed network 212 over a pre-defined network protocol. For instance, the proxy server 202 can include a component (not shown) that facilitates bridging disparate networks. More particularly, data from the PLC 204 can be relayed over a proprietary network protocol associated with such PLC 204. The proxy server 202 can convert the data so that it conforms to a pre-defined network protocol (e.g., the Common Industrial Protocol (CIP)). Upon such transformation, the data can be re-formatted so that it conforms to a hierarchically structured data model, and hierarchically structured data 212 can be placed upon a network 214. Such data can then be accessed by other devices upon such network. Accordingly, interoperability and communications between legacy/third party devices in an industrial environment is enabled through utilization of the proxy server 202.
Turning now to
The proxy server 302 includes an interface component 310 that is configured to receive data from each of the PLCs 304-308 over the plurality of networks. For instance, the interface component 310 can be a plurality of ports as well as software associated with such ports. The interface component 310 can be associated with a bridging component 312 that acts as a network bridge. Thus, data carried by the disparate networks can be manipulated so that it conforms to a common network (e.g., CIP). Accordingly, the bridging component 312 can recognize a network protocol associated with received data from the PLCs 304-308 and perform operations to convert such data so that it conforms to a pre-defined protocol. Upon such conversion, a mapping component 314 can be employed to convert the data so that it conforms to a hierarchical data model (rather than data models associated with flat namespaces). The mapping component 314 can thereafter provide hierarchically structured data 316 to a requester of such data over a network 318, wherein the network conforms to the pre-defined protocol. Thus, through the proxy server 302, data relating to disparate devices provided by different vendors can be available in a uniform manner across an enterprise.
Referring now to
The disparately formatted data can then be received by a mapping component 412 that discovers format of the received data and converts such data into data that corresponds to a hierarchically structured data model. Thus, hierarchically structured data 414 can be provided over a network 416, wherein the network is associated with a pre-defined protocol. Accordingly, uniform data can be provided to users of an industrial automation system regardless of device type/vendor. The proxy server 402 further includes a security component 418 that provides uniform security to each of the PLCs 404-408. Many of today's PLCs do not support security functions, and those that do are proprietary and must be programmed directly at the PLC. Thus, disparate PLCs can be associated with different security. The security component 418 at the proxy server 402, however, enables uniform application of security functions across the PLCs 404-408. For instance, the security component 418 can facilitate request of usernames, passwords, PINs, biometric indicia, and the like from a user desiring to review/modify data relating to the PLCs 404-408. Furthermore, the security component 418 can provide different access levels to disparate users and different portions of data. For instance, a user may have read only access to a first portion of data within the PLC 404, read-write access to a second portion of data within the PLC 404, no access to a third portion of data within the PLC 404, read-write access to all data within the PLC 406, etc. These different security levels can be enforced by the security component 418. Furthermore, the security component 418 can be employed to periodically validate data associated with the PLCs 404-408. In one example, the PLCs 404-408 can generate log files and store such files internally and/or at an external database communicatively coupled to the proxy server 402. The security component 418 can access such log files to ensure that the PLCs 404-408 have not been subject to tampering. In still another example, security functions can be enforced for the PLCs 404-408 at the proxy server 402.
The security component 418 can also operate in conjunction with a filtering component 420 which can filter data based upon user identity, user location, or any other suitable parameter. For instance, the proxy server 402 can be coupled to a directory structure (not shown), and an operator can request data through the directory by way of the proxy server 402. The filtering component 420 can filter retrieved data so that only data pertinent to an operator's identity/current task is returned to the operator. The proxy server 402 can further include an editing component 422 that enables an operator/user to edit/configure/program the PLCs 404-408. For example, as described above, the user can navigate through a hierarchy of the factory by way of the hierarchically structured data model until desired location in such hierarchy is reached. Thereafter, the user/operator can edit/configure/program the PLC. Thus, the proxy server 402 facilitates editing/configuring/programming each of the PLCs 404-408 through a common data structure (rather than a disparate structure for each of the PLCs 404-408). Moreover, the editing component 422 enables off-line editing/configuring/programming of the PLCs 404-408. For instance, one knowledgeable of the hierarchy of the data model can make modifications to PLCs 404-408 offline, and thereafter plug the modifications into the proxy server 402 (which can map the modifications to data formats required by the PLCs 404-408).
The proxy server 402 can further include a communications component 424 that can receive and utilize a web service 426. Thus, a web service can be implemented within the proxy server 402. A Web service is a software system designed to support interoperable machine-to-machine interaction over a network, and has an interface described in a machine-processable format (e.g., WSDL). Other systems interact with the web service in a manner prescribed by its description using SOAP messages. Software applications written in various programming languages and running on various platforms can use web services to exchange data over computer networks in a manner similar to inter-process communication on a single computer.
Now turning to
The proxy server 502 further includes an aggregation component 518 that enables data from disparate devices/locations to be aggregated and provided to a user. In one particular example, each of the PLCs 504-508 can be associated with production of a specific product, but exist on disparate lines. A user can request data relating to such product, and the aggregation component 518 can cause the interface component 510 to receive data from the PLCs 504-508 relating to the product. The aggregation component 518 can then aggregate such data, thereby providing the user with a robust collection of data relating to the product of interest. Moreover, the proxy server 502 can be positioned at an enterprise level, thereby allowing aggregation of data between different factories. For example, an automobile manufacturer may have plants in several different cities, wherein two or more of the plants are manufacturing a substantially similar automobile. Through the proxy server 502 and the aggregation component 518, data can be aggregated and provided to a requestor at an enterprise level. This feature can provide an enterprise with an ability to quickly compare output and efficiencies of two disparate lines, cells, etc. at separate factories without having a substantial amount of custom mapping. Rather, the mapping component 512 converts data to a common data format (a hierarchically structured data model), thereby enabling efficient aggregation of such data.
The proxy server 502 can further include a workflow component 520 that enables receipt and execution of a workflow to be facilitated through the proxy server 502. Workflow is the operational aspect of a work procedure, defining how tasks are structured, which device performs the task, the relative order of the tasks, how the tasks are synchronized, how information flows to support the tasks, how tasks are to be tracked, etc. Thus, an exemplary workflow would be to process a first task through PLC 504 at time t1, process a second task through PLC 506 at time t2, process a third and fourth task simultaneously at PLC 504 and 508, etc. The workflow component 502 enables a workflow to be programmed and executed through the proxy server 502 (e.g., PLCs can be programmed through the proxy server 502 and/or the proxy server 502 can deliver commands to the PLCs 504-508, wherein such commands are mapped to the PLCs 504-508 by way of the mapping component 512). In one specific example, the workflow component 520 can execute Business Process Execution Language (BPEL) in connection with facilitating execution of a workflow.
Now referring to
Now turning to
The proxy server 708 can then deliver hierarchically structured data to a graphical user interface 716, which can then display data to a user in a common data format 718. As described above, the common data format 718 can be structured in accordance with ISA S95, ISA S88, and/or a combination thereof. In operation, a user can access the graphical user interface 716 in order to review data from the industrial devices 702-706 and/or program the industrial devices 702-706. The user can traverse through data structured according to the common data format 718 until a desired device is reached. The user can then receive requested data relating to the device in real-time through mapping undertaken by the proxy server 708. The data can be stored on the device itself, at the proxy server 708, and/or in a directory (not shown). Similarly, the user can program a desired device in the common data format 718, and thereafter the proxy server 708 can map such programming to a native format of the desired device. Thus, a common, structured representation can be provided throughout an enterprise.
Referring to
Turning specifically to
At 806, a format of the received data is determined. In more detail, data from the programmable logic controller will be formatted according to a particular protocol. Thus, the protocol can be determined and the data can be re-formatted in accordance with a pre-defined protocol. Thereafter, format of the device data can be determined. At 808, the data received from the programmable logic controller is reformatted in accordance with a hierarchically structured data model. For instance, the data model can be based at least in part upon ISA S95, ISA S88, and/or a combination thereof. Therefore, a common, structured data model can be provided throughout an enterprise. The methodology completes at 810.
Referring now to
Turning now to
Referring now to
Referring now to
With reference to
The system bus 1318 can be any of several types of bus structure(s) including the memory bus or memory controller, a peripheral bus or external bus, and/or a local bus using any variety of available bus architectures including, but not limited to, 8-bit bus, Industrial Standard Architecture (ISA), Micro-Channel Architecture (MSA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Universal Serial Bus (USB), Advanced Graphics Port (AGP), Personal Computer Memory Card International Association bus (PCMCIA), and Small Computer Systems Interface (SCSI).
The system memory 1316 includes volatile memory 1320 and nonvolatile memory 1322. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer 1312, such as during start-up, is stored in nonvolatile memory 1322. By way of illustration, and not limitation, nonvolatile memory 1322 can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEPROM), or flash memory. Volatile memory 1320 includes 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).
Computer 1312 also includes removable/non-removable, volatile/non-volatile computer storage media.
It is to be appreciated that
A user enters commands or information into the computer 1312 through input device(s) 1336. Input devices 1336 include, 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 unit 1314 through the system bus 1318 via interface port(s) 1338. Interface port(s) 1338 include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s) 1340 use 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 computer 1312, and to output information from computer 1312 to an output device 1340. Output adapter 1342 is provided to illustrate that there are some output devices 1340 like monitors, speakers, and printers, among other output devices 1340, which require special adapters. The output adapters 1342 include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device 1340 and the system bus 1318. It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s) 1344.
Computer 1312 can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s) 1344. The remote computer(s) 1344 can 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 computer 1312. For purposes of brevity, only a memory storage device 1346 is illustrated with remote computer(s) 1344. Remote computer(s) 1344 is logically connected to computer 1312 through a network interface 1348 and then physically connected via communication connection 1350. Network interface 1348 encompasses 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) 1350 refers to the hardware/software employed to connect the network interface 1348 to the bus 1318. While communication connection 1350 is shown for illustrative clarity inside computer 1312, it can also be external to computer 1312. The hardware/software necessary for connection to the network interface 1348 includes, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards.
What has been described above includes examples of the invention. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the subject invention, but one of ordinary skill in the art may recognize that many further combinations and permutations of the invention are possible. Accordingly, the 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 term “includes” is 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.