Engineering tools · EPC · GS1

Kigeuzi cha Msimbo wa RFID

Zana ya kubadilisha kati ya SGTIN-96 (RFID Hex) na Msimbo pau (GTIN) + Nambari ya Siri. Inatumika na visomaji vya kawaida vya RFID kama Zebra, Chainway, Impinj, Nextwaves. Kulingana na GS1 EPC Tag Data Standard.

Kigeuzi cha RFID

Badilisha kati ya RFID Hex (SGTIN-96) na GS1 Barcode (GTIN) + Nambari ya Siri.

Scheme:SGTIN-9696 bits / Header 0x30

Mantiki ya Msimbo & Hatua kwa Hatua

// 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

Msimbo wa Msanidi

Tumia mantiki hii ya matumizi katika mradi wako. Chagua lugha hapa chini.

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}

Eleza

SGTIN-96 ni mfuatano wa binary wa biti 96 uliogawanywa katika sehemu 6:

HDRFLTPRTCMP (24)ITEM (20)SERIAL (38)
Kichwa (8 bit)Bits 0-8 (8)
001100000x30

Kiambishi awali cha kawaida (00110000) kinachotambua hii kama SGTIN-96.

Kichujio (biti 3)Bits 8-11 (3)
0113

Aina ya kitu (k.m. 1 = Rejareja Rejareja). Tazama Mwongozo wa Marejeleo hapa chini.

Sehemu (3 bit)Bits 11-14 (3)
1015

Sehemu 5 inamaanisha: Msimbo wa Kampuni unachukua bits 24, Msimbo wa Bidhaa unachukua bits 20.

Kiambishi awali cha KampuniBits 14-38 (24)
1000100001010111110000118935363

Msimbo wa kipekee wa kampuni uliotolewa na GS1.

Rejea ya BidhaaBits 38-58 (20)
00010111011001011101095837

Msimbo wako maalum wa bidhaa.

Nambari ya Siri (38 bit)Bits 58-96 (38)
000000000000000000000000000000000000011

Kitambulishi cha kipekee kwa kila bidhaa maalum ya kimwili.

Kuonyesha uhusiano kati ya barcode yako ya kimwili na msimbo wa bidhaa ya kielektroniki (EPC).

Mchoro unaoonyesha muunganisho kati ya Barcode (GTIN) na SGTIN-96 URI
  1. Hatua ya 1: Bainisha thamani ya kichwa cha binary kwa mpango wa EPC. Thamani ya kichwa cha binary kwa SGTIN-96 ni “00110000.”
  2. Hatua ya 2: Chagua Thamani ya Sehemu kulingana na idadi ya tarakimu katika Kiambishi awali cha Kampuni kutoka Jedwali la Thamani ya Sehemu.
  3. Hatua ya 3: Badilisha Thamani ya Kichujio, Thamani ya Sehemu, Kiambishi awali cha Kampuni, Marejeleo ya Bidhaa, na Nambari ya Siri kuwa thamani ya binary.
  4. Hatua ya 4: Unganisha kwa mpangilio Kichwa, Kichujio, Sehemu, Kiambishi awali cha Kampuni, Marejeleo ya Bidhaa, na thamani za binary za Nambari ya Siri ili kuunda EPC ya Binary.

Mwongozo wa Marejeleo wa SGTIN-96

ThamaniMaelezo
0Wengine Wote
Inatumika kwa bidhaa ambazo hazifai katika kategoria nyingine. Mara chache hutumika katika rejareja ya jumla.
1Bidhaa ya Biashara ya Mahali pa Uuzaji (POS)
Kitengo cha kawaida cha watumiaji kinachouzwa Mahali pa Uuzaji. Mfano: Chupa moja ya shampoo.
2Kesi Kamili ya Usafirishaji
Kitengo cha kawaida cha usafirishaji kilicho na bidhaa nyingi. Mfano: Katoni ya chupa 12 za shampoo. Muhimu kwa vifaa ili kutofautisha 'kesi moja' na 'bidhaa moja'.
3Imehifadhiwa
Imehifadhiwa kwa matumizi ya baadaye.
4Uwekaji wa Bidhaa ya Biashara ya Kifurushi cha Ndani
Kundi dogo kuliko kesi kamili, mara nyingi kwa onyesho la rafu au utunzaji. Mfano: Kifurushi cha shampoo 3 zilizofungwa ndani ya katoni kuu.
5Imehifadhiwa
Imehifadhiwa kwa matumizi ya baadaye.
6Mzigo wa Kitengo
Kitengo kikubwa cha vifaa, kwa kawaida godoro lenye kesi nyingi.
7Kipengee ndani ya Kitengo cha Watumiaji
Sehemu maalum ndani ya kitengo cha watumiaji. Mfano: Kifuniko cha betri ndani ya toy.
ThamaniKiambishi awali cha KampuniRejea ya Bidhaa
040 Biti / 12 Tarakimu4 Biti / 1 Tarakimu
137 Biti / 11 Tarakimu7 Biti / 2 Tarakimu
234 Biti / 10 Tarakimu10 Biti / 3 Tarakimu
330 Biti / 9 Tarakimu14 Biti / 4 Tarakimu
427 Biti / 8 Tarakimu17 Biti / 5 Tarakimu
524 Biti / 7 Tarakimu20 Biti / 6 Tarakimu
620 Biti / 6 Tarakimu24 Biti / 7 Tarakimu

Maswali Yanayoulizwa Mara kwa Mara ya SGTIN-96

  • Inaiambia mfumo kiwango cha ufungaji cha lebo. Ikiwa mfumo unasoma lebo ya 'Kesi' (Kichujio 2), inajua kuwa ina vitu vingi. Hii inazuia kuhesabu mara mbili (k.m., kuhesabu kesi kama kitengo kimoja tu) na inaruhusu uthibitishaji halali wa usafirishaji.
  • Kesi (Kichujio 2) ni kitengo kikuu cha usafirishaji kinachotumika kwa usafirishaji. Kifurushi cha Ndani (Kichujio 4) ni mgawanyiko ndani ya kesi hiyo, kawaida kwa utunzaji rahisi au onyesho (kama pakiti 6 ndani ya kesi ya makopo 24). Mifumo ya vifaa hufuatilia Kesi; Uendeshaji wa Duka unaweza kushughulikia vifurushi vya Ndani kwa ufanisi.
  • Usanifu utashindwa au kutoa Barcode isiyo sahihi. Sehemu huamua haswa mahali ambapo Kiambishi cha Kampuni kinaisha na Marejeleo ya Bidhaa huanza. Ikiwa 'mahali pa mgawanyiko' hili haliko sawa, utapata Msimbo tofauti wa Kampuni kuliko ilivyokusudiwa.
  • GTIN ya kawaida (Barcode) hutambua tu aina ya bidhaa (k.m., 'Soda ya 12oz'). SGTIN-96 inaongeza Nambari ya Mfululizo, ikimpa kila kibao kitambulisho cha kipekee. Hii huwezesha ufuatiliaji wa kiwango cha bidhaa, hukuruhusu kufuatilia ni bidhaa gani haswa ziliuzwa, kuibiwa, au kuisha muda wake.
  • Ndiyo. Kama inavyoonyeshwa kwenye kibadilishaji hapo juu, kamba ya SGTIN-96 ina GTIN-14 kamili. Kwa kuondoa Nambari ya Mfululizo na habari ya kichwa, unaweza kujenga upya kikamilifu barcode asili ya rejareja.
  • Kichwa (0x30) ni kiambishi awali cha kawaida cha biti 8 kilichofafanuliwa na GS1. Inamwambia tu msomaji yeyote wa RFID: "Lebo hii imesimbwa kwa kutumia kiwango cha SGTIN-96." Vichwa vingine vipo kwa viwango tofauti (kama SSCC kwa pallets au GIAI kwa mali).