پیشرفته

کدگذاری برچسب و حافظه EPC

تسلط بر معماری حافظه برچسب و کدگذاری GS1 برای ادغام زنجیره تأمین

4 بانک حافظه

هر برچسب EPC Gen2 دقیقاً 4 بانک حافظه دارد، هر کدام برای یک هدف خاص. درک این ساختار برای کدگذاری، خواندن و امنیت برچسب‌های شما ضروری است.

بانک 00 (Reserved): شامل رمز Kill 32 بیتی و رمز Access 32 بیتی. مقادیر پیش‌فرض 0x00000000 هستند. رمز kill برچسب را هنگام ارسال دائماً غیرفعال می‌کند - غیرقابل برگشت. رمز access بانک‌های حافظه را قفل می‌کند تا از نوشتن‌های غیرمجاز جلوگیری شود.

بانک 01 (EPC): شامل StoredCRC (16 بیت، محاسبه خودکار)، StoredPC/کنترل پروتکل (16 بیت، نشان‌دهنده طول EPC و قابلیت‌های برچسب)، و خود مقدار EPC. معمولاً 96 بیت (12 بایت) برای SGTIN-96. برخی برچسب‌ها از EPC 128 بیتی یا حتی 496 بیتی پشتیبانی می‌کنند.

بانک 10 (TID): شناسه برچسب (Tag Identifier) برنامه‌ریزی‌شده کارخانه‌ای. شامل کد سازنده تراشه، شماره مدل و یک شماره سریال منحصربه‌فرد. این بانک فقط‌خوان است و هرگز نمی‌تواند تغییر کند - که آن را برای ضد جعل و احراز هویت برچسب بی‌نظیر می‌کند.

بانک 11 (User): ذخیره‌سازی اضافی اختیاری. اندازه بسته به تراشه متفاوت است: NXP UCODE 9 دارای 0 بیت (بدون حافظه کاربر) است، Quanray QStar-7U دارای 512 بیت (64 بایت) است. از آن برای شماره دسته، تاریخ بازرسی، آستانه دما یا سوابق نگهداری استفاده کنید. همیشه قبل از نوشتن ظرفیت موجود را بررسی کنید.

کدگذاری SGTIN-96. گام به گام

SGTIN-96 پرکاربردترین طرح EPC است. یک GTIN-14 (بارکد محصول شما) به‌علاوه یک شماره سریال منحصربه‌فرد را دقیقاً در 96 بیت (12 بایت) کدگذاری می‌کند. این امکان تا 274 میلیارد شماره سریال منحصربه‌فرد در هر نوع محصول را فراهم می‌کند.

ساختار 96 بیتی: Header (8 بیت، همیشه 0x30 برای SGTIN-96) → Filter (3 بیت: 0=همه، 1=POS، 2=کارتن کامل، 3=رزرو، 4=بسته داخلی، 5=رزرو، 6=بار واحد، 7=قطعه) → Partition (3 بیت: تعریف می‌کند بیت‌ها چگونه بین پیشوند شرکت و مرجع آیتم تقسیم می‌شوند) → پیشوند شرکت (20-40 بیت) → مرجع آیتم (4-24 بیت) → شماره سریال (38 بیت).

مقدار Partition (0-6) طول پیشوند شرکت را تعیین می‌کند: P=0 → پیشوند 40 بیتی (12 رقم)، P=1 → 37 بیتی (11 رقم)، P=2 → 34 بیتی (10 رقم)، P=3 → 30 بیتی (9 رقم)، P=4 → 27 بیتی (8 رقم)، P=5 → 24 بیتی (7 رقم)، P=6 → 20 بیتی (6 رقم). طول پیشوند شرکت GS1 شما تعیین می‌کند از کدام مقدار partition استفاده کنید.

از ابزار Nextwaves TDS RFID Converter در /tools/tds-rfid-converter برای کدگذاری و رمزگشایی تعاملی مقادیر SGTIN-96 استفاده کنید. GTIN-14 + سریال خود را وارد کنید و فوراً EPC hex را دریافت کنید.

SGTIN-96 Bit Structure
┌────────┬──────┬─────┬──────────────┬──────────────┬──────────────┐
│ Header │Filter│Part │Company Prefix│Item Reference│   Serial     │
│ 8 bits │3 bits│3bits│  20-40 bits  │   4-24 bits  │   38 bits    │
│  0x30  │ 0-7  │ 0-6 │  GS1 prefix  │  product ref │  unique ID   │
└────────┴──────┴─────┴──────────────┴──────────────┴──────────────┘

Partition table (defines prefix/item bit allocation):
P=0: 40-bit prefix (12 digits)  P=4: 27-bit prefix (8 digits)
P=1: 37-bit prefix (11 digits)  P=5: 24-bit prefix (7 digits)
P=2: 34-bit prefix (10 digits)  P=6: 20-bit prefix (6 digits)
P=3: 30-bit prefix (9 digits)

Example: 3034257BF7194E4000001A85
  Header=0x30 Filter=1 Part=5 Prefix=0614141
  Item=812345 Serial=6789 → GTIN-14: 80614141123458

سایر طرح‌های EPC

علاوه بر SGTIN-96، GS1 چندین طرح EPC 96 بیتی دیگر برای شناسه‌های مختلف زنجیره تأمین تعریف می‌کند. هر کدام بایت header خاص خود را دارد.

خواندن و نوشتن حافظه برچسب

خواندن برچسب‌ها در طول شمارش موجودی، غیرفعال است. خواننده یک پرس و جو پخش می‌کند و برچسب‌ها با EPC خود از Bank 01 پاسخ می‌دهند. اما همچنین می‌توانید هر بانک حافظه را به صراحت با ارسال دستور READ با شماره بانک، آفست کلمه و تعداد کلمه بخوانید.

نوشتن روی برچسب‌ها به دقت بیشتری نیاز دارد. برچسب باید جداگانه شناسایی شود (فقط یک برچسب پاسخ می‌دهد) و نوشتن یک کلمه (16 بیت) در هر بار انجام می‌شود. یک نوشتن کامل EPC 96 بیتی نیاز به 6 نوشتن کلمه متوالی دارد. هر نوشتن 10-20 میلی‌ثانیه طول می‌کشد، بنابراین کدگذاری یک برچسب 60-120 میلی‌ثانیه فقط برای داده‌های EPC طول می‌کشد.

خطاهای رایج در نوشتن: برچسب خیلی دور از آنتن (نیاز به سیگنال قوی‌تر برای نوشتن نسبت به خواندن. برچسب را در فاصله 1 متری قرار دهید). چندین برچسب در محدوده پوشش (جداسازی ناموفق. برچسب هدف را ایزوله کنید). حافظه برچسب قفل شده (رمز عبور دسترسی لازم است). تأیید نوشتن ناموفق (تلاش مجدد، یا برچسب ممکن است معیوب باشد. نرخ نقص معمول 1-3 در 10,000).

بهترین روش: همیشه پس از نوشتن با خواندن مجدد داده‌ها و مقایسه آن‌ها تأیید کنید. دستور نوشتن ممکن است موفق شود اما در موارد نادر بیت‌های مجاور را خراب کند. تأیید خواندن-بعد-از-نوشتن این مشکلات را شناسایی می‌کند.

Write EPC - Nextwaves NRN Protocol
TX → 5A 00 01 02 11 00 0C [EPC_12_BYTES] [CRC16]

Write per 16-bit word: 10-20ms
Full 96-bit EPC = 6 words = 60-120ms total

With access password:
TX → 5A 00 01 02 11 00 10 [PWD_4B] [EPC_12B] [CRC16]

امنیت برچسب و رمزهای عبور

برچسب‌های EPC Gen2 از دو رمز عبور 32 بیتی برای امنیت پشتیبانی می‌کنند. رمز عبور دسترسی (Access Password) بانک‌های حافظه خاص را قفل می‌کند. پس از تنظیم، آن بانک قبل از هر عملیات خواندن یا نوشتن به رمز عبور نیاز دارد. رمز عبور Kill (Kill Password) برچسب را هنگام انتقال به طور دائمی غیرفعال می‌کند. یک عملیات غیرقابل برگشت عمدتاً برای حریم خصوصی مصرف‌کننده در خرده‌فروشی استفاده می‌شود (نابودی برچسب پس از تسویه حساب).

روش‌های امنیتی بهترین: هرگز از رمز عبور پیش‌فرض همه صفر (0x00000000) در تولید استفاده نکنید. هیچ امنیتی ندارد. رمزهای عبور منحصربه‌فرد برای هر دسته برچسب تولید کنید یا از پیشوند شرکت خود به عنوان دانه (seed) استفاده کنید. رمزهای عبور را در سیستم پشتیبان خود ذخیره کنید، هرگز روی خود برچسب (حافظه رمز عبور می‌تواند خوانده شود اگر برچسب باز باشد). پس از برنامه‌نویسی، بانک‌های رمز عبور را قفل کنید. حالت Untraceable (در تراشه‌های جدیدتر موجود) را در نظر بگیرید که TID را پنهان می‌کند و EPC را کاهش می‌دهد، حریم خصوصی را بدون نابودی برچسب فراهم می‌کند.

دستور Kill دائمی و غیرقابل برگشت است. هیچ برگشتی وجود ندارد. پس از کشته شدن یک برچسب، هرگز نمی‌تواند به هیچ خواننده‌ای پاسخ دهد. همیشه تأیید رمز عبور kill را در نرم‌افزار خود پیاده‌سازی کنید و قبل از اجرای دستورات kill، مجوز مدیر را الزامی کنید.

بازگشت به خانه