2025年3月11日火曜日

UHF帯タグのチップのメーカーと型番を調べる

 



UHF帯タグのチップのメーカーと型番をリーダライタで取得してみようと思います。
リーダライタは手元にあったTAKAYAさんのUTR-SHR201を使います。

メーカー・型番を取得するためにはチップのメモリのデータ構造を把握していなければなりません。

メモリは大きく4つに分かれており、

Bank 00 RESERVED
Bank 01 EPC
Bank 10 TID
Bank 11 USER

で構成されています。
今回取得したいメーカーの情報はTIDに格納されています。

UTR-SHR201のUHF連続インベントリリードモードでTIDを読むことができます。
読み取るメモリバンクのアドレスの指定とは別にTIDを付加するかどうかのオプションがあるので、それを使ってTIDを取得しようと思います。


それではシリアル通信でリーダライタにコマンドを送ります。
TeraTermでバイナリの受信を表示する設定がうまくできなかったので、簡易なコンソールアプリでバイナリを送受信しました。

using System.IO.Ports; string portName = "COM6"; int baudRate = 115200; using (SerialPort serialPort = new SerialPort(portName, baudRate)) { serialPort.Parity = Parity.None; serialPort.DataBits = 8; serialPort.StopBits = StopBits.One; serialPort.Handshake = Handshake.None; serialPort.DtrEnable = true; serialPort.DataReceived += SerialPort_DataReceived; try { serialPort.Open(); byte[] message = [0x02, 0x00, 0x55, 0x07, 0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x7E, 0x0D]; // 連続インベントリリードでTID付加 serialPort.Write(message, 0, message.Length); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine($"エラー: {ex.Message}"); } finally { if (serialPort.IsOpen) serialPort.Close(); } } void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; int byteToRead = sp.BytesToRead; byte[] buffer = new byte[byteToRead]; sp.Read(buffer, 0, byteToRead); Console.WriteLine("received"); Console.WriteLine($"{BitConverter.ToString(buffer)}"); }


コンソール画面

E2-00-34-12-01-2F-FB-00-06-A4-95-88
この部分がTIDのバンクに該当しそうです。

メモリアドレス0Bh-13hがRFタグなので

"003"の

0 0000 00011

になります。

GS1のサイトから確認するとAlien Technologyが該当しました。
アドレスの開始は00hなので数える際に注意が必要かもしれません(ここで少し引っかかりました)。

次にRFタグ型式番号をみます。
設計者識別番号に続く14h-1Fhに格納されているようなので、"412"が型式番号になります

RFタグ型式番号は
RFIDアライアンスさんの資料から確認します。

Higgs3のTID: E2003412
Higgs4のTID: E2003414
HiggsECのTID: E2003811

これで読み取ったタグがHiggs 3であることがわかりました。


0 件のコメント:

コメントを投稿