고급

태그 인코딩 및 EPC 메모리

공급망 통합을 위한 태그 메모리 아키텍처 및 GS1 인코딩 마스터

4개의 메모리 뱅크

모든 EPC Gen2 태그에는 정확히 4개의 메모리 뱅크가 있으며, 각 뱅크는 특정 목적을 수행합니다. 이 구조를 이해하는 것은 태그를 인코딩, 읽기 및 보호하는 데 필수적입니다.

Bank 00 (Reserved): 32비트 Kill Password 및 32비트 Access Password가 포함되어 있습니다. 기본값은 0x00000000입니다. Kill Password는 전송 시 태그를 영구적으로 비활성화합니다(되돌릴 수 없음). Access Password는 무단 쓰기를 방지하기 위해 메모리 뱅크를 잠급니다.

Bank 01 (EPC): StoredCRC (16비트, 자동 계산), StoredPC/Protocol Control (16비트, EPC 길이 및 태그 기능을 나타냄) 및 EPC 값 자체(일반적으로 SGTIN-96의 경우 96비트(12바이트))가 포함되어 있습니다. 일부 태그는 128비트 또는 496비트 EPC를 지원합니다.

Bank 10 (TID): 공장에서 프로그래밍된 태그 식별자. 칩 제조업체 코드, 모델 번호 및 고유 일련 번호가 포함되어 있습니다. 이 뱅크는 읽기 전용이며 변경할 수 없으므로 위조 방지 및 태그 인증에 매우 중요합니다.

Bank 11 (User): 선택적 추가 저장소. 크기는 칩에 따라 다릅니다. NXP UCODE 9는 0비트(사용자 메모리 없음)를, Quanray QStar-7U는 512비트(64바이트)를 갖습니다. 배치 번호, 검사 날짜, 온도 임계값 또는 유지 관리 기록에 사용하십시오. 쓰기 전에 항상 사용 가능한 용량을 확인하십시오.

SGTIN-96 인코딩. 단계별

SGTIN-96은 가장 널리 사용되는 EPC 방식입니다. GTIN-14(제품 바코드)와 고유한 일련 번호를 정확히 96비트(12바이트)로 인코딩합니다. 이를 통해 제품 유형당 최대 2,740억 개의 고유한 일련 번호를 사용할 수 있습니다.

96비트 구조: 헤더(8비트, SGTIN-96의 경우 항상 0x30) → 필터(3비트: 0=전체, 1=POS, 2=전체 케이스, 3=예약됨, 4=내부 팩, 5=예약됨, 6=단위 로드, 7=구성 요소) → 파티션(3비트: 회사 접두사와 항목 참조 간의 비트 분할 방식 정의) → 회사 접두사(20–40비트) → 항목 참조(4–24비트) → 일련 번호(38비트).

파티션 값(0–6)은 회사 접두사 길이를 결정합니다. P=0 → 40비트 접두사(12자리), P=1 → 37비트(11자리), P=2 → 34비트(10자리), P=3 → 30비트(9자리), P=4 → 27비트(8자리), P=5 → 24비트(7자리), P=6 → 20비트(6자리). GS1 회사 접두사 길이에 따라 사용할 파티션 값을 결정합니다.

💡

/tools/tds-rfid-converter에서 Nextwaves TDS RFID 변환기 도구를 사용하여 SGTIN-96 값을 대화식으로 인코딩하고 디코딩하세요. GTIN-14 + 일련 번호를 입력하면 16진수 EPC가 즉시 생성됩니다.

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

기타 EPC 체계

SGTIN-96 외에도 GS1은 다양한 공급망 식별자에 대한 여러 다른 96비트 EPC 체계를 정의합니다. 각 체계에는 자체 헤더 바이트가 있습니다.

태그 메모리 읽기 및 쓰기

재고 중 태그 읽기는 수동적입니다. 리더가 쿼리를 브로드캐스트하고 태그는 Bank 01에서 EPC로 응답합니다. 그러나 뱅크 번호, 워드 오프셋 및 워드 수를 사용하여 READ 명령을 보내 모든 메모리 뱅크를 명시적으로 읽을 수도 있습니다.

태그에 쓰려면 더 많은 정밀도가 필요합니다. 태그를 싱귤레이션해야 하며(하나의 태그만 응답), 쓰기는 한 번에 한 단어(16비트)씩 수행됩니다. 전체 96비트 EPC 쓰기에는 6개의 순차적 워드 쓰기가 필요합니다. 각 쓰기는 10–20ms가 소요되므로 단일 태그를 인코딩하는 데 EPC 데이터만 60–120ms가 소요됩니다.

일반적인 쓰기 실패: 안테나에서 태그가 너무 멀리 떨어져 있음(읽기보다 쓰기에 더 강력한 신호 필요. 태그를 1m 이내로 가져오세요). 필드에 여러 태그가 있음(싱귤레이션 실패. 대상 태그를 격리하세요). 태그 메모리가 잠겨 있음(액세스 비밀번호 필요). 쓰기 확인 실패(다시 시도하거나 태그에 결함이 있을 수 있음. 일반적인 결함률은 10,000개당 1~3개).

💡

모범 사례: 항상 데이터를 다시 읽고 비교하여 쓰기 후 확인하십시오. 쓰기 명령이 성공했지만 드문 경우 인접 비트가 손상될 수 있습니다. 쓰기 후 확인을 통해 이러한 문제를 포착할 수 있습니다.

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]

태그 보안 및 암호

EPC Gen2 태그는 보안을 위해 두 개의 32비트 암호를 지원합니다. 액세스 암호는 특정 메모리 뱅크를 잠급니다. 설정되면 해당 뱅크는 읽기 또는 쓰기 작업 전에 암호를 요구합니다. Kill 암호는 전송 시 태그를 영구적으로 비활성화합니다. 이는 주로 소매업에서 소비자 개인 정보 보호를 위해 사용되는 되돌릴 수 없는 작업입니다(결제 후 태그 파괴).

보안 모범 사례: 프로덕션 환경에서는 기본 0으로 채워진 암호(0x00000000)를 사용하지 마십시오. 이는 보안을 전혀 제공하지 않습니다. 태그 배치당 고유한 암호를 생성하거나 회사 접두사를 시드로 사용하십시오. 백엔드 시스템에 암호를 저장하고 태그 자체에는 저장하지 마십시오(태그가 잠금 해제되면 암호 메모리를 읽을 수 있습니다). 프로그래밍 후 암호 뱅크를 잠급니다. TID를 숨기고 EPC를 줄여 태그를 파괴하지 않고 개인 정보를 제공하는 Untraceable 모드(최신 칩에서 사용 가능)를 고려하십시오.

⚠️

Kill 명령은 영구적이며 되돌릴 수 없습니다. 실행 취소는 없습니다. 태그가 Kill되면 다시는 리더에 응답할 수 없습니다. 항상 소프트웨어에서 Kill 암호 확인을 구현하고 Kill 명령을 실행하기 전에 관리자 승인을 요구하십시오.