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ą.

Reader bring-up
NRN
Serial115200 8N1
ProtocolCRC16-CCITT
RF power0-33 dBm
Inventory700 tags/s
5APCWCATMIDLENDATACRC16

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.

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.

Baud rate115200
Data bits8
Stop bits1
ParityNone
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
Header
1 byte
Visada 0x5A. kadro pradžios žymeklis
PCW
2 bytes
Protokolo vėliavėlės (versija, adresas)
Category
1 byte
Komandos kategorija (0x00=Sistema, 0x01=Įrenginys, 0x02=RFID)
MID
1 byte
Pranešimo ID kategorijoje
Length
2 bytes
Naudingojo krūvio ilgis baitais (big-endian)
Data
N bytes
Komandai specifinis duomenų krūvis
CRC16
2 bytes
CRC16-CCITT kontrolinė suma baitų po antraštės

Komandų pavyzdžiai

QUERY_INFO - Query reader serial number and 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_INFO
0x0100
Užklausti skaitytuvo serijos numerio ir programinės įrangos versijų
QUERY_RFID_ABILITY
0x1000
Užklausti RFID galimybių (galingumo diapazonas, antenų skaičius)
READ_EPC_TAG
0x0210
Pradėti nuolatinį EPC žymių inventorių
WRITE_EPC_TAG
0x0211
Įrašyti duomenis į žymės EPC banką
STOP_INVENTORY
0x02FF
Sustabdyti vykdomą žymių inventorių
CONFIGURE_READER_POWER
0x0201
Nustatyti siųstuvo galią (0‑33 dBm per anteną)
CONFIGURE_ANTENNA_ENABLE
0x0203
Įjungti/išjungti antenos prievadus (bitų kaukė)
SET_WORKING_FREQUENCY
0x0205
Nustatyti konkrečias darbo dažnius
SET_FILTER_SETTINGS
0x0209
Konfigūruoti žymių dublikatų filtrą (laikui paremtą)
BUZZER_SWITCH
0x011E
Valdyti 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‑40F 00 00 00Binary 00001111 - ports 1, 2, 3, 4 on
Įjungti tik antenas 1 ir 305 00 00 00Binary 00000101 - ports 1 and 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.

Portal

Dokų vartai

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

Station

Konvejerio juosta

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

Shelf

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
Reserved
00
64 bits
Naikinimo slaptažodis (32b) + Prieigos slaptažodis (32b)
EPC
01
96-128 bits
SGTIN-96, SSCC-96 arba pasirinktinis kodavimas
TID
10
96+ bits
Lusto gamintojo ID (tik skaitymui, unikalus)
User
11
0-512 bits
Programai 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 x 70) / 255)
Raw 128 - Gerai-65 dBm
Raw 180 - Stiprus-51 dBm
Raw 220 - Puiku-40 dBm

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 x 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

01

Konfigūruokite antenos prievadus ir galios lygius

02

Nustatykite darbo dažnius (FHSS tankiai apgyvendintose aplinkose)

03

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

04

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

05

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

06

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