מדריך אינטגרציה של קורא RFID
תיעוד מקיף המכסה הגדרת תקשורת טורית, תצורת אנטנה, פעולות קידוד תגים (EPC Gen2 / ISO 18000-6C) וניהול צריכת חשמל. כולל דוגמאות לפריסות מרובות אנטנות וסריקת מלאי במהירות גבוהה.
הגדרת תקשורת טורית
קוראי RFID של פרוטוקול Nextwaves NRN מתקשרים באמצעות יציאה טורית (RS-232 או USB-to-Serial). יש להגדיר את פרמטרי החיבור כראוי כדי להבטיח שידור נתונים יציב.
עבור חיבורי API WebSerial מבוססי דפדפן, השתמש ב-Nextwaves Reader Connect בכתובת app.nextwaves.com/reader. האפליקציה מזהה אוטומטית יציאות COM ומגדירה את פרמטרי החיבור.
// 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
כל פקודת פרוטוקול NRN מכוסה במסגרת בינארית המורכבת מ: כותרת (0x5A), PCW (מילת בקרת פרוטוקול), קטגוריה, MID (מזהה הודעה), אורך, מטען נתונים וסכום ביקורת CRC16-CCITT.
דוגמאות פקודה
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 CRC16הפניה לפקודות מפתח
תצורת אנטנה
קוראי RFID תומכים עד 32 פורטי אנטנה. כל פורט מופעל או מושבת באמצעות מסכת ביטים של 4 בתים. האנטנות ממוספרות מ-1 עד 32, כאשר כל ביט תואם לפורט.
מסכת ביטים של אנטנה
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פריסת ריבוי אנטנות
בעת פריסת מספר אנטנות, שקול את הקיטוב (ליניארי לעומת מעגלי), המרווח בין האנטנות ואזורי כיסוי חופפים. הקורא סורק ברצף דרך האנטנות המופעלות, וכל דיווח תג כולל את מזהה האנטנה לקביעת מיקום.
דלת משטח
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 בנקי זיכרון: שמור (סיסמאות), EPC (מזהה של 96+ ביט), TID (מזהה שבב בלתי ניתן לשינוי) ומשתמש (נתונים מותאמים אישית).
מבנה זיכרון תג
דוגמה לפענוח SGTIN-96
SGTIN-96 הוא הקידוד הנפוץ ביותר עבור מוצרי קמעונאות ושרשרת אספקה. המר EPC הקסדצימלי בן 24 תווים ל-GTIN-14, מספר סידורי ו-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]השתמש בכלי המקודד EPC המקוון בכתובת /tools/tds-rfid-converter כדי לקודד ולפענח SGTIN-96, SSCC-96, GRAI-96 ישירות בדפדפן שלך.
ניהול צריכת חשמל
עוצמת השידור של הקורא ניתנת להתאמה מ-0 עד 33 dBm לכל יציאת אנטנה. הספק גבוה יותר מגדיל את טווח הקריאה אך גם מגדיל את ההפרעות וצריכת החשמל.
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 (מחוון עוצמת אותות שהתקבלו) מתגים מדווחים כבייטים ADC גולמיים (0-255). השתמש בנוסחת ההמרה כדי לקבל ערכי dBm מדויקים.
סריקת מלאי במהירות גבוהה
לסריקת מלאי במהירות גבוהה, הגדר תדרי עבודה, מסנן תגיות כפולות ומצב סריקה רציפה. קוראים תומכים בעד 700 תגיות/שנייה עם תצורה אופטימלית.
תצורת תדר
UHF RFID פועל בפס 920-925 MHz (דרום מזרח אסיה), עם מרווח ערוצים של 0.5 MHz. הערוצים ממוספרים מ-0 (920 MHz) עד 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 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זרימת עבודה סריקה אופטימלית
הגדר את יציאות האנטנה ורמות ההספק
הגדר תדרי עבודה (FHSS עבור סביבות צפופות)
הגדר מסנן כפילויות (500ms-3000ms בהתאם למקרה השימוש)
שלח READ_EPC_TAG כדי להתחיל מלאי רציף
עבד התראות תג (PID 0x1231) כשהן מגיעות
שלח STOP_INVENTORY כשתסיים
// 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");