ΤΕΚΜΗ

Εγχειρίδιο Ενσωμάτωσης Αναγνώστη RFID

Πλήρης τεκμηρίωση που καλύπτει τη ρύθμιση σειριακής επικοινωνίας, τη διαμόρφωση κεραίων, τις λειτουργίες κωδικοποίησης ετικετών (EPC Gen2 / ISO 18000-6C) και τη διαχείριση ενέργειας. Περιλαμβάνει παραδείγματα για εγκατάσταση πολλαπλών κεραίων και σάρωση αποθέματος υψηλής ταχύτητας.

Ρύθμιση Σειριακής Επικοινωνίας

Οι αναγνώστες RFID του πρωτοκόλλου NRN της Nextwaves επικοινωνούν μέσω σειριακής θύρας (RS-232 ή USB-to-Serial). Οι παράμετροι σύνδεσης πρέπει να ρυθμιστούν σωστά για να εξασφαλιστεί σταθερή μετάδοση δεδομένων.

Baud Rate

115200

Data Bits

8

Stop Bits

1

Parity

None

Για συνδέσεις WebSerial API μέσω προγράμματος περιήγησης, χρησιμοποιήστε το Nextwaves Reader Connect στο app.nextwaves.com/reader. Η εφαρμογή εντοπίζει αυτόματα τις θύρες COM και ρυθμίζει τις παραμέτρους σύνδεσης.

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()

Δομή Πλαισίου Πρωτοκόλλου NRN της Nextwaves

Κάθε εντολή του πρωτοκόλλου NRN περιβάλλεται σε ένα δυαδικό πλαίσιο που αποτελείται από: Header (0x5A), PCW (Protocol Control Word), Category, MID (Message ID), Length, Data payload και CRC16-CCITT checksum.

ΠεδίοΜέγεθοςΠεριγραφή
Header1 byteΠάντα 0x5A. δείκτης έναρξης πλαισίου
PCW2 bytesΣημαίες πρωτοκόλλου (έκδοση, διεύθυνση)
Category1 byteΚατηγορία εντολής (0x00=Σύστημα, 0x01=Συσκευή, 0x02=RFID)
MID1 byteΑναγνωριστικό μηνύματος εντός κατηγορίας
Length2 bytesΜήκος φορτίου σε bytes (big-endian)
DataN bytesΦορτίο ειδικό για την εντολή
CRC162 bytesΆθροισμα ελέγχου CRC16-CCITT των byte μετά την κεφαλίδα

Παραδείγματα Εντολών

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

Αναφορά Εντολών Πλήκτρων

ΕντολήΚώδικαςΠεριγραφή
QUERY_INFO0x0100Ανάκτηση σειριακού αριθμού αναγνώστη και εκδόσεων λογισμικού υλικού
QUERY_RFID_ABILITY0x1000Ανάκτηση δυνατοτήτων RFID (εύρος ισχύος, αριθμός αντένας)
READ_EPC_TAG0x0210Έναρξη συνεχούς απογραφής ετικετών EPC
WRITE_EPC_TAG0x0211Εγγραφή δεδομένων στην τράπεζα EPC της ετικέτας
STOP_INVENTORY0x02FFΔιακοπή ενεργής απογραφής ετικετών
CONFIGURE_READER_POWER0x0201Ορισμός ισχύος εκπομπής (0‑33 dBm ανά αντένα)
CONFIGURE_ANTENNA_ENABLE0x0203Ενεργοποίηση/απενεργοποίηση θυρών αντένας (μάσκα bit)
SET_WORKING_FREQUENCY0x0205Ορισμός συγκεκριμένων λειτουργικών συχνοτήτων
SET_FILTER_SETTINGS0x0209Διαμόρφωση φίλτρου διπλών ετικετών (βάσει χρόνου)
BUZZER_SWITCH0x011EΈλεγχος λειτουργίας buzzer

Διαμόρφωση Αντένας

Οι αναγνώστες RFID υποστηρίζουν έως 32 θύρες αντένας. Κάθε θύρα ενεργοποιείται ή απενεργοποιείται μέσω μίας 4‑byte μάσκας bit. Οι αντένες αριθμούνται από 1 έως 32, με κάθε bit να αντιστοιχεί σε μια θύρα.

Μάσκα Bit Αντένας

Ενεργοποίηση κεραίων 1-4

0x0F, 0x00, 0x00, 0x00

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

Ενεργοποίηση μόνο των κεραίων 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

Ανάπτυξη Πολλαπλών Κεραίας

Κατά την εγκατάσταση πολλαπλών κεραίων, λάβετε υπόψη τον πόλωση (γραμμική vs. κυκλική), την απόσταση μεταξύ των κεραίων και τις επικαλυπτόμενες ζώνες κάλυψης. Ο αναγνώστης σαρώει διαδοχικά τα ενεργοποιημένα κεραία, και κάθε αναφορά ετικέτας περιλαμβάνει το ID του κεραίου για τον προσδιορισμό της θέσης.

Πόρτα Εγκατάστασης

2-4 κεραίες ανά πύλη, κυκλική πόλωση, ισχύς 30 dBm

Μεταφορική Ζώνη

1-2 κεραίες ανά σταθμό, γραμμική πόλωση, 20-25 dBm

Ράφι Λιανικής

Κεραία κοντινού πεδίου, χαμηλή ισχύς 15-20 dBm, υψηλή πυκνότητα

Κωδικοποίηση Ετικέτας (EPC Gen2 / ISO 18000-6C)

Το UHF RFID ακολουθεί το πρότυπο EPC Gen2 (ISO 18000-6C). Κάθε ετικέτα διαθέτει 4 τράπεζες μνήμης: Reserved (κωδικοί πρόσβασης), EPC (αναγνωριστικό 96+ bit), TID (αμετάβλητο ID τσιπ), και User (προσαρμοσμένα δεδομένα).

Δομή Μνήμης Ετικέτας

ΤράπεζαΑναγνωριστικόΤυπικό ΜέγεθοςΧρήση
Reserved0064 bitsΚωδικός εξόντωσης (32b) + Κωδικός πρόσβασης (32b)
EPC0196-128 bitsSGTIN-96, SSCC-96 ή προσαρμοσμένη κωδικοποίηση
TID1096+ bitsΑναγνωριστικό κατασκευαστή τσιπ (μόνο ανάγνωση, μοναδικό)
User110-512 bitsΔεδομένα ειδικά για την εφαρμογή (εξαρτώνται από το τσιπ)

Παράδειγμα Αποκωδικοποίησης SGTIN-96

Το SGTIN-96 είναι η πιο κοινή κωδικοποίηση για προϊόντα λιανικής και εφοδιαστικής αλυσίδας. Μετατρέψτε ένα 24-χαρακτήρων δεκαεξαδικό EPC σε GTIN-14, σειριακό αριθμό και Ψηφιακό Σύνδεσμο GS1.

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]

Χρησιμοποιήστε το διαδικτυακό εργαλείο EPC Encoder στο /tools/tds-rfid-converter για κωδικοποίηση και αποκωδικοποίηση SGTIN-96, SSCC-96, GRAI-96 απευθείας στον περιηγητή σας.

Διαχείριση Ενέργειας

Η ισχύς εκπομπής του αναγνώστη είναι ρυθμιζόμενη από 0 έως 33 dBm ανά θύρα κεραίου. Η υψηλότερη ισχύς αυξάνει την εμβέλεια ανάγνωσης, αλλά επίσης αυξάνει την παρεμβολή και την κατανάλωση ενέργειας.

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

Οι τιμές RSSI (Δείκτης Ισχύος Λήψης Σήματος) από τις ετικέτες αναφέρονται ως ακατέργαστα bytes ADC (0-255). Χρησιμοποιήστε τον τύπο μετατροπής για ακριβείς τιμές dBm.

Τύπος Μετατροπής

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

Raw 128

-65 dBm

Καλό

Raw 180

-51 dBm

Ισχυρό

Raw 220

-40 dBm

Άριστο

Σάρωση Αποθεμάτων Υψηλής Ταχύτητας

Για σάρωση αποθεμάτων υψηλής ταχύτητας, διαμορφώστε τις λειτουργικές συχνότητες, το φίλτρο διπλών ετικετών και τη λειτουργία συνεχούς σάρωσης. Οι αναγνώστες υποστηρίζουν έως 700 ετικέτες/δευτερόλεπτο με βέλτιστη διαμόρφωση.

Διαμόρφωση Συχνότητας

Το UHF RFID λειτουργεί στη ζώνη 920-925 MHz (Νοτιοανατολική Ασία), με διάστημα καναλιών 0,5 MHz. Τα κανάλια αριθμούνται από 0 (920 MHz) έως 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

Βέλτιστη Ροή Εργασίας Σάρωσης

1

Διαμορφώστε τις θύρες κεραίας και τα επίπεδα ισχύος

2

Ορίστε τις λειτουργικές συχνότητες (FHSS για πυκνά περιβάλλοντα)

3

Διαμορφώστε το φίλτρο διπλοτύπων (500ms-3000ms ανάλογα με τη χρήση)

4

Στείλτε READ_EPC_TAG για να ξεκινήσετε τη συνεχή απογραφή

5

Επεξεργαστείτε τις ειδοποιήσεις ετικετών (PID 0x1231) καθώς φτάνουν

6

Στείλτε STOP_INVENTORY όταν ολοκληρώσετε

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