DOKUMENTASJON

Integrasjonsmanual for RFID-leser

Omfattende dokumentasjon som dekker oppsett av seriell kommunikasjon, antennekonfigurasjon, operasjoner for koding av brikker (EPC Gen2 / ISO 18000-6C) og strømstyring. Inkluderer eksempler for distribusjon av flere antenner og høyhastighets skanning av varelager.

Oppsett av seriell kommunikasjon

Nextwaves NRN-protokoll RFID-lesere kommuniserer via seriell port (RS-232 eller USB-til-seriell). Tilkoblingsparametere må konfigureres riktig for å sikre stabil dataoverføring.

Baud Rate

115200

Data Bits

8

Stop Bits

1

Parity

None

For nettleserbaserte WebSerial API-tilkoblinger, bruk Nextwaves Reader Connect på app.nextwaves.com/reader. Applikasjonen oppdager COM-porter automatisk og konfigurerer tilkoblingsparametere.

TypeScript — WebSerial Connection
// Request serial port access
const port = await navigator.serial.requestPort();
await port.open({
  baudRate: 115200,
  dataBits: 8,
  stopBits: 1,
  parity: "none",
  flowControl: "none",
  bufferSize: 4096,
});

// Get reader/writer streams
const reader = port.readable.getReader();
const writer = port.writable.getWriter();
Python — PySerial Connection
import serial

port = serial.Serial(
    port="/dev/ttyUSB0",      # Linux/macOS
    # port="COM3",            # Windows
    baudrate=115200,
    bytesize=serial.EIGHTBITS,
    stopbits=serial.STOPBITS_ONE,
    parity=serial.PARITY_NONE,
    timeout=2.0,
)

# Flush buffers before communication
port.reset_input_buffer()
port.reset_output_buffer()

Nextwaves NRN-protokoll rammestruktur

Hver NRN-protokollkommando er innkapslet i en binær ramme bestående av: Header (0x5A), PCW (Protocol Control Word), Kategori, MID (Message ID), Lengde, Datanyttelast og CRC16-CCITT sjekksum.

FeltStørrelseBeskrivelse
Header1 byteAlltid 0x5A — start-på-ramme-markør
PCW2 bytesProtokollflagg (versjon, adresse)
Category1 byteKommandokategori (0x00=System, 0x01=Enhet, 0x02=RFID)
MID1 byteMeldings-ID innenfor kategori
Length2 bytesNyttelastlengde i bytes (big-endian)
DataN bytesKommandospesifikk nyttelast
CRC162 bytesCRC16-CCITT sjekksum av bytes etter header

Kommandoeksempler

QUERY_INFO — Query reader serial number & firmware
TX → 5A 00 01 01 00 00 00 DC E5
       ┌──┐ ┌────┐ ┌──┐ ┌──┐ ┌────┐ ┌────┐
       │5A│ │0001│ │01│ │00│ │0000│ │DCE5│
       └──┘ └────┘ └──┘ └──┘ └────┘ └────┘
       HDR   PCW   CAT  MID  LEN    CRC16
READ_EPC_TAG — Start continuous EPC tag inventory
TX → 5A 00 01 02 10 00 00 04 5A
       HDR  PCW   CAT MID LEN   CRC16
       
Response notifications (PID 0x1231) contain:
  • Antenna ID (1 byte)
  • RSSI value (1 byte, raw ADC 0-255)
  • EPC data (12+ bytes)
  • Frequency channel index (1 byte)
STOP_INVENTORY — Stop running inventory scan
TX → 5A 00 01 02 FF 00 00 88 5A
       HDR  PCW   CAT MID LEN   CRC16

Referanse for nøkkelkommandoer

KommandoKodeBeskrivelse
QUERY_INFO0x0100Spør etter leserens serienummer og fastvareversjoner
QUERY_RFID_ABILITY0x1000Spør etter RFID-kapasiteter (effektområde, antall antenner)
READ_EPC_TAG0x0210Start kontinuerlig EPC-brikkevarelager
WRITE_EPC_TAG0x0211Skriv data til en brikkes EPC-bank
STOP_INVENTORY0x02FFStopp et pågående brikkevarelager
CONFIGURE_READER_POWER0x0201Angi sendeeffekt (0-33 dBm per antenne)
CONFIGURE_ANTENNA_ENABLE0x0203Aktiver/deaktiver antenneporter (bitmaske)
SET_WORKING_FREQUENCY0x0205Angi spesifikke arbeidsfrekvenser
SET_FILTER_SETTINGS0x0209Konfigurer duplikatfilter for brikker (tidsbasert)
BUZZER_SWITCH0x011EKontroller summermodus

Antennekonfigurasjon

RFID-lesere støtter opptil 32 antenneporter. Hver port aktiveres eller deaktiveres via en 4-byte bitmaske. Antennene er nummerert fra 1 til 32, der hver bit tilsvarer en port.

Antenne-bitmaske

Aktiver antenne 1-4

0x0F, 0x00, 0x00, 0x00

Binary: 00001111 → Ports 1,2,3,4 ON

Aktiver kun antenne 1 og 3

0x05, 0x00, 0x00, 0x00

Binary: 00000101 → Ports 1,3 ON

CONFIGURE_ANTENNA_ENABLE — Enable ports 1-4
TX → 5A 00 01 02 03 00 04 0F 00 00 00 E1 EF
                              ┌───────────┐
       Payload:               │0F 00 00 00│ ← bitmask
                              └───────────┘
       Bit 0 = ANT1, Bit 1 = ANT2, Bit 2 = ANT3, Bit 3 = ANT4
       0x0F = 0b00001111 → all 4 ports enabled

Utplassering av flere antenner

Ved utplassering av flere antenner, bør du vurdere polarisering (lineær vs. sirkulær), avstand mellom antenner og overlappende dekningssoner. Leseren skanner sekvensielt gjennom aktiverte antenner, og hver brikkerapport inkluderer antenne-ID for posisjonsbestemmelse.

Lasteport

2-4 antenner per portal, sirkulær polarisering, 30 dBm effekt

Transportbånd

1-2 antenner per stasjon, lineær polarisering, 20-25 dBm

Butikkhylle

Nærfelt-antenner, lav effekt 15-20 dBm, høy tetthet

Brikkekoding (EPC Gen2 / ISO 18000-6C)

UHF RFID følger EPC Gen2-standarden (ISO 18000-6C). Hver brikke har 4 minnebanker: Reservert (passord), EPC (96+ bit identifikator), TID (uforanderlig brikke-ID) og Bruker (egendefinerte data).

Brikkens minnestruktur

BankIDTypisk størrelseBruk
Reserved0064 bitsKill-passord (32b) + Tilgangspassord (32b)
EPC0196-128 bitsSGTIN-96, SSCC-96 eller egendefinert koding
TID1096+ bitsBrikkeprodusent-ID (skrivebeskyttet, unik)
User110-512 bitsApplikasjonsspesifikke data (brikkeavhengig)

Eksempel på SGTIN-96-dekoding

SGTIN-96 er den vanligste kodingen for produkter i detaljhandel og forsyningskjeder. Konverter en 24-tegns heksadesimal EPC til GTIN-14, serienummer og GS1 Digital Link.

SGTIN-96 Decode — Example
EPC Hex: 3034257BF7194E4000001A85

Decoded:
  Header:         0x30 (SGTIN-96)
  Filter:         1 (Point-of-Sale)
  Partition:      5
  Company Prefix: 0614141
  Item Reference: 812345
  Serial:         6789
  GTIN-14:        80614141123458
  Digital Link:   https://id.gs1.org/01/80614141123458/21/6789
WRITE_EPC_TAG — Write EPC data to tag
// NRN protocol WRITE_EPC_TAG command
TX → 5A 00 01 02 11 00 0C [EPC_DATA_12_BYTES] [CRC16]

// The reader will:
// 1. Select the tag in its field
// 2. Write the provided EPC data to Bank 01
// 3. Return success/failure notification

// Access password required if tag is locked:
TX → 5A 00 01 02 11 00 10 [ACCESS_PWD_4B] [EPC_DATA_12B] [CRC16]

Bruk det nettbaserte EPC Encoder-verktøyet på /tools/tds-rfid-converter for å kode og dekode SGTIN-96, SSCC-96, GRAI-96 direkte i nettleseren din.

Strømstyring

Leserens sendeeffekt kan justeres fra 0 til 33 dBm per antenneport. Høyere effekt øker leseavstanden, men øker også forstyrrelser og strømforbruk.

CONFIGURE_READER_POWER — Set 30 dBm on all 4 ports
TX → 5A 00 01 02 01 00 04 1E 1E 1E 1E 67 FE
                              ┌───────────┐
       Payload:               │1E 1E 1E 1E│
                              └───────────┘
       0x1E = 30 decimal = 30 dBm per port
       
Power guidelines:
  • 33 dBm — Maximum range (~10m), dock doors
  • 30 dBm — Standard range (~6-8m), general use
  • 25 dBm — Medium range (~3-5m), conveyor belts
  • 20 dBm — Short range (~1-2m), point-of-sale
  • 15 dBm — Near-field (~0.5m), shelf readers

RSSI-overvåking

RSSI (Received Signal Strength Indicator) verdier fra brikker rapporteres som rå ADC-byte (0-255). Bruk konverteringsformelen for å få nøyaktige dBm-verdier.

Konverteringsformel

dBm = -100 + round((raw × 70) / 255)

Raw 128

-65 dBm

God

Raw 180

-51 dBm

Sterk

Raw 220

-40 dBm

Utmerket

Høyhastighets lagerskanning

For høyhastighets lagerskanning, konfigurer arbeidsfrekvenser, filter for duplikate brikker og kontinuerlig skannemodus. Lesere støtter opptil 700 brikker/sekund med optimal konfigurasjon.

Frekvenskonfigurasjon

UHF RFID opererer i 920-925 MHz-båndet (Sørøst-Asia), med 0,5 MHz kanalavstand. Kanalene er nummerert fra 0 (920 MHz) til 10 (925 MHz).

SET_WORKING_FREQUENCY — 6 channels (920-925 MHz)
TX → 5A 00 01 02 05 00 06 00 02 04 06 08 0A C4 1B

Channel mapping (formula: 920.0 + index × 0.5 MHz):
  Ch 0  → 920.0 MHz
  Ch 2  → 921.0 MHz
  Ch 4  → 922.0 MHz
  Ch 6  → 923.0 MHz
  Ch 8  → 924.0 MHz
  Ch 10 → 925.0 MHz

Optimal arbeidsflyt for skanning

1

Konfigurer antenneporter og effektnivåer

2

Angi arbeidsfrekvenser (FHSS for tette miljøer)

3

Konfigurer duplikatfilter (500ms-3000ms avhengig av bruksområde)

4

Send READ_EPC_TAG for å starte kontinuerlig lagertelling

5

Behandle brikkevarsler (PID 0x1231) etter hvert som de ankommer

6

Send STOP_INVENTORY når ferdig

Complete inventory flow — TypeScript
// 1. Enable antennas 1-4
await sendFrame("CONFIGURE_ANTENNA_ENABLE", [0x0F, 0x00, 0x00, 0x00]);

// 2. Set power to 30 dBm on all ports
await sendFrame("CONFIGURE_READER_POWER", [0x1E, 0x1E, 0x1E, 0x1E]);

// 3. Set working frequencies
await sendFrame("SET_WORKING_FREQUENCY", [0, 2, 4, 6, 8, 10]);

// 4. Set duplicate filter to 1000ms  
await sendFrame("SET_FILTER_SETTINGS", [0x03, 0xE8]);

// 5. Start inventory
await sendFrame("READ_EPC_TAG");

// 6. Process tags...
reader.on("tag", (tag) => {
  const rssiDbm = -100 + Math.round((tag.rssi * 70) / 255);
  console.log(`EPC: ${tag.epc}, Ant: ${tag.antenna}, RSSI: ${rssiDbm} dBm`);
});

// 7. Stop when done
await sendFrame("STOP_INVENTORY");