Label inventory method and device, reader-writer, label, storage medium and computer program product
By dividing the tag set into multiple tag groups and performing optimized random access operations on each tag group, the problem of low tag inventory efficiency in existing technologies is solved, and the efficiency and success rate of tag inventory in passive IoT are improved.
Patent Information
- Application Number
- CN202410501667.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-04-24
- Publication Date
- 2025-10-24
AI Technical Summary
Existing tag inventory methods are inefficient, especially in the context of massive tag volumes in passive IoT. Traditional time-division and tree-structured inventory methods suffer from high collision rates and low efficiency.
The tag set is divided into multiple tag groups, and a contention- or non-contention-based random access operation is performed on each tag group. By limiting the number of tags in the tag group and adjusting the random access parameters, the tag inventory process is optimized.
It improves the efficiency of tag inventory, especially in scenarios with a large number of tags, achieving a higher inventory success rate and a lower collision rate.
Smart Images

Figure CN120832897A_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The present application relates to the technical field of Internet of Things, and in particular to a tag inventory method and device, a reader-writer, a tag, a storage medium and a computer program product. BACKGROUND
[0002] In the related art, a reader-writer can perform inventory on tags by sending Select, Query, QueryRep, QueryAdjust, ACK (acknowledge) and other commands to the tags. However, the existing tag inventory method has low inventory efficiency. SUMMARY
[0003] To solve the problems in the related art, the present application provides a tag inventory method and device, a reader-writer, a tag, a storage medium and a computer program product.
[0004] The technical solution of the present application embodiment is implemented as follows:
[0005] The present application embodiment provides a tag inventory method applied to a reader-writer, and the method comprises the following steps:
[0006] performing a first operation on a tag group; wherein,
[0007] The tag group is obtained by grouping tags in a tag set, and one tag set is divided into multiple tag groups; the first operation represents inventorying tags or triggering tags to start random access based on contention or non-contention.
[0008] In the above solution, the first operation performed on the tag group comprises:
[0009] performing the first operation on the tag group according to a first value and / or a second value; wherein,
[0010] The first value represents the total number of tags contained in the tag group, the maximum number of tags that can be inventoried in a single round, or the maximum number of tags allowed to initiate random access; and the second value represents the maximum number of tags actually participating in a round of inventory.
[0011] In the above solution, the method further comprises:
[0012] determining or adjusting the second value according to a third value and / or a first parameter; wherein,
[0013] The third value represents the number of tags expected to participate in a round of inventory, and the first parameter represents a collision degree factor, a contention factor or a contention backoff factor.
[0014] In the above solution, the first value is less than or equal to a first threshold; and / or, the second value is less than or equal to a second threshold.
[0015] In the above solution, the first parameter is determined according to a number of parent nodes of the tag in the binary tree of the tag group.
[0016] In the above solution, the first operation performed on the tag group according to the first value and / or the second value includes:
[0017] sending a first command to the tag in the tag group; the first command is used to inventory the tag or trigger the tag to start contention-based or contention-free random access, and carries one or more of the following:
[0018] a first value, the first value is used to instruct the tag to generate a random number with a length of the first value;
[0019] a second value, the second value is used to instruct the tag to load a value of a bit position with a second value at a tail of the random number with the length of the first value into a counter;
[0020] state information of the tag, the state information indicates that the tag is in a selected state or an unselected state.
[0021] In the above solution, after the first command is sent to the tag in the tag group, the method further includes:
[0022] sending a second command to the tag in the tag group, the second command indicates that the tag is inventoried again or triggered to start contention-based or contention-free random access again;
[0023] receiving a random number returned by the tag in the tag group, the random number has a length of the first value.
[0024] In the above solution, the number of times that the second command is sent to one tag group is less than or equal to a fourth value, and the fourth value represents 2 Q -1, Q represents the second value.
[0025] In the above solution, the method further includes one or more of the following:
[0026] in a case of correctly decoding the random number, sending an acknowledgment (ACK) signaling to the tag that sends the random number, the ACK signaling is used to flip the state information of the tag to the unselected state;
[0027] receiving a non-temporary identification code sent by the tag, the non-temporary identification code is sent in a case of receiving the ACK signaling;
[0028] In the case of decoding failure of the non-temporary identification code, a negative acknowledgement (NACK) signaling is sent to the tag sending the non-temporary identification code, and the NACK signaling is used to flip the state information of the tag to the selected state.
[0029] In the above scheme, the method further comprises:
[0030] In the case of decoding failure of the random number, a third command is sent to the tags in the tag group; wherein,
[0031] The third command carries a first string; the first string represents a binary sequence from the parent node of the tag to the child node of the parent node in the binary tree of the tag group, or represents a binary sequence taken from the temporary identification code or the non-temporary identification code or the media access control (MAC) address of the tag; the third command is used to instruct the tag to send the random number again in the case that a second string is the same as the first string; the second string represents a string taken from the random number, and the number of bits of the second string is the same as that of the first string.
[0032] In the above scheme, the method further comprises:
[0033] The first string is determined or updated.
[0034] In the above scheme, the determination or update of the first string comprises:
[0035] According to the level change characteristics of the first waveform, the first string is determined or updated, and the first waveform is obtained according to the received random number.
[0036] In the above scheme, the first string comprises one or more of the following:
[0037] A third string, the third string representing a bit sequence before the first bit that the reader cannot decode;
[0038] A fourth string, the fourth string being obtained by inserting a first binary number after the first string or the third string, the third string representing a bit sequence before the first bit that the reader cannot decode;
[0039] A fifth string, the fifth string being obtained by inserting a second binary number after the first string or the third string, the third string representing a bit sequence before the first bit that the reader cannot decode;
[0040] A sixth string, the sixth string being obtained by inserting a second binary number and a first binary number after the first string or the third string, the third string representing a bit sequence before the first bit that the reader cannot decode;
[0041] A seventh string, the seventh string is obtained by inserting two second binary numbers after the first string or the third string, and the third string represents a bit sequence before a first bit that the reader cannot decode.
[0042] Embodiments of the present application also provide a label inventory method, applied to a label, the method comprising:
[0043] receiving a first command sent by a reader; the first command is used for inventorying labels or triggering labels to start contention-based or non-contention-based random access, and carries one or more of the following:
[0044] a first value, the first value is used to instruct a label to generate a random number with a length of the first value, and the first value represents a total number of labels in a label group, a maximum number of labels that can be inventoried in a single round, or a maximum number of labels allowed to initiate random access, the label group is obtained by grouping labels in a label set, and one label set is divided into multiple label groups;
[0045] a second value, the second value represents a maximum number of labels that actually participate in a round of inventorying, and the second value is used to instruct a label to load a value of a bit at a tail of the random number with the length of the first value to a counter; and the first value represents a total number of labels in a label group, a maximum number of labels that can be inventoried in a single round, or a maximum number of labels allowed to initiate random access;
[0046] state information of the label, the state information represents that the label is in a selected state or an unselected state.
[0047] In the above scheme, after receiving the first command sent by the reader, the method further comprises:
[0048] receiving a second command sent by the reader, and the second command represents that the labels are inventoried again or the labels are triggered again to start contention-based or non-contention-based random access;
[0049] in a case where the count value of the counter is greater than zero, not responding to the second command or rejecting to return a random number to the reader, and the length of the random number is the first value; or
[0050] in a case where the count value of the counter is equal to zero, returning a random number to the reader, and the length of the random number is the first value.
[0051] In the above scheme, after returning the random number to the reader, the method further comprises:
[0052] receive a third command sent by the reader; wherein the third command carries a first string, used to instruct the tag to send the random number again in a case that a second string is the same as the first string; the first string represents a binary sequence from a parent node of the tag to a child node of the parent node in a binary tree of the tag group, or represents a binary sequence taken from a temporary identification code or a non-temporary identification code or a MAC address of the tag; the second string represents a string taken from the random number, and the second string has the same number of bits as the first string;
[0053] in a case that the second string is different from the first string, not respond to the third command or refuse to return the random number to the reader; or
[0054] in a case that the second string is the same as the first string, return the random number to the reader again.
[0055] Embodiments of the present application also provide a tag inventory device, comprising:
[0056] a processing unit, configured to perform a first operation on a tag group; wherein,
[0057] the tag group is obtained by grouping tags in a tag set, and one tag set is divided into a plurality of tag groups; and the first operation represents inventorying the tags or triggering the tags to start random access based on competition or non-competition.
[0058] Embodiments of the present application also provide a tag inventory device, comprising:
[0059] a first receiving unit, configured to receive a first command sent by a reader; the first command is used for inventorying the tags or triggering the tags to start random access based on competition or non-competition, and carries one or more of the following:
[0060] a first value, used to instruct the tag to generate a random number with a length of the first value; the first value represents a total number of tags in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate random access; the tag group is obtained by grouping tags in a tag set, and one tag set is divided into a plurality of tag groups;
[0061] a second value, representing a maximum number of tags actually participating in a round of inventorying; the second value is used to instruct the tag to load a value of a bit position of the second value at a tail of the random number with the length of the first value into a counter; the first value represents a total number of tags in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate random access;
[0062] state information of the tag, representing that the tag is in a selected state or an unselected state.
[0063] The embodiment of the present application also provides a reader, comprising a first processor and a first communication interface,
[0064] The first processor is used for performing a first operation on a tag group; wherein,
[0065] The tag group is obtained by grouping tags in a tag set, and one tag set is divided into multiple tag groups; and the first operation represents inventorying tags or triggering tags to start random access based on contention or non-contention.
[0066] The embodiment of the present application also provides a tag, comprising a second processor and a second communication interface,
[0067] The second communication interface is used for receiving a first command sent by the reader; the first command is used for inventorying tags or triggering tags to start random access based on contention or non-contention, and carries one or more of the following:
[0068] A first value, the first value is used for instructing the tag to generate a random number with a length of the first value, and the first value represents a total number of tags contained in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate random access; the tag group is obtained by grouping tags in a tag set, and one tag set is divided into multiple tag groups;
[0069] A second value, the second value represents a maximum number of tags actually participating in a round of inventorying, and the second value is used for instructing the tag to load a value of a bit position of the second value at a tail of the random number with the length of the first value into a counter; and the first value represents a total number of tags contained in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate random access;
[0070] State information of the tag, the state information represents that the tag is in a selected state or an unselected state.
[0071] The embodiment of the present application also provides a reader, comprising a first processor and a first memory for storing a computer program capable of running on the first processor,
[0072] When the first processor runs the computer program, the steps of any method on the reader side are performed.
[0073] The embodiment of the present application also provides a tag, comprising a second processor and a second memory for storing a computer program capable of running on the second processor,
[0074] When the second processor runs the computer program, the steps of any method on the tag side are performed.
[0075] The embodiment of the present application further provides a storage medium, which has a computer program stored thereon, and the computer program is executed by a processor to implement the steps of any method on the reader side or the steps of any method on the tag side.
[0076] The embodiment of the present application further provides a computer program product, which comprises a computer program, and the computer program is executed by a processor to implement the steps of any method described above.
[0077] In the tag inventory method, the apparatus, the reader, the tag, the storage medium and the computer program product provided by the embodiment of the present application, the reader performs a first operation on a tag group, the tag group is obtained by grouping tags in a tag set, one tag set is divided into multiple tag groups, the first operation represents inventorying tags or triggering tags to start random access based on competition or non-competition, the tag receives a first command sent by the reader, the first command is used for inventorying tags or triggering tags to start random access based on competition or non-competition, and carries one or more of the following: a first value, a second value and state information of the tag; the first value is used to instruct the tag to generate a random number with a length of the first value, the first value represents a total number of tags contained in the tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate random access, the tag group is obtained by grouping tags in a tag set, and one tag set is divided into multiple tag groups; the second value represents a maximum number of tags actually participating in a round of inventorying, and the second value is used to instruct the tag to load a value of a bit position of the second value at a tail of the random number with the length of the first value into a counter; and the state information represents that the tag is in a selected state or an unselected state. It can be seen that in the embodiment of the present application, the reader divides a tag set into multiple tag groups, and performs a first operation on each tag group, and since the number of tags contained in one tag group is relatively small, the tag set is grouped for inventorying, and the inventorying efficiency can be improved. BRIEF DESCRIPTION OF DRAWINGS
[0078] Figure 1 An example diagram of a related technology inventory method based on time division;
[0079] Figure 2 An example diagram of a related technology inventory method based on a tree;
[0080] Figure 3 An example diagram of a tag inventory method according to an embodiment of the present application;
[0081] Figure 4 An example diagram of tag inventory efficiency according to an embodiment of the present application;
[0082] Figure 5 An example diagram of a reader decoding a random number according to an embodiment of the present application;
[0083] Figure 6 An example diagram of a first waveform corresponding to a collision bit in an embodiment of the present application is shown in FIG. 6. Figure 5 An example diagram of a first waveform corresponding to a collision bit in an embodiment of the present application is shown in FIG. 6.
[0084] Figure 7 An example diagram of a first waveform corresponding to a collision bit in an embodiment of the present application is shown in FIG. 6. Figure 5 An example diagram of a first waveform corresponding to a collision bit in an embodiment of the present application is shown in FIG. 6.
[0085] Figure 8 An example diagram of a first waveform corresponding to a collision bit in an embodiment of the present application is shown in FIG. 6.
[0086] Figure 9 An example diagram of a first waveform corresponding to a collision bit in an embodiment of the present application is shown in FIG. 6.
[0087] Figure 10 An example diagram of a first waveform corresponding to a collision bit in an embodiment of the present application is shown in FIG. 6.
[0088] Figure 11 An example diagram of a first waveform corresponding to a collision bit in an embodiment of the present application is shown in FIG. 6.
[0089] Figure 12 An example diagram of a first waveform corresponding to a collision bit in an embodiment of the present application is shown in FIG. 6.
[0090] Figure 13 An example diagram of a first waveform corresponding to a collision bit in an embodiment of the present application is shown in FIG. 6.
[0091] Figure 14 An example diagram of a first waveform corresponding to a collision bit in an embodiment of the present application is shown in FIG. 6.
[0092] Figure 15 An example diagram of a first waveform corresponding to a collision bit in an embodiment of the present application is shown in FIG. 6.
[0093] Figure 16 An example diagram of a first waveform corresponding to a collision bit in an embodiment of the present application is shown in FIG. 6. DETAILED DESCRIPTION
[0094] Ambient IoT (Internet of Things) is a technology that obtains or collects energy (radio, light, vibration or other energy) from the environment through devices that do not need power supply or have very low power storage capability, and realizes small data signal transmission through backscattering, low-power radio frequency transmission (only radio frequency signal amplification or independent signal generation). The complexity and energy consumption of Ambient IoT are much lower than that of NB-IoT (Narrow Band Internet of Things).
[0095] The most similar system to Ambient IoT in the existing system is Electronic Product Code (EPC) and Ultra High Frequency (UHF) Radio Frequency Identification (RFID) system, which also uses backscatter communication technology to realize communication between tags and readers, allows tags to randomly reflect signals sent by readers in the form of time slot Aloha, and uses load modulation to interact with the base station. ALOHA technology is a random access technology applied to communication networks with a large number of users competing for the same channel.
[0096] In the traditional RFID system, it is mainly composed of radio frequency tags, readers and background applications. The background application is responsible for controlling the reader to issue commands and accepting the tag inventory results sent back by the reader, the reader is responsible for inventorying the tags, and the tags store unique identification codes, generally Electronic Product Code (EPC). The reader and the tag communicate through backscatter communication, and the tag has a certain storage capacity and processing capacity.
[0097] The reader performs inventory on the tag by sending Select, Query, QueryRep, QueryAdjust, ACK and other commands to the tag. Among them, the Select command is responsible for selecting specific tags in the tag cluster; the Query command is used to let the selected tag generate a random number (RN); QueryRep and QueryAdjust respectively let the random number decrease and adjust the random number size; finally when the random number becomes zero, the tag sends a new random number RN16 to the reader; the reader replies ACK and the corresponding RN16 of the tag, and the tag receives ACK and its own RN16 and sends its own EPC to the reader; the reader transmits the EPC back to the background application or sends a handle for further communication. Generally, when the tag sends its own EPC to the reader, it is considered to have completed an inventory.
[0098] There are mainly two inventory methods for passive Internet of Things; as shown in Figure 1 The first is a time division-based inventory method, and the common method is time slot ALOHA; as shown in Figure 2The second is a binary tree-based inventory method, common methods include binary search tree, query tree, collision tree, etc. The search tree is a commonly used algorithm for finding elements in a node. The search tree is composed of nodes, each node has a corresponding parent node and child node. The child nodes of the same parent node are siblings, and the number of siblings is the number of forks. The height (or depth) of the search tree is the longest path from the parent node to all child nodes of the parent node.
[0099] Both of these two inventory methods have some problems at this stage. The first time-based inventory method is widely used in existing RFID systems, but due to the existence of a large number of collisions in the tag, the inventory efficiency is relatively low, with a theoretical efficiency of 36.8%, which is not suitable for the scenario of a large number of tags in passive Internet of Things. Inventory efficiency can be understood as the ratio of the number of successfully inventoried tags to the total number of tags. Inventory efficiency can be described as Valid access rate.
[0100] The second tree-based inventory method generally has two problems, namely, the depth of the tree is too deep or the number of free forks is too large. For example, in Figure 2 , the height of the first tree is 4, the number of siblings is 2, and it is a binary tree with a height of 4. The height of the second tree is 2, and the number of siblings is 4, which is a quad tree with a height of 2. When inventorying, the reader first determines the sequence of the node to all parent nodes of the node, and then broadcasts the sequence of the parent node to the corresponding child node as the prefix. The tag judges whether the prefix and the EPC stored in itself are consistent, and if they are consistent, the tag sends its own EPC to the reader.
[0101] Generally speaking, the higher the height of the tree, the more signaling the reader needs to broadcast, and the more empty slots the tree has, which means the inventory speed is slower, which is not ideal. According to the simulation results, the maximum inventory efficiency based on binary tree is 50%.
[0102] Based on this, in various embodiments of the present application, the reader performs a first operation on a tag group; wherein the tag group is obtained by grouping tags in a tag set, one tag set is divided into multiple tag groups, the first operation represents inventorying tags, or triggering tags to start contention-based or contention-free random access; the tag receives a first command sent by the reader, the first command is used to inventory tags or trigger tags to start contention-based or contention-free random access, and carries one or more of the following: a first value, a second value, and state information of the tag; wherein the first value is used to instruct the tag to generate a random number with a length of the first value, the first value represents the total number of tags contained in the tag group, the maximum number of tags that can be inventoried in a single round, or the maximum number of tags allowed to initiate random access, the tag group is obtained by grouping tags in a tag set, and one tag set is divided into multiple tag groups; the second value represents the maximum number of tags actually participating in a round of inventorying, and the second value is used to instruct the tag to load the value of the bit position of the second value at the tail of the random number with the length of the first value into a counter; and the state information represents that the tag is in a selected state or an unselected state. It can be seen that in the embodiments of the present application, the reader divides the tag set into multiple tag groups, performs the first operation on each tag group, and since the number of tags contained in one tag group is relatively small, grouping and inventorying the tags in the tag set can improve the inventorying efficiency.
[0103] The present application will be further described in detail below with reference to the accompanying drawings and embodiments.
[0104] The embodiments of the present application provide a tag inventorying method, applied to a reader, the reader comprising a network device and / or a terminal, the network device comprising a base station. As shown in the figure, Figure 3 The method comprises the following steps:
[0105] Step 301: performing a first operation on a tag group.
[0106] Wherein the tag group is obtained by grouping tags in a tag set, one tag set is divided into multiple tag groups; and the first operation represents inventorying tags, or triggering tags to start contention-based or contention-free random access.
[0107] Here, the reader determines the tag set, can select multiple tags in the tag set, obtain a tag group, and perform the first operation on the tag group. For example, a set command is sent to the tags in the tag set, the set command can be used to select multiple tags in the tag set, or to select multiple tags expected or required to be inventoried in the same time slot, and perform the first operation on the selected multiple tags; that is, multiple tags can be inventoried in one time slot, and all tags expected or required to be inventoried in the same time slot form a tag group. The number or total number of tags included in a tag group is less than the number or total number of tags included in the tag set. The tags included in different tag groups can be completely different or partially the same. The reader can perform the first operation on different tag groups in parallel, or perform the first operation on each tag group in sequence. The tag can be understood as a tag device with a single EPC and storage capability. The tag can include one or more of active tags, passive tags, and semi-passive tags.
[0108] The reader can also divide the tag set into multiple tag groups according to the set manner and perform the first operation on each tag group after determining the tag set; or divide the tag set into multiple tag groups according to the set manner and the number of available time slots, and perform the first operation on each tag group; one time slot corresponds to one tag group, that is, a group of tags can be executed in one time slot The first operation is performed on different tag groups in different time slots. Among them, the set manner can be that the number or total number of tags included in a tag group does not exceed the first threshold. The first threshold can be set according to actual needs, for example, the first threshold can be 16; of course, the first threshold can also be greater than 16 or less than 16. The maximum number of tags can be understood as the maximum number of tags, the maximum value or upper limit value of the number of tags.
[0109] It should be noted that the tag set is composed of tags expected to be inventoried, and the tag set is also called a tag population, and the tag set can be denoted as TagGroup, and the inventory can be understood as the inventory; the tag group is also called a small-scale tag population; the tag can also be called a tag device, including passive tags and / or semi-passive tags. The tag set is divided into multiple tag groups in order to manufacture small-scale collisions, and the number of tags in small-scale collisions in one time slot does not exceed the first threshold (for example, 16). The reason for manufacturing small-scale collisions is to take advantage of the characteristics of the tree collision algorithm that the inventory efficiency is high when the number of tags is small, in order to improve the inventory efficiency.
[0110] In actual application, the reader can select the tags expected to be inventoried through a Select command to obtain a tag set. The command can also be referred to as signaling. For example, the reader can select or check the tags expected to be inventoried from the tags not inventoried according to a request issued by a server or a user device to obtain a tag set, which is referred to as a tag population. This function can be implemented by the Select command. The server can interact with the reader. The server stores data of the tags and a correspondence between the tags and the reader. Table 1 shows a structural example of the Select command.
[0111] Table 1
[0112] Signaling / Command Field 1 Field 2 Field 3 Field 4 Field 5 Field 6 Select Pointer Length Mask Condition Flag State
[0113] Pointer indicates a pointer, used to indicate a starting address; Length indicates a length, used to indicate a length of data; Mask indicates a mask, which is used to select data for comparison; Condition indicates a condition; Flag indicates a flag bit; and State indicates state information, which is a checked state or an unchecked state.
[0114] It should be noted that, in the case where the tag receives the Select command sent by the reader, the tag reads an address of an internal memory of the tag carried in the Pointer in the Select command, and takes out data with a length of Length from the memory of the tag with the address as a starting address. The data is compared with the Mask in the Select command to obtain a comparison result. If the comparison result is consistent with information carried in the Condition (matching or not matching), the tag sets a state of the Flag of the tag to a state indicated by the State of the Select command. All the tags selected through the Select command constitute a tag set.
[0115] A tag can have multiple Flags, and each Flag can have multiple states or indicate multiple states. In the embodiments of the present application, the state of the Flag has at least two states of SL and ~SL by default, which represent two states of the tag being selected and not being selected, respectively. If SL represents that the tag is not selected, it means that the reader can inventory the tag in the future; if ~SL represents that the tag is not selected, it means that the reader can inventory the tag in the future.
[0116] To improve the tag inventory efficiency, in an embodiment, the first operation is performed on the tag group, including:
[0117] The first operation is performed on the tag group according to the first value and / or the second value; wherein,
[0118] The first value represents the total number of tags in the tag group, the maximum number of tags that can be inventoried in a single round, or the maximum number of tags allowed to initiate random access; and the second value represents the maximum number of tags that actually participate in a round of inventorying.
[0119] Here, the reader can perform the first operation on the tag group according to the first value, or perform the first operation on the tag group according to the second value, or perform the first operation on the tag group according to the first value and the second value. The first value can be denoted as X, and the second value can be denoted as Q. In the case where the first value represents the maximum number of tags that can be inventoried in a single round, or the maximum number of tags allowed to initiate random access, the first value is greater than or equal to the second value. In the case where the first value represents the total number of tags in the tag group, the second value can be greater than the first value.
[0120] It should be noted that the first values corresponding to different tag groups can be the same or different, and the second values corresponding to different tag groups can be the same or different. By setting appropriate X and Q, it can be ensured that there is a high probability of completing the inventorying of all tags in the tag group in a single round of inventorying.
[0121] It should be noted that after determining the second value Q, the reader will broadcast 2 Q -1 slot boundary or range (e.g., start time and duration of the slot), and the tag can randomly select a slot in 2 Q -1 slot to send the tag's random number RNX, or can send the tag's random number in the slot specified by the reader; all tags that reply with a random number in the same slot can be considered as a tag group, i.e., one slot corresponds to one tag group.
[0122] In order to obtain an accurate second value and improve the flexibility of the scheme, the second value can be determined or adjusted according to actual needs or application scenarios. Based on this, in an embodiment, the method further comprises:
[0123] determining or adjusting the second value according to a third value and / or a first parameter; wherein,
[0124] The third value represents the number of tags expected to participate in a round of inventorying, and the first parameter represents a collision degree factor, a contention factor, or a contention backoff factor.
[0125] Here, the value range of the second value depends on the third value and / or the first parameter. The third value can also be understood as the total number of tags contained in the tag set, which can be denoted as EstTagNum. The third value can be provided by the core network or derived by the reader through a tag estimation algorithm. The collision degree factor can be described as Collision Factor, and the contention factor can be described as Contention Factor. The contention backoff factor, also known as contention backoff factor, can be described as ContentionBackoff Factor.
[0126] In actual application, the second value can be determined or updated according to the formula Q = max (log2 (EstTagNum) - K, 0). Here, Q represents the second value, and K represents the first parameter. It should be noted that in the scenario of inventorying the tag group based on time slots, K is equal to zero; in the scenario of inventorying the tag group based on a binary tree, K can be an integer greater than zero. In a single time slot, in the scenario of inventorying the tag group based on a binary tree, K can be an integer greater than zero.
[0127] In the existing scheme, Q is the estimated number of tags (the total number of expected inventory tags) with a base of 2, i.e. Q in the existing scheme is log2 (EstTagNum) or log2 G, G is the total number of tags contained in the tag set. Due to a large number of tags colliding during inventorying, the tag inventorying efficiency will not be higher than 36.8%. In the embodiments of the present application, log2 (EstTagNum) - K is less than log2 G or log2 (EstTagNum), so the Q in the embodiments of the present application can be reduced. Since Q = max (log2 (EstTagNum) - K, 0) in the embodiments of the present application, Q in the existing scheme is reduced by K, so the number of tags in each time slot will become 2 K times the previous, artificially creating collisions, and using a binary tree to solve the tag collision problem is to take advantage of the high efficiency of tag inventorying when the number of tags is small to improve the inventorying efficiency. As shown in Figure 4 the table, the tag inventorying efficiency is greater than 36.8%, and the tag inventorying efficiency can be improved by reducing Q.
[0128] In order to improve the tag inventorying efficiency, the value range of the first value and the second value can be limited to control the maximum number of tags that collide. Based on this, in an embodiment, the first value is less than or equal to a first threshold; and / or, the second value is less than or equal to a second threshold.
[0129] Here, the first threshold is greater than or equal to the second threshold. For example, the first threshold and the second threshold are both 16. By limiting or narrowing the value range of the second value, the number of tags in each time slot can be greater than or equal to 1 and less than or equal to 16, which can greatly improve the tag inventory efficiency, as shown in Figure 6 illustrated. It should be noted that the first threshold and / or the second threshold can also be greater than 16 or less than 16, and is set according to actual needs. For example, if the maximum number of tags that can be inventoried in a single round is significantly greater than 65536 (2 16 ), then the first threshold and the second threshold can be greater than 16; if the maximum number of tags that can be inventoried in a single round is significantly less than 65536, then the first threshold and the second threshold can be less than 16.
[0130] In the scenario of inventorying the tag group based on the binary tree, in order to make the scheme applicable to different binary trees, to solve the tag collision problem through different binary trees, and to achieve single inventorying. Based on this, in an embodiment, the value of the first parameter is determined according to the number of parent nodes of the tags in the binary tree of the tag group.
[0131] Here, one tag group corresponds to one binary tree, and each node of the binary tree represents each tag in the tag group. Each node in the binary tree has at least a corresponding parent node, and some parent nodes have corresponding child nodes. The child nodes belonging to the same parent node are siblings. The number of parent nodes of the same node, and the number of child nodes belonging to the same parent node can all represent the number of forks of the binary tree. It should be noted that the value of the first parameter can also be determined according to the number of child nodes of the parent nodes of the tags in the binary tree of the tag group.
[0132] Since the number of parent nodes of the tags in the binary tree is the number of forks of the binary tree, in the case where the number of parent nodes of the tags in the binary tree of the tag group is 2, the binary tree representing the tag group is a binary tree, and the value of the first parameter is 1; in the case where the number of parent nodes of the tags in the binary tree of the tag group is 4, the binary tree representing the tag group is a quad tree, and the value of the first parameter is 2; in the case where the number of parent nodes of the tags in the binary tree of the tag group is 8, the binary tree representing the tag group is an octree, and the value of the first parameter is 3, and so on. That is, the value of the first parameter can be determined by K = log2F, K represents the value of the first parameter, and F represents the number of parent nodes of the tags in the binary tree of the tag group.
[0133] In order to improve the inventory efficiency of the tags, in an embodiment, the first operation is performed on the tag group according to the first value and / or the second value, including:
[0134] Send a first command to the tags in the tag group; the first command is used to take inventory of the tags or trigger the tags to start contention-based or non-contention-based random access, and carries one or more of the following:
[0135] A first value, wherein the first value is used to instruct the tag to generate a random number having a length of the first value;
[0136] a second value, where the second value is used to instruct the tag to load a value of a bit of the second value located at the tail of the random number having a length equal to the first value into the counter;
[0137] Status information of the tag, where the status information indicates whether the tag is in a selected state or an unselected state.
[0138] Here, the reader sends a first command to all tags in the tag group. The first command can be a Query command. The first command includes at least a first value and can also include a second value and / or tag status information. That is, the first command is mainly used to trigger the tag to generate a random number.
[0139] It should be noted that after determining the second value Q and before sending the first command, the reader can broadcast 2 Q -1 time slot boundary or range (time slot start time and duration) so that the tag can Q -1 time slot is randomly selected to send the tag's random number RNX, or the tag's random number is sent within the time slot specified by the reader. One time slot corresponds to one tag group, and different time slots correspond to different tag groups.
[0140] The state information of the tag may be indicated by a flag bit (Flag) in the Query command, and / or the state information of the tag may be indicated by state information (State) in the Query command. Table 2 shows an example of the structure of the Query command.
[0141] Table 2
[0142] Signaling / Command Field 1 Field 2 Field 3 Field 4 Query Second value (Q) First value (X) Flag State
[0143] It should be noted that the first command shown in Table 2 is used to instruct the tag to generate a random number RNX with a length of the first value when the state indicated by the Flag of the tag is the same as the state indicated by the Flag in the first command, and / or the state represented by the State of the tag is the same as the state represented by the State in the first command, and load the value of the bit of the second value at the end of RNX into the counter, for example, load the Q bit low-order content of RNX into the counter. Wherein, RNX is a positive integer, and the value range of RNX is [0,2 x-1], the counter can be a shift counter (SC).
[0144] In the case that the state information of the tag is indicated by the Flag in the Query command, if the state indicated by the Flag of the tag receiving the first command is the same as the state indicated by the Flag in the Query command, the tag generates a random number RNX of a first value, RNX is a positive integer, the value range of RNX is [0, 2 x -1], the tag can also load the value of the second value of the bit at the tail of RNX into the counter, for example, the Q bit low content of RNX is loaded into the counter.
[0145] In the case that the state information of the tag is indicated by the State in the Query command, if the state characterized by the State of the tag receiving the first command is the same as the state characterized by the State in the Query command, the tag generates a random number RNX of a first value, RNX is a positive integer, the value range of RNX is [0, 2 x -1], the tag can also load the value of the second value of the bit at the tail of RNX into the counter.
[0146] In the case that the state information of the tag is indicated by the State in the Query command, if the state indicated by the Flag of the tag receiving the first command is the same as the state indicated by the Flag and the State in the Query command, and the state characterized by the State of the tag is the same as the state characterized by the State in the Query command, the tag generates a random number RNX of a first value, RNX is a positive integer, the value range of RNX is [0, 2 x -1], the tag can also load the value of the second value of the bit at the tail of RNX into the counter.
[0147] After the tag generates a random number of a first value according to the first command, and loads the value of the second value of the bit at the tail of the random number RNX into the counter, the reader can issue a second command. Based on this, in an embodiment, after the first command is sent to the tags in the tag group, the method further comprises:
[0148] sending a second command to the tags in the tag group, the second command characterizing re-inventorying the tags or re-triggering the tags to start contention-based or non-contention-based random access;
[0149] receiving the random number returned by the tags in the tag group, the length of the random number being the first value.
[0150] Here, the reader sends one or more second commands to part or all of the tags contained in the tag group; each tag decrements the count value in the counter by 1 upon receiving a second command; any tag returns or feeds back or replies to the reader with a random number in the case that the count value in the counter of the tag is zero, the length of the random number being the first value; the reader receives the random numbers returned by the tags.
[0151] It should be noted that the second command can be a QueryRep command, which is used to trigger the tags to decrement the count value in the counter, for example, the second command is used to trigger the tags to decrement the count value in the counter by 1 upon receiving a second command. In the case that the count value in the counter of any tag is zero, the tag can also flip the state information of the tag from the selected state to the unselected state; in the case that the count value in the counter of any tag is zero, and a second command is received again, the count value in the counter is modified to the initial value (the maximum value).
[0152] Since the number of tags actually participating in a round of inventory is determined, in order to improve the efficiency of tag inventory and save signaling overhead, in an embodiment, the number of times of sending second commands to a tag group is less than or equal to the fourth value, the fourth value representing 2 Q -1, Q represents the second value.
[0153] In theory, the reader will have one or more tags replying with a random number after sending a second command each time. The reader can determine whether only one tag replies with a random number by whether it can correctly decode the received random number, so as to determine whether the tags have collided; if only one tag replies with a random number, the reader can correctly decode the random number, and the tags have not collided; if multiple tags reply with random numbers, the reader cannot correctly decode the received random number, multiple tags have collided, or there are bits that cannot be decoded in the random numbers replied by multiple tags, which can be referred to as collision bits. The reader needs to solve the problem of collision of random numbers replied by multiple tags in order to inventory all tags in the tag group, thereby improving the efficiency of tag inventory. Based on this, in an embodiment, the method further comprises one or more of the following:
[0154] In the case of correctly decoding the random number, sending ACK signaling to the tag that sent the random number, the ACK signaling being used to flip the state information of the tag to the unselected state;
[0155] Receiving the non-temporary identification code sent by the tag, the non-temporary identification code being sent in the case of receiving the ACK signaling;
[0156] In the case of decoding failure of the non-temporary identification code, sending negative acknowledgement NACK signaling to the tag that sent the random number, the NACK signaling being used to flip the state information of the tag to the selected state.
[0157] Here, the reader decodes the received random number, and in the case of correct decoding of the random number, it is represented that only one tag replies the random number, or it is represented that the reader only receives one random number at the same time or in the same time slot, the reader sends ACK signaling to the tag sending the random number, and the ACK signaling is used to flip the state information of the tag to the unselected state. Decoding is also called decoding.
[0158] The tag receiving the ACK signaling flips the state information of the tag to the unselected state, for example, flips the state information of the tag from SL to ~SL, SL represents the selected state, and ~SL represents the unselected state; in the case of flipping the state information of the tag to the unselected state, it is represented that the tag ends this round of inventory.
[0159] In the case of flipping the state information of the tag to the unselected state, the tag receiving the ACK signaling can also send the non-temporary identification code of the tag to the reader, and the reader also receives the non-temporary identification code sent by the tag. The non-temporary identification code includes one or more of the following: EPC, tag identification code (TID, Tag identifier), MAC address of the tag.
[0160] In the case of receiving the non-temporary identification code sent by the tag, the reader decodes the received non-temporary identification code, and in the case of decoding failure of the non-temporary tag identification, sends NACK signaling to the tag sending the non-temporary identification code, and the NACK signaling is used to flip the state information of the tag to the selected state. The tag receiving the NACK signaling flips the state information of the tag to the selected state, for example, flips the state information of the tag from ~SL to SL, SL represents the selected state, and ~SL represents the unselected state; in the case of flipping the state information of the tag to the selected state, the tag is ready to enter the next round of inventory. It should be noted that after the reader sends NACK signaling to the tag sending the non-temporary identification code, the next round of inventory can be started for the tag group, for example, a new first command is sent to the tags in the tag group, and in the case of starting the next round of inventory for the tag group, the first value and / or the second value in the first command can be the same or different. In the case of correct decoding of the non-temporary identification code, the reader does not perform any operation.
[0161] Considering that the reader cannot correctly decode the received random number in the case of receiving multiple random numbers returned by multiple tags, the reader needs to solve the collision problem of multiple tags (the problem of collision of random numbers replied by multiple tags). Based on this, in an embodiment, the method further includes one or more of the following:
[0162] In the case of decoding failure of the random number, a third command is sent to the tags in the tag group; wherein,
[0163] The third command carries a first string; the first string represents a binary sequence from a parent node of a tag to a child node of the parent node in a binary tree of a tag group, or represents a binary sequence taken from a temporary identification code or a non-temporary identification code or a MAC address of the tag; the third command is used to instruct the tag to send the random number again in a case that a second string is identical to the first string; the second string represents a string taken from the random number, and the second string has a same number of bits as the first string.
[0164] Here, the reader decodes the received random number, and in a case that the decoding of the random number fails, it is represented that the reader receives the random numbers returned by multiple tags, and the reader sends a third command to the tags in the tag group to solve the problem of collision of the random numbers returned by the tags.
[0165] The third command can be a Request command; the first string carried by the third command can be understood as a prefix, which can be denoted as Prefix. In a case that the first string represents a binary sequence from a parent node of a tag to a child node of the parent node in a binary tree of a tag group, the first string carried by different third commands can be different to inventory different tags. In a case that the first string represents a binary sequence taken from a temporary identification code or a non-temporary identification code or a MAC address of the tag, the first string can be a binary sequence taken from the temporary identification code or the non-temporary identification code or the MAC address of the tag in a set manner, and the second string represents a string taken from the random number in the set manner. The temporary identification code of the tag can be a random number with a first number of bits. The set manner includes taking a set number of continuous or discontinuous binary numbers in an order from a high bit to a low bit, or taking a set number of continuous or discontinuous binary numbers in an order from a low bit to a high bit.
[0166] Before sending the third command to the tags in the tag group, the first string needs to be determined, and after sending the third command to the tags in the tag group, the first string can also be updated to inventory different tags, so as to solve the collision problem of the tags in the tag group and to inventory all the tags in the tag group. Based on this, in an embodiment, the method further includes:
[0167] Determining or updating the first string.
[0168] Here, the first determined first string can be an empty string, or can be a binary sequence from a parent node of a tag to a child node of the parent node in a binary tree of a tag group to be inventoried, or can be a binary sequence taken from a temporary identification code or a non-temporary identification code or a MAC address of the tag. The updated first string can be obtained by adding at least one binary number after the first string.
[0169] In order to effectively or quickly solve the conflict of the tags in the tag group, and improve the tag inventory efficiency, in an embodiment, the determining or updating the first string comprises:
[0170] According to the level change characteristics of the first waveforms, the first string is determined or updated, the first waveforms being obtained according to the received random numbers.
[0171] Here, since the random number replied by the tag is a binary sequence with a first value, each binary number in the binary sequence can be converted into a corresponding level waveform, which can be referred to as a waveform for short; the reader superimposes the level waveforms corresponding to each bit of each received random number according to the bits, to obtain a plurality of first waveforms, the number of the first waveforms being the first value; and the first string is determined or updated according to the level change characteristics of the first waveforms.
[0172] It should be noted that if the value of any bit in all the received random numbers is all 0 or 1, the falling edge of the first waveform corresponding to the bit can still maintain singularity, that is, the first waveform has only one falling edge, and the reader can correctly decode the bit; if the value of any bit in all the received random numbers includes 0 and 1, the first waveform corresponding to the bit will have a second falling edge, and the reader cannot correctly decode the binary number of the bit. Therefore, the reader can determine the correctly decoded bit and the bit that cannot be correctly decoded in the random number according to the level change characteristics of the first waveforms, and determine or update the first string according to the bit sequence before the first bit that cannot be decoded by the reader. Wherein, the reader can determine the bit sequence before the first bit that cannot be decoded by the reader as the first string; or add at least one binary number to the bit sequence before the first bit that cannot be decoded by the reader to update the first string.
[0173] In order to use balanced or unbalanced binary trees to solve the collision problem of the tags in the tag group, and inventory all the tags in the tag group; since the total number of the tags in the tag group is relatively small, the tree collision algorithm can be used to improve the tag inventory efficiency when the number of tags is small. Based on this, in an embodiment, the first string comprises one or more of the following:
[0174] The third string represents the bit sequence before the first bit that cannot be decoded by the reader.
[0175] The fourth string is obtained by inserting a first binary number after the first string or the third string, and the third string represents the bit sequence before the first bit that cannot be decoded by the reader.
[0176] A fifth string, the fifth string is obtained by inserting one second binary number after the first string or the third string, the third string represents a bit sequence before a first bit that the reader cannot decode;
[0177] A sixth string, the sixth string is obtained by inserting one second binary number and one first binary number after the first string or the third string, the third string represents a bit sequence before a first bit that the reader cannot decode;
[0178] A seventh string, the seventh string is obtained by inserting two second binary numbers after the first string or the third string, the third string represents a bit sequence before a first bit that the reader cannot decode.
[0179] Here, in the case of random number decoding failure, the collision problem of the tags in a tag group is solved by using a binary tree, and one tag group corresponds to one binary tree. The binary tree includes a dynamic balanced tree and a dynamic unbalanced tree, which can be referred to as an unbalanced tree. The dynamic balanced tree allows a 0 child node or a 1 child node to be inserted after a parent node of a tag in the binary tree, such as a Prefix+0 child node and a Prefix+1 child node. The dynamic unbalanced tree allows a child node branched from a child node to be inserted in the binary tree instead of the child node itself, such as a Prefix+0 child node, a Prefix+10 child node, and a Prefix+11 child node. The Prefix+10 child node and the Prefix+11 child node are child nodes branched from the child node Prefix+1.
[0180] In the scenario of solving the collision problem of the tags in a tag group by using a binary tree, the first string can be determined according to the number of falling edges of the first waveform, or the first string can be determined or updated according to the number and position of the falling edges of the first waveform. Specifically, in the case where the number of falling edges of the first waveform corresponding to any bit is 1, it indicates that the reader can correctly decode the bit. In the decoding result of the reader, the third string is determined, the third string can be used as the first string, the third string represents a bit sequence before a first bit that the reader cannot decode, and at this time, the first string includes the third string. In the case where the number of falling edges of the first waveform corresponding to any bit is 2, it indicates that the reader cannot correctly decode the bit. According to the position of the second falling edge in the first waveform, the first string is determined or updated, and the determined or updated first string includes one or more of the following: a fourth string, a fifth string, a sixth string, and a seventh string.
[0181] The implementation process of determining or updating the first string will be described in detail below. Figures 5 to 7 The implementation process of determining or updating the first string will be described in detail below.
[0182] As Figure 5As shown in the figure, assume that there are four tags in a time slot in an inventory round. The random number RNX replied by the four tags is 8 bits long. Tag 0 replied with RNX of 01010111, Tag 1 replied with RNX of 01011011, Tag 2 replied with RNX of 01101011, and Tag 3 replied with RNX of 0111 1011. Then, the result of decoding the received RNX by the reader is 01? ? ? ? 11. The "?" indicates a bit that the reader cannot decode, that is, a collision bit.
[0183] by Figure 5 Taking the level waveforms of 0 and 1 used in as an example, the first waveforms corresponding to the first and last four bits each have a unique falling edge, but the positions of the falling edges of the first waveforms corresponding to the bits of all 0 and all 1 are different. Therefore, if the first waveform is obtained by superimposing the level waveforms of all 0 or all 1, the falling edge of the first waveform can still maintain its uniqueness, and the reader can correctly decode it; if the first waveform is obtained by superimposing the level waveforms of 0 and 1, the first waveform will have a second falling edge. At this time, the reader cannot correctly decode it, but the reader can determine the quantitative relationship between the 0-level waveform and the 1-level waveform in the collision bit based on whether the second falling edge is closer to the high level or the low level (that is, the first waveform is closer to the 0-level waveform or the 1-level waveform); the reader can determine the first word string based on the bit sequence before the first bit that the reader cannot decode, and can also update the first word string based on the quantitative relationship between the 0-level waveform and the 1-level waveform in the collision bit.
[0184] Figure 6 An example diagram showing the use of a dynamically balanced tree to resolve RNX collisions. Figure 6 In the example, the third string is 01, and the updated first strings include: 010, 011, 01010, 01011, 0110, and 0111. For ease of understanding, Table 3 shows the reader and tag behaviors, and it is important to note the changes in the stack of the first string.
[0185] Table 3
[0186]
[0187]
[0188] In the case of using a dynamically balanced tree or a dynamically unbalanced tree to resolve RNX collisions, such as Figure 7As shown, there are three cases for the number relationship between the 0-level waveform and the 1-level waveform in the collision bit. Case A: the number of 0-level waveforms and the number of 1-level waveforms in the collision bit are close or the same, indicating that the second falling edge in the first waveform is located at the middle position of the high level and the low level. Case B: the number of 0-level waveforms in the collision bit is less than the number of 1-level waveforms, indicating that the second falling edge is closer to the position of the high level. Case C: the number of 0-level waveforms in the collision bit is greater than the number of 1-level waveforms, indicating that the second falling edge is closer to the position of the low level.
[0189] When the second falling edge in the first waveform is located at the middle position of the high level and the low level, it indicates that the binary tree is a dynamic balanced tree, and the first string can include Prefix+0 and / or Prefix+1, and Prefix+0 and Prefix+1 are the fourth string and the fifth string respectively, and Prefix represents the third string or the first string or the updated first string.
[0190] When the second falling edge is closer to the position of the high level, it indicates that the binary tree is a dynamic unbalanced tree, and the first string can include one or more of the following: Prefix+0, Prefix+10, and Prefix+11, and Prefix+10 and Prefix+11 are the sixth string and the seventh string respectively.
[0191] When the second falling edge is closer to the position of the low level, it indicates that the binary tree is a dynamic unbalanced tree, and the first string can include one or more of the following: Prefix+00, Prefix+01, and Prefix+1.
[0192] It should be noted that for cases B and C, the updated first string has different numbers of 0-starting and 1-starting new parts after Prefix, so it is called a dynamic unbalanced tree. Using a dynamic unbalanced tree to solve the collision problem of tags in a tag group can further improve the inventory efficiency.
[0193] Correspondingly, the embodiment of the application also provides a tag inventory method applied to a tag, also known as a tag device, including one or more of an active tag, a passive tag, and a semi-passive tag. As shown in the figure, Figure 8 The method comprises the following steps:
[0194] Step 801: receiving a first command sent by a reader.
[0195] The first command is used for inventorying tags or triggering tags to start random access based on competition or non-competition, and carries one or more of the following:
[0196] a first value, the first value being used to indicate that the tag generates a random number with a length of the first value, the first value representing a total number of tags contained in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate random access, a tag group being obtained by grouping tags in a tag set, one tag set being divided into a plurality of tag groups;
[0197] a second value, the second value representing a maximum number of tags actually participating in a round of inventory, the second value being used to indicate that the tag loads a value of a bit of the second value located at a tail of the random number with the length of the first value into a counter, the first value representing a total number of tags contained in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate random access;
[0198] state information of the tag, the state information representing that the tag is in a selected state or an unselected state.
[0199] Here, in a case where the first command carries the first value, the tag generates a random number RNX with a length of the first value according to the first value carried by the first command, RNX being a positive integer, a value range of RNX being [0, 2 x -1].
[0200] In a case where the first command carries the first value and the second value, the tag generates a random number with a length of the first value according to the first value carried by the first command, and loads a value of a bit of the second value located at a tail of RNX into a counter, for example, loads a low bit content of Q of RNX into the counter.
[0201] In a case where the first command carries the first value, the second value and the state information of the tag, the tag generates a random number with a length of the first value in a case where the state information of the tag is same as the state information of the tag carried in the first command, and loads a value of a bit of the second value located at a tail of RNX into a counter. For example, the tag generates a random number RNX with a length of the first value in a case where a state indicated by Flag of the tag is same as a state indicated by Flag in the first command, and / or a state represented by State of the tag is same as a state represented by State in the first command, and loads a value of a bit of the second value located at a tail of RNX into a counter.
[0202] After the tag generates a random number with a length of the first value according to the first command, and loads a value of a bit of the second value located at a tail of RNX into a counter, the reader can issue a second command. Based on this, in an embodiment, after receiving the first command sent by the reader, the method further comprises:
[0203] receive a second command sent by the reader, the second command representing re-inventorying the tag or re-triggering the tag to start contention-based or non-contention-based random access;
[0204] in a case where the count value of the counter is greater than zero, not responding to the second command or refusing to return a random number to the reader, the random number having a length of the first value; or
[0205] in a case where the count value of the counter is equal to zero, returning a random number to the reader, the random number having a length of the first value.
[0206] Here, the tag decrements the count value in the counter by 1 each time a second command is received; in a case where the count value of the counter is greater than zero, the tag remains silent, not responding to the second command or refusing to return a random number to the reader, the random number having a length of the first value; in a case where the count value of the counter is equal to zero, the tag returns a random number to the reader.
[0207] It should be noted that in a case where the count value in the counter of the tag is zero, the tag can also flip the state information of the tag from the selected state to the unselected state; in a case where the count value in the counter of the tag is zero and a second command is received again, the count value of the counter is modified to the initial value (the maximum value).
[0208] After the tag returns a random number to the reader, in a case where the reader correctly decodes the received random number, the reader sends ACK signaling to the tag that sent the random number, the ACK signaling being used to flip the state information of the tag to the unselected state; in a case where the tag receives the ACK signaling, the tag flips the state information of the tag to the unselected state, for example, flips the state information of the tag from SL to ~SL, SL representing the selected state and ~SL representing the unselected state; in a case where the state information of the tag is flipped to the unselected state, it represents that the tag ends this round of inventorying.
[0209] In a case where the tag flips the state information of the tag to the unselected state, the tag can also send a non-temporary identification code of the tag to the reader; the reader receives the non-temporary identification code sent by the tag, and in a case where decoding of the non-temporary identification code fails, the reader sends negative acknowledgement (NACK) signaling to the tag, the NACK signaling being used to flip the state information of the tag to the selected state, the non-temporary identification code including one or more of the following: EPC, TID, and MAC address of the tag. In a case where the tag receives the NACK signaling sent by the reader, the tag flips the state information of the tag to the selected state, for example, flips the state information of the tag from ~SL to SL, SL representing the selected state and ~SL representing the unselected state; in a case where the state information of the tag is flipped to the selected state, the tag is ready to enter the next round of inventorying.
[0210] Considering that the reader cannot correctly decode the random numbers received when receiving them from multiple tags, the reader needs to solve the problem of random number collisions between multiple tags. Based on this, in one embodiment, after returning the random numbers to the reader, the method further includes:
[0211] Receive a third command sent by the reader; wherein the third command carries a first string, used to instruct the tag to send a random number again when the second string is the same as the first string; the first string represents a binary sequence from a parent node of a tag to a child node of the parent node in a binary tree of the tag group, or represents a binary sequence extracted from a temporary identification code, a non-temporary identification code, or a MAC address of the tag; the second string represents a string extracted from the random number, and the number of bits in the second string is the same as that of the first string;
[0212] If the second character string is different from the first character string, do not respond to the third command or refuse to return a random number to the reader; or
[0213] When the second character string is identical to the first character string, a random number is returned to the reader / writer again.
[0214] Here, the tag receives the third command sent by the reader, and according to the number of bits of the first string carried by the third command, takes out the second string from the random number generated by the tag in a set manner, and the number of bits of the second string is the same as the number of bits of the first string; compares the first string and the second string to obtain a comparison result; if the comparison result indicates that the second string is different from the first string, does not respond to the third command or refuses to return the random number to the reader again; if the comparison result indicates that the second string is the same as the first string, returns a random number with a length of the first value to the reader again.
[0215] It should be noted that the tag can receive one or more third commands sent by the reader, and different third commands may carry different first character strings.
[0216] The present application is described in further detail below with reference to application examples.
[0217] like Figure 9 As shown, the tag inventory method includes:
[0218] Step 901: The reader sends a Select command, which is used to determine a tag set.
[0219] Here, the reader sends a Select command to select the tags to be inventoried and obtain a tag set. The tag set consists of all the tags to be inventoried and can be a TagGroup. The format of the Select command is shown in Table 1 above.
[0220] It should be noted that step 901 can also be understood as a conflict manufacturing stage.
[0221] Step 902: The reader determines a third value EstTagNum, sets Q = log2(EstTagNum) - 1, and issues a first command to start a round of inventory.
[0222] Here, the reader determines a third value, and determines a second value Q according to the third value and a first parameter, that is, the value of the first parameter is 1; the reader also determines a first value X, generates a first command according to the first value X and the second value Q, and issues the first command to the tags in the tag group. The third value EstTagNum represents the number of tags expected to participate in a round of inventory, and can also be understood as the total number of tags contained in the tag set. One tag group corresponds to one binary tree, and the number of parent nodes of the tags in the binary tree is 2, that is, the binary tree is a binary tree, so the value of the first parameter is 1. The binary tree can be a dynamic balanced binary tree or a dynamic unbalanced binary tree. The first value represents the total number of tags contained in the tag group, the maximum number of tags that can be inventoried in a single round, or the maximum number of tags allowed to initiate random access; the second value represents the maximum number of tags actually participating in a round of inventory; in the case where the first value represents the maximum number of tags that can be inventoried in a single round, or the maximum number of tags allowed to initiate random access, the first value is greater than or equal to the second value. The third value represents the number of tags expected to participate in a round of inventory, and the first parameter represents a collision degree factor, a contention factor, or a contention backoff factor.
[0223] The first command carries one or more of the following:
[0224] The first value is used to instruct the tag to generate a random number with a length of the first value;
[0225] The second value is used to instruct the tag to load the value of the second value of the bit at the tail of the random number with the length of the first value into the counter;
[0226] The state information of the tag, which represents that the tag is in a selected state or an unselected state.
[0227] The first command is a Query command, and the format of the Query command is shown in Table 2 above. The first value is less than or equal to a first threshold; and / or, the second value is less than or equal to a second threshold. The first threshold and the second threshold can be 16.
[0228] Step 903: Each tag in the tag group generates a random number RNX according to the first command, and loads the last Q bits in the random number into the counter.
[0229] Here, the tag receives the first command, and in the case that the state information of the tag is the same as the state information of the tag carried in the first command, a random number RNX with a first value is generated, and the value of the second value of the bit at the tail of RNX is loaded into the counter, that is, the last Q bits of the random number are loaded into the counter, and the value range of RNX is [0, 2 x -1]. For example, in the case that the state indicated by the Flag of the tag is the same as the state indicated by the Flag in the first command, and / or the state characterized by the State of the tag is the same as the state characterized by the State in the first command, a random number RNX with a first value is generated, and the value of the last Q bits of RNX is loaded into the counter.
[0230] Step 904: The reader sets N = 2 Q -1, the reader generates a second command, and the number of times that the reader issues the second command is M, and at this time M = 0.
[0231] Here, the second command is a QueryRep command, and the second command characterizes that the tag is inventoried again or triggered to start random access based on contention or non-contention again. The number of times that the reader issues the second command is less than or equal to a fourth value N, N = 2 Q -1.
[0232] Step 905: The reader sends the second command (QueryRep command) to the tags in the tag group, M is incremented by 1, and the count value of the counter of the tag is decremented by 1.
[0233] Here, the reader increments M by 1 every time the second command is sent.
[0234] Step 906: The reader judges whether M is less than N.
[0235] Here, in the case that M is less than N, steps 906 to 920 are executed. In the case that M is equal to N, the inventorying ends.
[0236] Step 907: The tag receives the second command and decrements the counter.
[0237] Here, the tag decrements the count value of the counter by 1 every time a second command is received.
[0238] Step 908: The tag judges whether the count value of the counter is 0.
[0239] Here, in the case that the count value of the counter is not 0, step 909 is executed; in the case that the count value of the counter is 0, steps 910 to 915 are executed.
[0240] Step 909: In the case that the count value of the counter is not 0, the tag is silent.
[0241] Here, the tag silence means that the tag does not respond to the second command or refuses to return a random number to the reader, and the length of the random number is the first value.
[0242] Step 910: In the case that the count value of the counter is 0, the tag sends a random number RNX to the reader.
[0243] The length of the random number RNX is the first value.
[0244] Step 911: The reader receives the random number RNX sent by the tag, decodes or decodes the received random number RNX, and judges whether the random number RNX has a collision bit.
[0245] Here, the random number RNX has a collision bit, which means that the reader cannot correctly decode the received random number RNX, and the random number RNX decoding fails, and steps 912 to 915 are executed. The random number RNX does not have a collision bit, which means that the reader correctly decodes the random number RNX, and steps 916 to 920 are executed.
[0246] Step 912: The reader takes the same bit sequence before the highest collision bit, and increases 0 and 1 as Prefix after the bit sequence respectively, and pushes into the stack of the reader.
[0247] Here, for example, as shown in Table 2 and Table 3, after the reader sends the second command, there are 4 tags that send random numbers RNX to the reader, and the random number RNX has 4 collision bits. When the reader first executes step 912, the same bit sequence before the highest collision bit is 01, 0 and 1 can be added as Prefix after 01 respectively, and the Prefix includes 010 and 011, and 010 and 011 are pushed into the stack of the reader. Figure 5 After the reader first sends the third command, there are 2 tags that send random numbers RNX to the reader, and the random number RNX has 1 collision bit. When the reader executes step 912, the same bit sequence before the highest collision bit is 011, 0 and 1 can be added as Prefix after 011 respectively, and the Prefix includes 0110 and 0111, and 0110 and 0111 are pushed into the stack of the reader.
[0248] After the reader sends the third command for the fourth time, there are 2 tags that send random numbers RNX to the reader, and the random number RNX has 2 collision bits. When the reader executes step 912, the same bit sequence before the highest collision bit is 0101, 0 and 1 can be added as Prefix after 0101 respectively, and the Prefix includes 01010 and 01011, and 01010 and 01011 are pushed into the stack of the reader.
[0249]
[0250] It should be noted that, in the case of the binary tree corresponding to the tag group being a dynamic balanced binary tree, the reader generates the Prefix according to step 912. In the case of the binary tree corresponding to the tag group being a dynamic unbalanced binary tree, the level waveform corresponding to the value of each bit in the received random number RNX is superimposed according to the bit, to obtain a first waveform corresponding to each bit, and the Prefix is determined according to the level change characteristics of the first waveform, and the Prefix is pushed into the stack of the reader. For example, 0, 10 and 11 are added after the same bit sequence before the highest collision bit as the Prefix.
[0251] Step 913: The reader pops the Prefix at the bottom of the stack, and the reader sends a third command, and the tag performs prefix matching between the Prefix in the third command and RNX.
[0252] Here, the third command is a Request command, and the first string is carried in the third command, and the first string is the Prefix popped from the bottom of the stack by the reader; in the case that the tag receives the third command, the second string with the same number of bits is taken out from the random number RNX generated by the tag according to the number of bits of the first string, for example, the second string with the same number of bits is taken out from the random number RNX generated by the tag in the order from the high bit to the low bit; the Prefix carried in the third command is prefix matched with the second string.
[0253] As shown in Table 3, the Prefix carried in the third command is 011 when the reader sends the third command for the first time; the Prefix carried in the third command is 0111 when the reader sends the third command for the second time; the Prefix carried in the third command is 0110 when the reader sends the third command for the third time; the Prefix carried in the third command is 010 when the reader sends the third command for the fourth time; the Prefix carried in the third command is 01010 when the reader sends the third command for the fifth time; the Prefix carried in the third command is 01011 when the reader sends the third command for the sixth time.
[0254] Step 914: The tag determines whether the second string matches the Prefix.
[0255] Here, in the case that the second string does not match the Prefix, step 915 is performed; in the case that the second string matches the Prefix, step 910 is performed to send the random number again.
[0256] Step 915: The tag is silent.
[0257] Here, the tag silence means that the tag does not respond to the third command and does not send the random number to the reader again.
[0258] Step 916: In the case that the random number has no collision bit, the reader correctly decodes the random number, and the reader sends ACK signaling to the tag sending the random number, and the ACK signaling is used to flip the state information of the tag to the unselected state.
[0259] Here, as shown in Table 3, if the reader carries the Prefix of 011 in the third command when performing the step 913 for the second time, since the reader only receives the random number sent by the tag 3, the reader can correctly decode the random number RNX, and the random number RNX has no collision bit, and the steps 916 to 920 are performed.
[0260] Step 917: The tag receives the ACK signaling sent by the reader, flips the state information of the tag from SL to ~SL, and sends a non-temporary identification code to the reader.
[0261] Here, SL represents the selected state, ~SL represents the unselected state, and the non-temporary identification code can be an EPC.
[0262] Step 918: The reader receives the non-temporary identification code sent by the tag, decodes the non-temporary identification code, and judges whether the non-temporary identification code has a collision bit.
[0263] Here, the non-temporary identification code has a collision bit, indicating that the decoding of the non-temporary identification code fails, and the step 920 is performed; the non-temporary identification code has no collision bit, indicating that the non-temporary identification code is correctly decoded, and the step 919 is performed.
[0264] Step 919: The reader sends NACK signaling to the tag sending the non-temporary identification code, the tag receives the NACK signaling, flips the state information of the tag from ~SL to SL, and waits for the next round of inventory.
[0265] Step 920: The reader judges whether the stack of the reader is empty.
[0266] Here, in the case that the stack of the reader is empty, the step 905 is performed; in the case that the stack of the reader is not empty, the step 913 is performed.
[0267] It should be noted that, as shown in Figure 10 , the inventory efficiency of the inventory method of the embodiment of the present application can reach 60% or 63%. Among them, when the tag group is inventoried based on the dynamic balanced tree, the inventory efficiency can reach 60%; when the tag group is inventoried based on the dynamic unbalanced tree, the inventory efficiency can reach 63%. As shown in Figure 11 and Figure 12 , the number of time slots used by the embodiment of the present application and the number of commands issued by the reader are also lower than those of the existing scheme, and the signaling overhead can be saved.
[0268] To implement the method on the reader side according to the embodiments of the present application, the embodiments of the present application further provide a tag inventory device, which is arranged on a reader, as shown in Figure 13 The device comprises:
[0269] a processing unit 1301 configured to perform a first operation on a tag group; wherein
[0270] The tag group is obtained by grouping tags in a tag set, and one tag set is divided into multiple tag groups; and the first operation represents inventorying tags or triggering tags to start random access based on contention or non-contention.
[0271] In an embodiment, the processing unit 1301 is specifically configured to:
[0272] perform the first operation on the tag group according to a first value and / or a second value; wherein
[0273] The first value represents the total number of tags contained in the tag group, the maximum number of tags that can be inventoried in a single round, or the maximum number of tags allowed to initiate random access; and the second value represents the maximum number of tags actually participating in a round of inventorying.
[0274] In an embodiment, the device further comprises:
[0275] a first determining unit configured to determine or adjust the second value according to a third value and / or a first parameter; wherein
[0276] The third value represents the number of tags expected to participate in a round of inventorying, and the first parameter represents a collision degree factor, a contention factor, or a contention backoff factor.
[0277] In an embodiment, the first value is less than or equal to a first threshold; and / or, the second value is less than or equal to a second threshold.
[0278] In an embodiment, the value of the first parameter is determined according to the number of parent nodes of tags in a binary tree of the tag group.
[0279] In an embodiment, the processing unit 1301 is specifically configured to:
[0280] send a first command to the tags in the tag group; the first command is used for inventorying tags or triggering tags to start random access based on contention or non-contention, and carries one or more of the following:
[0281] a first value, which is used to instruct the tags to generate a random number with a length of the first value;
[0282] a second value, which is used to instruct the tags to load the value of the second value of the bit at the tail of the random number with the length of the first value into a counter;
[0283] state information of the tag, the state information representing that the tag is in a selected state or an unselected state.
[0284] In an embodiment, the apparatus further comprises:
[0285] a first sending unit, configured to send a second command to the tags in the tag group, the second command representing that the tags are required to restock or trigger the tags to start contention-based or non-contention-based random access again;
[0286] a second receiving unit, configured to receive a random number returned by the tags in the tag group, the length of the random number being the first number.
[0287] In an embodiment, the number of times of sending the second command to one tag group is less than or equal to a fourth number, the fourth number representing 2 Q -1, Q represents the second number.
[0288] In an embodiment, the apparatus further comprises one or more of the following:
[0289] a second sending unit, configured to send ACK signaling to the tag sending the random number in the case of correct decoding of the random number, the ACK signaling being used to flip the state information of the tag to the unselected state;
[0290] a third receiving unit, configured to receive a non-temporary identification code sent by the tag, the non-temporary identification code being sent in the case of receiving the ACK signaling;
[0291] a third sending unit, configured to send NACK signaling to the tag sending the non-temporary identification code in the case of decoding failure of the non-temporary identification code, the NACK signaling being used to flip the state information of the tag to the selected state.
[0292] In an embodiment, the apparatus further comprises:
[0293] a fourth sending unit, configured to send a third command to the tags in the tag group in the case of decoding failure of the random number; wherein,
[0294] the third command carries a first string; the first string represents a binary sequence from the parent node of the tag to the child node of the parent node in the binary tree of the tag group, or represents a binary sequence taken from the temporary identification code or the non-temporary identification code or the MAC address of the tag; the third command is used to instruct the tag to send the random number again in the case that a second string is identical to the first string; the second string represents a string taken from the random number, and the number of bits of the second string is identical to the number of bits of the first string.
[0295] In an embodiment, the apparatus further comprises:
[0296] The second determining unit is configured to determine or update the first string.
[0297] In an embodiment, the second determining unit is specifically configured to determine or update the first string according to a level change characteristic of the first waveform, the first waveform being obtained according to the received random number.
[0298] In an embodiment, the first string comprises one or more of the following:
[0299] The third string represents a bit sequence before a first bit that cannot be decoded by the reader-writer;
[0300] The fourth string is obtained by inserting a first binary number after the first string or the third string, the third string representing a bit sequence before a first bit that cannot be decoded by the reader-writer;
[0301] The fifth string is obtained by inserting a second binary number after the first string or the third string, the third string representing a bit sequence before a first bit that cannot be decoded by the reader-writer;
[0302] The sixth string is obtained by inserting a second binary number and a first binary number after the first string or the third string, the third string representing a bit sequence before a first bit that cannot be decoded by the reader-writer;
[0303] The seventh string is obtained by inserting two second binary numbers after the first string or the third string, the third string representing a bit sequence before a first bit that cannot be decoded by the reader-writer.
[0304] In actual application, the processing unit 1301, the first sending unit, the second receiving unit, the second sending unit, the third sending unit, the third receiving unit, and the fourth sending unit can be implemented by a processor in combination with a communication interface in a tag inventory device, and the first determining unit and the second determining unit can be implemented by the processor in the tag inventory device.
[0305] To implement the method on the tag side in the embodiments of the present application, the embodiments of the present application further provide a tag inventory device arranged on a tag, as shown in the following Figure 14 The device comprises:
[0306] The first receiving unit 1401 is configured to receive a first command sent by a reader-writer; the first command is used for inventorying a tag or triggering the tag to start random access based on competition or non-competition, and carries one or more of the following:
[0307] a first value, the first value being used to indicate that the tag generates a random number with a length of the first value, the first value representing a total number of tags contained in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate random access, a tag group being obtained by grouping tags in a tag set, one tag set being divided into a plurality of tag groups;
[0308] a second value, the second value representing a maximum number of tags actually participating in a round of inventory, the second value being used to indicate that the tag loads a value of a bit of the second value located at a tail of the random number with the length of the first value into a counter, the first value representing a total number of tags contained in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate random access;
[0309] state information of the tag, the state information representing that the tag is in a selected state or an unselected state.
[0310] In an embodiment, the apparatus further includes:
[0311] a fourth receiving unit, configured to receive a second command sent by the reader, the second command representing that the tag is required to inventory again or trigger the tag to start contention-based or non-contention-based random access again;
[0312] a first responding unit, configured to, in a case where the count value of the counter is greater than zero, not respond to the second command or refuse to return a random number with the length of the first value to the reader; or
[0313] a second responding unit, configured to, in a case where the count value of the counter is equal to zero, return a random number with the length of the first value to the reader.
[0314] In an embodiment, the apparatus further includes:
[0315] a fifth receiving unit, configured to receive a third command sent by the reader; wherein the third command carries a first string, the first string being used to indicate that the tag is required to send a random number again in a case where a second string is the same as the first string, the first string representing a binary sequence from a parent node to a child node of the parent node of the tag in a binary tree of a tag group, or representing a binary sequence taken from a temporary identification code or a non-temporary identification code or a MAC address of the tag, the second string representing a string taken from the random number, and the second string having a same number of bits as the first string;
[0316] a third responding unit, configured to, in a case where the second string is different from the first string, not respond to the third command or refuse to return a random number to the reader; or
[0317] The fourth response unit is configured to return the random number to the reader again in the case that the second string is the same as the first string.
[0318] In actual application, the first receiving unit 1401, the fourth receiving unit, the fifth receiving unit, the first response unit, the second response unit, the third response unit and the fourth response unit can be realized by a processor in the tag inventory device in combination with a communication interface.
[0319] It should be noted that: the above embodiment provides the tag inventory device, and only the division of the above program modules is used for example to illustrate that in actual application, the above processing can be completed by different program modules according to needs, that is, the internal structure of the device is divided into different program modules to complete all or part of the processing described above. In addition, the tag inventory device and the tag inventory method provided in the above embodiment belong to the same concept, and the specific implementation process is detailed in the method embodiment, which will not be repeated here.
[0320] Based on the hardware implementation of the above program modules, and in order to realize the method on the reader side of the embodiment of the application, the embodiment of the application further provides a reader, as shown in the following table: Figure 15 As shown in the following table, the reader 1500 includes:
[0321] The first communication interface 1501 can interact with other network nodes.
[0322] The first processor 1502 is connected with the first communication interface 1501 to realize information interaction with other network nodes, and is used to run a computer program to execute the method provided by one or more technical solutions of the above reader side. The computer program is stored on the first memory 1503.
[0323] Specifically, the first processor 1502 is configured to perform a first operation on a tag group; wherein,
[0324] The tag group is obtained by grouping tags in a tag set, and one tag set is divided into multiple tag groups; the first operation represents inventorying the tags, or triggering the tags to start random access based on competition or non-competition.
[0325] In an embodiment, the first processor 1502 is specifically configured to:
[0326] According to the first value and / or the second value, the first operation is performed on the tag group; wherein,
[0327] The first value represents the total number of tags contained in the tag group, the maximum number of tags that can be inventoried in a single round, or the maximum number of tags allowed to initiate random access; and the second value represents the maximum number of tags actually participating in a round of inventory.
[0328] In an embodiment, the first processor 1502 is further configured to determine or adjust the second value according to a third value and / or a first parameter; wherein,
[0329] The third value represents an expected number of tags participating in a round of inventory, and the first parameter represents a collision degree factor, a contention factor, or a contention backoff factor.
[0330] In an embodiment, the first value is less than or equal to a first threshold; and / or, the second value is less than or equal to a second threshold.
[0331] In an embodiment, a value of the first parameter is determined according to a number of parent nodes of tags in a binary tree of a tag group.
[0332] In an embodiment, the first communication interface 1501 is configured to send a first command to tags in a tag group; the first command is used to inventory the tags or trigger the tags to start contention-based or contention-free random access, and carries one or more of the following:
[0333] The first value, which is used to instruct the tags to generate a random number with a length of the first value;
[0334] The second value, which is used to instruct the tags to load a value of a bit at a position of the second value from a tail of the random number with the length of the first value into a counter;
[0335] State information of the tags, which represents that the tags are in a selected state or an unselected state.
[0336] In an embodiment, the first communication interface 1501 is further configured to send a second command to the tags in the tag group, and to receive a random number returned by the tags in the tag group; the second command represents inventorying the tags again or triggering the tags to start contention-based or contention-free random access again; and the length of the random number is the first value.
[0337] In an embodiment, the number of times of sending the second command to one tag group is less than or equal to a fourth value, and the fourth value represents 2 Q -1, and Q represents the second value.
[0338] In an embodiment, the first communication interface 1501 is further configured to perform one or more of the following:
[0339] In a case of correctly decoding the random number, sending ACK signaling to the tag that sends the random number, and the ACK signaling is used to flip the state information of the tag to the unselected state;
[0340] Receive a non-temporary identification code sent by a tag, where the non-temporary identification code is sent when an ACK signaling is received;
[0341] In the case that the decoding of the non-temporary identification code fails, a NACK signaling is sent to the tag that sent the non-temporary identification code. The NACK signaling is used to flip the state information of the tag to the selected state.
[0342] In one embodiment, the first communication interface 1501 is further configured to send a third command to the tags in the tag group when the random number decoding fails; wherein,
[0343] The third command carries the first string; the first string represents a binary sequence from the parent node of the tag to the child node of the parent node in the binary tree of the tag group, or represents a binary sequence taken from the temporary identification code or non-temporary identification code or MAC address of the tag; the third command is used to instruct the tag to send the random number again when the second string is the same as the first string; the second string represents the string taken from the random number, and the number of bits of the second string is the same as the number of bits of the first string.
[0344] In one embodiment, the first processor 1502 is further configured to determine or update the first string.
[0345] In one embodiment, the first processor 1502 is specifically configured to determine or update the first string according to a level variation characteristic of a first waveform, where the first waveform is obtained according to a received random number.
[0346] In one embodiment, the first string includes one or more of the following:
[0347] A third word string, the third word string representing a bit sequence before the first bit that cannot be decoded by the reader;
[0348] A fourth word string is obtained by inserting a first binary number after the first word string or the third word string, and the third word string represents a bit sequence before the first bit position that cannot be decoded by the reader;
[0349] A fifth word string, the fifth word string is obtained by inserting a second binary number after the first word string or the third word string, and the third word string represents a bit sequence before the first bit position that cannot be decoded by the reader;
[0350] A sixth word string is obtained by inserting a second binary number and a first binary number after the first word string or the third word string, and the third word string represents a bit sequence before the first bit position that cannot be decoded by the reader;
[0351] The seventh word string is obtained by inserting two second binary numbers after the first word string or the third word string, and the third word string represents the bit sequence before the first bit position that cannot be decoded by the reader.
[0352] It should be noted that the specific processing procedures of the first processor 1502 and the first communication interface 1501 can be understood with reference to the above method.
[0353] Of course, in actual application, various components in the reader 1500 are coupled together through the bus system 1504. It can be understood that the bus system 1504 is used to realize the connection and communication between the components. In addition to the data bus, the bus system 1504 also includes a power bus, a control bus and a status signal bus. However, for the purpose of clear illustration, all kinds of buses are marked as the bus system 1504 in the figure. Figure 15
[0354] The first memory 1503 in the embodiment of the present application is used to store various types of data to support the operation of the reader 1500. Examples of these data include any computer programs used to operate on the reader 1500.
[0355] The method disclosed in the above embodiment of the present application can be applied to or implemented by the first processor 1502. The first processor 1502 can be an integrated circuit chip with signal processing capability. In the implementation process, each step of the above method can be completed by the integrated logic circuit of hardware or the instruction in the form of software in the first processor 1502. The first processor 1502 mentioned above can be a general-purpose processor, a digital signal processor (DSP), or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc. The first processor 1502 can implement or execute the methods, steps and logic block diagrams disclosed in the embodiments of the present application. The general-purpose processor can be a microprocessor or any conventional processor, etc. In combination with the steps of the method disclosed in the embodiments of the present application, the hardware decoding processor can be directly embodied to execute the above steps, or the combination of hardware and software modules in the decoding processor can be executed. The software module can be located in the storage medium, which is located in the first memory 1503, and the first processor 1502 reads the information in the first memory 1503 and combines the hardware to complete the steps of the above method.
[0356] In an example embodiment, the reader 1500 can be implemented by one or more Application Specific Integrated Circuits (ASICs), DSPs, Programmable Logic Devices (PLDs), Complex Programmable Logic Devices (CPLDs), Field-Programmable Gate Arrays (FPGAs), general-purpose processors, controllers, microcontrollers (MCUs), microprocessors, or other electronic elements for executing the foregoing methods.
[0357] Based on the hardware implementation of the foregoing program modules, and in order to implement the tag-side method of the embodiments of the present application, the embodiments of the present application further provide a tag. As shown in the figure, the tag 1600 includes: Figure 16
[0358] A second communication interface 1601 capable of information interaction with other network nodes;
[0359] A second processor 1602 connected with the second communication interface 1601 to realize information interaction with other network nodes, for running a computer program to execute the method provided by one or more technical solutions of the tag side. And the computer program is stored on the second memory 1603.
[0360] Specifically, the second communication interface 1601 is configured to receive a first command sent by the reader; the first command is used to inventory the tag or trigger the tag to start contention-based or non-contention-based random access, and carries one or more of the following:
[0361] A first value, the first value is used to instruct the tag to generate a random number with a length of the first value, and the first value represents the total number of tags contained in a tag group, the maximum number of tags that can be inventoried in a single round, or the maximum number of tags allowed to initiate random access, the tag group is obtained by grouping the tags in a tag set, and one tag set is divided into multiple tag groups;
[0362] A second value, the second value represents the maximum number of tags actually participating in a round of inventory, and the second value is used to instruct the tag to load the value of the second value of the bit position at the tail of the random number with the length of the first value into a counter; and the first value represents the total number of tags contained in a tag group, the maximum number of tags that can be inventoried in a single round, or the maximum number of tags allowed to initiate random access;
[0363] State information of the tag, the state information representing that the tag is in a selected state or an unselected state.
[0364] In an embodiment, the second communication interface 1601 is further configured to:
[0365] receive a second command sent by the reader, the second command representing that the tag is required to inventory again or trigger the tag to start contention-based or contention-free random access again;
[0366] in a case where the count value of the counter is greater than zero, not responding to the second command or refusing to return a random number to the reader, the random number having a length of the first number value; or
[0367] in a case where the count value of the counter is equal to zero, returning a random number to the reader, the random number having a length of the first number value.
[0368] In an embodiment, the second communication interface 1601 is further configured to:
[0369] receive a third command sent by the reader; wherein the third command carries a first string, used to instruct the tag to send a random number again in a case where a second string is the same as the first string; the first string representing a binary sequence from a parent node of the tag to a child node of the parent node in a binary tree of a tag group, or representing a binary sequence taken from a temporary identification code or a non-temporary identification code or a MAC address of the tag; the second string representing a string taken from the random number, and the second string having a same number of bits as the first string;
[0370] in a case where the second string is different from the first string, not responding to the third command or refusing to return a random number to the reader; or
[0371] in a case where the second string is the same as the first string, returning a random number to the reader again.
[0372] It should be noted that the specific processing procedures of the second processor 1602 and the second communication interface 1601 can be understood with reference to the above method.
[0373] Of course, in actual applications, various components in the tag 1600 are coupled together through the bus system 1604. It can be understood that the bus system 1604 is used to realize the connection and communication between the components. In addition to including a data bus, the bus system 1604 also includes a power bus, a control bus and a state signal bus. However, for the purpose of clear illustration, all kinds of buses are marked as the bus system 1604 in the Figure 16
[0374] The second memory 1603 in the embodiment of the present application is used to store various types of data to support the operation of the tag 1600. Examples of such data include: any computer program used to operate on the tag 1600.
[0375] The methods disclosed in the above embodiments of the present application can be applied to or implemented by the second processor 1602. The second processor 1602 may be an integrated circuit chip with signal processing capabilities. During implementation, each step of the above method can be completed by hardware integrated logic circuits or software instructions in the second processor 1602. The above second processor 1602 may be a general-purpose processor, a DSP, or other programmable logic device, a discrete gate or transistor logic device, a discrete hardware component, etc. The second processor 1602 can implement or execute the various methods, steps, and logic block diagrams disclosed in the embodiments of the present application. A general-purpose processor may be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of the present application can be directly implemented and executed by a hardware decoding processor, or by a combination of hardware and software modules in the decoding processor. The software module may be located in a storage medium located in the second memory 1603. The second processor 1602 reads the information in the second memory 1603 and, in conjunction with its hardware, completes the steps of the above method.
[0376] In an exemplary embodiment, the tag 1600 may be implemented by one or more ASICs, DSPs, PLDs, CPLDs, FPGAs, general-purpose processors, controllers, MCUs, Microprocessors, or other electronic components to perform the aforementioned methods.
[0377] It can be understood that the memory (the first memory 1503 and the second memory 1603) of the embodiments of the present application can be a volatile memory or a non-volatile memory, and can also include both volatile and non-volatile memories. The non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a ferromagnetic random access memory (FRAM), a flash memory, a magnetic surface memory, an optical disc, or a compact disc read-only memory (CD-ROM). The magnetic surface memory can be a disk memory or a tape memory. The volatile memory can be a random access memory (RAM) used as an external cache. By way of example but not limitation, many forms of RAM can be used, such as static random access memory (SRAM), synchronous static random access memory (SSRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), enhanced synchronous dynamic random access memory (ESDRAM), sync link dynamic random access memory (SLDRAM), and direct rambus random access memory (DRRAM).The memory described in the embodiments of the present application is intended to include, but not limited to, these and any other suitable types of memory.
[0378] In the example embodiments, the embodiments of the present application also provide a storage medium, specifically a computer readable storage medium, for example, including a first memory 1503 storing a computer program, which can be executed by the first processor 1502 of the reader-writer 1500 to complete the steps of the aforementioned reader-writer side method. For another example, including a second memory 1603 storing a computer program, which can be executed by the second processor 1602 of the tag 1600 to complete the steps of the aforementioned tag side method. The computer readable storage medium can be FRAM, ROM, PROM, EPROM, EEPROM, Flash Memory, magnetic surface memory, optical disc, or CD-ROM, etc.
[0379] For example, the embodiments of the present application also provide a computer program product, including a computer program, which can be executed by the first processor 1502 of the reader-writer 1500 to complete the steps of the aforementioned reader-writer side method. The computer program can be executed by the second processor 1602 of the tag 1600 to complete the steps of the aforementioned tag side method.
[0380] It should be noted that "first", "second", etc. are used to distinguish similar objects, and do not necessarily describe a specific order or sequence. Multiple items can be two or more items, and multiple can be two or more.
[0381] In addition, the technical solutions described in the embodiments of the present application can be combined arbitrarily without conflict.
[0382] The above is only a preferred embodiment of the present application, and is not intended to limit the protection scope of the present application.
Claims
1. A method of inventorying a label roll, the method comprising: The method is applied to a reader / writer, and comprises the following steps: performing a first operation on a tag group; wherein The tag group is obtained by grouping tags in a tag set, and one tag set is divided into multiple tag groups; and the first operation represents inventorying tags or triggering tags to start contention-based or contention-free random access.
2. The method of claim 1, wherein, The first operation on the tag group comprises the following steps: performing the first operation on the tag group according to a first value and / or a second value; wherein The first value represents the total number of tags contained in the tag group, the maximum number of tags that can be inventoried in a single round, or the maximum number of tags allowed to initiate random access; and the second value represents the maximum number of tags actually participating in a round of inventorying.
3. The method of claim 2, wherein, The method further comprises the following steps: determining or adjusting the second value according to a third value and / or a first parameter; wherein The third value represents the number of tags expected to participate in a round of inventorying, and the first parameter represents a collision degree factor, a contention factor, or a contention backoff factor.
4. The method of claim 2, wherein, The first value is less than or equal to a first threshold; and / or, the second value is less than or equal to a second threshold.
5. The method of claim 3, wherein, The value of the first parameter is determined according to the number of parent nodes of tags in a binary tree of the tag group.
6. The method according to any one of claims 2 to 5, characterized in that, The first operation on the tag group comprises the following steps: sending a first command to the tags in the tag group; the first command is used to inventory the tags or trigger the tags to start contention-based or contention-free random access, and carries one or more of the following: The first value is used to instruct the tags to generate a random number with a length of the first value; The second value is used to instruct the tags to load the value of the second value of the bit position at the tail of the random number with the length of the first value into a counter; State information of the tags, which represents that the tags are in a selected state or an unselected state.
7. The method of claim 6, wherein, After the first command is sent to the tags in the tag group, the method further comprises the following steps: sending a second command to the tags in the tag group, and the second command represents inventorying the tags again or triggering the tags to start contention-based or contention-free random access again; receiving a random number returned by the tags in the tag group, and the length of the random number is the first value.
8. The method of claim 7, wherein, the number of times a second command is sent to a tag group is less than or equal to a fourth value, the fourth value representing 2 Q -1, Q represents the second value.
9. The method according to claim 7 or 8, characterized in that, The method further comprises one or more of the following: in the case of correct decoding of the random number, sending an acknowledgement (ACK) signaling to the tag that sends the random number, and the ACK signaling is used to flip the state information of the tag to the unselected state; receiving a non-temporary identification code sent by the tag; the non-temporary identification code is sent in the case of receiving the ACK signaling; in the case of decoding failure of the non-temporary identification code, sending a negative acknowledgement (NACK) signaling to the tag that sends the non-temporary identification code, and the NACK signaling is used to flip the state information of the tag to the selected state.
10. The method according to claim 7 or 8, characterized in that, The method further comprises the following steps: in the case of decoding failure of the random number, sending a third command to the tags in the tag group; wherein, The third command carries a first string; the first string represents a binary sequence from a parent node of a tag to a child node of the parent node in a binary tree of a tag group, or represents a binary sequence taken from a temporary identification code or a non-temporary identification code or a medium access control (MAC) address of the tag; the third command is used to instruct the tag to send the random number again if a second string is identical to the first string; the second string represents a string taken from the random number, and the second string has the same number of bits as the first string.
11. The method of claim 10, wherein, The method further comprises: determining or updating the first string.
12. The method of claim 11, wherein, The determining or updating the first string comprises: determining or updating the first string according to a level change characteristic of a first waveform, the first waveform being obtained according to the received random number.
13. The method of claim 12, wherein, The first string comprises one or more of: a third string representing a bit sequence before a first bit that cannot be decoded by the reader-writer; a fourth string obtained by inserting a first binary number after the first string or the third string, the third string representing a bit sequence before a first bit that cannot be decoded by the reader-writer; a fifth string obtained by inserting a second binary number after the first string or the third string, the third string representing a bit sequence before a first bit that cannot be decoded by the reader-writer; a sixth string obtained by inserting a second binary number and a first binary number after the first string or the third string, the third string representing a bit sequence before a first bit that cannot be decoded by the reader-writer; a seventh string obtained by inserting two second binary numbers after the first string or the third string, the third string representing a bit sequence before a first bit that cannot be decoded by the reader-writer.
14. A method of inventorying a label roll, the method comprising: The method applied to a tag comprises: receiving a first command sent by a reader-writer; the first command is used to inventory the tag or trigger the tag to start a contention-based or non-contention-based random access, and carries one or more of: a first value, the first value being used to instruct the tag to generate a random number with a length of the first value, the first value representing a total number of tags included in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate the random access, the tag group being obtained by grouping tags in a tag set, and one tag set being divided into multiple tag groups; a second value, the second value representing a maximum number of tags that actually participate in a round of inventory, and the second value being used to instruct the tag to load a value of a bit at a position of the second value at a tail of the random number with the length of the first value into a counter; the first value represents a total number of tags included in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate the random access; state information of the tag, the state information representing that the tag is in a selected state or an unselected state.
15. The method according to claim 14, characterized in that After the receiving the first command sent by the reader-writer, the method further comprises: receiving a second command sent by the reader-writer, the second command representing inventorying the tag again or triggering the tag to start the contention-based or non-contention-based random access again; In a case where the count value of the counter is greater than zero, not responding to the second command or refusing to return a random number to the reader, the length of the random number being the first value; or In a case where the count value of the counter is equal to zero, returning a random number to the reader, the length of the random number being the first value.
16. The method of claim 15, wherein, After the returning of the random number to the reader, the method further comprises: receiving a third command sent by the reader; wherein the third command carries a first string, which is used to instruct the tag to send a random number again in a case where a second string is identical to the first string; the first string represents a binary sequence from a parent node to a child node of the parent node in a binary tree of a tag group, or represents a binary sequence taken from a temporary identification code or a non-temporary identification code or a MAC address of the tag; the second string represents a string taken from the random number, and the number of bits of the second string is identical to that of the first string; in a case where the second string is different from the first string, not responding to the third command or refusing to return a random number to the reader; or in a case where the second string is identical to the first string, returning a random number to the reader again.
17. A label stock storage device characterized by, comprises: a processing unit, configured to perform a first operation on a tag group; wherein the tag group is obtained by grouping tags in a tag set, and one tag set is divided into a plurality of tag groups; and the first operation represents inventorying the tags or triggering the tags to start random access based on contention or non-contention.
18. A label stock storage device characterized by, comprises: a first receiving unit, configured to receive a first command sent by the reader; the first command is used to inventory the tags or trigger the tags to start random access based on contention or non-contention, and carries one or more of the following: a first value, the first value being used to instruct the tag to generate a random number with a length of the first value, and the first value representing a total number of tags included in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate random access, the tag group being obtained by grouping tags in a tag set, and one tag set being divided into a plurality of tag groups; a second value, the second value representing a maximum number of tags actually participating in a round of inventorying, and the second value being used to instruct the tag to load a value of a bit position of the second value at a tail of the random number with the length of the first value into a counter; and the first value representing a total number of tags included in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate random access. state information of the tag, the state information representing that the tag is in a selected state or an unselected state.
19. A reader / writer characterized by comprising: comprises: a first processor and a first communication interface; wherein the first processor is configured to perform a first operation on a tag group; wherein the tag group is obtained by grouping tags in a tag set, and one tag set is divided into a plurality of tag groups; and the first operation represents inventorying the tags or triggering the tags to start random access based on contention or non-contention.
20. A label characterized by comprises: a second processor and a second communication interface; wherein The second communication interface is configured to receive a first command sent by the reader; the first command is used to inventory the tags or trigger the tags to start contention-based or non-contention-based random access, and carries one or more of the following: a first value, the first value is used to instruct the tags to generate a random number with a length of the first value, and the first value represents a total number of tags in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate random access, the tag group is obtained by grouping tags in a tag set, and one tag set is divided into multiple tag groups; a second value, the second value represents a maximum number of tags that actually participate in a round of inventory, and the second value is used to instruct the tags to load a value of a bit at a position of the second value at a tail of the random number with the length of the first value into a counter; and the first value represents a total number of tags in a tag group, a maximum number of tags that can be inventoried in a single round, or a maximum number of tags allowed to initiate random access. state information of the tags, the state information represents that the tags are in a selected state or an unselected state.
21. A reader / writer characterized by comprising: The first processor and a first memory for storing a computer program capable of running on the first processor, When the first processor runs the computer program, the first processor is configured to perform the steps of the method in any one of claims 1 to 13.
22. A label characterized in that, The second processor and a second memory for storing a computer program capable of running on the second processor, When the second processor runs the computer program, the second processor is configured to perform the steps of the method in any one of claims 14 to 16.
23. A storage medium having a computer program stored thereon, characterized in that: The computer program is executed by the processor to implement the steps of the method in any one of claims 1 to 13, or implement the steps of the method in any one of claims 14 to 16.
24. A computer program product comprising a computer program, characterized in that, The computer program is executed by the processor to implement the steps of the method in any one of claims 1 to 16.