| 4 | |
| 5 | = Collisions = |
| 6 | |
| 7 | The [wiki:ISO15693] protocol allows for 16 time slots for communicating with an RFID reader. A collision occurs when 2 or more tags use the same time slot. By default each tag will use the 1st time slot unless a collision occurs. In the event of a collision the tags will randomly move to a different time slot. |
| 8 | |
| 9 | The Inventory All Slots command can handle this as it checks each of the 16 slots for a RFID. Unfortunately doing this operation is slow, it takes about .3 seconds, far too long for a lap counter to get accurate lap times. |
| 10 | |
| 11 | The solution is to use the Inventory 1 slot command during races. This command will just check the 1st time slot for a tag. To prevent collisions you must silence the tag immediately after it is detected. If a tag is silences it will not transmit again until it leaves and reenters the antenna loop. |
| 12 | |
| 13 | |
| 14 | = Inventory All Slots = |
| 15 | |
| 16 | This sends an ISO15693 inventory command for the TI S6350 reader. Does an inventory of all time slots, this supports anti-collision but is too slow to use during a race as it takes about .3 seconds to return results. This command is used to scan in racers before a race starts. By using the inventory all slots command everyone can line up on the finish line and one inventory done to add them to the race. |
| 17 | |
| 18 | The breakdown of the command is as follows: |
| 19 | Byte 1 is the Start of Frame, always 01 |
| 20 | Byte 2 and 3 is the length of the command including the 2 byte check sum that is added to the end, Least Significant Byte first |
| 21 | Byte 4 and 5 is the node address, leave at 00 as we do not reference nodes |
| 22 | Byte 6 is the command flags, no flags present |
| 23 | Byte 7 is the command, &h60 means it is an ISO15693 command which will be in the data portion of the packet |
| 24 | Byte 8 is the config byte for the reader, &h11 means 100% modulation and 1/4 data mode |
| 25 | Byte 9 is the ISO15693 command flags, &h07 means 2 sub carriers, high data rate, inventory_flag set, nb_slots_flag set to all 16 slots |
| 26 | Byte 10 is the ISO15693 command, &h01 means inventory |
| 27 | Byte 11 is the optional mask that is not set |
| 28 | Bytes 12 and 13 are the checksum |
| 29 | |
| 30 | The resulting command could look like this: |
| 31 | chrB(&h01) + chrB(&h0D) + chrB(&h00) + chrB(&h00) + chrB(&h00) + chrB(&h00) + chrB(&h60) + chrB(&h11) + chrB(&h07) + chrB(&h01) + chrB(&h00) + chrB(&h7B) + chrB(&h84) |
| 32 | |
| 33 | |
| 34 | = Inventory 1 slot = |
| 35 | |
| 36 | This sends an ISO15693 inventory command for the TI S6350 reader. This does an inventory of just the first time slot, which allows for a faster inventory responses but can not handle collisions. A collision is when two tags or more tags are in the field at the same time. To minimize collisions silence the tag after it is detected. |
| 37 | |
| 38 | |
| 39 | Byte 1 is the Start of Frame, always 01 |
| 40 | Byte 2 and 3 is the length of the command including the 2 byte check sum that is added to the end, Least Significant Byte first |
| 41 | Byte 4 and 5 is the node address, leave at 00 as we do not reference nodes |
| 42 | Byte 6 is the command flags, no flags present |
| 43 | Byte 7 is the command, &h60 means it is an ISO15693 command which will be in the data portion of the packet |
| 44 | Byte 8 is the config byte for the reader, &h11 means 100% modulation and 1/4 data mode |
| 45 | Byte 9 is the ISO15693 command flags, &h27 means 2 sub carriers, high data rate, inventory_flag set, nb_slots_flag set to 1 slot |
| 46 | Byte 10 is the ISO15693 command, &h01 means inventory |
| 47 | Byte 11 is the optional mask that is not set |
| 48 | Bytes 12 and 13 are the checksum |
| 49 | |
| 50 | The resulting command could look like this: |
| 51 | ChrB(&h01) + ChrB(&h0D) + ChrB(&h00) + ChrB(&h00) + ChrB(&h00) + ChrB(&h00) + ChrB(&h60) + ChrB(&h11) + ChrB(&h27) + ChrB(&h01) + ChrB(&h00) + ChrB(&h5B) + ChrB(&hA4) |