Engineering tools · EPC · GS1

RFID Kod Konvertoru

SGTIN-96 (RFID Hex) və Məhsul kodu (GTIN) + Seriyalı Nömrə arasında konvertor aləti. Zebra, Chainway, Impinj, Nextwaves kimi standart RFID oxuyucuları ilə uyğundur. GS1 EPC Teq Məlumat Standartına əsaslanır.

RFID Konvertoru

RFID Hex (SGTIN-96) və GS1 Məhsul kodu (GTIN) + Seriyalı Nömrə arasında çevirmə.

Scheme:SGTIN-9696 bits / Header 0x30

Kod Məntiqi və Addım-addım

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

Tərtibatçı Kodu

Layihənizdə bu utility məntiqdən istifadə edin. Aşağıdan bir dil seçin.

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}

İzahat

SGTIN-96 6 hissəyə bölünmüş 96-bit ikili sətirdir:

HDRFLTPRTCMP (24)ITEM (20)SERIAL (38)
Başlıq (8 bit)Bits 0-8 (8)
001100000x30

Bunu SGTIN-96 kimi müəyyən edən standart prefiks (00110000).

Filtr (3 bit)Bits 8-11 (3)
0113

Obyekt növü (məsələn. 1 = Pərakəndə Malları). Aşağıdakı İstinad Bələdçisinə baxın.

Bölgü (3 bit)Bits 11-14 (3)
1015

Bölgü 5 o deməkdir: Şirkət Kodu 24 bit, Məhsul Kodu 20 bit tutur.

Şirkət PrefiksiBits 14-38 (24)
1000100001010111110000118935363

GS1 tərəfindən təyin edilmiş unikal şirkət kodu.

Məhsul İstinadıBits 38-58 (20)
00010111011001011101095837

Xüsusi məhsul kodunuz.

Seriyalı Nömrə (38 bit)Bits 58-96 (38)
000000000000000000000000000000000000011

Hər bir xüsusi fiziki məhsul üçün unikal identifikator.

Fiziki məhsul kodu ilə elektron məhsul kodu (EPC) arasındakı əlaqənin vizuallaşdırılması.

Məhsul kodu (GTIN) və SGTIN-96 URI arasındakı əlaqəni göstərən diaqram
  1. Addım 1: EPC sxemi üçün ikili başlıq dəyərini müəyyən edin. SGTIN-96 üçün ikili başlıq dəyəri '00110000'-dür.
  2. Addım 2: Şirkət Prefiksdəki rəqəmlərin sayına əsasən Bölgü Dəyərini seçin.
  3. Addım 3: Filtr Dəyəri, Bölgü Dəyəri, Şirkət Prefiksi, Məhsul İstinadı və Seriyalı Nömrəni ikili dəyərə çevirin.
  4. Addım 4: İkili EPC yaratmaq üçün Başlıq, Filtr, Bölgü, Şirkət Prefiksi, Məhsul İstinadı və Seriyalı Nömrə ikili dəyərlərini ardıcıl olaraq birləşdirin.

SGTIN-96 İstinad Bələdçisi

DəyərTəsvir
0Digər Bütün Növlər
Digər kateqoriyalara uymayan mallar üçün istifadə olunur. Ümumi pərakəndədə az istifadə olunur.
1Satış Məntəqəsində (POS) Ticarət Malları
Satış Məntəqəsində satılan standart istehlakçı vahidi. Nümunə: Bir şampun şüşəsi.
2Nəqliyyat üçün Tam Qutu
Bir neçə ədəd mal ehtiva edən standart göndərmə vahidi. Nümunə: 12 şampun şüşəsi olan bir karton. Loqistikada 'bir qutu' ilə 'bir ədəd' fərqini anlamaq üçün vacibdir.
3Rezerv
Gələcək istifadə üçün rezerv edilmişdir.
4Daxili Qablaşdırma Ticarət Malları Qruplaşması
Tam qutudan kiçik qruplaşma, adətən rəf nümayişi və ya idarəetmə üçün. Nümunə: Əsas qutunun içindəki büzülmüş 3-lük.
5Rezerv
Gələcək istifadə üçün rezerv edilmişdir.
6Yük Vahidi
Adətən bir neçə qutu ehtiva edən palet olan böyük loqistika vahidi.
7İstehlakçı Vahidinin Daxili Komponenti
İstehlakçı vahidinin daxilindəki xüsusi hissə. Nümunə: Oyuncağın içindəki batareya qapağı.
DəyərŞirkət PrefiksiMəhsul İstinadı
040 BIt / 12 Rəqəm4 BIt / 1 Rəqəm
137 BIt / 11 Rəqəm7 BIt / 2 Rəqəm
234 BIt / 10 Rəqəm10 BIt / 3 Rəqəm
330 BIt / 9 Rəqəm14 BIt / 4 Rəqəm
427 BIt / 8 Rəqəm17 BIt / 5 Rəqəm
524 BIt / 7 Rəqəm20 BIt / 6 Rəqəm
620 BIt / 6 Rəqəm24 BIt / 7 Rəqəm

SGTIN-96 Tez-tez Verilən Suallar

  • Bu, sistemin teqin qablaşdırma səviyyəsini bildirir. Sistem 'Qutu' teqini (Filtr 2) oxuyarsa, onun bir neçə mal ehtiva etdiyini bilir. Bu, cüt saymanın qarşısını alır (məsələn, bir qutunu yalnız bir ədəd kimi sayma) və etibarlı göndərmə təsdiqi üçün imkan verir.
  • Qutu (Filtr 2) əsas daşınma vahididir. Daxili Qablaşdırma (Filtr 4) həmin qutunun daxilindəki altbölmədir, adətən asan idarəetmə və ya nümayiş üçün (24 qutu içindəki 6-lıq kimi). Loqistika sistemləri QuTu-ları izləyir; Mağaza əməliyyatları Daxili Qablaşdırmaları səmərəli şəkildə idarə edə bilər.
  • Deşifrləmə uğursuz olacaq və ya səhv Məhsul kodu istehsal edəcək. Bölgü dəyəri Şirkət Prefiksinin harada bitdiyini və Məhsul İstinadının harada başladığını dəqiq müəyyən edir. Bu 'bölgü nöqtəsi' səhv olarsa, niyyət etdiyinizdən fərqli Şirkət Kodu alacaqsınız.
  • Standart GTIN (Məhsul kodu) yalnız məhsul növünü müəyyən edir (məsələn, '330mlqoq'). SGTIN-96 Seriyalı Nömrə əlavə edir, hər bir qaba unikal identiklik verir. Bu, item-səviyyəli izləməyə imkan verir, hansı spesifik əşyanın satıldığını, oğurlandığını və ya müddəti keçdiyini izləməyə imkan verir.
  • Bəli. Yuxarıdakı konvertorda göstərildiyi kimi, SGTIN-96 sətiri tam GTIN-14-ü ehtiva edir. Seriyalı Nömrəni və başlıq məlumatlarını çıxarmaqla, orijinal pərakəndə məhsul kodunu mükəmməl şəkildə yenidən qura bilərsiniz.
  • Başlıq (0x30) GS1 tərəfindən müəyyən edilmiş standart 8-bit prefiksdır. Bu, sadəcə hər hansı RFID oxuyucusuna deyir: 'Bu teq SGTIN-96 standartı istifadə edərək şifrələnmişdir.' Digər başlıqlar digər standartlar üçün mövcuddur (pallet üçün SSCC və ya aktivlər üçün GIAI kimi).