Abstract:
A method of communication between a master unit and a slave unit, including the steps of: sending at least a command byte from the master unit to the slave unit including data byte counter bits to be interpreted by the slave unit according to the following rule set; if said data byte counter bits belong to a first set, then said data byte counter bits contain information representing a number of associated data bytes, which is the expected number of data bytes; if said data byte counter bits belong to a second set, then said data byte counter bits contain information representing a number which must be decoded before the expected number of data bytes is obtained; receiving at least the command byte; interpreting the command byte; and receiving the number of data bytes required by the rule set.

Description:
FIELD OF THE INVENTION 
     The present invention relates to the field of communication between a master unit and a slave unit, said slave unit being capable of executing a set of instructions downloaded from the master unit, in order to control some type of construction e.g. a semi-autonomous car. 
     BACKGROUND OF THE INVENTION 
     The recent technological development in semiconductor devices, has made small and low-cost microprocessors, e.g. single chip processors, an attractive component in control and data acquisition systems. In the early days of computer-controlled control systems a central computer managed all the computations and input/output operations in the system. But the new processors have made it possible and feasible to distribute the computations and input/output operations to smaller local computers (slave units), which are configured and/or monitored from a central computer (master unit). This approach frees the control-related computational effort in the central computer, which can instead be used for e.g. a better user interface. However, in order to obtain a feasible solution efficient and reliable communication between the master unit and the slave unit is required. 
     The communications between the master unit and the slave unit typically comprise instructions (commands) associated with a set of parameters (data). Typically a computer program is downloaded from the master unit to the slave unit, which--after the download--will run the program. However, it may be required to down load additional information from the master unit to the slave unit while the down-loaded program is executed in the slave unit. Further, in order to obtain a cost efficient solution, single chip processors with a small memory and a very limited number of additional components are preferred. Therefore, it is important that the effort associated with the communications in the slave unit occupies as little memory and processor time as possible. Another and important aspect of the communications is that they have to be reliable. If a command to the slave unit is lost, it can be fatal to the function of the control system in question. 
     U.S. Pat. No. 5,530,436 discloses a method of communication between a master unit and a slave unit, wherein a control byte comprising an expansion bit is transmitted with a succeeding first address byte. If an additional second address byte is required, then an expansion bit is set and the additional second address byte succeeds the first address byte. This is convenient if it is most likely that only the first address byte is needed. Although this is an efficient coding of addresses, it does not take into account that commands and associated data also need an efficient coding, neither does this coding scheme incorporate a reliability handling procedure. 
     SUMMARY OF THE INVENTION 
     An object of the invention is to provide a method which provides an efficient and flexible protocol. Especially when a large set of small messages has to be communicated. 
     This is achieved according to the invention by a method of communication between a master unit and a slave unit, comprising the steps of: sending at least a command byte from the master unit to the slave unit comprising data byte counter bits to be interpreted by the slave unit according to the following rule set; if said data byte counter bits belong to a first set, then said data byte counter bits contain information representing a number of associated data bytes, which is the expected number of data bytes; if said data byte counter bits belong to a second set, then said data byte counter bits contain information representing a number which must be decoded before the expected number of data bytes is obtained; receiving at least the command byte; interpreting the command byte; and receiving the number of data bytes required by the rule set. 
     Consequently, it is possible to transmit and receive messages in a slave unit and a master unit, such that efficient communication of a set of messages comprising a relatively large number of short messages is obtained, it being possible to have long messages. Or such that efficient communication of a set of messages comprising a relatively large number of long messages is obtained, it being possible to have short messages. 
     The command byte may further comprise a message counter, which is increased each time a new message is sent, but remains unchanged during retransmissions. Hereby, a more reliable communication scheme is obtained. 
     According to the invention, a further object of the invention is to provide a method wherein information is received in e.g. a slave unit. The method comprises the steps of receiving a command byte comprising data byte counter bits, and receiving data bytes according to the following rule set: if the data byte counter bits belong to a first set, then the data byte counter bits contain information representing a number of associated data bytes which is the expected number of data bytes; if the data byte counter bits belong to a second set, then the data byte counter bits contain information representing a number which must be decoded before the expected number of data bytes is obtained. 
     Consequently, it is possible to receive messages in a slave unit or a master unit, such that efficient communication of a set of messages comprising a relatively large number of short messages is obtained, it being possible to have long messages. Or such that efficient communication of a set of messages comprising a relatively large number of long messages is obtained, it being possible to have short messages. 
     Still according to the invention, a further object of the invention is to provide a method wherein information is transmitted from e.g. a master unit, comprising the steps of: sending at least a command byte, comprising command bits and data byte counter bits; sending a number of data bytes, according to the following rule set; if the data byte counter bits belong to a first set, then the data byte counter bits contain information representing a number of associated data bytes, which is the number of data bytes to be sent; if the data byte counter bits belong to a second set, then the data byte counter bits contain information representing a number which must be encoded before the number of data bytes to be sent is obtained. 
     Consequently, it is possible to transmit messages in a slave unit or a master unit, such that efficient communication of a set of messages comprising a relatively large number of short messages is obtained, it being possible to have long messages. Or such that efficient communication of a set of messages comprising a relatively large number of long messages is obtained, it being possible to have short messages. 
     The invention also relates to a computer readable memory device encoded with a data structure for transferring information between a master program and a slave program, the information comprising at least a command byte associated with a number of data bytes, the master program comprising a counter having a data structure with at least one parameter containing information on the number of associated data bytes, said parameter being modified according to the following rule: if the command byte belongs to a first set of commands, then the command byte contains a value representing the number of associated data bytes and the parameter is modified with that value; if the command byte belongs to a second set of commands, then the parameter is modified with a reduced value. 
     According to the invention a further object of the invention is to provide a computer readable memory device encoded with a data structure for receiving information in a slave program, the information comprising at least a command byte associated with a number of data bytes, the slave program comprising a counter having a data structure with at least one parameter containing information on the number of associated data bytes, the parameter being modified according to the following rule: if said command byte belongs to a first set of commands, then the command byte contains a value representing the number of associated data bytes and said parameter is modified with that value; if said command byte belongs to a second set of commands, then said parameter is modified with a reduced value. 
     According to the invention still another object of the invention is to provide a computer readable memory device encoded with a data structure for transmitting information in a master program, the information comprising at least a command byte associated with a number of data bytes, the master program comprising a data structure with at least one parameter containing information on the number of associated data bytes to be transmitted, said parameter being modified according to the following rule: if said command byte belongs to a first set of commands, then the command byte contains a first value representing the number of associated data bytes and the parameter is modified with that value; if said command byte belongs to a second set of commands, then said parameter is modified with a value which is different from said first value. 
     The invention also relates to a computer system for communication between a master unit and a slave unit comprising: means for sending a command byte comprising data byte counter bits and means for sending data bytes according to a rule set, which implies that if the data byte counter bits belong to a first set, then the data byte counter bits contain information representing a number of associated data bytes which is the expected number of data bytes, and if the data byte counter bits belong to a second set, then the data byte counter bits contain information representing a number which must be decoded before the expected number of data bytes is obtained. The system further comprises means for receiving at least the command byte, means for interpreting the command byte, and means for receiving the number of data bytes required by the rule set. 
     The invention further relates to a computer system for receiving information in a slave unit comprising means for receiving a command byte comprising data byte counter bits, and means for receiving data bytes according to the following rule set: if the data byte counter bits belong to a first set, then the data byte counter bits contain information representing a number of associated data bytes which is the expected number of data bytes; if the data byte counter bits belong to a second set, then the data byte counter bits contain information representing a number which must be decoded before the expected number of data bytes is obtained. 
     Still according to the invention, a further object of the invention is to provide a computer system for sending information from e.g. a master unit, which comprises means for sending at least a command byte comprising command bits and data byte counter bits, and means for sending a number of data bytes, according to the following rule set: if the data byte counter bits belong to a first set, then the data byte counter bits contain information representing a number of associated data bytes which is the number of data bytes to be sent; if the data byte counter bits belong to a second set, then the data byte counter bits contain information representing a number which must be encoded before the number of data bytes to be sent is obtained. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 shows a preferred embodiment of the present invention having a slave transceiver unit and a master transceiver unit; 
     FIG. 2 shows a preferred bit allocation in a command byte according to the invention; 
     FIG. 3 shows three examples of command bytes and the associated number of data bytes according to the invention; 
     FIG. 4 shows a distribution of commands as a function of possible commands and number of data bytes; 
     FIG. 5 shows a flow chart for transmitting commands according to the distribution shown in FIG. 4; 
     FIG. 6 shows a flow chart for receiving commands according to the distribution shown in FIG. 4; 
     FIG. 7 shows an example of how a lost or erroneous byte sequence will be handled with a message counter according to the invention and with a retransmission flag according to the prior art. 
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     FIG. 1 shows a preferred embodiment of the present invention having a slave unit and a master unit. The master unit 1 comprises a transceiver (transmitter and receiver) 2 and a personal computer 3, PC. The terms personal computer and PC comprise any type of computers e.g. embedded computers and general purpose computers. The PC 3 is connected by wire to the transceiver 2, using a common PC interface, e.g. a serial RS332 port or an 8-bit parallel port. The transceiver 2 is responsible for communication with a slave unit 7 over the wire-less link 13. The transceiver 2 comprises a PC interface 4 which operates according to the selected PC interface. The transceiver 2 further comprises a two-way repeater and modulator/demodulator 5, which converts signals from the PC interface to signals adapted for a wire-less transmitter and receiver device 6, and visa versa. The wire-less communication may be implemented by means of e.g. RF transmission, ultrasound, or infrared light. 
     The slave unit 7 like the transceiver 2, has a two-way repeater and modulator/demodulator 9 and a transmitter and receiver device 8. The microprocessor 10 is thereby able to communicate with the master unit 1. The microprocessor is connected to a memory 11 and an input/output module 12, I/O module. The I/O module comprises drivers for e.g. electrical motors, light emitting diodes (LED&#39;s), and appropriate interfaces to sensors e.g. switches, photodiodes, etc. The I/O module is configured such that it is possible to control a system. The system may e.g. be a toy train which has a motor for driving the train and sensors/actuators for starting and stopping the train either manually or automatically. 
     The master unit 1 transmits information to be interpreted by the microprocessor 10. The information e.g. in the form of instructions and associated data may be bundled to constitute a computer program which can be executed by the microprocessor 10. In a preferred embodiment the slave unit 7 receives a software program comprising commands and data which can be executed, while the slave unit 7 receives more commands/data which are provided as additional input to the software program. In this way a control program may be downloaded from the master unit 1, and the software may be able to respond to sensor signals as well as to user commands from the PC 3. 
     In the same way the slave unit may be able to transmit information to the master unit either as simple acknowledge information or e.g. as sensor initiated commands/requests to the PC 3. 
     The system shown in FIG. 1 is an example of a system with a relatively low bandwidth wire-less link and a slave unit, the smallest possible hardware being preferred. Thereby, in at least its first aspect, the present invention is primarily directed to communication between the master 1 and the slave 7 over the wire-less link 13. 
     Information is communicated over the wire-less link 13 in the following byte format: 
     
         ______________________________________CMD  CMD    DATA.sub.1               DATA.sub.1                     . . .                          DATA.sub.N                                DATA.sub.N                                      CHK  CHK______________________________________ 
    
     where CMD is a command byte, DATA 1  to DATA N  is data bytes associated with the command byte and CHK is a check sum. The check sum is calculated as an 8-bit truncated addition of the command byte (CMD) and the succeeding data bytes (DATA 1  . . . DATA N ). The bar indicates the byte complement, but these bytes are not included in the check sum. N is the number of data bytes that succeeds a specific command. This format is used whenever a command is transmitted. The purpose of sending the byte complement is to obtain a DC free signal to the transceiver. Further, most single chip microprocessors are byte-oriented, thereby making this byte format feasible. 
     A practical implementation of the present invention may comprise a combination of hardware and software. The physical interface between the master unit 1 and slave unit 7 may of course comprise some type of hardware which is capable of converting logic data signals into physical signals and vice versa. However, the invention may be implemented in hardware, software, or a combination thereof. The software may be embodied in a program which may be executed in any of the hardware devices capable of doing so, e.g. the micro-processor/memory 10/11, the PC interface 4 or the computer PC 3. 
     FIG. 2 shows a preferred bit allocation in a command byte according to the invention. The command byte 20 has 8 bits, b0-b7. The data byte counter 21 comprises three bits, b0-b2 and indicates the number N of data bytes succeeding the command byte. The command 23 comprises four bits, b4-b7. The message counter 22 comprises one bit, b3. 
     This allocation traditionally allows 16 different commands coded by b4, b5, b6, and b7, each command having from 0 to 7 data bytes coded by b0, b1, and b2. 
     If the number of data bytes is combined with the number of commands, then 128 different combinations are obtained, with an implicit grouping of the commands, such that 8 groups of 16 commands have from 0 to 7 data bytes respectively. To be efficient, this 7-bit straight forward coding of the 128 combinations requires that a command set using this coding scheme fits this grouping of the commands and the associated number of data bytes. 
     If this implicit associated number of data bytes is skipped to avoid the grouping of commands, e.g. if more than 16 commands use 1 data byte, each 7-bit commmand must be associated with a respective fixed number of data bytes. However, this will increase the complexity of the decoding circuit/software. In particular when the decoding is executed in a byte-oriented microprocessor, it will be necessary to have a look-up table to indicate the number of data bytes associated with a specific 7-bit command. On the other hand, if the number of possible data bytes is fixed and equal for all of the commands a simple decoding circuit can be used, but this scheme will not be efficient, regarding communication bandwidth, if a small number of commands having a relatively large number of data bytes must be supported. 
     FIG. 3 shows three examples of command bytes and the associated number of data bytes according to the invention. The examples A3, B3, and C3 each comprise a command byte 20, the command byte further comprising a data byte counter 21, a message counter 22, and a command 23. The data bytes 24 are the expected data bytes, whereas the bytes 25 are bytes that are not sent or expected. 
     Example A3 shows a command byte where the data byte counter 21 with the binary value &#34;000&#34; indicates that no data bytes are expected. 
     Example B3 shows a command byte where the data byte counter 21 with the binary value &#34;100&#34; indicates that one data byte is expected. 
     Example C3 shows a command byte where the data byte counter 21 with the binary value &#34;111&#34; indicates that seven data bytes are expected. However, according to the invention it is possible to configure this group of commands such that only one data byte is expected. This option provides a more efficient coding scheme if a relatively large number of commands uses a small number of data bytes. 
     FIG. 4 shows a distribution of commands as a function of possible commands and number of data bytes. The 4-bit command space represented by b4-b7 is repeated 8 times along the command axis. A vertical bold bar represents a span of 16 commands. For a number of applications 6 and 7 data bytes are not needed, and therefore these two groups are respectively moved to the groups having 0 and 1 data bytes. For example the specific command (A4) is coded with the command b4=1, b5=1, b6=1, b7=1, having 0 data bytes: b0=0 (LSB), b1=0, b2=0 (MSB), where LSB is the least significant bit and MSB is the most significant bit. However, the specific command (B4) is coded with the command b4=1, b5=1, b6=1, b7=1, having 6 data bytes: b0=0 (LSB), b1=1, b2=1 (MSB). But the command (B) is interpreted as having no data bytes. With this scheme it is possible to configure a selectable set of commands having a number of data bytes different from that indicated by the data byte counter, e.g. 1, 2, or 17 data bytes, while another set has the number of data bytes indicated by the data byte counter, e.g. 1, 2, 3, 4, or 5 databytes. LSB and MSB may be transmitted in reverse order, if convenient. 
     FIG. 5 shows a flow chart for transmitting commands according to the distribution shown in FIG. 4. In a preferred embodiment the master unit shown in FIG. 1 will enable a transmission procedure through the start state 40. The procedure may e.g. read the information to be transmitted from a first-in-first-out, FIFO, register in which a sequential list of command bytes and data bytes is stored. The state 41 reads a command byte from the FIFO register, and the state 42 sends the command byte. In the state 43 it is tested whether the number of data bytes, No DB, indicated by the data byte counter 21 (FIG. 2) is equal to the value &#34;6&#34;. If this is true, then no data bytes are associated with that command, and the procedure stops. In the state 44 it is tested whether the number of data bytes, No DB, indicated by the data byte counter 21 (FIG. 2) is equal to the value &#34;7&#34;. If this is true, then the state 47 reads one data byte from the FIFO register, and the state 48 sends the data byte. If No DB is equal to one of the values &#34;0&#34;, &#34;1&#34;, &#34;2&#34;, &#34;3&#34;, &#34;4&#34;, or &#34;5&#34;, then No DB data bytes are read from the FIFO in the state 45 and sent by the state 46. 
     The flow chart in FIG. 5 may be implemented in hardware, software, or a combination thereof. The software implementing the flow chart in FIG. 5 or a part thereof is called the master software. The master software may be embodied in a program which may be executed in any of the hardware devices mentioned above, i.e. the master unit and/or the slave unit. 
     The software may be distributed by means of any data storage or data transmission medium. The medium comprises floppy discs, CD-ROM, mini disc, compact disc or a network. The network may e.g. be the Internet. Via the network a software embodiment of the invention may be distributed by downloading a computer program. The software may comprise the master software alone. 
     FIG. 6 shows a flow chart for receiving commands according to the distribution shown in FIG. 4. In a preferred embodiment the slave unit shown in FIG. 1 will be in a receiving mode, waiting to receive a command byte 20 (FIG. 2), unless the receiver replies to a transmitter with an acknowledge signal. The acknowledge signal is preferably the received signal: 
     
         ______________________________________CMD  CMD    DATA.sub.1               DATA.sub.1                     . . .                          DATA.sub.N                                DATA.sub.N                                      CHK  CHK______________________________________ 
    
     or a signal complementary to that. The acknowledge signal can be transmitted or returned when the whole byte sequence is received. 
     The slave unit 7 is initiated in the state start 39. When e.g. the slave unit 7 (FIG. 1) is in the receiving mode, the state 30 will wait for a command byte and read the contents, i.e. the data byte counter field, No DB, and the command field, CMD, of that byte. When the command byte is received, the next state 31 will initialize the data byte counter to the value &#34;0&#34;. The state 32 looks for command bytes with no succeeding data bytes, that is if the number of data bytes, No DB, read from the command byte is equal to &#34;0&#34; or &#34;6&#34;. If the result of the state 32 is true, the command byte will be stored/executed in the state 38. 
     If the result of the state 32 is false, it will be checked if the number data bytes, No DB, is equal to &#34;7&#34;, that is only one data byte is expected after the command byte. If No DB is equal to &#34;7&#34;, then one data byte is expected and the data byte counter will be set to &#34;7&#34; in the state 37. The expected data byte will be read in the state 35 and stored/executed in the state 38. 
     If the number of data bytes read in the command byte is equal to &#34;1&#34;, &#34;2&#34;, &#34;3&#34;, &#34;4&#34;, or &#34;5&#34;, the result of state 33 is false and a loop comprising the states 34, 35, and 36 will be entered, and the loop will run until the number of data bytes is equal to the data byte counter. Every time the loop is run through the data byte counter, DB CNT, is increased. When all data bytes belonging to a given command byte have been retrieved, the receiver will wait for a new command byte. With this approach it is possible to decode the distribution of commands shown in FIG. 4. 
     Another aspect of the invention is the single bit message counter 22 shown in FIG. 2 as bit b3, which is used to obtain a more robust information communication. 
     The flow chart in FIG. 6 may be implemented in hardware, software, or a combination thereof. The software implementing the flow chart in FIG. 6 or a part thereof is called the slave software. The slave software may be embodied in a program which may be executed in any of the hardware devices mentioned above, i.e. the master unit and/or the slave unit. 
     The software may be distributed by means of any data storage or data transmission medium. The medium comprises floppy discs, CD-ROM, mini disc, compact disc or a network. The network may e.g. be the Internet. Via the network a software embodiment of the invention may be distributed by downloading a computer program. The software may comprise the slave software alone. 
     Likewise, the master and slave software may be distributed in a single software package, as mentioned above. 
     FIG. 7 shows an example of how a lost or erroneous byte sequence will be handled with a message counter according to the invention and with a retransmission flag according to the prior art. Without loss of generality, this example is provided by the transmission between a master unit and a slave unit, the communication comprising a command byte. In case of a message counter, and according to one aspect of the invention, the first command byte X1 transmitted from the master unit has its message counter set to &#34;0&#34;. The command byte X1 is received correctly in the slave unit and returned as an acknowledge signal Y1. The master unit is ready to transmit a new command X2 with its message counter set to 1. If an acknowledge signal Y2 for this message is not received by the master unit, then the command X2 will be retransmitted. Note that the message counter is not changed because the communication is still processing message number 2 equal to a logic &#34;1&#34;. The slave knows beforehand that it has to receive an altering bit, b3, for every new command to receive. 
     When using a retransmission flag, the communication may go wrong. The master unit transmits a command X1 with its retransmission flag set to &#34;0&#34;. The slave unit receives X1 and transmits an acknowledge signal Y1, which is received in the master unit. The master is thereby ready to transmit a new command X2 with its retransmission flag set to &#34;0&#34;. The command X2 is not acknowledged by the slave unit and the master unit will transmit a retransmission X2&#39; of X2 with its retransmission flag set to &#34;1&#34;. This retransmission is received and acknowledged correctly by the slave unit. If the command X1 is identical to X2&#39;, then the slave unit may--incorrectly--interpret the command X2&#39; as a retransmission of X1 and thereby discard the command without storing or executing it. 
     Preferably a master unit may communicate with one of a number of slave units over a wire-less link, just as slave units may communicate with each other. Slave units may respond to interchangeable information or operate as dummy repeaters. This aspect of the present invention may be readily implemented by a person skilled in the art. However, a preferred way of providing these features is to expand the byte format with an address field, ADR: 
     
         __________________________________________________________________________CMD CMD  ADR     ADR        DATA.sub.1            DATA.sub.1                . . .                   DATA.sub.N                       DATA.sub.N                           CHK CHK__________________________________________________________________________ 
    
     where CMD is the command byte, DATA 1  to DATA N  is the data bytes associated with the command byte and CHK is the check sum. N is the number of data bytes. Each slave unit is thereby associated with a unique address.