תיעוד
מדריך אינטגרציה של קורא RFID
תיעוד מקיף המכסה הגדרת תקשורת טורית, תצורת אנטנה, פעולות קידוד תגים (EPC Gen2 / ISO 18000-6C) וניהול צריכת חשמל. כולל דוגמאות לפריסות מרובות אנטנות וסריקת מלאי במהירות גבוהה.
הגדרת תקשורת טורית
קוראי RFID של פרוטוקול Nextwaves NRN מתקשרים באמצעות יציאה טורית (RS-232 או USB-to-Serial). יש להגדיר את פרמטרי החיבור כראוי כדי להבטיח שידור נתונים יציב.
Baud Rate
115200
Data Bits
8
Stop Bits
1
Parity
None
עבור חיבורי 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.
| שדה | גודל | תיאור |
|---|---|---|
| Header | 1 byte | תמיד 0x5A. סמן תחילת מסגרת |
| PCW | 2 bytes | דגלי פרוטוקול (גרסה, כתובת) |
| Category | 1 byte | קטגוריית פקודה (0x00=מערכת, 0x01=התקן, 0x02=RFID) |
| MID | 1 byte | מזהה הודעה בתוך קטגוריה |
| Length | 2 bytes | אורך מטען בייטים (big-endian) |
| Data | N bytes | מטען ספציפי לפקודה |
| CRC16 | 2 bytes | סכום ביקורת 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הפניה לפקודות מפתח
| פקודה | קוד | תיאור |
|---|---|---|
| QUERY_INFO | 0x0100 | שאילת מספר סידורי של הקורא וגרסאות קושחה |
| QUERY_RFID_ABILITY | 0x1000 | שאילת יכולות RFID (טווח כוח, מספר אנטנות) |
| READ_EPC_TAG | 0x0210 | התחל אינבנטוריזציה רציפה של תגי EPC |
| WRITE_EPC_TAG | 0x0211 | כתיבת נתונים לבנק EPC של תג |
| STOP_INVENTORY | 0x02FF | עצור אינבנטוריזציה של תגיות מתמשכת |
| CONFIGURE_READER_POWER | 0x0201 | הגדר כוח שידור (0-33 dBm לכל אנטנה) |
| CONFIGURE_ANTENNA_ENABLE | 0x0203 | הפעל/השבת פורטי אנטנה (מסכת ביטים) |
| SET_WORKING_FREQUENCY | 0x0205 | הגדר תדרי עבודה ספציפיים |
| SET_FILTER_SETTINGS | 0x0209 | הגדר מסנן שכפול תגיות (מבוסס זמן) |
| BUZZER_SWITCH | 0x011E | בקרת מצב המפציר |
תצורת אנטנה
קוראי RFID תומכים עד 32 פורטי אנטנה. כל פורט מופעל או מושבת באמצעות מסכת ביטים של 4 בתים. האנטנות ממוספרות מ-1 עד 32, כאשר כל ביט תואם לפורט.
מסכת ביטים של אנטנה
הפעל אנטנות 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
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 (מזהה שבב בלתי ניתן לשינוי) ומשתמש (נתונים מותאמים אישית).
מבנה זיכרון תג
| בנק | מזהה | גודל אופייני | שימוש |
|---|---|---|---|
| Reserved | 00 | 64 bits | סיסמת השמדה (32b) + סיסמת גישה (32b) |
| EPC | 01 | 96-128 bits | SGTIN-96, SSCC-96, או קידוד מותאם אישית |
| TID | 10 | 96+ bits | מזהה יצרן שבב (לקריאה בלבד, ייחודי) |
| User | 11 | 0-512 bits | נתונים ספציפיים לאפליקציה (תלוי שבב) |
דוגמה לפענוח 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 מדויקים.
נוסחת המרה
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).
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זרימת עבודה סריקה אופטימלית
הגדר את יציאות האנטנה ורמות ההספק
הגדר תדרי עבודה (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");