מתקדם

קידוד תגים וזיכרון EPC

השתלט על ארכיטקטורת זיכרון תגים וקידוד GS1 לשילוב שרשרת אספקה

4 בנקי הזיכרון

לכל תג EPC Gen2 יש בדיוק 4 בנקי זיכרון, שכל אחד מהם משרת מטרה ספציפית. הבנת מבנה זה חיונית לקידוד, קריאה ואבטחת התגים שלך.

בנק 00 (Reserved): מכיל את Kill Password של 32 סיביות ו-Access Password של 32 סיביות. ערכי ברירת המחדל הם 0x00000000. סיסמת ה-kill משביתה לצמיתות את התג כאשר נשלחת. בלתי הפיך. סיסמת הגישה נועלת בנקי זיכרון כדי למנוע כתיבה לא מורשית.

בנק 01 (EPC): מכיל StoredCRC (16 סיביות, מחושב אוטומטית), StoredPC/Protocol Control (16 סיביות, מציין את אורך ה-EPC ויכולות התג) ואת ערך ה-EPC עצמו. בדרך כלל 96 סיביות (12 בתים) עבור SGTIN-96. חלק מהתגים תומכים ב-EPC של 128 סיביות או אפילו 496 סיביות.

בנק 10 (TID): מזהה תג המתוכנת במפעל. מכיל את קוד יצרן השבב, מספר הדגם ומספר סידורי ייחודי. בנק זה הוא לקריאה בלבד ולעולם לא ניתן לשנותו. מה שהופך אותו לבעל ערך רב למניעת זיופים ולאימות תגים.

בנק 11 (User): אחסון נוסף אופציונלי. הגודל משתנה לפי שבב: ל-NXP UCODE 9 יש 0 סיביות (ללא זיכרון משתמש), ל-Quanray QStar-7U יש 512 סיביות (64 בתים). השתמש בו עבור מספרי אצווה, תאריכי בדיקה, ספי טמפרטורה או רשומות תחזוקה. בדוק תמיד את הקיבולת הזמינה לפני הכתיבה.

קידוד SGTIN-96. שלב אחר שלב

SGTIN-96 היא תוכנית ה-EPC הנפוצה ביותר. היא מקודדת GTIN-14 (ברקוד המוצר שלך) בתוספת מספר סידורי ייחודי בדיוק ל-96 ביט (12 בתים). זה מאפשר עד 274 מיליארד מספרים סידוריים ייחודיים לכל סוג מוצר.

מבנה 96 ביט: כותרת (8 ביט, תמיד 0x30 עבור SGTIN-96) → מסנן (3 ביט: 0=הכל, 1=POS, 2=מארז מלא, 3=שמור, 4=אריזה פנימית, 5=שמור, 6=טעינת יחידה, 7=רכיב) → מחיצה (3 ביט: מגדיר כיצד הביטים מחולקים בין קידומת החברה והפניית הפריט) → קידומת חברה (20–40 ביט) → הפניית פריט (4–24 ביט) → מספר סידורי (38 ביט).

ערך המחיצה (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 שלך קובע באיזה ערך מחיצה להשתמש.

💡

השתמש בכלי Nextwaves TDS RFID Converter בכתובת /tools/tds-rfid-converter כדי לקודד ולפענח ערכי SGTIN-96 באופן אינטראקטיבי. הזן את GTIN-14 + סידורי וקבל את ה-EPC ההקס מיידית.

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 סיביות עבור מזהי שרשרת אספקה שונים. לכל אחד יש בית כותרת משלו.

קריאה וכתיבה של זיכרון תגים

קריאת תגים במהלך המלאי היא פסיבית. הקורא משדר שאילתה ותגים מגיבים עם ה-EPC שלהם מבנק 01. אבל אתה יכול גם לקרוא במפורש כל בנק זיכרון על ידי שליחת פקודת READ עם מספר הבנק, קיזוז המילה וספירת המילים.

כתיבה לתגים דורשת דיוק רב יותר. יש לבודד את התג (רק תג אחד מגיב), והכתיבה מתבצעת מילה אחר מילה (16 ביט). כתיבת EPC מלאה של 96 ביט דורשת 6 כתיבות מילים רציפות. כל כתיבה אורכת 10–20ms, כך שקידוד תג בודד לוקח 60–120ms עבור נתוני EPC בלבד.

כשלונות כתיבה נפוצים: התג רחוק מדי מהאנטנה (זקוק לאות חזק יותר לכתיבה מאשר לקריאה. קרב את התג למרחק של מטר אחד). מספר תגים בשדה (בידוד נכשל. בודד את תג היעד). זיכרון התג נעול (נדרשת סיסמת גישה). אימות כתיבה נכשל (נסה שוב, או שהתג עלול להיות פגום. שיעור הפגמים האופייני הוא 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 סיביות לאבטחה. סיסמת הגישה נועלת בנקי זיכרון ספציפיים. לאחר ההגדרה, הבנק הזה דורש את הסיסמה לפני כל פעולת קריאה או כתיבה. סיסמת ה-Kill משביתה לצמיתות את התג בעת שידור. פעולה בלתי הפיכה המשמשת בעיקר עבור פרטיות הצרכנים בקמעונאות (השמדת התג לאחר הקופה).

שיטות עבודה מומלצות לאבטחה: לעולם אל תשתמש בסיסמת ברירת המחדל של כל האפסים (0x00000000) בייצור. היא מספקת אפס אבטחה. צור סיסמאות ייחודיות לכל אצווה של תגים או השתמש בקידומת החברה שלך כזרע. אחסן סיסמאות במערכת ה-backend שלך, לעולם לא על התג עצמו (ניתן לקרוא את זיכרון הסיסמה אם התג לא נעול). נעל את בנקי הסיסמאות לאחר התכנות. שקול מצב Untraceable (זמין בשבבים חדשים יותר) שמסתיר את ה-TID ומפחית את ה-EPC, ומספק פרטיות מבלי להרוג את התג.

⚠️

פקודת Kill היא קבועה ובלתי הפיכה. אין ביטול. לאחר ש-tag נהרג, הוא לעולם לא יוכל להגיב לקורא כלשהו שוב. תמיד הטמע אימות סיסמת kill בתוכנה שלך ודרוש אישור מנהל לפני ביצוע פקודות kill.