Lanjutan

Encoding Tag & Memori EPC

Kuasai arsitektur memori tag dan encoding GS1 untuk integrasi rantai pasok

4 Bank Memori

Setiap tag EPC Gen2 memiliki tepat 4 bank memori, yang masing-masing melayani tujuan tertentu. Memahami struktur ini sangat penting untuk melakukan encoding, membaca, dan mengamankan tag Anda.

Bank 00 (Reserved): Berisi Kill Password 32-bit dan Access Password 32-bit. Nilai default-nya adalah 0x00000000. Kill password menonaktifkan tag secara permanen saat dikirim — tidak dapat dibatalkan. Access password mengunci bank memori untuk mencegah penulisan yang tidak sah.

Bank 01 (EPC): Berisi StoredCRC (16 bit, dihitung otomatis), StoredPC/Protocol Control (16 bit, menunjukkan panjang EPC dan kemampuan tag), dan nilai EPC itu sendiri — biasanya 96 bit (12 byte) for SGTIN-96. Beberapa tag mendukung EPC 128-bit atau bahkan 496-bit.

Bank 10 (TID): Tag Identifier yang diprogram dari pabrik. Berisi kode produsen chip, nomor model, dan nomor seri yang unik. Bank ini bersifat read-only dan tidak pernah bisa diubah — menjadikannya sangat berharga untuk anti-pemalsuan dan autentikasi tag.

Bank 11 (User): Penyimpanan tambahan opsional. Ukurannya bervariasi tergantung chip: NXP UCODE 9 memiliki 0 bit (tidak ada memori user), Quanray QStar-7U memiliki 512 bit (64 byte). Gunakan untuk nomor batch, tanggal inspeksi, ambang batas suhu, atau catatan pemeliharaan. Selalu periksa kapasitas yang tersedia sebelum menulis.

Encoding SGTIN-96 — Langkah demi Langkah

SGTIN-96 adalah skema EPC yang paling banyak digunakan. Skema ini meng-encode GTIN-14 (barcode produk Anda) ditambah nomor seri unik ke dalam tepat 96 bit (12 byte). Ini memungkinkan hingga 274 miliar nomor seri unik per jenis produk.

Struktur 96-bit: Header (8 bit, selalu 0x30 untuk SGTIN-96) → Filter (3 bit: 0=semua, 1=POS, 2=full case, 3=reserved, 4=inner pack, 5=reserved, 6=unit load, 7=komponen) → Partition (3 bit: menentukan bagaimana bit dibagi antara awalan perusahaan dan referensi item) → Awalan Perusahaan (20–40 bit) → Referensi Item (4–24 bit) → Nomor Seri (38 bit).

Nilai Partition (0–6) menentukan panjang Company Prefix: P=0 → awalan 40-bit (12 digit), P=1 → 37-bit (11 digit), P=2 → 34-bit (10 digit), P=3 → 30-bit (9 digit), P=4 → 27-bit (8 digit), P=5 → 24-bit (7 digit), P=6 → 20-bit (6 digit). Panjang Company Prefix GS1 Anda menentukan nilai partition mana yang harus digunakan.

💡

Gunakan alat Nextwaves TDS RFID Converter di /tools/tds-rfid-converter untuk melakukan encode dan decode nilai SGTIN-96 secara interaktif. Masukkan GTIN-14 + serial Anda dan dapatkan hex EPC secara instan.

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

Skema EPC Lainnya

Selain SGTIN-96, GS1 menetapkan beberapa skema EPC 96-bit lainnya untuk berbagai pengidentifikasi rantai pasokan. Masing-masing memiliki header byte sendiri.

Membaca & Menulis Memori Tag

Membaca tag selama inventarisasi bersifat pasif — pembaca menyiarkan kueri dan tag merespons dengan EPC mereka dari Bank 01. Namun Anda juga dapat membaca bank memori mana pun secara eksplisit dengan mengirimkan perintah READ beserta nomor bank, word offset, dan jumlah word.

Menulis ke tag memerlukan presisi lebih tinggi. Tag harus disingulasi (hanya satu tag yang merespons), dan penulisan terjadi satu word (16 bit) sekaligus. Penulisan EPC 96-bit penuh memerlukan 6 penulisan word berurutan. Setiap penulisan memakan waktu 10–20ms, sehingga proses encoding satu tag memakan waktu 60–120ms untuk data EPC saja.

Kegagalan penulisan yang umum: Tag terlalu jauh dari antena (memerlukan sinyal yang lebih kuat untuk menulis daripada membaca — dekatkan tag dalam jarak 1m). Beberapa tag di area jangkauan (singulasi gagal — isolasi tag target). Memori tag terkunci (diperlukan kata sandi akses). Verifikasi penulisan gagal (coba lagi, atau tag mungkin cacat — tingkat cacat tipikal adalah 1–3 per 10.000).

💡

Praktik terbaik: Selalu verifikasi setelah menulis dengan membaca kembali data dan membandingkannya. Perintah tulis mungkin berhasil tetapi merusak bit yang berdekatan dalam kasus yang jarang terjadi. Verifikasi baca-setelah-tulis menangkap masalah ini.

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]

Keamanan Tag & Kata Sandi

Tag EPC Gen2 mendukung dua kata sandi 32-bit untuk keamanan. Access Password mengunci bank memori tertentu — setelah diatur, bank tersebut memerlukan kata sandi sebelum operasi baca atau tulis apa pun. Kill Password menonaktifkan tag secara permanen saat dikirimkan — sebuah operasi yang tidak dapat dibatalkan yang utamanya digunakan untuk privasi konsumen di ritel (menghancurkan tag setelah pembayaran).

Praktik terbaik keamanan: Jangan pernah menggunakan kata sandi default nol semua (0x00000000) dalam produksi — ini tidak memberikan keamanan sama sekali. Buat kata sandi unik per batch tag atau gunakan awalan perusahaan Anda sebagai seed. Simpan kata sandi di sistem backend Anda, jangan pernah di tag itu sendiri (memori kata sandi dapat dibaca jika tag tidak terkunci). Kunci bank kata sandi setelah pemrograman. Pertimbangkan mode Untraceable (tersedia pada chip yang lebih baru) yang menyembunyikan TID dan mengurangi EPC, memberikan privasi tanpa mematikan tag.

⚠️

Perintah Kill bersifat permanen dan tidak dapat dibatalkan. Tidak ada pembatalan. Setelah tag dimatikan, tag tersebut tidak akan pernah bisa merespons pembaca mana pun lagi. Selalu terapkan verifikasi kill-password di perangkat lunak Anda dan perlukan otorisasi manajer sebelum menjalankan perintah kill.