ලේඛනගත කිරීම
RFID පාඨක ඒකාබද්ධ කිරීමේ අත්පොත
අනුක්රමික සන්නිවේදන සැකසුම, ඇන්ටනා වින්යාසය, ටැග් කේතනය මෙහෙයුම් (EPC Gen2 / ISO 18000-6C) සහ බල කළමනාකරණය ආවරණය වන පුළුල් ලියකියවිලි. බහුවිධ ඇන්ටනා යෙදවීම් සහ අධිවේගී ඉන්වෙන්ටරි පරිලෝකනය සඳහා උදාහරණ ඇතුළත් වේ.
අනුක්රමික සන්නිවේදන සැකසුම
Nextwaves NRN ප්රොටෝකෝල් RFID පාඨකයන් අනුක්රමික පෝට් (RS-232 හෝ USB-to-Serial) හරහා සන්නිවේදනය කරයි. ස්ථාවර දත්ත සම්ප්රේෂණයක් සහතික කිරීම සඳහා සම්බන්ධතා පරාමිතීන් නිවැරදිව වින්යාසගත කළ යුතුය.
Baud Rate
115200
Data Bits
8
Stop Bits
1
Parity
None
බ්රවුසරය මත පදනම් වූ WebSerial API සම්බන්ධතා සඳහා, app.nextwaves.com/reader හි Nextwaves Reader Connect භාවිතා කරන්න. යෙදුම COM ports ස්වයංක්රීයව හඳුනාගෙන සම්බන්ධතා පරාමිතීන් වින්යාස කරයි.
// 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 | ප්රොටෝකෝල ධජ (version, address) |
| Category | 1 byte | විධාන කාණ්ඩය (0x00=System, 0x01=Device, 0x02=RFID) |
| MID | 1 byte | ප්රවර්ගය තුළ පණිවිඩ හැඳුනුම්පත |
| Length | 2 bytes | බයිට් වල පැටවුම් දිග (big-endian) |
| Data | N bytes | විශේෂිත පැටවුම |
| CRC16 | 2 bytes | ශීර්ෂයෙන් පසු බයිට් වල CRC16-CCITT checksum |
විධාන උදාහරණ
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 | tag එකක 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-byte බිට්මාස්ක් එකක් හරහා සක්රීය හෝ අක්රීය කර ඇත. ඇන්ටනා 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) අනුගමනය කරයි. සෑම tag එකකම මතක බැංකු 4ක් ඇත: වෙන් කර ඇත (මුරපද), EPC (96+ bit identifier), TID (වෙනස් කළ නොහැකි චිප් ID), සහ පරිශීලක (custom data).
Tag මතක ව්යුහය
| බැංකුව | හැඳුනුම්පත | සාමාන්ය ප්රමාණය | භාවිතය |
|---|---|---|---|
| Reserved | 00 | 64 bits | Kill password (32b) + Access password (32b) |
| EPC | 01 | 96-128 bits | SGTIN-96, SSCC-96, හෝ අභිරුචි කේතනය |
| TID | 10 | 96+ bits | චිප් නිෂ්පාදක හැඳුනුම්පත (කියවීමට පමණි, අද්විතීය) |
| User | 11 | 0-512 bits | යෙදුමට-විශේෂිත දත්ත (චිප්-යැපෙන) |
SGTIN-96 විකේතන උදාහරණය
SGTIN-96 යනු සිල්ලර සහ සැපයුම් දාම නිෂ්පාදන සඳහා බහුලව භාවිතා වන කේතීකරණයයි. අක්ෂර 24 කින් යුත් hex EPC එකක් GTIN-14, අනුක්රමික අංකය සහ GS1 ඩිජිටල් සබැඳිය බවට පරිවර්තනය කරන්න.
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 Encoder මෙවලම භාවිතා කරන්න /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 readersRSSI අධීක්ෂණය
ටැග් වලින් 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 යවන්න
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");