Pipeline Encoding

Overview

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:

  • Localizer (1) - The role of the Localizer is to singulate each tag and provide the TID via a TagOperationReport to the Host Controller. This device can be unnecessary if the Machine Control Application has another method for determining the TIDs that will be seen by the downstream devices.
  • Encoder (1..N) - The role of each Encoder is to perform a subset of the encoding operations to a tag.
  • Verifier (1) - The role of the Verifier is to make sure all encoding operations were completed and provide a final result for each tag.
../_images/PipelineDesign1.png

System Configuration

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.

../_images/HostController.png

Localizer

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.

Localizer Example Configuration

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.

Encoder

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.

Encoder 1 Example Configuration

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.

Encoder 2 Example Configuration

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.

Encoder 3 Example Configuration

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.

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.

Verifier Example Configuration

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.