Claims
- 1. A real-time protocol executable on a computer network having a plurality of nodes, wherein the nodes can include applications, a network stack, an operating system, and middleware capable of executing real-time operations, where the real-time protocol uses group objects to model physical and logical devices connected to the network wherein each group object comprises at least one variable and wherein the real-time protocol uses communication objects to communicate information about the variables in the form of variable change messages.
- 2. The real-time protocol of claim 1 wherein the at least one variable comprises at least one state variable.
- 3. The real-time protocol of claim 1 wherein the at least one variable includes at least one sub-variable.
- 4. The real-time protocol of claim 1 wherein the group object comprises a group object variable.
- 5. The real-time protocol of claim 1 wherein one communication object includes a writer and another communication object includes a reader, wherein the writer is capable of writing variable change messages having a topic to associated readers that are registered to receive variable change messages having the topic.
- 6. The real-time protocol of claim 5 wherein the writer uses timers to more efficiently write variable change messages to registered readers.
- 7. The real-time protocol of claim 6 wherein the timers allow the writer to monitor variable message traffic written by other writers and based on analysis of the variable messages written by other writers use multicast to send variable messages to more than one registered reader.
- 8. The real-time protocol of claim 6 wherein the timers can adaptively adjust message traffic in accordance with network capabilities.
- 9. The real-time protocol of claim 6 wherein by making a time period of a timer longer the number of messages sent by the writer is reduced thereby reducing message traffic on the network.
- 10. The real-time protocol of claim 6 wherein by making a time period of a timer shorter the number of messages sent by the writer is increased thereby reducing the number of variable change messages that the real-time middleware is required to store.
- 11. A real-time protocol as in claim 5 wherein the writer can write variable change messages about different variables where the different variables have different formats.
- 12. The real-time protocol of claim 11, wherein the changes to the different variables can be maintained in their logical order of occurrence even though the changes occur to different variables.
- 13. The real-time protocol of claim 11, wherein the changes to the different variables can be grouped into an indivisible unit such that the readers can receive either all of the changes to the indivisible unit or none of the changes to the indivisible unit.
- 14. The real-time protocol of claim 11, wherein the changes to the different variables are interpreted by the middleware as describing successive states of a group object whose state is defined as the aggregation of the values of all the variables it contains.
- 15. The real-time protocol of claim 11, wherein the changes to the different variables can be combined together and substituted by GAPs such that the resulting states of the group object reconstructed by a reader are consistent with a subset of the actual states of the group object at a writer end.
- 16. The real-time protocol of claim 11, wherein the changes to the different variables can be combined together and substituted by GAPs such that the resulting states of the group object reconstructed by a reader are consistent with a projected state of interest to the reader.
- 17. A real-time protocol executable on a computer network having a plurality of nodes, wherein the nodes include real-time middleware capable of executing real-time operations, the middleware of each node further including:
a write object; a read object; the write object is capable of writing variable change messages having a topic to associated read objects that are registered to receive variable change messages having the topic; a message interpreter that receives and interprets the variable change messages so that they can be read by a read object; a variable reference table which a write object uses to track variable information; and a remote reader reference table for each reader that has registered to receive information from the writer so that the writer can determine a message status for each reader registered to receive information from the writer.
- 18. The protocol of claim 17 wherein variable change messages are sent from write objects to read objects, wherein the variable change messages include header information that is cached by the message interpreter so the header information need not be included in every message.
- 19. The protocol of claim 17 wherein variable change messages are sent from write objects to read objects, wherein the variable change messages include information about the properties of a variable that are cached by the middleware at the receiving end so that the properties of the variable need not be sent with every change message.
- 20. The protocol of claim 17 wherein variable change messages are sent from write objects to read objects, wherein the variable change messages include information about the properties of a write object that are cached by the middleware at the receiving end so that the properties of the write object need not be sent with every change message.
- 21. The protocol of claim 17 wherein messages are sent that include submessages that change the context of the message interpreter at a receiver end and thus affect the interpretation of subsequent submessages so that the context information need only be included once in the message and not with every submessage.
- 22. The protocol of claim 17 wherein variable change messages are sent from write objects to read objects, wherein the variable change messages include submessages and submessage header information that is cached by the message interpreter so the submessage header information need not be included in every submessage.
- 23. A real-time publish-subscribe (RTPS) message format for use on a real-time computer network where the RTPS messages are sent between communication objects, each RTPS message comprising:
a modular message format having a RTPS message header of a uniform length; a variable number of RTPS submessages where each RTPS submessage includes
a RTPS submessage header of uniform length; and a RTPS submessage payload comprised of a variable number of RTPS submessage elements.
- 24. A real-time publish-subscribe (RTPS) message format as in claim 23, wherein the RTPS message header includes:
a RTPS header that identifies the message as a RTPS message; a version identifier that identifies a RTPS protocol version being used by a message sender; a vendor identifier that identifies a vendor for the RTPS protocol version being used by the message sender; a host identifier that identifies the node sending the RTPS message; and an application identifier that identifies the application sending the RTPS message.
- 25. A real-time publish-subscribe (RTPS) message format as in claim 23, wherein the RTPS submessage header includes:
a submessage identifier that enables a Message Interpreter to determine the contents of the RTPS submessage; at least one flag, including an endianess identifier that enables the Message Interpreter to determine the endianess of the RTPS submessage; and an encapsulation identifying the number of octets to the next RTPS submessage header in a data stream, thereby permitting the Message Interpreter skip over RTPS submessages it does not understand.
- 26. A real-time publish-subscribe (RTPS) message format as in claim 23, wherein the RTPS submessage element can include an Object Identifier that identifies the object instance and the kind of object that is sending the submessage.
- 27. A real-time publish-subscribe (RTPS) message format as in claim 23, wherein the RTPS submessage element includes:
a reader identifier that identifies the reader of the message using a Global Unique Object Identifier (GUID); a writer identifier that identifies the writer of the message using a Global Unique Object Identifier (GUID); a sequence identifier that identifies the beginning sequence number for which the submessage element applies; and a bitmap that is used to identify the individual sequence numbers for which the submessage element applies.
- 28. A real-time publish-subscribe (RTPS) message format as in claim 23, wherein the RTPS submessage element is used to encapsulate the properties of a RTPS communication object and includes:
a parameter identifier that identifies a communication object parameter; a size identifier that defines the number of octets in a value for the communication object parameter; a value for the communication object parameter; and a sentinel that terminates the submessage element.
- 29. The real-time publish-subscribe (RTPS) message format of claim 28, wherein the RTPS submessage element is used to encapsulate the properties of a RTPS communication object enables a Message Interpreter to skip parameters that it does not recognize and process a remaining portion of the submessage.
- 30. The real-time publish-subscribe (RTPS) message in claim 29, wherein the RTPS submessage element is used to encapsulate the properties of a RTPS communication object enables new parameters to be added in future versions of the protocol and still remain interoperable with versions of the protocol that do not recognize the newer parameters.
- 31. A real-time publish-subscribe (RTPS) message format as in claim 23, wherein the RTPS submessage element can include an Object Identifier that identifies an object instance and the kind of object that is meant to receive the submessage.
- 32. A method for writing a variable change message from a writer to a registered reader using a real-time protocol on a real-time computer network having a plurality of nodes, wherein the nodes include at least one writer, at least one registered reader, and middleware capable of executing real-time operations, the method comprising:
A. determining if there is a new reader; B. where there is no new reader;
1) determining if there has been a change to a variable;
(a) if there are changes to the variable,
(i) the changes are saved as a variable change message; (ii) a change sequence number is modified to reflect the addition of a new saved variable change message; (iii) return to Step A, determining if there is a new reader; (b) if there are no changes to the variable then return to Step A, determining if there is a new reader; and C. where there is a new reader, a remote reader process is activated to update a registered reader.
- 33. The method of claim 32 wherein the activated remote reader process includes;
A. sending unsent variable change messages to the registered reader; B. updating the positive acknowledgement status of the registered reader; C. updating the negative acknowledgement status of the registered reader; D. sending variable change messages that have been requested by the registered reader to the registered reader; and E. sending heartbeat messages to the registered reader.
- 34. A method for a registered reader to read variable change message sent by a writer to the registered reader using a real-time protocol on a real-time computer network having a plurality of nodes, wherein the nodes include at least one writer, a registered reader, and middleware capable of executing real-time operations, the method comprising:
A. determining if there is a writer for which the reader is registered to receive variable change messages; B. where there is no writer, returning to Step A, determining if there is a writer; and C. where there is a writer, a remote writer process is activated to update the registered reader.
- 35. The method of claim 34 wherein the activated remote writer process includes;
A. saving variable change messages received by the registered reader; B. marking variable change messages identified in heartbeat messages as missing; C. marking variable change messages identified in heartbeat messages as messages as requesting confirmation; D. sending messages requesting the re-sending of the variable changes identified as missing; and E. sending confirmation messages.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to, and claims priority from, U.S. Provisional Patent Application No. 60/282,321 filed on Apr. 5, 2001, which is hereby incorporated by reference in its entirety. This application is also related to, and claims priority from, the U.S. Provisional Patent Application No. ______, (Attorney Docket No. REAL P002P2), filed on Apr. 2, 2002, entitled “Real-Time Publish-Subscribe Wire Protocol”, which is also incorporated by reference in its entirety.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60282321 |
Apr 2001 |
US |