DOKUMENTĀCIJA
RFID lasītāja integrācijas rokasgrāmata
Visaptveroša dokumentācija, kas aptver seriālās komunikācijas iestatīšanu, antenas konfigurāciju, atzīmju kodēšanas operācijas (EPC Gen2 / ISO 18000-6C) un enerģijas pārvaldību. Ietver piemērus vairāku antenu izvietošanai un ātrgaitas inventāra skenēšanai.
Seriālās komunikācijas iestatīšana
Nextwaves NRN protokola RFID lasītāji sazinās, izmantojot seriālo portu (RS-232 vai USB-to-Serial). Savienojuma parametri ir pareizi jākonfigurē, lai nodrošinātu stabilu datu pārraidi.
Baud Rate
115200
Data Bits
8
Stop Bits
1
Parity
None
Lai izveidotu pārlūkprogrammas WebSerial API savienojumus, izmantojiet Nextwaves Reader Connect vietnē app.nextwaves.com/reader. Lietojumprogramma automātiski atrod COM portus un konfigurē savienojuma parametrus.
// 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();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 protokola rāmja struktūra
Katrs NRN protokola komanda ir iekapsulēta binārā rāmī, kas sastāv no: galvenes (0x5A), PCW (protokola kontroles vārds), kategorijas, MID (ziņojuma ID), garuma, datu kravas un CRC16-CCITT kontrolsummas.
| Lauks | Izmērs | Apraksts |
|---|---|---|
| Header | 1 byte | Vienmēr 0x5A. rāmja sākuma marķieris |
| PCW | 2 bytes | Protokola karodziņi (versija, adrese) |
| Category | 1 byte | Komandas kategorija (0x00=Sistēma, 0x01=Ierīce, 0x02=RFID) |
| MID | 1 byte | Ziņojuma ID kategorijā |
| Length | 2 bytes | Payload garums baitos (big-endian) |
| Data | N bytes | Komandai specifiska datu pakete |
| CRC16 | 2 bytes | CRC16-CCITT kontrolsumma baitiem pēc galvenes |
Komandu piemēri
TX → 5A 00 01 01 00 00 00 DC E5
┌──┐ ┌────┐ ┌──┐ ┌──┐ ┌────┐ ┌────┐
│5A│ │0001│ │01│ │00│ │0000│ │DCE5│
└──┘ └────┘ └──┘ └──┘ └────┘ └────┘
HDR PCW CAT MID LEN CRC16TX → 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)TX → 5A 00 01 02 FF 00 00 88 5A
HDR PCW CAT MID LEN CRC16Galveno komandu atsauce
| Komanda | Kods | Apraksts |
|---|---|---|
| QUERY_INFO | 0x0100 | Vaicāt lasītāja sērijas numuru un programmaparatūras versijas |
| QUERY_RFID_ABILITY | 0x1000 | Vaicāt RFID iespējas (jaudas diapazons, antenu skaits) |
| READ_EPC_TAG | 0x0210 | Sākt nepārtrauktu EPC tagu inventarizāciju |
| WRITE_EPC_TAG | 0x0211 | Rakstīt datus tagam EPC bankā |
| STOP_INVENTORY | 0x02FF | Apturēt notiekošo tagu inventarizāciju |
| CONFIGURE_READER_POWER | 0x0201 | Iestatīt pārraides jaudu (0–33 dBm uz antenu) |
| CONFIGURE_ANTENNA_ENABLE | 0x0203 | Iespējot/atspējot antenu portus (bitu maska) |
| SET_WORKING_FREQUENCY | 0x0205 | Iestatīt konkrētas darba frekvences |
| SET_FILTER_SETTINGS | 0x0209 | Konfigurēt tagu dublikātu filtru (laika bāzes) |
| BUZZER_SWITCH | 0x011E | Kontrolēt zummera režīmu |
Antenas konfigurācija
RFID lasītāji atbalsta līdz 32 antenu portiem. Katrs ports tiek ieslēgts vai izslēgts, izmantojot 4 baitu bitu masku. Antenas ir numurētas no 1 līdz 32, un katrs bits atbilst portam.
Antenas bitu maska
Aktivizēt antenas 1-4
0x0F, 0x00, 0x00, 0x00
Binary: 00001111 → Ports 1,2,3,4 ON
Aktivizēt tikai antenas 1 un 3
0x05, 0x00, 0x00, 0x00
Binary: 00000101 → Ports 1,3 ON
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 enabledVairāku antenu izvietošana
Izvietojot vairākas antenas, apsveriet polarizāciju (lineāru pret cirkulāru), atstarpi starp antenām un pārklāšanās zonas. Lasītājs skenē secīgi caur iespējotajām antenām, un katrs atzīmes ziņojums ietver antenas ID pozīcijas noteikšanai.
Dokstacija
2-4 antenas uz portālu, cirkulāra polarizācija, 30 dBm jauda
Konveijera lente
1-2 antenas uz staciju, lineāra polarizācija, 20-25 dBm
Mazumtirdzniecības plaukts
Tuvā lauka antenas, zema jauda 15-20 dBm, augsts blīvums
Tagu kodēšana (EPC Gen2 / ISO 18000-6C)
UHF RFID atbilst EPC Gen2 standartam (ISO 18000-6C). Katram tagam ir 4 atmiņas bankas: Reserved (paroles), EPC (96+ bitu identifikators), TID (nemainīgs mikroshēmas ID) un User (pielāgoti dati).
Tagu atmiņas struktūra
| Banka | ID | Tipisks izmērs | Lietojums |
|---|---|---|---|
| Reserved | 00 | 64 bits | Kill parole (32b) + Access parole (32b) |
| EPC | 01 | 96-128 bits | SGTIN-96, SSCC-96 vai pielāgota kodēšana |
| TID | 10 | 96+ bits | Čipa ražotāja ID (tikai lasāms, unikāls) |
| User | 11 | 0-512 bits | Lietojumprogrammai specifiski dati (atkarīgi no čipa) |
SGTIN-96 atšifrēšanas piemērs
SGTIN-96 ir visbiežāk izmantotā kodēšana mazumtirdzniecības un piegādes ķēdes produktiem. Pārvērtiet 24 rakstzīmju heksadecimālo EPC par GTIN-14, sērijas numuru un GS1 Digital Link.
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// 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]Izmantojiet tiešsaistes EPC kodētāja rīku vietnē /tools/tds-rfid-converter lai kodētu un dekodētu SGTIN-96, SSCC-96, GRAI-96 tieši jūsu pārlūkprogrammā.
Enerģijas pārvaldība
Lasītāja pārraides jauda ir regulējama no 0 līdz 33 dBm uz katru antenas portu. Lielāka jauda palielina nolasīšanas diapazonu, bet arī palielina traucējumus un enerģijas patēriņu.
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 readersRSSI uzraudzība
RSSI (saņemtā signāla stipruma indikators) vērtības no atzīmēm tiek ziņotas kā neapstrādāti ADC baiti (0-255). Izmantojiet konversijas formulu, lai iegūtu precīzas dBm vērtības.
Konversijas formula
dBm = -100 + round((raw × 70) / 255)
Raw 128
-65 dBm
Labi
Raw 180
-51 dBm
Spēcīgs
Raw 220
-40 dBm
Izcili
Ātrgaitas inventarizācijas skenēšana
Ātrgaitas inventarizācijas skenēšanai konfigurējiet darba frekvences, dublēto tagu filtru un nepārtrauktas skenēšanas režīmu. Lasītāji atbalsta līdz 700 tagiem/sekundē ar optimālu konfigurāciju.
Frekvences konfigurācija
UHF RFID darbojas 920-925 MHz joslā (Dienvidaustrumāzija) ar 0,5 MHz kanālu atstarpi. Kanāli ir numurēti no 0 (920 MHz) līdz 10 (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 MHzOptimāls skenēšanas darbplūsma
Konfigurējiet antenas portus un jaudas līmeņus
Iestatiet darba frekvences (FHSS blīvai videi)
Konfigurējiet dublikātu filtru (500ms-3000ms atkarībā no lietošanas gadījuma)
Nosūtiet READ_EPC_TAG, lai sāktu nepārtrauktu inventarizāciju
Apstrādājiet tagu paziņojumus (PID 0x1231) to saņemšanas brīdī
Nosūtiet STOP_INVENTORY, kad pabeigts
// 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");