The field of the present invention is digital network communications and more particularly the development network behaviors and programming of network messaging functions in control devices.
Communication networks are used to convey data between devices. The device sending the message has a network address and the device receiving the message has a network address. The specific protocol varies with the network, but all networks utilize some form of message delivery based upon a source address and a destination address to determine where the messages are delivered. The content of the messages and the events which trigger their transmission are generally hidden deep within device software and are not conveniently visible or easily managed by the user. Development of network behaviors, composition of messages and control of message transmission are handled as separate tasks independent of the application programs for control devices. The actions taken upon receipt of a message, or detection of a network error, are either transparent or selected from a limited list of possible behaviors. When devices make the content of a message accessible to the application program it is accessed from intermediate sources such as a type of data table. Accordingly, the development of network messages and behaviors by a user within control devices has involved difficult, inflexible, time consuming and error prone processes.
This invention defines a method of configuring the operation of network interfaces that from within application programs in control and other devices. The application is developed and edited using a graphical programming tool having an integrated display featuring software, hardware and communications components. The programming tool uses schematically depicted programmable messaging blocks such as production and corresponding consumption objects to represent the networking interfaces for the production and consumption of messages including individual packet message components. These blocks are often integrated with software and hardware of the device for which the program is being developed. Message production and message consumption behaviors are set within the application program and programmed directly in conjunction with the messaging objects through any available configuration communications port. For example a message production object interface might contain a send trigger to initiate message transmission, functions for setting message data, functions for setting network dependent parameters such as address and then monitoring the transmission status from within the application program. This invention defines an object interface that indicates the produced or consumed message status, and functions to set and access message contents, and functions to alter the current state of the producer or consumer object where all information is graphically readily visible to the user via the application program.
Accordingly the present invention involves a method of programming network messaging between devices under control of and as an integrated part of the actual software application programs within the devices. Software, messaging and even hardware features and functions are diagrammatically displayed on an integrated programming tool displays for the control devices. Messaging protocols are diagrammatically displayed with application programs and messaging interfaces are provided as parts of the same integrated display. Communications features are diagrammatically displayed and visible on the integrated display including block diagrams having inputs and outputs corresponding to network protocols. Interconnections may then be diagrammatically made between the software control features and communications features to form messages and perform network messaging functions and determine the network behavior directly within control device application programs. It is an object of the invention that when information is to be transferred over a communications network, the information to be conveyed, the software sending the data, and the software object receiving the data should be clearly conveyed to the user.
It is an object of the invention that when information is to be transferred over a communications network, the events which trigger the transmission of the message and the events which occur upon reception of the message should be clearly conveyed to the user.
It is an object of the invention that when information is to be transferred over a communications network, the information making up the message and the events which trigger the transmission of the message and regulate its receipt should be readily programmable from within the application programs for control apparatus.
It is an object of the invention that when information is to be transferred over a communications network, that the technology for composing messages and controlling their transmission and receipt should be visible, simple and convenient for the user.
As shown in
In order to enable this functionality the invention contemplates a control system architecture comprised of stand alone devices, devices interconnected with wires, devices interconnected via parallel cables and backplanes, devices interconnected via various serial communications, all of which may be monitored, configured, and programmed using a common schematic view utilizing historical schematic design tool paradigms. As shown in
As further shown in
The Application Program (14) sets the default (as shipped) behavior of a Control Apparatus as well as being optionally altered to modify the Application Program (14) behaviors within an apparatus utilizing a common set of external interfaces. The object architecture defines methods to translate a common external Application Program format into an internal Application Program (14) format for execution within any Control Apparatus, optionally containing different microprocessors, and converting from an internal Application Program format to a external Application Program format, both of which are delivered over the network dependent Configuration Bus (10).
When the user zooms from
When utilizing this architectures' user interface paradigm, when objects have their properties set directly from the network using the Configuration Bus, their current value may be displayed to the user inside the respective rectangular interface as is shown in the Net ID icon (32) in
The Application Program (14) for
In the preferred implementation, the most efficient implementation within a Control Apparatus relative to Application Program (14) memory utilization allocates two bytes per instruction, where one byte is the internal Function Identifier and the second byte identifies the Function Value. In Table 1 the Function Value is the object instance for all internal Function Identifiers with the exception of the Producer SetMsgBit, SetMsgByte and SetExchange Function Identifiers. In the Application Program (14) implementation graphically shown in
Although the prior Application Program (14) is contained within two bytes per instruction internal to the Control Apparatus, it is converted to, and converted from this implementation dependent internal format within the Control Apparatus to and from an implementation independent format external to the Control Apparatus. The actual execution of the prior Application Program (14) based on this compact two byte per instruction format occurs internal to the Control Apparatus over the Control Bus (12).
In this memory optimized implementation, the Application Program (14) is interpreted by an ENGINE_Execute function within the Engine Object (16) during normal operation. All information is passed between contiguous object functions in the Application Program (14) via shared global memory locations called the Control Bus (12). In this implementation the Control Bus (12) variables are called GLOBAL_Instance and GLOBAL_App. Under normal operation the ENGINE_Execute function reads the Function Value for the first instruction and places its value in GLOBAL_Instance. The ENGINE_Execute function then reads the Function Identifier value, and uses its value to determine the Control Bus Object based function address to be called internal to the Control Apparatus and then executes that function. Using the internal Function Identifier to invoke the actual object function is usually accomplished via a traditional software jump table. The object function which is executed reads then Function Value to be operated upon from the GLOBAL_Instance variable of the Control Bus (12), and for most functions, gets its input value from the GLOBAL_App variable of the Control Bus (12) and places the result of the functions operations into GLOBAL_App and then returns to the ENGINE_Execute function. The ENGINE_Execute function then increments to the next instruction pair in the Application Program (14) and copies the next Function Value into GLOBAL_Instance. It then reads the internal Function Identifier, and as stated previously, the ENGINE_Execute function then uses the internal Function Identifier value in a jump table to go to the appropriate object function within the Control Apparatus. The function called over the Control Bus (12) again uses the value contained in GLOBAL_App as its input value, which was placed there by the previously executed real time Control Bus (12) Object function, and the Function Value from the Application Program (14) contained in GLOBAL_Instance, is used to execute the new function, which again places its result in GLOBAL_App, and again returns to ENGINE_Execute. The prior operations continue, in sequence, time and again until all the encountered instructions are executed and an End Of Program Function Identifier is encountered, at which time execution of the CPU is returned to the object function that called the ENGINE_Execute function, usually from the “main” program function. Some implementations may also cease execution of the Application Program (14) when an invalid Function Identifier is encountered, where the Control Apparatus generally indicates the error and takes an appropriate fault action. In the preferred implementation, the content of the Application Program (14) is verified when new instructions are added to the Application Program (14) property of the Engine Object (16), checked upon a power cycle where the Application Program (14) will not be executed if invalid internal Function Identifiers or invalid Function Values are detected. In the preferred implementation, the content of the Application Program (14) is continuously monitored, and if an entry becomes invalid during operation, fault actions are also taken. This invention encompasses the use of an Application Program (14) to create communications messages, to determine the current state of the communication messages, to manage the operation and fault actions of the communications interfaces all utilizing a visible network independent interface and an implementation independent Application Program (14) interface.
The PRODUCER_Enable function (34) in
As stated previously and shown with respect to
Multiple instances of the Producer Object (22) may reside within a Control Apparatus including the SetBit, SetByte, SetWord and other message writing functions that set data values in multiple messages. To set values in the proper message it is necessary to either specify the Function Identifier, Function Value and byte offset in the respective Application Program (14) function or set a pointer to the desired message data buffer prior to writing to the message buffer. To improve performance, minimize code space and maintain a symmetrical Application Program format the preferred implementation utilizes a PRODUCER_Select (39) function in
A Programming Tool Device determines if the PRODUCER_Select (39) function is required within the Application Program (14) by determining if the Producer Object (22) Select (39) external Function Identifier is supported by the Producer Object (22) class within the Control Apparatus via traditional interpreted message dialogs over the Configuration Bus (10).
The PRODUCER_SetLength function (35 in
The PRODUCER_SetByte function is similar to PRODUCER_SetBit Function Identifiers as are the other message data writing functions. If the Producer Object (22) is in the PROD_IDLE state and the PRODUCER_Send function is called passing it a TRUE in GLOBAL_App, the data in the producer's message buffer will be moved to the transmit buffer hardware by the Network Driver Object (18) shown in
In
The corresponding receipt of a message is accomplished with a user visible and configurable Consumer Object (20) as shown in
More specifically, the Relay Object coils connected to the Producer Object (22) status outputs in
For the Application Program (45) configuration shown in
If the ExeOnDelay (44) termination point of TR-318 remains TRUE for a period of time exceeding the value applied to the Preset (49) termination point, or 200 milliseconds in this example, the Done output on TR-318 goes TRUE, activating Timed Relay coil TRD-318. The desired fault actions to be taken when this Watchdog Timeout instance expires are defined by the usage of contacts of TRD-318. In this example, on line numbers 313 and 315 in
This invention utilizes Application Programs (14) within Control Apparatus to also create communications interface behavior, including all communication triggering events and communication fault actions, where the desired behavior is based upon the application problem to be solved. This invention also uses Application Programs (14) to create any desired communications interfaces to be used to debug the operation of a Control Apparatus. The following diagnostic example assumes switches, used for moving the drivers' seat in a vehicle, are mounted on the vehicle console, where a network connects the “Forward/Backward” and “Up/Down” controls to two motors located underneath the seat. As shown in
In addition to clearly conveying the network interfaces with an appropriate monitoring and configuration Tool Device (57), this invention provides schematic views of the various electrical devices within a Control Apparatus, like the switches and motors used in this example.
On line 601 in
The Application Program (66) provides sufficient information for a Tool Device to interconnect the interface terminals of the objects shown to display the schematic diagram in
Although internal to the Control Apparatus only two bytes are required to represent each termination point of each icon in the Application Program (66) shown in
The device independent view returns three unique numbers: one for the Class Identifier, a second for the Function Identifier for the specific class, and a third for the respective Function Value, in this case the instance identifier. Although discussed elsewhere within related architecture invention patent filings, the combination of the externally referenced External Class Identifier and External Function Identifier often results in an internally referenced Internal Function Identifier within the actual memory for the Application Program (14) property of the Engine Object (16). A function within the Engine Object (16), which reads and writes the contents of the Application Program (14) converts Configuration Bus messages containing the common external format to, and from, the internal format for a specific Control Apparatus. Placing this functionality within the Control Apparatus is how this invention accomplishes an implementation independent interface to all Control Apparatus, independent of internal CPU or programming language used to develop the Control Apparatus. Upon retrieving the prior Application Program (14) property of an instance of the Engine Object (16), the requestor Tool Device (57) shown in
For example, the Application Program (14) references the CID_HDW_SWITCH class. The client Tool Device (57) would be aware that the CID_HDW_SWITCH class contains a “subclass” property which identifies the type of switch. The Tool Device (57) could then send a request message similar to the following to the Seat Control (53) Control Apparatus to acquire the value of the “subclass” property;
CID_HDW_SWITCH, GET_PROPERTY, SW_601, PROP_SUBCLASS
The Seat Control (53) Control Apparatus would then return the value, of the subclass property, indicating a spring loaded switch. The Tool Device (57) would then send a request message similar to the following to the Seat Control (53) Control Apparatus to retrieve the number of switch positions;
CID_HDW_SWITCH, GET_PROPERTY, SW_601, PROP_POSITIONS
The Seat Control (53) Control Apparatus would then return the switch positions, in this case the value three. The Tool Device would then send a request message similar to the following to the Seat Control (53) Control Apparatus to retrieve the current position of the spring loaded switch;
CID_HDW_SWITCH, GET_PROPERTY, SW_601, PROP_CURRENT_POSITION
The Seat Control (53) Control Apparatus would then return the current switch position, or a value of two. The Tool Device (57) would perform a similar sequence of messages to acquire additional information for SW_603 (63) in
To acquire object state information in a timely manner a Tool Device (57) configures an available Producer Object (20) instance within the Seat Control (53) Control Apparatus with an Application Program (79) similar to that shown in a schematic diagram format in
The Application Program (79) shown in
For example the status of the “SW Forward” input Relay Object sets bit zero of byte zero (70) in the Producer Object's message data property, the status of the “SW Back” input Relay Object sets bit one of byte zero (71), the status of the “SW Up” input Relay Object sets bit two of byte zero (72), the status of the “SW Down” input Relay Object sets bit three of byte zero (73), the “position” property of the “Seat Forward/Back” Selector Object sets byte one (74), and the “position” property of the “Seat Up/Down” (63) Selector Object sets byte two (75). The duration of time within the Seat Control node required to execute the Application Program (79) in
As a user scrolls through various portions of the Application Programs (14) within the Control Apparatus, and different real time information is required to highlight the status of the Application Program (14) currently being displayed within the current Tool Device (57) window, message data written to the debug message (77) data property is dynamically changed to remove data no longer needed and object property values are added to include the new information required. Since the Control Apparatus architecture utilizes the same functions used to create Application Programs (14) to perform Control Apparatus debugging and monitoring, a Tool Device (57) may dynamically change the debugging functionality within a target Control Apparatus as it is needed by merely changing the Application Program within the target Control Apparatus.
For example, the ability to monitor the internal Application Program's (14) object states as it is running is not contained in special firmware within the Seat Control (53) device and did not exist until it was added to the Application Program (79), as shown in
Tool Device (57) software may provide internal functionality which identifies the state information already available in the messages already produced on the network by the respective Control Apparatus and only monitor object property values not already conveyed in an existing message. This Tool Device (57) functionality is only useful when all object state information is already available and available within a time interval required by the Tool Device (57). For example, the existing Application Program (14) within the Seat Control (53) may be similar to that shown in
As indicated in
The Application Program in
When any of the switches whose normally open contacts are shown in
Assume the technician pushes the “Seat Forward” switch (60) and the seat does not move. Additionally, as shown in
A technician may wish to determine actual motor states and thus would upload all the Application Programs contained within the Driver Seat (54) shown in
When the Control Apparatus supports programmable Application Programs (14), it is not necessary for a Control Apparatus to contain all desired diagnostic functionality in firmware, since it can be added by the technician while debugging with respect to a specific problem. Due to the intuitive programming and diagnostic environment, this may be accomplished with little programming knowledge. When system diagnostics are performed by less knowledgeable technicians, the software tool may recursively program a series of Application Programs (14) into the Control Apparatus and automatically determine where a fault exists. Minimally a user can “view” the state of the Application Program (14) as these diagnostic Application Programs (14) are executed. For example, to determine if the motor M-606 is operational, the motor may be tested in Reverse. If this is accomplished via product specific software within a test tool, or by the technician utilizing the Application Program (14) schematic shown in
For example, the Tool Device (57) software could be used to disable the Producer Object (22) within Seat Control (53) Control Apparatus by disabling the “On Line” Relay, thus opening the “On Line” contact (83) on line 301 of
This architecture includes the ability to dynamically alter the network interface behaviors via a user Application Program (14). The example provided in
Although the present invention has been described with reference to the specific embodiments described above, it should be recognized that changes may be made in the form and details of the invention as described without departing from spirit of the invention or the scope of the claims.
This patent application claims the benefit of Provisional Patent Application Ser. No. 60/638,939 filed Dec. 24, 2004, Provisional Patent Application Ser. No. 60/638,690 filed Dec. 24, 2004 and Provisional Patent Application Ser. No. 60/638,684 filed Dec. 24, 2004 all filed with the United States Patent and Trademark Office.
Number | Name | Date | Kind |
---|---|---|---|
5452201 | Pieronek et al. | Sep 1995 | A |
5453933 | Wright et al. | Sep 1995 | A |
6052729 | Robinson | Apr 2000 | A |
6195591 | Nixon et al. | Feb 2001 | B1 |
6424872 | Glanzer et al. | Jul 2002 | B1 |
6510352 | Badavas et al. | Jan 2003 | B1 |
6745087 | Shah | Jun 2004 | B2 |
7085841 | Edwards et al. | Aug 2006 | B2 |
7092771 | Retlich et al. | Aug 2006 | B2 |
7114155 | Stripf et al. | Sep 2006 | B2 |
7117049 | Horn et al. | Oct 2006 | B2 |
7130704 | McKelvey et al. | Oct 2006 | B2 |
7225249 | Barry et al. | May 2007 | B1 |
20020171763 | Stecyk et al. | Nov 2002 | A1 |
20040169654 | Walker et al. | Sep 2004 | A1 |
20060007933 | Maxson et al. | Jan 2006 | A1 |
20060155389 | Pessolano et al. | Jul 2006 | A1 |
20070011321 | Huntington et al. | Jan 2007 | A1 |
20070179641 | Lucas et al. | Aug 2007 | A1 |
20080263169 | Brabec et al. | Oct 2008 | A1 |
Number | Date | Country | |
---|---|---|---|
20060200770 A1 | Sep 2006 | US |
Number | Date | Country | |
---|---|---|---|
60638939 | Dec 2004 | US | |
60638690 | Dec 2004 | US | |
60638684 | Dec 2004 | US |