Pipeline encoding provides the best way of increasing encoding throughput and reliability. ItemEncode accomplishes this by distributing the encoding work across multiple encoding devices. This mode is designed to encode a stream of tags, such as a web of tags in a reel to reel system. In a typical pipeline system, there are at least four ItemEncode devices:
To acheive synchronization between the various Encoders, TID Table Mode must be used on the Encoders and final Verifier. Upon receiving a TagOperationReport from the Localizer, the Machine Control Application will need to determine what encoding options need to be performed to that tag and create a TIDTableEntry with the TID from the TagOperationReport and those encoding options. That TIDTableEntry must then be sent to all of the downstream devices.
The role of the Localizer is to provide the TIDs for the tags entering the pipeline in sequential order to the Machine Control Application. To accomplish this, the Localizer should be setup to only interact with a single tag at a time. This is best done by limiting the antenna field and only triggering the device when there is a tag in the field of view. Depending on the rate of tags, this may require GPI triggers to start and stop the device.
Note
The Localizer does not require a Device of Record because Verify Tag Chip Basic is exempt from consuming encoding volume.
| Parameter | Value | Rationale |
|---|---|---|
| device_config | ||
| device_mode | DEVICE_MODE_VERIFY_TAG_CHIP_BASIC | Localizer just needs to provide TID, but will also validate inbound EPC length. |
| operation_mode | OPERATION_MODE_SINGLE | Localizer should stop right after it reads a tag. |
| trigger_config | ||
| start_trigger_config | ||
| enable_gpi_start_trigger | true | Uses GPI Start Trigger for lowest latency start. |
| stop_trigger_config | ||
| enable_gpi_stop_trigger | false | In Single mode, the device will stop after seeing a single tag, so it does not need a GPI stop trigger. |
| gpi_config | ||
| signaling_mode | GPIO_SIGNAL_MODE_COMBINED | Since the device is not using a GPI Stop, it only needs the single GPI for the Start. |
| GPI2_polarity | GPIO_POLARITY_ACTIVE_LOW | GPI2 triggers the Start. This can be High or Low depending on machine preference. |
| gpo_config | ||
| signaling_mode | GPIO_SIGNAL_MODE_SEPARATE | This will use separate GPOs for pass and fail. |
| GPO1_polarity | GPIO_POLARITY_ACTIVE_LOW | GPO1 indicates whether the device is Operating or not. This can be High or Low depending on machine preference. |
| GPO2_polarity | GPIO_POLARITY_ACTIVE_LOW | GPO2 indicates whether the operation passed. This can be High or Low depending on machine preference. |
| GPO3_polarity | GPIO_POLARITY_ACTIVE_LOW | GPO3 indicates whether the operation failed. This can be High or Low depending on machine preference. |
| report_config | ||
| tag_operation_report_config | ||
| enable_tag_operation_reports | true | TagOperationReports are necessary to get the TID of the tag. |
| antennas_config | ||
| antenna_config | ||
| antenna_ID | 1 | Only needs a single antenna. |
| gen2_mode | GEN2_MODE_MAX_THROUGHPUT | To maximize throughput, the fastest mode is used. |
| inventory_search_mode | INVENTORY_SEARCH_MODE_SINGLE_TARGET_A_TO_B | Session 0 will be in the A state for all tags. |
| gen2_session | GEN2_SESSION_0 | Session 0 will be in the A state for all tags. |
| transmit_power | 1200 | Power should be set to the lowest possible value that can still see the tags in the Field of View. |
| tag_population_estimate | 1 | Only one tag should be in the Field of View at any time. |
| serialization_job | ||
| job_id | 1 | |
| job_type | SERIALIZATION_JOB_TYPE_STATIC | All tags should be verified against the same EPC length. |
| EPC_memory | ||
| data | [0000 0000 0000 0000 0000 0000] | This will result in the device checking that the EPC length is 96 bits. |
The role of the Encoder is to encode a configured subset of the overall encoding configuration. These devices will need to be provided with a TIDTableEntry for each tag from the Machine Control Application, allowing the device to interact with tags in a non-sequential order. To distribute the encoding work, each Encoder should be configured with a different OperationResponsibility. There can be some tradeoffs between throughput and reliability made here. To increase throughput, each Encoder should be configured to perform the least amount of encoding operations possible (ie, one 32 bit block of the EPC). To increase reliability, the Encoders should be configured with redundant responsibilities. In the example configuration below, the first Encoder is responsible for the first and second EPC blocks, the second Encoder is responsible for the second and third EPC blocks, and the third Encoder acts as a catch-all for all three blocks.
Note
If sending a LockConfig, the last encoder in the pipeline should always be the only device responsible for it. This prevents downstream tag access issues.
| Parameter | Value | Rationale |
|---|---|---|
| device_config | ||
| device_mode | DEVICE_MODE_ENCODE | This device does encoding work. |
| operation_mode | OPERATION_MODE_CONTINUOUS | Since this device will have TIDTableEntry for all tags, it does not matter what order it sees them in. |
| operation_responsibility | ||
| EPC_memory_mask | [C000] | This device will only write the first two 32 bit blocks. |
| tags_in_view_count | 5 | This should be set to the number of tags in the Field of View. |
| tags_in_pipeline_view_count | 400 | This should be set to ~2x max number of tags between Localizer and Verifier. |
| downstream_pipeline_devices | ||
| hostname | “Encoder2” | This should be the hostname/IP of Encoder 2. It configures Encoder 1 to send operation data to Encoder 2. |
| downstream_pipeline_devices | ||
| hostname | “Encoder3” | This should be the hostname/IP of Encoder 3. It configures Encoder 1 to send operation data to Encoder 3. |
| downstream_pipeline_devices | ||
| hostname | “Verifier” | This should be the hostname/IP of the Verifier. It configures Encoder 1 to send operation data to the Verifier. |
| device_of_record | ||
| hostname | “Verifier” | This should be the hostname/IP of the Verifier. It configures Encoder 1 to request License Authentication from the Verifier. |
| antennas_config | ||
| antenna_config | ||
| antenna_ID | 1 | Only needs a single antenna. |
| gen2_mode | GEN2_MODE_MAX_THROUGHPUT | To maximize throughput, the fastest mode is used. |
| inventory_search_mode | INVENTORY_SEARCH_MODE_SINGLE_TARGET_A_TO_B | Session 1 will be in the A state for all tags. |
| gen2_session | GEN2_SESSION_1 | Session 1 will be in the A state for all tags. |
| transmit_power | 2000 | Power should be set to the lowest possible value that can still see the tags in the Field of View. |
| tag_population_estimate | 5 | This should be set to the number of tags in the Field of View. |
| serialization_job | ||
| job_id | 1 | |
| job_type | SERIALIZATION_JOB_TYPE_TID_TABLE | TID Table Mode is used to keep all Encoders in sync with the operations for a tag. |
| TID_table_size | 400 | This should be set to ~2x max number of tags between Localizer and Verifier. |
| Parameter | Value | Rationale |
|---|---|---|
| device_config | ||
| device_mode | DEVICE_MODE_ENCODE | This device does encoding work. |
| operation_mode | OPERATION_MODE_CONTINUOUS | Since this device will have TIDTableEntry for all tags, it does not matter what order it sees them in. |
| operation_responsibility | ||
| EPC_memory_mask | [6000] | This device will only write the last two 32 bit blocks. |
| tags_in_view_count | 5 | This should be set to the number of tags in the Field of View. |
| tags_in_pipeline_view_count | 400 | This should be set to ~2x max number of tags between Localizer and Verifier. |
| downstream_pipeline_devices | ||
| hostname | “Encoder3” | This should be the hostname/IP of Encoder 3. It configures Encoder 2 to send operation data to Encoder 3. |
| downstream_pipeline_devices | ||
| hostname | “Verifier” | This should be the hostname/IP of the Verifier. It configures Encoder 2 to send operation data to the Verifier. |
| device_of_record | ||
| hostname | “Verifier” | This should be the hostname/IP of the Verifier. It configures Encoder 2 to request License Authentication from the Verifier. |
| antennas_config | ||
| antenna_config | ||
| antenna_ID | 1 | Only needs a single antenna. |
| gen2_mode | GEN2_MODE_MAX_THROUGHPUT | To maximize throughput, the fastest mode is used. |
| inventory_search_mode | INVENTORY_SEARCH_MODE_SINGLE_TARGET_A_TO_B | Session 2 will be in the A state for all tags. |
| gen2_session | GEN2_SESSION_2 | Session 2 will be in the A state for all tags. |
| transmit_power | 2000 | Power should be set to the lowest possible value that can still see the tags in the Field of View. |
| tag_population_estimate | 5 | This should be set to the number of tags in the Field of View. |
| serialization_job | ||
| job_id | 1 | |
| job_type | SERIALIZATION_JOB_TYPE_TID_TABLE | TID Table Mode is used to keep all Encoders in sync with the operations for a tag. |
| TID_table_size | 400 | This should be set to ~2x max number of tags between Localizer and Verifier. |
| Parameter | Value | Rationale |
|---|---|---|
| device_config | ||
| device_mode | DEVICE_MODE_ENCODE | This device does encoding work. |
| operation_mode | OPERATION_MODE_CONTINUOUS | Since this device will have TIDTableEntry for all tags, it does not matter what order it sees them in. |
| operation_responsibility | ||
| EPC_memory_mask | [E000] | This device will only write all three 32 bit blocks. |
| tags_in_view_count | 5 | This should be set to the number of tags in the Field of View. |
| tags_in_pipeline_view_count | 400 | This should be set to ~2x max number of tags between Localizer and Verifier. |
| downstream_pipeline_devices | ||
| hostname | “Verifier” | This should be the hostname/IP of the Verifier. It configures Encoder 3 to send operation data to the Verifier. |
| device_of_record | ||
| hostname | “Verifier” | This should be the hostname/IP of the Verifier. It configures Encoder 3 to request License Authentication from the Verifier. |
| antennas_config | ||
| antenna_config | ||
| antenna_ID | 1 | Only needs a single antenna. |
| gen2_mode | GEN2_MODE_MAX_THROUGHPUT | To maximize throughput, the fastest mode is used. |
| inventory_search_mode | INVENTORY_SEARCH_MODE_SINGLE_TARGET_A_TO_B | Session 3 will be in the A state for all tags. |
| gen2_session | GEN2_SESSION_3 | Session 3 will be in the A state for all tags. |
| transmit_power | 2000 | Power should be set to the lowest possible value that can still see the tags in the Field of View. |
| tag_population_estimate | 5 | This should be set to the number of tags in the Field of View. |
| serialization_job | ||
| job_id | 1 | |
| job_type | SERIALIZATION_JOB_TYPE_TID_TABLE | TID Table Mode is used to keep all Encoders in sync with the operations for a tag. |
| TID_table_size | 400 | This should be set to ~2x max number of tags between Localizer and Verifier. |
The role of the Verifier is to ensure that all encoding operations were completed successfully. These devices will also need to be provided with a TIDTableEntry for each tag from the Machine Control Application. However, unlike the Encoders, it will need to singulate each tag sequentially to make sure no tags are missed. Similar to the Localizer, this will likely require GPI triggers to start and stop the device.
Note
The Verifier does not require a Device Of Record in this example because it is the Device of Record for the system.
| Parameter | Value | Rationale |
|---|---|---|
| device_config | ||
| device_mode | DEVICE_MODE_VERIFY_TAG_CHIP_DATA | Verifier takes all of the operation data from the upstream Encoders and ensures that all required work was completed successfully. |
| operation_mode | OPERATION_MODE_SINGLE | Verifier should stop right after it reads a tag. |
| operation_responsibility | ||
| tags_in_pipeline_view_count | 400 | This should be set to ~2x max number of tags between Localizer and Verifier. |
| trigger_config | ||
| start_trigger_config | ||
| enable_gpi_start_trigger | true | Uses GPI Start Trigger for lowest latency start. |
| stop_trigger_config | ||
| enable_gpi_stop_trigger | false | In Single mode, the device will stop after seeing a single tag, so it does not need a GPI stop trigger. |
| gpi_config | ||
| signaling_mode | GPIO_SIGNAL_MODE_COMBINED | Since the device is not using a GPI Stop, it only needs the single GPI for the Start. |
| GPI2_polarity | GPIO_POLARITY_ACTIVE_LOW | GPI2 triggers the Start. This can be High or Low depending on machine preference. |
| gpo_config | ||
| signaling_mode | GPIO_SIGNAL_MODE_SEPARATE | This will use separate GPOs for pass and fail. |
| GPO1_polarity | GPIO_POLARITY_ACTIVE_LOW | GPO1 indicates whether the device is Operating or not. This can be High or Low depending on machine preference. |
| GPO2_polarity | GPIO_POLARITY_ACTIVE_LOW | GPO2 indicates whether the operation passed. This can be High or Low depending on machine preference. |
| GPO3_polarity | GPIO_POLARITY_ACTIVE_LOW | GPO3 indicates whether the operation failed. This can be High or Low depending on machine preference. |
| report_config | ||
| tag_operation_report_config | ||
| enable_tag_operation_reports | true | TagOperationReports from the Verifier serve as the final report of all work done to the tag. |
| antennas_config | ||
| antenna_config | ||
| antenna_ID | 1 | Only needs a single antenna. |
| gen2_mode | GEN2_MODE_MAX_THROUGHPUT | To maximize throughput, the fastest mode is used. |
| inventory_search_mode | INVENTORY_SEARCH_MODE_SINGLE_TARGET_A_TO_B | Sessions 0 will be in the A state for all tags. |
| gen2_session | GEN2_SESSION_0 | Sessions 0 will be in the A state for all tags. |
| transmit_power | 1200 | Power should be set to the lowest possible value that can still see the tags in the Field of View. |
| tag_population_estimate | 1 | Only one tag should be in the Field of View at any time. |
| serialization_job | ||
| job_id | 1 | |
| job_type | SERIALIZATION_JOB_TYPE_TID_TABLE | TID Table Mode is used to keep the Verifier in sync with the operations for a tag. |
| TID_table_size | 400 | This should be set to ~2x max number of tags between Localizer and Verifier. |