• 频率范围使用
  • #">UHF RFID存储区简介#
  • #">UHF RFID阅读器操作[ Impinj SDK C#示例 ]#
    • #">不同阅读器只会有SDK的调用方式有所不同, 功能都相同#
      • #">防止标签进行初始化后, 其他人员恶意进行非法更新或销毁操作, 使得芯片无法在流程及应用中发挥其作用, 一般标签在初始化后需要进行加密保护或标签供应商出厂前进行加密保护, 加密保护主要包含销毁与访问密码保护。#
  • #">UHF RFID读写器读取性能影响分析#

    RFID

    频率范围使用

    1.LF(Low frequency) 低频

    频段范围: 125 KHz~135KHz(ISO18000-2) 常见应用:该频段特点是具有良好的物体穿透能力。广泛应用于进出管理、门禁管理、考勤、车辆管理、 巡更、汽车钥匙、动物晶片、固定设备等。

    2.HF(High Frequency) 高频

    频段范围: 13.56MHz(ISO18000-3) 常见应用:供应链、生产管理与产品跟踪、货架、智慧卡(身份证、医保卡与交通卡等)、运输、门禁、票>>务(门票、电子票务)、图书和旅游卡等。

    3.UHF(Ultra High Frequency) 超高频

    频段范围:860MHz~960MHz(ISO18000-6) 常见应用:国土安全、供应链、物流、移动商务、防伪、电子牌照、仓库管理、机场行李管理等

    4.MW(Micro Wave) 微波

    频段范围:2.45 GHz(ISO18000-4)与5.8GHz(ISO18000-5) 常见应用:定位跟踪、自动收费系统、移动车辆识别


    UHF RFID存储区简介#

    1.TID区

    RFID标签的唯一识别码区、TID号码唯一且不重复, 相当于芯片的 “身份证”

    2.EPC区

    存储用户的EPC信息、16进制数据。不同厂商的RFID芯片可写入的位数有所不同,常见EPC存储16/24位。

    3.User区

    存储用户的自定义数据, 不同厂商该区不一样。impinj G2则没有用户区, Philips则有28字节。

    4.Reserved区

    存储Kill Password(销毁)与Access Password(访问)密码。前两个字节销毁密码、后两个字节访问密码。

    以上4个存储区均可写保护。意味着保护后该区永不可写或非安全模式下不可写。读取保护则只对密码区设置有效, 即需要在安全模式下进行访问。TID与EPC则无法设置读取保护。


    UHF RFID阅读器操作[ Impinj SDK C#示例 ]#

    不同阅读器只会有SDK的调用方式有所不同, 功能都相同#

    1.EPC写入 [ 代码示例 ]
    常见的EPC写入、SDK需要先锁定需要操作的RFID标签。
    TID锁定: TID唯一码改写,适用于批量更新,准确
    EPC锁定: EPC可能存在重复的情况, 影响更新性能

    1. static void ProgramEpc(string tid, string currentEpc,ushort currentPcBits, string newEpc)
    2. {
    3. // 检查指定的 EPCs 是否有效长度
    4. if ((currentEpc.Length % 4 != 0) || (newEpc.Length % 4 != 0))
    5. throw new Exception("EPCs must be a multiple of 16 bits (4 hex chars)");
    6. //创建标签操作序列
    7. TagOpSequence seq = new TagOpSequence();
    8. seq.TargetTag.MemoryBank = MemoryBank.Tid;
    9. seq.TargetTag.Data = tid;
    10. TagWriteOp writeEpc = new TagWriteOp();
    11. writeEpc.Id = EPC_OP_ID;
    12. writeEpc.MemoryBank = MemoryBank.Epc;
    13. writeEpc.Data = TagData.FromHexString(newEpc);
    14. writeEpc.WordPointer = WordPointers.Epc;
    15. //标签访问密码,未加密前默认8个0
    16. writeEpc.AccessPassword = TagData.FromHexString("00000000");
    17. seq.Ops.Add(writeEpc);
    18. if (currentEpc.Length != newEpc.Length)
    19. {
    20. ushort newEpcLenWords = (ushort)(newEpc.Length / 4);
    21. ushort newPcBits = PcBits.AdjustPcBits(currentPcBits, newEpcLenWords);
    22. TagWriteOp writePc = new TagWriteOp();
    23. writePc.Id = PC_BITS_OP_ID;
    24. writePc.MemoryBank = MemoryBank.Epc;
    25. writePc.Data = TagData.FromWord(newPcBits);
    26. writePc.WordPointer = WordPointers.PcBits;
    27. //标签访问密码,未加密前默认8个0
    28. writeEpc.AccessPassword = TagData.FromHexString("00000000");
    29. seq.Ops.Add(writePc);
    30. }
    31. reader.AddOpSequence(seq); //操作序列添加进入阅读器中
    32. }

    2.EPC写保护 [代码示例]

    防止标签进行初始化后, 其他人员恶意进行非法更新或销毁操作, 使得芯片无法在流程及应用中发挥其作用, 一般标签在初始化后需要进行加密保护或标签供应商出厂前进行加密保护, 加密保护主要包含销毁与访问密码保护。#

    1. TagWriteOp writeOp = new TagWriteOp();
    2. writeOp.Id = pcid;
    3. writeOp.AccessPassword = null;
    4. writeOp.MemoryBank = MemoryBank.Reserved;
    5. writeOp.WordPointer = WordPointers.AccessPassword;
    6. writeOp.Data = TagData.FromHexString("00000000");
    7. seq.Ops.Add(writeOp);
    8. //EPC 标签锁定操作
    9. TagLockOp lockOp = new TagLockOp();
    10. lockOp.Id = pcid;
    11. lockOp.AccessPasswordLockType = TagLockState.Lock;
    12. lockOp.UserLockType = TagLockState.Lock;
    13. seq.Ops.Add(lockOp);

    3.User区写入 [ 代码示例 ]

    1. // Create a tag write operation.
    2. TagWriteOp writeOp = new TagWriteOp();
    3. // Write to user memory
    4. writeOp.MemoryBank = MemoryBank.User;
    5. // Write two (16-bit) words
    6. writeOp.Data = TagData.FromHexString("00000000");
    7. // Starting at word 0
    8. writeOp.WordPointer = 0;
    9. // Add this tag write op to the tag operation sequence.
    10. seq.Ops.Add(writeOp);
    11. // Add the tag operation sequence to the reader.
    12. // The reader supports multiple sequences.
    13. reader.AddOpSequence(seq);

    4.Kill Tag销毁标签 [ 代码示例 ]
    未加密的标签销毁密码同访问密码为8个0组成, 销毁密码的过程中, 需要单独给其设定一个销毁密码, 如已设置销毁密码则按设置后的密码, 标签一旦销毁, 则灭活无法正常读取。

    1. static void SequenceWriteTag(string epc)
    2. {
    3. TagOpSequence seq = new TagOpSequence();
    4. var target = new TargetTag();
    5. target.MemoryBank = MemoryBank.Epc;
    6. target.BitPointer = BitPointers.Epc;
    7. target.Data = epc;
    8. seq.TargetTag = target;
    9. TagWriteOp writeOp = new TagWriteOp();
    10. writeOp.AccessPassword = null;
    11. writeOp.MemoryBank = MemoryBank.Reserved;
    12. writeOp.WordPointer = WordPointers.KillPassword;
    13. writeOp.Data = TagData.FromHexString(KILL_PW);
    14. seq.Ops.Add(writeOp);
    15. // Define a tag kill operation.
    16. TagKillOp killOp = new TagKillOp();
    17. // Specify the kill password for this tag.
    18. // The kill password cannot be zero.
    19. killOp.KillPassword = TagData.FromHexString(KILL_PW);
    20. // Add this tag write op to the tag operation sequence.
    21. seq.Ops.Add(killOp);
    22. reader.AddOpSequence(seq);
    23. }

    UHF RFID读写器读取性能影响分析#

    1.阅读器功率

    直接影响到读取标签的性能, 距离。 功率↑性能↑ 功率↓性能↓

    2.阅读器频率

    不同的RFID标签,频率不同、读取设定的频段也会受到影响

    3.阅读器

    各种阅读器之间有差异,主要体现在: 读写性能、设备稳定性、可扩展、及成熟的算法等方面。

    4.天线的增益及馈线的衰减

    通常来讲、RFID天线增益上调对应的距离、性能会更好。

    5.RFID标签种类

    不同种类的RFID标签、型号、不同的厂家生产设计。标签性能都会有所不同。

    6.读取方向及环境

    标签与天线极化方向与相对角度的配合度,方向一致配合度高,读写距离就远,反之,不配合的话读距近