DOKUMENTACIJA

RFID skaitytuvo integravimo vadovas

Išsami dokumentacija, apimanti nuoseklaus ryšio sąranką, antenos konfigūraciją, žymų kodavimo operacijas (EPC Gen2 / ISO 18000-6C) ir energijos valdymą. Apima pavyzdžius, kaip diegti kelias antenas ir didelio greičio inventoriaus skenavimą.

Nuoseklaus ryšio sąranka

Nextwaves NRN protokolo RFID skaitytuvai bendrauja per nuoseklųjį prievadą (RS-232 arba USB-to-Serial). Ryšio parametrai turi būti teisingai sukonfigūruoti, kad būtų užtikrintas stabilus duomenų perdavimas.

Baud Rate

115200

Data Bits

8

Stop Bits

1

Parity

None

Naršyklės pagrindu veikiantiems WebSerial API ryšiams naudokite Nextwaves Reader Connect adresu app.nextwaves.com/reader. Programa automatiškai aptinka COM prievadus ir konfigūruoja ryšio parametrus.

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 protokolo rėmo struktūra

Kiekviena NRN protokolo komanda yra įkapsuliuota dvejetainiame rėmelyje, susidedančiame iš: Antraštės (0x5A), PCW (Protokolo valdymo žodis), Kategorijos, MID (Pranešimo ID), Ilgio, Duomenų naudingojo krūvio ir CRC16-CCITT patikros sumos.

LaukasDydisAprašymas
Header1 byteVisada 0x5A. kadro pradžios žymeklis
PCW2 bytesProtokolo vėliavėlės (versija, adresas)
Category1 byteKomandos kategorija (0x00=Sistema, 0x01=Įrenginys, 0x02=RFID)
MID1 bytePranešimo ID kategorijoje
Length2 bytesNaudingojo krūvio ilgis baitais (big-endian)
DataN bytesKomandai specifinis duomenų krūvis
CRC162 bytesCRC16-CCITT kontrolinė suma baitų po antraštės

Komandų pavyzdžiai

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

Pagrindinių komandų nuoroda

KomandaKodasAprašymas
QUERY_INFO0x0100Užklausti skaitytuvo serijos numerio ir programinės įrangos versijų
QUERY_RFID_ABILITY0x1000Užklausti RFID galimybių (galingumo diapazonas, antenų skaičius)
READ_EPC_TAG0x0210Pradėti nuolatinį EPC žymių inventorių
WRITE_EPC_TAG0x0211Įrašyti duomenis į žymės EPC banką
STOP_INVENTORY0x02FFSustabdyti vykdomą žymių inventorių
CONFIGURE_READER_POWER0x0201Nustatyti siųstuvo galią (0‑33 dBm per anteną)
CONFIGURE_ANTENNA_ENABLE0x0203Įjungti/išjungti antenos prievadus (bitų kaukė)
SET_WORKING_FREQUENCY0x0205Nustatyti konkrečias darbo dažnius
SET_FILTER_SETTINGS0x0209Konfigūruoti žymių dublikatų filtrą (laikui paremtą)
BUZZER_SWITCH0x011EValdyti buzzerio režimą

Antenos konfigūracija

RFID skaitytuvai palaiko iki 32 antenos prievadų. Kiekvienas prievadas įjungiamas arba išjungiamas naudojant 4 baitų bitų kaukę. Antenos numeruojamos nuo 1 iki 32, kiekvienas bitas atitinka prievadą.

Antenos bitų kaukė

Įjungti antenas 1‑4

0x0F, 0x00, 0x00, 0x00

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

Įjungti tik antenas 1 ir 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

Kelių antenų diegimas

Diegiant kelias antenas, atsižvelkite į poliarizaciją (linijinę arba apvalią), atstumą tarp antenų ir persidengiančias aprėpties zonas. Skaitytuvas nuosekliai skenuoja įjungtas antenas, o kiekvienoje žymos ataskaitoje yra antenos ID vietos nustatymui.

Dokų vartai

2-4 antenos per portalą, apskaitinė poliarizacija, 30 dBm galia

Konvejerio juosta

1-2 antenos per stotelę, linijinė poliarizacija, 20-25 dBm

Mažmeninės prekybos lentyna

Artimojo lauko antenos, maža galia 15–20 dBm, didelis tankis

Žymų kodavimas (EPC Gen2 / ISO 18000-6C)

UHF RFID atitinka EPC Gen2 standartą (ISO 18000-6C). Kiekviena žyma turi 4 atminties blokus: Reserved (slaptažodžiai), EPC (96+ bitų identifikatorius), TID (nekintamas lusto ID) ir User (pasirinktiniai duomenys).

Žymos atminties struktūra

BankasIDTipinis dydisNaudojimas
Reserved0064 bitsNaikinimo slaptažodis (32b) + Prieigos slaptažodis (32b)
EPC0196-128 bitsSGTIN-96, SSCC-96 arba pasirinktinis kodavimas
TID1096+ bitsLusto gamintojo ID (tik skaitymui, unikalus)
User110-512 bitsProgramai specifiniai duomenys (priklausomai nuo lusto)

SGTIN-96 dekodavimo pavyzdys

SGTIN-96 yra dažniausiai naudojamas kodavimas mažmeninės prekybos ir tiekimo grandinės produktams. Konvertuokite 24 simbolių šešioliktainį EPC į GTIN-14, serijos numerį ir 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]

Naudokite internetinį EPC Encoder įrankį adresu /tools/tds-rfid-converter kad koduotumėte ir dekoduotumėte SGTIN-96, SSCC-96, GRAI-96 tiesiai savo naršyklėje.

Energijos valdymas

Skaitytuvo perdavimo galia reguliuojama nuo 0 iki 33 dBm vienam antenos prievadui. Didesnė galia padidina skaitymo diapazoną, bet taip pat padidina trukdžius ir energijos suvartojimą.

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 stebėjimas

RSSI (Gauto signalo stiprumo indikatorius) reikšmės iš žymų pateikiamos kaip neapdoroti ADC baitai (0–255). Norėdami gauti tikslias dBm reikšmes, naudokite konversijos formulę.

Konversijos formulė

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

Raw 128

-65 dBm

Gerai

Raw 180

-51 dBm

Stiprus

Raw 220

-40 dBm

Puiku

Didelio greičio inventoriaus nuskaitymas

Norėdami atlikti didelio greičio inventoriaus nuskaitymą, sukonfigūruokite darbo dažnius, pakartotinių žymių filtrą ir nuolatinio nuskaitymo režimą. Skaitytuvai palaiko iki 700 žymių per sekundę su optimalia konfigūracija.

Dažnio konfigūracija

UHF RFID veikia 920–925 MHz dažnių juostoje (Pietryčių Azija), su 0,5 MHz kanalų intervalu. Kanalai numeruojami nuo 0 (920 MHz) iki 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

Optimalus skenavimo darbo eiga

1

Konfigūruokite antenos prievadus ir galios lygius

2

Nustatykite darbo dažnius (FHSS tankiai apgyvendintose aplinkose)

3

Konfigūruokite pasikartojančių duomenų filtrą (500ms-3000ms, priklausomai nuo naudojimo atvejo)

4

Siųskite READ_EPC_TAG, kad pradėtumėte nuolatinę inventorizaciją

5

Apdorokite žymų pranešimus (PID 0x1231), kai jie gaunami

6

Siųskite STOP_INVENTORY, kai baigsite

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