UHF RFID 技術手記:PC 值 (Protocol Control Value) 格式解析
在進行 UHF RFID 系統開發時,我們經常會讀到一串如 3000 或 3400 的十六進位數值,這就是 PC 值(Protocol Control Value)。它雖然只有短短的 16 位元,卻是讀寫器理解標籤資料的「翻譯官」。
如果你曾經遇到標籤讀取長度不對,或是無法正確辨識 EPC 編碼,那麼深入理解 PC 值的結構將會非常有幫助。
1. PC 值在哪裡?記憶體映射位置
在 EPC Gen2 標準中,標籤的記憶體被分為四個區塊(Bank)。PC 值位於 Bank 01 (EPC Bank) 的起始區域:
- Word 00: CRC-16 (循環冗餘校驗)
- Word 01: PC 值 (本文重點)
- Word 02 ~ n: EPC 編碼 (電子產品代碼)
讀寫器在執行 Inventory (盤點) 指令時,會先讀取 PC 值,以此判斷後面跟隨的 EPC 編碼到底有多長。
2. PC 值的 16 位元結構拆解
我們將這 16 個位元(Bit 15 到 Bit 0)拆解開來,每個部分都有其特定的功能:
| 位元區段 (Bits) | 縮寫 | 功能說明 |
|---|---|---|
| 15 – 11 | L | EPC 長度指示符:定義 EPC 編碼有多少個 16-bit Words。 |
| 10 | UMI | 使用者記憶體指示符:1 代表有 User Memory,0 代表無。 |
| 9 | XI | XPC 指示符:1 代表存在延伸 PC 位元,0 代表無。 |
| 8 | T | 切換位 (Toggle):在標準 EPC 應用中通常設為 0。 |
| 7 – 0 | AFI | 應用類別識別碼:用於區分不同的應用家族,預設通常為 00h。 |
3. 實戰案例分析:為什麼最常見的是 3000h?
當我們拿到一張標準的 96-bit EPC 標籤時,讀出來的 PC 值通常是 3000h。讓我們來還原它的二進位運算過程:
十六進位 3000h 轉為二進位:
00110 (Bits 15-11) | 0 (Bit 10) | 0 (Bit 9) | 0 (Bit 8) | 0000 0000 (Bits 7-0)
關鍵計算:
- EPC 長度 (L):前 5 位元是
00110。- 二進位
00110= 十進位 6。 - 代表 EPC 長度為 6 個 Words。
- 計算總位元:$6 \times 16\text{ bits} = 96\text{ bits}$。
- 二進位
- 功能位:UMI、XI、T 全為
0,表示這是一張標準的標籤,沒有額外的 User Memory 標記或延伸功能。 - AFI:為
0000 0000,代表通用格式。
4. 常見問題與調試建議
在開發 RFID 軟體(如使用 C# 或 Python 呼叫 SDK)時,若 PC 值設定錯誤,可能會導致以下問題:
- 讀取截斷:如果 PC 值設定的長度短於實際 EPC,讀寫器只會回傳部分編碼。
- 寫入失敗:在更改 EPC 編碼長度時(例如從 96-bit 改為 128-bit),必須同步修改 PC 值,否則標籤可能無法被正確盤點。
小撇步:如果你在處理具有 User Memory 的標籤,雖然 UMI 位元可以標示其存在,但大多數讀寫器仍需透過具體的 Read 指令來存取 Bank 03。
總結
PC 值是 RFID 協定中的基礎但關鍵的一環。透過圖解與位元拆解,我們可以更直觀地理解標籤的硬體特性。對於開發自動化倉儲或是資產管理系統的人來說,掌握這些細節能讓系統更加穩定。