Mã hóa thẻ & bộ nhớ EPC
Nắm vững kiến trúc bộ nhớ thẻ và mã hóa GS1 để tích hợp chuỗi cung ứng
4 Phân vùng Bộ nhớ
Mỗi thẻ EPC Gen2 có chính xác 4 phân vùng bộ nhớ, mỗi phân vùng phục vụ một mục đích cụ thể. Hiểu rõ cấu trúc này là điều cần thiết để mã hóa, đọc và bảo mật thẻ của bạn.
Phân vùng 00 (Reserved): Chứa Mật khẩu Hủy (Kill Password) 32-bit và Mật khẩu Truy cập (Access Password) 32-bit. Giá trị mặc định là 0x00000000. Mật khẩu hủy sẽ vô hiệu hóa thẻ vĩnh viễn khi được gửi — không thể đảo ngược. Mật khẩu truy cập khóa các phân vùng bộ nhớ để ngăn chặn việc ghi dữ liệu trái phép.
Phân vùng 01 (EPC): Chứa StoredCRC (16 bit, tự động tính toán), StoredPC/Protocol Control (16 bit, cho biết độ dài EPC và khả năng của thẻ), và chính giá trị EPC — thường là 96 bit (12 byte) cho SGTIN-96. Một số thẻ hỗ trợ EPC 128 bit hoặc thậm chí 496 bit.
Phân vùng 10 (TID): Mã định danh thẻ (Tag Identifier) được lập trình tại nhà máy. Chứa mã nhà sản xuất chip, số hiệu model và số sê-ri duy nhất. Phân vùng này chỉ đọc và không bao giờ có thể thay đổi — điều này khiến nó vô cùng giá trị trong việc chống hàng giả và xác thực thẻ.
Phân vùng 11 (User): Bộ nhớ bổ sung tùy chọn. Kích thước thay đổi tùy theo chip: NXP UCODE 9 có 0 bit (không có bộ nhớ người dùng), Quanray QStar-7U có 512 bit (64 byte). Sử dụng nó cho số lô, ngày kiểm tra, ngưỡng nhiệt độ hoặc hồ sơ bảo trì. Luôn kiểm tra dung lượng khả dụng trước khi ghi.
Mã hóa SGTIN-96
SGTIN-96 là sơ đồ EPC được sử dụng rộng rãi nhất. Nó mã hóa một mã GTIN-14 (mã vạch sản phẩm của bạn) cộng với một số sê-ri duy nhất thành chính xác 96 bit (12 byte). Điều này cho phép lên đến 274 tỷ số sê-ri duy nhất cho mỗi loại sản phẩm.
Cấu trúc 96-bit: Header (8 bit, luôn là 0x30 cho SGTIN-96) → Filter (3 bit: 0=tất cả, 1=POS, 2=nguyên thùng, 3=dự phòng, 4=gói nội bộ, 5=dự phòng, 6=đơn vị tải, 7=linh kiện) → Partition (3 bit: xác định cách chia các bit giữa tiền tố công ty và tham chiếu mặt hàng) → Tiền tố Công ty (20–40 bit) → Tham chiếu Mặt hàng (4–24 bit) → Số Sê-ri (38 bit).
Giá trị Partition (0–6) xác định độ dài Tiền tố Công ty: P=0 → tiền tố 40-bit (12 chữ số), P=1 → 37-bit (11 chữ số), P=2 → 34-bit (10 chữ số), P=3 → 30-bit (9 chữ số), P=4 → 27-bit (8 chữ số), P=5 → 24-bit (7 chữ số), P=6 → 20-bit (6 chữ số). Độ dài tiền tố công ty GS1 của bạn sẽ quyết định giá trị partition nào cần sử dụng.
Sử dụng công cụ Nextwaves TDS RFID Converter tại /tools/tds-rfid-converter để mã hóa và giải mã các giá trị SGTIN-96 một cách tương tác. Nhập GTIN-14 + số sê-ri của bạn và nhận ngay mã EPC dạng hex.
┌────────┬──────┬─────┬──────────────┬──────────────┬──────────────┐
│ 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: 80614141123458Các mã hóa EPC khác
Ngoài SGTIN-96, GS1 còn định nghĩa một số sơ đồ EPC 96-bit khác cho các mã định danh chuỗi cung ứng khác nhau. Mỗi sơ đồ có byte header riêng.
Đọc & Ghi bộ nhớ thẻ
Việc đọc thẻ trong quá trình kiểm kê là thụ động — đầu đọc phát một truy vấn và các thẻ phản hồi bằng EPC của chúng từ Bank 01. Tuy nhiên, bạn cũng có thể đọc rõ ràng bất kỳ ngân hàng bộ nhớ nào bằng cách gửi lệnh READ với số ngân hàng, độ lệch từ (word offset) và số lượng từ (word count).
Việc ghi vào thẻ đòi hỏi độ chính xác cao hơn. Thẻ phải được chọn riêng lẻ (chỉ một thẻ phản hồi) và việc ghi diễn ra theo từng từ (16 bits) một. Một lần ghi EPC 96-bit đầy đủ yêu cầu 6 lần ghi từ tuần tự. Mỗi lần ghi mất 10–20ms, vì vậy việc mã hóa một thẻ duy nhất mất 60–120ms chỉ riêng cho dữ liệu EPC.
Các lỗi ghi phổ biến: Thẻ quá xa anten (cần tín hiệu mạnh hơn để ghi so với để đọc — hãy đưa thẻ vào trong khoảng cách 1m). Nhiều thẻ trong vùng phủ sóng (chọn riêng lẻ thất bại — hãy cô lập thẻ mục tiêu). Bộ nhớ thẻ bị khóa (yêu cầu mật khẩu truy cập). Xác minh ghi thất bại (thử lại, hoặc thẻ có thể bị lỗi — tỷ lệ lỗi điển hình là 1–3 trên 10.000).
Thực hành tốt nhất: Luôn xác minh sau khi ghi bằng cách đọc lại dữ liệu và so sánh. Một lệnh ghi có thể thành công nhưng làm hỏng các bit lân cận trong một số trường hợp hiếm gặp. Việc xác minh đọc-sau-khi-ghi sẽ phát hiện các vấn đề này.
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]Kiểm soát truy cập cấp thẻ
Thẻ EPC Gen2 hỗ trợ hai mật khẩu 32-bit để bảo mật. Mật khẩu truy cập (Access Password) khóa các ngân hàng bộ nhớ cụ thể — sau khi được thiết lập, ngân hàng đó yêu cầu mật khẩu trước bất kỳ thao tác đọc hoặc ghi nào. Mật khẩu hủy (Kill Password) sẽ vô hiệu hóa vĩnh viễn thẻ khi được truyền đi — một thao tác không thể đảo ngược chủ yếu được sử dụng cho quyền riêng tư của người tiêu dùng trong bán lẻ (hủy thẻ sau khi thanh toán).
Các thực hành bảo mật tốt nhất: Không bao giờ sử dụng mật khẩu mặc định toàn số không (0x00000000) trong sản xuất — nó không mang lại tính bảo mật nào. Tạo mật khẩu duy nhất cho mỗi lô thẻ hoặc sử dụng tiền tố công ty của bạn làm hạt giống. Lưu trữ mật khẩu trong hệ thống backend của bạn, không bao giờ lưu trên chính thẻ (bộ nhớ mật khẩu có thể bị đọc nếu thẻ được mở khóa). Khóa các ngân hàng mật khẩu sau khi lập trình. Cân nhắc chế độ Untraceable (có sẵn trên các chip mới hơn) giúp ẩn TID và giảm EPC, cung cấp quyền riêng tư mà không cần hủy thẻ.
Lệnh Kill là vĩnh viễn và không thể đảo ngược. Không có lệnh hoàn tác. Một khi thẻ đã bị hủy, nó không bao giờ có thể phản hồi lại bất kỳ đầu đọc nào nữa. Luôn triển khai xác minh mật khẩu hủy trong phần mềm của bạn và yêu cầu sự cho phép của quản lý trước khi thực hiện các lệnh hủy.
Tích hợp GS1 Digital Link
GS1 Digital Link kết nối các thẻ RFID vật lý với thông tin kỹ thuật số có thể truy cập qua web. Nó chuyển đổi dữ liệu EPC thành một URI tiêu chuẩn dẫn đến thông tin sản phẩm, dịch vụ xác thực, thông báo thu hồi hoặc dữ liệu về tính bền vững.
Quy trình: Thẻ EPC (ví dụ: 3034257BF7194E4000001A85) → Giải mã thành GTIN-14 (80614141123458) + Số sê-ri (6789) → Xây dựng URI: https://id.gs1.org/01/80614141123458/21/6789. URI này có thể dẫn đến trang sản phẩm, API xác thực hoặc bất kỳ dịch vụ nào được đăng ký trong mạng lưới trình phân giải GS1 Digital Link.
Ứng dụng thực tế: Quét một sản phẩm may mặc có gắn thẻ trong cửa hàng bán lẻ → URI dẫn đến hướng dẫn chăm sóc sản phẩm, hướng dẫn chọn kích cỡ và các chứng nhận bền vững. Quét một dược phẩm có gắn thẻ → URI dẫn đến xác thực (sản phẩm này có chính hãng không?), ngày hết hạn và trạng thái thu hồi. Quét một tài sản có gắn thẻ → URI dẫn đến lịch sử bảo trì và lịch kiểm tra.
Các công cụ của Nextwaves tự động tạo URI Digital Link khi giải mã bất kỳ EPC SGTIN-96 nào. Sử dụng bộ chuyển đổi TDS trực tuyến hoặc công cụ MCP decode_sgtin96 để tạo Digital Link ngay lập tức.
Tiếp tục đọc
Khám phá thêm các hướng dẫn về RFID để nâng cao kiến thức của bạn.
Bắt đầu với RFID
Hướng dẫn cho người mới bắt đầu tìm hiểu công nghệ RFID UHF — từ cách sóng vô tuyến cấp nguồn cho thẻ thụ động đến đọc dữ liệu EPC.
Trung cấpBố trí & tối ưu hóa anten
Hướng dẫn thực hành tối đa hiệu suất đọc RFID thông qua chọn và đặt anten đúng cách.
Nâng caoTriển khai đa Reader
Hướng dẫn kiến trúc triển khai nhiều đầu đọc RFID trong môi trường sản xuất.