Engineering tools · EPC · GS1

RFID Код Хувиргагч

SGTIN-96 (RFID Hex) болон Баркод (GTIN) + Серийн дугаарын хоорондох хөрвүүлэгч багаж. Zebra, Chainway, Impinj, Nextwaves зэрэг стандарт RFID уншигчтай нийцтэй. GS1 EPC Tag Data Standard дээр үндэслэгдсэн.

RFID хувиргагч

RFID Hex (SGTIN-96) болон GS1 Баркод (GTIN) + Серийн дугаарын хооронд хөрвүүлэх.

Scheme:SGTIN-9696 bits / Header 0x30

Кодын логик ба алхам алхмаар

// 1. Binary Conversion

src = bin(0x3076215F0C5D974000000001) // = "001100000111011000100001010111110000110001011101100101110100000000000000000000000000000000000001"

// 2. Extract Fields (Bit Slice)

header = src[0:8] "00110000" 0x30
filter = src[8:11] "011" 3
partition = src[11:14] "101" 5

// 3. Determine Partition Rule (Partition 5)

rule = PARTITIONS[5]
// Company Bits: 24, Item Bits: 20

// 4. Extract Company, Item & Serial

company = src[14:38] "100010000101011111000011" 8935363
itemRef = src[38:58] "00010111011001011101" 095837
serial = src[58:96] "00000000000000000000000000000000000001" 1

Хөгжүүлэгчийн код

Энэхүү туслах логикийг та өөрийн төсөлдөө ашиглаарай. Доорх хэлнээс сонгоно уу.

1// TypeScript / JavaScript SGTIN-96 Utils
2
3export const GS1_PARTITION_TABLE = [
4  { value: 0, partition: 0, companyPrefixBits: 40, itemReferenceBits: 4, companyDigits: 12, itemDigits: 1 },
5  { value: 1, partition: 1, companyPrefixBits: 37, itemReferenceBits: 7, companyDigits: 11, itemDigits: 2 },
6  { value: 2, partition: 2, companyPrefixBits: 34, itemReferenceBits: 10, companyDigits: 10, itemDigits: 3 },
7  { value: 3, partition: 3, companyPrefixBits: 30, itemReferenceBits: 14, companyDigits: 9, itemDigits: 4 },
8  { value: 4, partition: 4, companyPrefixBits: 27, itemReferenceBits: 17, companyDigits: 8, itemDigits: 5 },
9  { value: 5, partition: 5, companyPrefixBits: 24, itemReferenceBits: 20, companyDigits: 7, itemDigits: 6 },
10  { value: 6, partition: 6, companyPrefixBits: 20, itemReferenceBits: 24, companyDigits: 6, itemDigits: 7 },
11];
12
13export function encodeSgtin96(gtin: string, serial: string, filter: number) {
14  gtin = gtin.padStart(14, "0");
15  const p = GS1_PARTITION_TABLE.find(rule => {
16    const cp = parseInt(gtin.slice(1, 1 + rule.companyDigits));
17    const ir = parseInt(gtin[0] + gtin.slice(1 + rule.companyDigits, 13));
18    return cp < (1 << rule.companyPrefixBits) && ir < (1 << rule.itemReferenceBits);
19  });
20  if (!p) throw new Error("Invalid GTIN for SGTIN-96");
21
22  const cpVal = parseInt(gtin.slice(1, 1 + p.companyDigits));
23  const irVal = parseInt(gtin[0] + gtin.slice(1 + p.companyDigits, 13));
24  
25  let b = (0x30).toString(2).padStart(8,"0");
26  b += filter.toString(2).padStart(3,"0");
27  b += p.partition.toString(2).padStart(3,"0");
28  b += cpVal.toString(2).padStart(p.companyPrefixBits,"0");
29  b += irVal.toString(2).padStart(p.itemReferenceBits,"0");
30  b += parseInt(serial).toString(2).padStart(38,"0");
31  return binaryToHex(b);
32}
33
34export function decodeSgtin96(hex: string) {
35  const b = hexToBinary(hex);
36  const pVal = parseInt(b.substring(11, 14), 2);
37  const rule = GS1_PARTITION_TABLE.find(r => r.partition === pVal);
38  if (!rule) throw new Error("Invalid Partition");
39
40  const cp = parseInt(b.substring(14, 14 + rule.companyPrefixBits), 2);
41  const ir = parseInt(b.substring(14 + rule.companyPrefixBits, 14 + rule.companyPrefixBits + rule.itemReferenceBits), 2);
42  const serial = parseInt(b.substring(14 + rule.companyPrefixBits + rule.itemReferenceBits, 96), 2);
43
44  const cpStr = cp.toString().padStart(rule.companyDigits, "0");
45  const irStr = ir.toString().padStart(rule.itemDigits, "0");
46  const gtinCore = irStr[0] + cpStr + irStr.substring(1);
47
48  // Check digit calculation
49  let sum = 0;
50  for (let i = 0; i < 13; i++) {
51    sum += parseInt(gtinCore[i]) * (i % 2 === 0 ? 3 : 1);
52  }
53  const check = (10 - (sum % 10)) % 10;
54  
55  return {
56    gtin: gtinCore + check,
57    serial: serial.toString()
58  };
59}
60
61function binaryToHex(b: string) {
62  let hex = "";
63  for (let i = 0; i < b.length; i += 4) {
64    hex += parseInt(b.substring(i, i + 4), 2).toString(16).toUpperCase();
65  }
66  return hex;
67}
68
69function hexToBinary(h: string) {
70  let bin = "";
71  for (let i = 0; i < h.length; i++) {
72    bin += parseInt(h[i], 16).toString(2).padStart(4, "0");
73  }
74  return bin;
75}

Тайлбарлах

SGTIN-96 нь 6 хэсэгт хуваагдсан 96 битийн хоёртын мөр юм:

HDRFLTPRTCMP (24)ITEM (20)SERIAL (38)
Гарчиг (8 бит)Bits 0-8 (8)
001100000x30

Үүнийг SGTIN-96 гэж тодорхойлсон стандарт урьдчилгаа (00110000).

Filter (3 бит)Bits 8-11 (3)
0113

Объектын төрөл (жишээ нь 1 = Жижиглэн худалдаа). Доорх Лавлах Гарын авлагаас харна уу.

Хуваалт (3 бит)Bits 11-14 (3)
1015

Хуваалт 5 гэдэг нь: Компанийн код нь 24 бит, Бүтээгдэхүүний код нь 20 бит авна гэсэн үг.

Компанийн ПрефиксBits 14-38 (24)
1000100001010111110000118935363

GS1-ээс олгосон өвөрмөц компанийн код.

Барааны лавлагааBits 38-58 (20)
00010111011001011101095837

Таны тодорхой бүтээгдэхүүний код.

Сериал дугаар (38 бит)Bits 58-96 (38)
000000000000000000000000000000000000011

Бүтээгдэхүүн бүрийн өвөрмөц таних тэмдэг.

Таны физик баркод болон цахим бүтээгдэхүүний код (EPC) хоорондын хамаарлыг харуулах нь.

Баркод (GTIN) болон SGTIN-96 URI хоорондын холболтыг харуулсан диаграмм
  1. Алхам 1: EPC схемийн хувьд хоёртын толгойн утгыг тодорхойлно. SGTIN-96-ийн хоёртын толгойн утга нь “00110000.”
  2. Алхам 2: Хуваалтын утгын хүснэгтээс Компанийн өмнөх үгийн цифрүүдийн тоонд үндэслэн Хуваалтын утгыг сонгоно.
  3. Алхам 3: Шүүлтүүрийн утга, Хуваалтын утга, Компанийн өмнөх үг, Зүйлийн лавлагаа, Серийн # -г хоёртын утга руу хөрвүүлнэ.
  4. Алхам 4: Толгой, Шүүлтүүр, Хуваалт, Компанийн өмнөх үг, Зүйлийн лавлагаа, Серийн # хоёртын утгуудыг дарааллаар нь холбож, Хоёртын EPC үүсгэнэ.

SGTIN-96 Лавлах гарын авлага

ҮнэТайлбар
0Бусад бүгд
Бусад ангилалд багтдаггүй зүйлсийг ашигладаг. Ерөнхий жижиглэн худалдаанд ховор хэрэглэгддэг.
1Борлуулалтын цэг (POS) худалдааны бараа
Борлуулалтын цэг дээр худалдаалагддаг стандарт хэрэглэгчийн нэгж. Жишээ нь: Нэг ширхэг шампунь.
2Тээвэрлэх бүрэн хайрцаг
Олон зүйл агуулсан стандарт тээвэрлэлтийн нэгж. Жишээ нь: 12 ширхэг шампунийн савтай хайрцаг. 'Нэг хайрцаг'-ийг 'нэг зүйл'-ээс ялгах нь логистикийн хувьд чухал.
3Нөөцөлсөн
Ирээдүйд ашиглахаар нөөцөлсөн.
4Дотоод савлагааны худалдааны барааны бүлэг
Бүрэн хайрцагнаас жижиг бүлэг, ихэвчлэн тавиур дээр байрлуулах эсвэл ашиглахад зориулагдсан. Жишээ нь: Үндсэн хайрцаг доторх жижиг савлагаатай 3 ширхэг.
5Нөөцөлсөн
Ирээдүйд ашиглахаар нөөцөлсөн.
6Нэгж ачаалал
Их логистикийн нэгж, ихэвчлэн олон хайрцаг агуулсан паллет.
7Хэрэглэгчийн нэгжийн доторх бүрэлдэхүүн хэсэг
Хэрэглэгчийн нэгжийн доторх тодорхой хэсэг. Жишээ нь: Тоглоомын доторх батерейны таг.
ҮнэКомпанийн урьдчилсан дугаарБарааны лавлагаа
040 Бит / 12 Тоон үзүүлэлт4 Бит / 1 Тоон үзүүлэлт
137 Бит / 11 Тоон үзүүлэлт7 Бит / 2 Тоон үзүүлэлт
234 Бит / 10 Тоон үзүүлэлт10 Бит / 3 Тоон үзүүлэлт
330 Бит / 9 Тоон үзүүлэлт14 Бит / 4 Тоон үзүүлэлт
427 Бит / 8 Тоон үзүүлэлт17 Бит / 5 Тоон үзүүлэлт
524 Бит / 7 Тоон үзүүлэлт20 Бит / 6 Тоон үзүүлэлт
620 Бит / 6 Тоон үзүүлэлт24 Бит / 7 Тоон үзүүлэлт

SGTIN-96 Түгээмэл Асуултууд

  • Энэ нь системийн тагны сав баглаа боодлын түвшин-г хэлж өгдөг. Хэрэв систем нь 'Case' тагийг (Filter 2) уншвал, олон тооны зүйл агуулж байгааг мэддэг. Энэ нь давхар тоолохоос сэргийлдэг (жишээ нь, нэг хайрцгийг нэгж гэж тоолох) ба хүчинтэй тээвэрлэлтийн баталгаажуулалтыг хийх боломжийг олгодог.
  • Case (Filter 2) нь тээвэрлэлтэд ашиглагддаг үндсэн тээвэрлэлтийн нэгж юм. Inner Pack (Filter 4) нь хайрцаг доторх дэд хэсэг бөгөөд ихэвчлэн амархан ашиглах эсвэл харуулах зориулалттай (жишээ нь, 24 лаазтай хайрцаг доторх 6 лааз). Логистикийн систем нь Case-ийг хянадаг; Дэлгүүрийн үйл ажиллагаа нь Inner Pack-ийг үр дүнтэйгээр зохицуулж болно.
  • Декод хийхэд алдаа гарна эсвэл буруу Barcode үүсгэнэ. Partition нь Company Prefix-ийн төгсгөл болон Item Reference-ийн эхлэлийг тодорхойлдог. Хэрэв энэ 'хуваах цэг' буруу бол та хүссэнээс өөр Company Code авах болно.
  • Стандарт GTIN (Barcode) нь зөвхөн бүтээгдэхүүний төрөл-ийг тодорхойлдог (жишээ нь, '12oz Soda'). SGTIN-96 нь Серийн дугаар нэмж, лааз бүрийг өвөрмөцөөр таних боломжтой болгодог. Энэ нь зүйлийн түвшний мөрдөлт-ийг идэвхжүүлж, яг аль зүйлийг зарсан, хулгайлсан эсвэл хугацаа нь дууссаныг хянах боломжийг олгодог.
  • Тийм ээ. Дээрх хувиргагчид үзүүлснээр SGTIN-96 мөр нь бүрэн GTIN-14-ийг агуулдаг. Серийн дугаар болон гарчиг мэдээллийг хассанаар та анхны жижиглэн худалдааны баркодыг төгс сэргээх боломжтой.
  • Header (0x30) нь GS1-ээс тодорхойлсон стандарт 8-битийн префикс юм. Энэ нь RFID уншигчид: "Энэ таг нь SGTIN-96 стандартаар кодлогдсон байна." гэж хэлдэг. Бусад стандартуудад зориулсан бусад гарчигууд байдаг (жишээ нь, паллетийн хувьд SSCC эсвэл активын хувьд GIAI).