DOKUMENTATION

RFID Reader Integrationsmanual

Omfattende dokumentation, der dækker opsætning af seriel kommunikation, antennekonfiguration, tag-kodningsoperationer (EPC Gen2 / ISO 18000-6C) og strømstyring. Inkluderer eksempler på implementeringer med flere antenner og højhastigheds-lager-scanning.

Opsætning af seriel kommunikation

Nextwaves NRN protokol RFID-læsere kommunikerer via seriel port (RS-232 eller USB-til-seriel). Forbindelsesparametre skal konfigureres korrekt for at sikre stabil datatransmission.

Baud Rate

115200

Data Bits

8

Stop Bits

1

Parity

None

For browserbaserede WebSerial API-forbindelser skal du bruge Nextwaves Reader Connect på app.nextwaves.com/reader. Applikationen registrerer automatisk COM-porte og konfigurerer forbindelsesparametre.

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 Protokol Rammestruktur

Hver NRN-protokolkommando er indkapslet i en binær ramme bestående af: Header (0x5A), PCW (Protocol Control Word), Kategori, MID (Message ID), Længde, Data payload og CRC16-CCITT checksum.

FeltStørrelseBeskrivelse
Header1 byteAltid 0x5A. start-of-frame markør
PCW2 bytesProtokolflag (version, adresse)
Category1 byteKommando kategori (0x00=System, 0x01=Enhed, 0x02=RFID)
MID1 byteBesked-ID inden for kategori
Length2 bytesNyttelastlængde i bytes (big-endian)
DataN bytesKommandospecifik nyttelast
CRC162 bytesCRC16-CCITT checksum af bytes efter 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

Referencetabel for nøglekommandoer

KommandoKodeBeskrivelse
QUERY_INFO0x0100Forespørg reader serienummer og firmwareversioner
QUERY_RFID_ABILITY0x1000Forespørg RFID-kapaciteter (effektområde, antennetælling)
READ_EPC_TAG0x0210Start kontinuerlig EPC tag-lager
WRITE_EPC_TAG0x0211Skriv data til en tags EPC-bank
STOP_INVENTORY0x02FFStop et igangværende tag-lager
CONFIGURE_READER_POWER0x0201Indstil sendeeffekt (0-33 dBm pr. antenne)
CONFIGURE_ANTENNA_ENABLE0x0203Aktiver/deaktiver antenneporte (bitmaske)
SET_WORKING_FREQUENCY0x0205Indstil specifikke arbejdsfrekvenser
SET_FILTER_SETTINGS0x0209Konfigurer tag-duplikatfilter (tidsbaseret)
BUZZER_SWITCH0x011EStyr summer-tilstand

Antennekonfiguration

RFID-læsere understøtter op til 32 antenneporte. Hver port aktiveres eller deaktiveres via en 4-byte bitmaske. Antenner er nummereret 1 til 32, hvor hver bit svarer til en port.

Antenne Bitmaske

Aktiver antenner 1-4

0x0F, 0x00, 0x00, 0x00

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

Aktiver kun antenner 1 & 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

Implementering med flere antenner

Ved implementering af flere antenner skal du overveje polarisering (lineær vs. cirkulær), afstanden mellem antennerne og overlappende dækningszoner. Læseren scanner sekventielt gennem aktiverede antenner, og hver tag-rapport indeholder antenne-ID'et til positionsbestemmelse.

Læsserampe

2-4 antenner pr. portal, cirkulær polarisering, 30 dBm effekt

Transportbånd

1-2 antenner pr. station, lineær polarisering, 20-25 dBm

Detailhylde

Nærfeltsantenner, lav effekt 15-20 dBm, høj densitet

Tag-kodning (EPC Gen2 / ISO 18000-6C)

UHF RFID følger EPC Gen2-standarden (ISO 18000-6C). Hvert tag har 4 hukommelsesbanker: Reserveret (adgangskoder), EPC (96+ bit identifikator), TID (uforanderligt chip-ID) og Bruger (brugerdefinerede data).

Tag Hukommelsesstruktur

BankIDTypisk størrelseAnvendelse
Reserved0064 bitsKill-adgangskode (32b) + Adgangskode (32b)
EPC0196-128 bitsSGTIN-96, SSCC-96 eller brugerdefineret kodning
TID1096+ bitsChip producent-ID (skrivebeskyttet, unikt)
User110-512 bitsApplikationsspecifikke data (chip-afhængige)

SGTIN-96 Afkodning Eksempel

SGTIN-96 er den mest almindelige kodning for detailhandels- og forsyningskædeprodukter. Konverter en 24-tegns hex 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]

Brug online EPC Encoder-værktøjet på /tools/tds-rfid-converter for at kode og afkode SGTIN-96, SSCC-96, GRAI-96 direkte i din browser.

Strømstyring

Læserens sendeeffekt kan justeres fra 0 til 33 dBm pr. antenneport. Højere effekt øger læseområdet, men øger også interferens og strømforbrug.

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ågning

RSSI (Received Signal Strength Indicator)-værdier fra tags rapporteres som rå ADC-bytes (0-255). Brug konverteringsformlen for at få nøjagtige dBm-værdier.

Konverteringsformel

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

Raw 128

-65 dBm

God

Raw 180

-51 dBm

Stærk

Raw 220

-40 dBm

Fremragende

Højhastighedsinventarscanning

For højhastighedsinventarscanning skal du konfigurere arbejdsfrekvenser, duplikat tagfilter og kontinuerlig scanningsfunktion. Læsere understøtter op til 700 tags/sekund med optimal konfiguration.

Frekvenskonfiguration

UHF RFID opererer i 920-925 MHz-båndet (Sydøstasien) med 0,5 MHz kanalafstand. Kanalerne er nummereret 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 scanningsarbejdsgang

1

Konfigurer antenneporte og effektniveauer

2

Indstil arbejdsfrekvenser (FHSS til tætte miljøer)

3

Konfigurer duplikatfilter (500ms-3000ms afhængigt af brugsscenariet)

4

Send READ_EPC_TAG for at starte kontinuerlig lagerbeholdning

5

Behandl tag-meddelelser (PID 0x1231), efterhånden som de ankommer

6

Send STOP_INVENTORY, når du er færdig

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");