Engineering tools · EPC · GS1

RFID Kood Konverter

Konvertertööriist SGTIN-96 (RFID Hex) ja Vöötkoodi (GTIN) + Seerianumbri vahel. Ühildub standardsete RFID lugejatega nagu Zebra, Chainway, Impinj, Nextwaves. Tugineb GS1 EPC Märgi Andmete Standardile.

RFID Konverter

Teisendamine RFID Hex (SGTIN-96) ja GS1 Vöötkoodi (GTIN) + Seerianumbri vahel.

Scheme:SGTIN-9696 bits / Header 0x30

Koodi Loogika ja Samm-sammult

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

Arendaja Kood

Kasutage seda utiliidi loogikat oma projektis. Valige allpool keel.

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}

Selgitus

SGTIN-96 on 96-bitine kahendstring, mis on jagatud 6 ossa:

HDRFLTPRTCMP (24)ITEM (20)SERIAL (38)
Päis (8 bitti)Bits 0-8 (8)
001100000x30

Standardne eesliide (00110000), mis identifitseerib selle kui SGTIN-96.

Filter (3 bitti)Bits 8-11 (3)
0113

Objekti tüüp (nt 1 = Jaemüügi toode). Vaata allolevat viitejuhendit.

Partitsioon (3 bitti)Bits 11-14 (3)
1015

Partitsioon 5 tähendab: Ettevõtte Kood võtab 24 bitti, Toote Kood võtab 20 bitti.

Ettevõtte EesliideBits 14-38 (24)
1000100001010111110000118935363

GS1 poolt määratud ainulaadne ettevõtte kood.

Toote ViideBits 38-58 (20)
00010111011001011101095837

Teie konkreetsed tootekood.

Seerianumber (38 bitti)Bits 58-96 (38)
000000000000000000000000000000000000011

Kordumatu identifikaator iga konkreetse füüsilise toote jaoks.

Füüsilise vöötkoodi ja elektroonilise tootekoodi (EPC) vahelise seose visualiseerimine.

Diagramm, mis näitab vöötkoodi (GTIN) ja SGTIN-96 URI vahelist ühendust
  1. Samm 1: Määratlege EPC skeemi jaoks kahendpäise väärtus. SGTIN-96 binaarpäise väärtus on "00110000".
  2. Samm 2: Valige Partitsiooni Väärtus, lähtudes Ettevõtte Eesliite numbritest Partitsiooni Väärtuste tabelist.
  3. Samm 3: Teisendage Filter, Partitsioon, Ettevõtte Eesliide, Toote Viide ja Seerianumber kahendväärtuseks.
  4. Samm 4: Ühendage järjekorras Päis, Filter, Partitsioon, Ettevõtte Eesliide, Toote Viide ja Seerianumber kahendväärtustena, et moodustada Kahend EPC.

SGTIN-96 Viitejuhend

VäärtusKirjeldus
0Kõik Muud
Kasutatakse kaupade jaoks, mis ei sobi teistesse kategooriatesse. Üldises jaemüügis harva kasutatud.
1Müügikoha (POS) Kaubandusartikkel
Standardne tarbijaüksus, mida müügikohas müüakse. Näide: Üksik šampoonipudelitäis.
2Täisjuhtum Transpordiks
Standardne saatmisüksus, mis sisaldab mitmeid kaupu. Näide: 12 šampoonipudeli kast. Kriitiline logistikale 'ühe juhtumi' ja 'ühe üksuse' eristamiseks.
3Reserveeritud
Reserveeritud tulevaseks kasutuseks.
4Sisemine Pakk Kaubandusartikli Grupeerimine
Grupeerimine, mis on väiksem kui täisjuhtum, sageli riiulile või käitlemiseks. Näide: Kilega pakitud 3-pakk peamise kasti sees.
5Reserveeritud
Reserveeritud tulevaseks kasutuseks.
6Ühiku Koormus
Suur logistikaüksus, tavaliselt kaubaalune, mis sisaldab mitmeid juhtumeid.
7Komponent Tarbija Ühiku Sees
Konkreetsed osad tarbijaüksuse sees. Näide: Patareikate mänguasja sees.
VäärtusEttevõtte EesliideToote Viide
040 Bitid / 12 Numbrid4 Bitid / 1 Numbrid
137 Bitid / 11 Numbrid7 Bitid / 2 Numbrid
234 Bitid / 10 Numbrid10 Bitid / 3 Numbrid
330 Bitid / 9 Numbrid14 Bitid / 4 Numbrid
427 Bitid / 8 Numbrid17 Bitid / 5 Numbrid
524 Bitid / 7 Numbrid20 Bitid / 6 Numbrid
620 Bitid / 6 Numbrid24 Bitid / 7 Numbrid

SGTIN-96 Korduma Kippuvad Küsimused

  • See ütleb süsteemile märgi pakenditaseme. Kui süsteem loeb 'Juhtumi' märki (Filter 2), teab see, et see sisaldab mitmeid kaupu. See takistab topeltlugemist (nt juhtumi lugemist üheainsa ühikuna) ja võimaldab kehtivat saatmise kinnitust.
  • Juhtum (Filter 2) on esmane saatmisüksus. Sisemine Pakk (Filter 4) on selle juhtumi sees olev alamjagunemine, tavaliselt kergemaks käitlemiseks või eksponeerimiseks (nagu 6-pakk 24-pakis). Logistikasüsteemid jälgivad Juhtumeid; Poodide toimingutes võidakse efektiivselt käidelda Sisemisi Pakke.
  • Dekodeerimine ebaõnnestub või toodab vale Vöötkoodi. Partitsioon määrab kindlaks, kus täpselt Ettevõtte Eesliide lõpeb ja Toote Viide algab. Kui see 'jaotuspunkt' on vale, saate erineva Ettevõtte Koodi kui kavatsesite.
  • Standardne GTIN (Vöötkood) identifitseerib ainult toote tüübi (nt '330ml karastusjook'). SGTIN-96 lisab Seerianumbri, andes igale purgile ainulaadse identiteedi. See võimaldab üksusetaseme jälgitavust, võimaldades teil täpselt jälgida, milline konkreetne toode müüdi, varastati või aegus.
  • Jah. Nagu ülaltoodud konverteris näidatud, sisaldab SGTIN-96 string täielikku GTIN-14. Eemaldades Seerianumbri ja päise teabe, saate perfektselt taastada algse jaemüügi vöötkoodi.
  • Päis (0x30) on GS1 poolt määratletud standardne 8-bitine eesliide. See lihtsalt ütleb ükskõik millisele RFID lugejale: "See märk on kodeeritud SGTIN-96 standardi järgi." Muud päised eksisteerivad erinevate standardite jaoks (nagu SSCC kaubaaluste jaoks või GIAI varade jaoks).