RELATED APPLICATIONSThis application is a continuation-in-part of U.S. patent application Ser. No. 08/927,005, filed Sep. 10, 1997, entitled “WEB INTERFACE TO A PPRGRAMMABLE CONTROLLER,” now U.S. Pat. No. 6,282,454, issued Aug. 28, 2001 (SAA-1). This application is related to the following, commonly assigned applications: “WEB INTERFACE TO A PROGRAMMABLE CONTROLLER,” Ser. No. 09/738,445, filed Dec. 15, 2000 (SAA-1-2); “INTERFACE TO A PROGRAMMABLE LOGIC CONTROLLER,” Ser. No. 09/223,349, filed Dec. 30, 1998 (SAA-19); “METHOD FOR PROGRAMMING A PLC USING A WEB BROWSER,” Ser. No. 09/524,171, filed Mar. 13, 2000 (SAA-34); “SYSTEM FOR PROGRAMMING A FACTORY AUTOMATION DEVICE USING A WEB BROWSER,” Ser. No. 09/635,278, filed Aug. 9, 2000 (SAA-34-1); “WEB INTERFACE TO AN INPUT/OUTPUT DEVICE,” Ser. No. 09/595,159, filed Jun. 15, 2000 (SAA-35); “WEB INTERFACE TO AN ELECTRICAL NETWORK CONTROL SYSTEM,” Ser. No. 09/738,433, filed Dec. 15, 2000 (SAA-35-1); “METHOD AND APPARATUS FOR A NOTIFICATION SYSTEM OF AN AUTOMATION NETWORK,” Ser. No. 09/611,996, filed Jul. 7, 2000 (SAA-42); U.S. Pat. No. 6,061,603, “SYSTEM FOR REMOTELY ACCESSSING AN INDUSTRIAL CONTROL SYSTEM OVER A COMMERCIAL COMMUNICATIONS NETWORK,” issued May. 9, 2000 (SAA-1-A); and “METHOD AND SYSTEM FOR IDENTIFIYING FACTORY AUTOMATION OBJECTS,” Ser. No. 09/723,184, filed Nov. 27, 2000 (SAA-48). The contents of these documents are expressly incorporated herein by reference.[0001]
TECHNICAL FIELDThe present invention relates generally to the field of monitoring and controlling input/output modules or devices for a factory automation system. More particularly, the present invention relates to a system and method for accessing objects and components in devices, e.g., programmable logic controllers (PLC), without the use of proprietary protocols.[0002]
BACKGROUND OF THE INVENTIONMethods for remote access of objects and components in a PLC or factory automation device often require unique, proprietary protocols. These methods require custom software to encode, transmit, parse, and interpret the message sent and received within the system. Furthermore, security concerns generally restrict access to the device by requiring transmission through a firewall. In the past, dedicated lines were the common form of communication between such a control system and a remote location. This type of communication had limited application since the control system was not accessible from multiple locations. While modems have made it possible to access the control system from remote locations, such access is generally restricted to downloading and uploading data files. Often times, a customized interface is required to access the control system by an end user.[0003]
With the growth of Internet, and its World Wide Web providing a delivery platform for organizing Internet data through hypertext links, a client-server system can be designed that will give each end user the same type of user friendly interface and universal access to services on the Web. The Web comprises a network of documents, e.g., sites or pages, stored on server computers throughout the world. Each page typically contains text, multimedia offerings, i.e., graphic images, video, or audio; and hypertext links to other web pages or documents. A web tool, e.g., web browser, allows a user to read and interact with the web page. The browser is a graphical software program that sends commands to the Internet Web site and displays available page information. Several browsers are commercially available from different manufacturers.[0004]
Most personal computers or workstations can be used by an end user to connect to the Web through the commercially available browsers. Communication over the Internet and other networks requires one of several available protocols. Protocols such as Internet Protocol (IP) provide for file transfers, electronic mail, and other services. Commercially available programming languages such as Java, along with Hypertext Markup Language (HTML), are used in designing layouts and graphics for a web site or page and have extended Internet technology such that a web site can be used for dynamic applications, e.g. applets, that can be downloaded and run by the end user.[0005]
Programmable logic controllers (PLCs) are widely used in industry and process control. Many manufacturers provide factory automation information using Microsoft Windows and other types of communication networking environments. These networks are usually slow, not universally accessible, and are limited to monitoring and data exchange. Specialized industrial networks using proprietary fieldbus alternatives can be very expensive. Conversion products are required to allow information carried over those networks to be visible on a general-purpose network. There are significant installation and other deployment costs associated with the existence of such intermediate devices. Firewalls between the Web server and the application are designed to solve problems of security and are not designed for high performance.[0006]
It is desirable to develop a system whereby a user can utilize general purpose networks, such as the Internet and specialized industrial networks, directly connected to input/output devices for remote monitoring and control of input/output modules or devices.[0007]
This invention is designed to solve these and other problems.[0008]
SUMMARY OF THE INVENTIONAn embodiment of the present invention is directed to a system for configuring a resource in a network. The resource being operably connected to a web tool providing access to the network. The system comprises a configuration database having a plurality of parameters for configuring the resource. A configuration page includes a form to facilitate configuration of the resource. The configuration page is accessible by the web tool and capable of receiving a resource parameter entry and a configuration option selection. The configuration option selection and the resource parameter entry compose a magic-URL. The configuration agent includes an agent API responsive to the magic-URL wherein the configuration agent and the magic-URL cooperate to manage the configuration database.[0009]
A further aspect of the present invention includes a configuration component having a component API. The configuration component API is operably connected to the configuration agent wherein the component API, configuration agent, and configuration database cooperate to configure the resource.[0010]
Another aspect of the present invention includes a remote procedural call mechanism to facilitate communication between the web tool and the configuration agent.[0011]
Yet another aspect of the present invention includes a configuration component web page. The configuration component web page is created in response to the magic-URL and the configuration database.[0012]
Another embodiment of the present invention is directed to a method for configuring a network resource. The network includes a configuration database and a configuration agent wherein a web tool provides access to the network. The method comprises providing a resource configuration page communicable with the web tool. The resource configuration page has a form for facilitating configuration of the resource. The form is capable of receiving a resource parameter entry and a configuration option selection. The configuration option selection and the resource parameter entry compose a magic-URL. The magic-URL is sent via the web to and received at the configuration agent. In response to the magic-URL, a configuration API is selected and executed. The configuration API cooperates with the magic-URL to manage the configuration database.[0013]
A further aspect of the present invention provides a network configuration page comprising a link to the resource configuration page. The network configuration page includes information about the network.[0014]
Yet another aspect of the present invention is directed to maintaining a configuration database page in response to the transmitted magic-URL. The configuration database page contains information about the configuration database and is transmitted to the web tool. The network configuration page is maintained to reflect the configuration of the database.[0015]
An object of the present invention is to utilize industry standard protocols for providing an interface to a resource, e.g., device, in a network.[0016]
Another object of the present invention is to reduce the need for proprietary client-server protocols for accessing a network resource.[0017]
A further object of the present invention is to utilize industry standard protocols for configuring a network resource.[0018]
Yet another object of the present invention is to provide a web interface for on-line configuration of a controller.[0019]
Other features and advantages of the invention, which are believed to be novel and nonobvious, will be apparent from the following specification taken in conjunction with the accompanying drawings in which there is shown a preferred embodiment of the invention. Reference is made to the claims for interpreting the full scope of the invention that is not necessarily represented by such embodiment.[0020]
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 depicts a block diagram of one embodiment of the present invention;[0021]
FIG. 2 depicts a block diagram of one embodiment of the present invention utilizing an RPC mechanism;[0022]
FIG. 3 is a block diagram of FIG.[0023]2 wherein the RPC mechanism is SOAP/XML;
FIG. 4 is a block diagram of one embodiment of the present invention depicting the utilization of the magic-URL;[0024]
FIG. 5 is a block diagram depicting one embodiment of the interface module operably connected to the CPU and web tool;[0025]
FIG. 6[0026]ais a flow chart representing transitions of one embodiment of the present invention;
FIG. 6[0027]bis a table representing the behavior of one embodiment of the configuration agent in accordance with the transitions shown in FIG. 6a;
FIG. 7 is a block diagram depicting an alternative embodiment of the present invention;[0028]
FIG. 8 is one embodiment of the form utilized to configure the configurable resource;[0029]
FIG. 9 is one embodiment of the magic-URL;[0030]
FIG. 10 is a table comprising a sample of configuration agent APIs;[0031]
FIG. 11 is one embodiment of the code architecture utilized in the preferred embodiment of the present invention;[0032]
FIG. 12 depicts one embodiment of a configuration resource page for an address server; and,[0033]
FIG. 13 depicts one embodiment of an address server configuration database file.[0034]
FIG. 14 depicts one embodiment of a web page for facilitating changes to the address configuration file; and,[0035]
FIG. 15 depicts one embodiment of an address server node configuration web page linked to the address server configuration page of FIG. 14.[0036]
DETAILED DESCRIPTIONAlthough this invention is susceptible to embodiments of many different forms, a preferred embodiment will be described and illustrated in detail herein. The present disclosure exemplifies the principles of the invention and is not to be considered a limit to the broader aspects of the invention to the particular embodiment as described.[0037]
The present invention discloses a method and a system for configuring a[0038]network resource10. The network and many of its components are accessible via aweb tool12, e.g., browser. Aconfiguration page16 includes aform18 to facilitate configuration of theresource10. Theform18 is accessible via theweb tool12 and capable of receiving a resource parameter entry20 and a configuration option selection22. Aconfiguration agent24 is responsive to theform18 and is capable of interfacing with theresource10. Theconfiguration agent24 coordinates the configuration of theresource10. Anagent API26 is associated with the selected configuration option22. Dependent upon the entered resource parameter20 and the selected configuration option22, aconfiguration database28 is accessed and utilized for configuring theresource10.
An alternative embodiment of the present invention comprises an[0039]interface module14 operably connected between theresource10 and thebrowser12. Theconfiguration agent24 is operably connected to theinterface module14 and coordinates the configuration of theresource10. Theconfiguration database28 is accessible via theinterface module14 and maintains a plurality of parameters for configuring theresource10. An industry standard remoteprocedural call mechanism30 facilitates communication between theweb tool12 and theinterface module14. Theconfiguration database28 may reside as a binary structure or ASCII text file.
The[0040]configurable resource10 is defined by theconfiguration database28. Some databases are simple, e.g., an operating mode indicator, and others are more complex, e.g., SNMP MIB. Theconfiguration database28 can be created by an ASCII editor and downloaded to the system via FTP. Some types ofconfiguration databases28 are files or components such as: global data variables, controllers, DHCP server databases, and bandwidth setting managers. The scope of aconfiguration database28 indicates the parts of the system architecture affected by the database. Affected parts can include system components such as: communication ports, functional components or APIs, and abstractions such as: object modules, address spaces, and name spaces. These components provide details about global data variables such as DataID, symbol name, StateRAM address, and its length in response to a device manager's30 configuration request.
The[0041]configuration agent24 is interfaced between thebrowser12 and theconfigurable resource10. FIG. 1. Theconfiguration agent24 enables the web-basedinterface14 to configure thenetwork component10. Theconfiguration agent24 is utilized to communicate with thebrowser12 for providing an application program interface (API)26 for managing theconfigurable resource10. Theconfiguration agent24 also retrieves selected parameters stored in theconfiguration database28.
To execute the[0042]configuration agent API26, the API is operably selected via thebrowser12. The browser can utilize Java, GUI, or any other user communication interface mechanism. For example, FIG. 2 depicts a remote procedure call mechanism (RPC)32 including aclient module34 and aserver module36. The user defines the parameters of theAPI26 and initializes its execution. Theclient module34 of theRPC mechanism32 encodes and transmits the API request to theserver module36 of theRPC mechanism32. Theserver module36 decodes the API request and makes an API method call. Theconfiguration agent24 executes theAPI26 and returns resulting data to theserver module36 of theRPC mechanism32. Theserver module36 of theRPC mechanism32 encodes the API response and sends it to theclient module34 of the RPC mechanism, thus completing the execution of theAPI26. Theclient module34 of theRPC mechanism32 presents the selected return data to the user through thebrowser12. Some alternative embodiments of theRPC mechanism32 include: Java/JMI, MS DCOM, CORBA/ORBs, and SOAP/XML. For example, an embodiment utilizing SOAP/XML is shown in FIG. 3. SOAP defines method requests and responses, parameter and return value data types, and method invocation semantics. XML encodes the SOAP requests and responses. HTTP transmits the XML-encoded SOAP request and responses between theclient34 and theserver36. Both the client and the server must have XML parsers and generators.
The magic-[0043]URL38 is a CGI-like mechanism utilized to access theconfiguration agent API26. The magic-URL38 is a link to a specialized function, i.e.,API26, rather than to a web page. FIG. 4. To accomplish a configuration agent API call, theconfiguration data page16 is accessed via thebrowser12. Theform18 containing various fields for enteringparameter variables40 and selectingconfiguration options42 resides at theconfiguration web page16. Desiredvariables40 andconfiguration options42 are selected on theform18 and submitted via thebrowser12. Thecontents40,42 of theform18 are encoded into a command composing the magic-URL38. The selectedAPI configuration option42 is identified by a tag/value pair, e.g., API=Gda_update—this particular API example updates an entire global database using input selected from the configuration page and encoded in the magic-URL38. Theinterface module14 utilizes the incoming magic-URL38 to call theAPI26. TheAPI26 uses the URL-encoded data as input and executes the associated function. Preferably, a database web page is either created or updated to reflect the current contents of thedatabase28.
In another embodiment of the present invention, a[0044]configuration component11 provides data exchanges for configuration of a resource, e.g., controller. Theconfiguration component11 must be configured to determine the location and the quantity of application variables to be exchanged in each station. Theinterface module14 can be configured via thebrowser12 or FTP. To achieve proper configuration of theconfiguration component11, a configuration file containingconfiguration parameter agents24, e.g., glbdat.ini, cooperates with thedatabase28. FIG. 5.
The[0045]configuration component11 includes an agent that implements a resource protocol and offers an API for the configuration sequence used by the GLBD_Configure function of theconfiguration component11. Theconfiguration component agent11 is utilized twice; once when the configuration of the service is set, and again during the configuration of theresource10. i.e., theconfiguration database28 provides the appropriate information to theconfiguration component11 using a selected configuration agent API.
FIGS. 6[0046]aand6bdepict the behavior of theconfiguration agent24 according to adevice manager30 request and the associated states of the component state machine. Theconfiguration component11 provides the GLBD_Configure API. Once called by thedevice manager30, this function will configure theresource10 with the information contained in thedatabase28. To access this information, theconfiguration component11 will use theAPI26 provided by theconfiguration agent24. FIG. 7.
Another simple example of the present invention includes the user connecting to the[0047]web interface module14 via thebrowser12 to configure theresource component10. Theconfiguration agent24 executes the selections on the screen and stores the configuration chosen by the user in a file, i.e., glddata.ini. At this time, the selected entries of theconfiguration database28 are not set in theresource component10—only the parameters are stored in thedatabase28. During configuration of theresource component10, theconfiguration agent24 provides thecomponent10 with the information stored in the glbdata.ini file of thedatabase28 to properly achieve its configuration. The glbdata.ini file is managed by theconfiguration agent24 and can be edited manually by the user and then downloaded via FTP to theweb interface module14. Theconfiguration agent24 creates and manages thedatabase28. However, it is possible for the user to create the database from the ASCII editor and to download it to theweb interface module14. Thebrowser12 communicates with theconfiguration agent24 to manage thedatabase file28. FIG. 8. The functions provided by theconfiguration agent24 are accessible through thebrowser12 and thecomponent10. Theconfiguration agent24 reads thedatabase28 then forwards the data to thecomponent10 in order to complete its GLB_Configured function. The format of the entry is defined in order to store each parameter accessible by the user from theweb configuration page16—this information is consistent with the needs of the GLB_Configure function.
The[0048]configuration page16 is preferably written in HTML and may contain JavaScript functions. Theweb page16 allows the user to define variables and global data configuration parameters, i.e., group address, multicast filtering, distribution period, health time out, health bit address, start address, etc. For each variable entry, the user may specify parameters, e.g., type (publish/subscribe), symbol, address (the location of the variable in the state RAM or the CPU), and length. The user edits aform44 and clicks the “Update Symbols” button. This causes the contents of theform44 to be sent to theagent24 using the HTTP Get method. The contents of theform44 are encoded into the magic-URL38.
Initially, the[0049]database28 is blank. To enable a correct initialization sequence of thecomponent10, the user must populate or create thedatabase28. Thedatabase28 can be created with thebrowser12 or FTP. The user accesses theconfiguration page16, edits theform44, and submits the contents of the form to create the first version of thedatabase28. Alternatively, the user can download an existing database into theweb interface module14 via FTP. The syntax must be checked prior to ensure that failures do not occur during initialization.
The exchange of data between the[0050]configuration agent24 and thebrowser12 utilizes the magic-URL38. Essentially, thedatabase28 is modeled as an object and theconfiguration agent24 provides a set of methods to manage the object. The content of thecurrent database28 can be accessed by the user via an HTML file created in response to a request. To send the new values chosen by the user to theagent24, the content of theform44 is sent using the HTTP GET method, i.e., data is encoded at the end of the magic-URL38. The magic-URL38 enables the call of aspecific function26, API. Unlike a typical URL, an HTML page is not located at the address referenced within the magic-URL38, but rather, the magic-URL points, or triggers a call to a function. A preferred embodiment of the data exchange between the user and the configuration agent incorporates HTTP wherein the user's choices and configuration parameters are contained in an encoded string located at the end of the magic URL. An example of a magic-URL is shown in FIG. 9. The magic-URL comprises one continuous character string; however, for descriptive purposes, carriage-returns have been inserted within the string for easier readability.
The information encoded within the magic-[0051]URL38 is parsed by thefunction call26 identified within the magic-URL. The contents of the magic-URL reflect the parameters and variables chosen by the user from theform web page18. The magic-URL38 appears to function as a typical CGI mechanism because an HTML file can be created in response to the activity of theAPI26, e.g., updating a database, wherein the contents of the updated database are formatted and sent to thebrowser12 for display.
[0052]Configuration agent APIs26 provide mechanisms for creating programs for managing thedatabase28 and to retrieve data previously stored. Sampleconfiguration agent APIs26 are shown in FIG. 10. Referring to FIG. 11, the preferred code architecture utilizes three files to access the global data agent. These files are: cfgagent.cpp, vxwmisc.c, and vxwhttp.c. File cfgagent.cpp is the core of the agent API code and implements all of the API of the configuration agent, i.e., open, read, save, etc. File vxwmisc.c interfaces with the web tool. The function, Gda_IF is called when the magic-URL38 is accessed. Then, according to the query string encoded within the magic-URL38, the appropriate function is called in the cfagent.cpp. The creation of the magic-URL38—the link to Gda_IF function within vxwmisc.c—is established within vxwhttp.c.
Another embodiment of the present invention is shown in FIG. 12. The[0053]configurable resource10 is an address server, preferably DHCP. The DHCP server database is capable of storing and retrieving entries dynamically added to thedatabase28. This functionality is particularly effective in coordinating the replacement of afaulty resource10 on the network. The configuration parameters of theaddress server10 are located in a file, addserv.ini. This file can be created or modified using theweb configuration page16 or an FTP client to upload/download the addreserv.ini file. FIG. 13.
At system start-up, the existence of a[0054]configuration file28 is verified. If theaddress configuration file28 is not present, one is created. Theaddress configuration file28 contains theconfiguration parameters40 of theDHCP server10. These parameters include: a role name or MAC address; an IP address; a gateway; and a subnet mask. Preferably, two web pages are utilized to configure theaddress server10. Afirst page46 depicts the device or devices being utilized and their respective configurations. FIG. 14. Asecond page48 facilitates modifying, or editing, the device's configuration and is accessible via a link from the first page. FIG. 15.
From the[0055]address configuration page46, anew device10 can be accessed. An entry can be selected by clicking on the associated radio button to the left of the entry. When the entry is selected, all the device information, i.e., role name, IP address, etc. is placed in a hidden field. This information is stored in an array during the creation of the address configuration web page for use by JavaScript.
When adding an entry, the entry is selected by clicking the radio button and the address server[0056]node configuration page48 will appear. If a device was selected, the configuration for that device will appear on the page. Otherwise, default values are presented on the page. To change an entry, the user is allowed to modify the configuration of the device via the address server node configuration page reflecting the current configuration that appears in response to the selection of the entry.
To remove an entry, the user selects the entry and then selects the “Delete an Entry” icon. The selected entry will be removed from the database and the page redisplayed to reflect this change. When the user has successfully added, modified, or removed an entry, confirmation of this action will be provided on the screen; via a generated web page.[0057]
Generally, the address server node[0058]configuration web page48 is utilized to add or modify an entry in the database. In either case, all fields except for Role Name and MAC Address must be filled. If the MAC address field is defined, the Role Name field is empty; and if the Role Name field is defined, the MAC address field will be empty. The fields include: Entry Number (id); Role Name(rn)—each role name must be unique; Device IP Address (ip); Device MAC Address (ha) in hexadecimal; Submet Mask (sm) in IP format; and Gateway (gw)—preferably on the same subnet as the device and in IP format.
To effect the change, the address[0059]server configuration file46 must be updated on the server side. To do this, the addressserver configuration agent24 is utilized to update the addressserver configuration file28 with the parameters provided by the user through the address serverconfiguration web pages46,48. Theconfiguration agent28 utilizes the magic-URL38 encoded with the information from theform18 populated by the user. The type of API tasks performed by theagent28 include:
ADD: add a device in the database and the system;[0060]
CHANGE: change the configuration of a device in the database and the system;[0061]
DELETE: remove a device from the database and the system; and,[0062]
REFRESH: display the configuration page with the current configuration. In response to the type of task requested to be performed, an appropriate API is selected and accompanied with the appropriate data required for executing the task. Not all tasks require the same data. For instance, ADD requires Role Name, IP Address, MAC Address, Subnet Mask, and Gateway, while DELETE only requires Entry Number; and REFRESH does not require any data. CHANGE requires everything that ADD requires and an Entry Number.[0063]
A query string comprises the magic-[0064]URL38 and information required for executing thefunction26 called by the magic-URL. An example of the magic-URL is: xxx/secure/embedded/DHCPa_IF?API=CHANGE&id=0&rn=myEIO&ip=139.158.13.222&ha=FF+FF+FF+FF+FF+FF&sm=255.255.255.0gw=139.158.8.1&submit=Submit+the +Form, wherein xxx/secure/embedded/DHCPa_IF? is the function call with the data following thereafter.
Configuration information entered at the configuration web page can include any combination of the following parameters, including others: id (entry number); rn (role name); ip (device IP address); ha (device MAC address); sm (subnet mask); gw (gateway); and submit (caption of the form submit button).[0065]
The relationship of the[0066]configuration database28 to existing control applications is of particular importance. Preferably, the definition of thedatabase28 resides in a single location. Due to design architecture, some devices/systems utilize proxies or replications as an intermediate interface to theconfiguration database28. If such duplication is implemented, it is preferable that a mechanism exist to ensure automatic and timely synchronization of theconfiguration database28 definition with any cached or replicated definition. Often, this synchronization can occur in real-time. As noted earlier, when a configuration is written to theinterface module14, the content of the file is not automatically synchronized with the running component. The resynchronization must be accomplished by some other mechanism, such as resetting the resource. If dynamic changes to the runtime version of the database are allowed—which is really a replication of the original database—it is imperative to ensure that a mechanism exist to make the persistent version consistent with the runtime version. Conversely, if dynamic changes to the persistent version of thedatabase28 are allowed, a mechanism should be provided to resynchronize theresource10 with the persistent version of the database.
From the foregoing, it will be observed that numerous variations and modifications may be effected without departing from the spirit and scope of the invention. It is to be understood that no limitation with respect to the specific apparatus illustrated herein is intended or should be inferred. It is, of course, intended to cover by the appended claims all such modifications as fall within the scope of the claims.[0067]