今天来讲Select和Mask!
先记住这张图,我们RFU6xx系列读写器的工作逻辑!

首先来看Select命令,顾名思义就是中文的“选择”。我们知道Gen2的防碰撞机制可以使得读写器能够读取大量的标签,但同时又会降低读写器的工作效率,假设一个工厂内部,商品,托盘甚至包括员工衣物上都有射频标签,这样我们想读取到一个特定标签的内容时候,不仅容易读错而且就算读取到了整个读取过程效率也会变慢。
基于此,该协议设计了Select命令。这个命令主要有两个功能,一个是对之前讲到的会话层Session进行翻转设置,另一个就是解决上面提到的对标签进行预“选择”。这样能够使读写器只让一类甚至一个标签返回数据,而让不相关的标签就算读到了也完全不响应读写器命令,从而大大提高处理效率。
我们看下Gen2协议中对于Select命令内容是怎么解释的:
我们对表格稍作解释:

Select命令描述为1010;
Target是对会话层Session的描述,指出Select命令针对的是哪个会话层(S0~S3)。这里还有个会话层是SL,是对标签状态A和B进行翻转操作;
Action是执行,其功能是是通过SL对标签状态A和B进行翻转,根据标签的数据是否匹配会有8种情况,在上图第二个表格中显示。通过Action配置参数,能够让Mactching(匹配)的标签变为A状态,Non-Matching(不匹配)的标签跳转到B状态。这样通过使用这种功能可以让符合条件的标签响应读写器命令,同时不符合的不进行任何响应。
MemBank为储存区,可以指定的储存区有,保留区(RFU)、电子编码区(EPC)、厂家编码区(TID)和用户区(User);
Pointer是指选择对比的起始地址,Length是指选择对比的数据长度,Mask即指选择对比的区域是哪些。
上述提到的功能,可以通过RFU6xx的Sopas程序界面中,找到Select Mask选项,直接进行可视化操作,非常方便使用。

这个功能到底有啥实战意义呢?
举个例子,假设场之前我们提到一个工厂的场景中出现了很多用户根本不想操作的标签,我们可以很简单的使用Select找到我们想操作的标签特征值,进而只让属于我们项目的标签进行响应;
反之再比如,如果环境中有大量的标签需要写入,且现实条件用户无法实现一个个依次写入,我们可以通过标记已写入信息的标签的某个数据位为特征值,然后筛选出来不具有特征值的标签进行写入操作,这样读写器就可以尽可能高的效率写入标签,直到无标签响应的时候则证明环境中标签完全写入。
(转载:西克)








京公网安备 11011202001138号
