第一章 LLRP协议介绍
在一个RFID系统中,LLRP 协议为上层应用层(Clinent)与底层物理层(读写器设备)之间的中间接口(如图1-1),底层物理层因厂商不同而有差异,LLRP 协议将低层物理层的差异屏蔽掉,为上层应用提供统一的协议接口,使得上层应用可以无差别的对下层的读写器进行控制和管理。
LLRP 协定定义了客户端与读写器之间通讯的格式与过程,LLRP 协议通讯格式单元为数据协议单位(PDU),即报文(Messages)。
LLRP 协议三个作用:标签数据的处理、读写器装置的管理以及读写器之间的协调与同步。LLRP的主要操作为Inventory操作和存取操作,Inventory为读写器在其读取范围内辨识标签中的EPC的动作,而Access则是对标签数据进行存取的动作,包含了读取(Read)、写入(Write)、锁定(Lock)及删除(Kill)等操作。
图1-1 LLRP端点
第二章 LLRP操作与数据模式
从读写器端传送给客户端的报文包含读写器的状态回报、RF(Radio Frequency)调查以及EPC盘点 (Inventory) 和标签存取结果回报等,从客户端传给读写器端的报文包含读写器配置档的获取与设置、读写器的读取能力、管理Inventory参数设定以及标签的存取操作等。
2.1 LLRP操作
EPCglobal 所定义的LLRP协议中,定义了两种主要的LLRP 操作,(1) Reader Operator和(2) Access Operator。Reader Operator (RO) 定义读写器操作参数如Inventory 及RF调查;Access Operator (AC) 定义标签数据存取操作的参数。LLRP 有二种主要的方法来传送指令给LLRP 的读写器,一种为Reader Operation Specification (ROSpec),用来驱动LLRP 读写器作Inventory的动作,将周围的标签信息识别到读写器内,依照规格书所定义,此标签信息即是EPC;另一种为Access Operation Specification (AccessSpec),目的进行标签内各存储器的存取动作,除了可读取标签内各存储器中的信息外,还可对标签作写入的动作,主要有Read、Write、Kill、Lock等动作,但是AccessSpec不能单独存在,而是需要与ROSpec作配合,即一份AccessSpec需被包含在ROSpec中才可运作。
LLRP架构中包含许多的规则 (rules) 或规格(specifications),可让客户端预先设定读写器未来操作时的动作,例如操作的触发时机以及标签相关的运作,届时让读写器全部负责这些动作而不必动用到客户端的资源。
每一份Spec被送到LLRP读写器时,并不是马上被执行,而是先进入等待,ROSpecs、AISpecs和AccessSpecs均有各自的起始状态 (state),状态的改变则是靠触发事件 (Trigger Event),触发事件包括客户端所下的命令、特定条件或时间、特定周期以及感应器信号或GPI事件等。图2.1-1为ROSpecs的一个状态转换图实例。
图2.1-1 ROSpec状态图
ROSpec有三种状态:关闭(disabled)、未动作 (inactive)以及动作(active)状态,起始状态为关闭 (disabled) 状态,等待被读写器执行,当接收到来自客户端的启动报文后则进入未动作 (inactive) 状态;在此状态的ROSpec会经由启动触发条件 (start Trigger) 符合或是客户端发出启动报文指示,则就会将状态转换成动作 (active),但在动作状态的ROSpec也不是马上就会被执行,而是依照每份ROSpec的优先权ROSpec将被真正执行。同样的,当ROSpec的结束触发条件(StopTrigger)符合或客户端发出结束报文指示,ROSpec就会回到未动作状态,等待下一次启动条件符合。AISpecs只有两个状态:未动作 (inactive) 以及动作(active) 状态,起始状态为未动作状态,AISpecs须等待其所属的ROSpec进入动作状态,再等待被选择执行,此时AISpecs就会进入动作状态;AccessSpec有两个状态:关闭 (disabled) 和动作 (active) 状态,起始状态为关闭状态,等待客户端发出的启动报文将AccessSpec转成动作状态,接下来就等待TagSpec里面定义的条件达到时开始执行;AccessSpec由结束触发条件返回关闭状态。
整体而言,LLRP提供客户端一套可针对特定空中接口协议 (例如C-1 Gen-2)以及实际读写器操作时各种参数设定的控制模块,不光只是得到标签EPC以及读取时间,更可在标签读取过程中获取更详细的信息。LLRP允许客户端对于读写器实际操作时各项功能面完全的掌控,也可以在读取过程中提供监控上的协助。在LLRP的设计理念中,透过客户端事先将Specs设定好存在于读写器,让读写器便能依照指示执行工作,与客户端的通讯除了不会因为网络环境的瓶颈造成延迟,也不会因为大量的读写器指令与回复的报告数据将网络频宽塞满,造成客户端的困扰。LLRP的架构也让客户端可依照工作环境大小来控制多部读写器。
2.2 LLRP 数据模式
LLRP所有指令操作通过报文(message)的传递来运作。
2.2.1 LLRP 报文操作模式
客户端与读写器之间典型LLRP报文序列会有以下过程,由图2.2-1显示:
1. 客户端在操作读写器之前需先了解读写器的能力,第一个过程就是客户端查询读写器的能力,包含一般装置能力、LLRP能力及监管能力等信息,其内容可能包含天线数量、软件版本、支持何种通讯协议、读取灵敏程度、是否支持RF调查等信息。
2. 取得或设定读写器的配置内容,包含设定读写器事件通知模式、天线属性、ROSpec回复报告和AccessSpec回复报告的触发条件以及报告型态、事件和报告模式等。
3. 发送读写器操作指令,也即ROSpecs,其可能包含一或多个Inventory操作细节指令。
4. 发送读写器存取指令,也AccessSpecs,其功能是要求读写器存取标签数据。
5. 获得从读写器回应的报告。
图2.2-1 LLRP Messages and Reader Actions
2.2.2 LLRP报文与动作
LLRP 指令传输的最小单位为报文,报文可能由一组或多组参数(parameter)和场域 (field)所组合而成,在LLRP中大部分的报文是双向的,当客户端传递一组报文给读写器,读写器会回应相对应的回复报告,如当客户端传送一个GET_READER_CAPABILITIES报文,则读写器必须回复GET_READER_CAPABILITIES_RESPONSE之报文,通知客户端报文是否成功及信息回复。LLRP报文依照功能分类成下列几组:
? 读写器装置能力报文: 用于查询读写器能力的message,客户端在下达指令前必需了解读写器的能力,以及读写器支持何种指令,以便让客户端清楚如何对读写器下达指令,包含以下两种:
n GET_READER_CAPABILITIES:客户可要求读写器回复部分或全部读写器的能力报文;依照客户端的要求设定,读写器会传送GET_READER_CAPABILITIES_RESPONSE报文,回复相对应的报告内容。
? 读写器操作控制报文: 控制读写器通讯协定中Inventory操作及RF调查动作的报文,Inventory 为辨识标签的操作,包含一连串的指令,当读写器下达一个Query指令时,视为一个Inventory回合的开始;当客户端想要确认读写器设备的操作环境,例如读写器频率等,则需要进行RF调查的动作,此类报文包含以下:
n ADD_ROSPEC:客户端新增一个Reader Operation Specification(ROSpec),驱动读写器进行Inventory的操作,接收读取范围内的标签信息,此信息即为EPC。读写器会回应ADD_ROSPEC_RESPONSE报文,报文包含一组LLRPStatus Parameter,如果ADD_ROSPEC设定的参数皆正确,则会回传一个成功码,否则回传适当的错误码。
n DELETE_ROSPEC:删除由客户端指定的特定一组ROSpec或删除所有ROSpec。读写器会回应DELETE_ROSPEC_RESPONSE报文,报文包含一组LLRPStatus Parameter,如果成功删除该ROSpec,则会回传一个成功码,否则回传适当的错误码。
n START_ROSPEC:由客户端指定一组ROSpec,让此未动作状态(inactive state)的ROSpec进入启动状态 (active state)。读写器会回应START_ROSPEC_RESPONSE 报文,报文包含一组LLRPStatus Parameter,如果成功,则会回传一个成功码,否则回传适当的错误码。
n ENABLE_ROSPEC:由客户端指定一组ROSpec,让此关闭状态(disable state)的ROSpec 进入未动作状态(inactive state)。读写器会回应ENABLE_ROSPEC_RESPONSE报文,报文包含一组LLRPStatus Parameter,如果成功,则会回传一个成功码,否则回传适当的错误码。
n DISABLE_ROSPEC:由客户端指定一组ROSpec,让该ROSpec进入关闭状态(disable state),不管该ROSpec的原始状态为未动作状态(inactive state)或是动作状态(active state)。读写器会回应DISABLE_ROSPEC_RESPONSE报文,报文包含一组LLRPStatus Parameter,如果成功,则会回传一个成功码,否则回传适当的错误码。
n GET_ROSPECS:由客户端要求读写器回传所有的ROSpec在读写器中配置的状态。读写器会回应GET_ROSPECS_RESPONSE报文,如果在读写器中没有ROSpec的配置,则报文包含一组回传成功码的LLRPStatus Parameter,否则除了回应一组LLRPStatus Parameter外,还会回传一组ROSpecs的状态列表。
? 读写器存取控制报文: 客户端控制标签数据的存取操作的报文以及读写器回复的报文,如对标签进行读取(Read)、写入(Write)、锁定(Lock)及删除(Kill)等存取操作,包含以下:
n ADD_ACCESSSPEC:由客户端新增一个Access Specification(AccessSpec),此AccessSpec起始状态为关闭状态 (disable state)。读写器会回应ADD_ACCESSSPEC_RESPONSE报文,报文包含一组LLRPStatus Parameter,如果成功设定,则会回传一个成功码,否则回传适当的错误码。
n DELETE_ACCESSSPEC:由客户端指定一组AccessSpec或所有AccessSpec 进 行 删 除 动 作 。读 取 器 会 回 应DELETE_ACCESSSPEC_RESPONSE 报文,报文包含一组LLRPStatus Parameter,如果成功删除该AccessSpec,则会回传一个成功码,否则回传适当的错误码。
n ENABLE_ACCESSSPEC:由客户端指定一组AccessSpec,让该AccessSpec由离线状态 (disable state) 进入动作状态 (active state)。读写器会回应ENABLE_ACCESSSPEC_RESPONSE报文,报文包含一组LLRPStatus Parameter,如果成功,则会回传一个成功码,否则回传适当的错误码。
n DISABLE_ACCESSSPEC:由客户端指定一组AccessSpec,让该AccessSpec由动作状态(active state)进入关闭状态(disable state)。读写器会回应DISABLE_ACCESSSPEC_RESPONSE报文,报文包含一组LLRPStatus Parameter,如果成功,则会回传一个成功码,否则回传适当的错误码。
n GET_ACCESSSPECS:客户端要求读写器回传所有的AccessSpec在读取器中配置的状态。读取器会回应GET_ACCESSSPECS_RESPONSE报文,如果在读写器中没有AccessSpec的配置,则报文包含一组回传成功玛的LLRPStatus Parameter,否则除了回应一组LLRPStatus Parameter外,还会回传一组AccessSpec的状态列表。
n CLIENT_REQUEST_OP:由读写器执行ClientRequestOpSpecOpSpec 后向客户端发出此报文,这个报文挟带着TagReportData Parameter包含从标签收集的信息和OpSpecs执行的结果。由客户端回复CLIENT_REQUEST_OP_RESPONSE 报文,报文包含一组ClientRequestResponse Parameter。
? 读写器装置配置报文: 查询及设定读写器装置的配置内容以及管理关闭客户端与读写器之间连线的报文,包含以下:
n GET_READER_CONFIG:由客户端传送给读写器端,并要求需要何种配置档数据回复。读写器会回应GET_READER_CONFIG_RESPONSE报文,依照客户端的设定,回复相对应的信息。
n SET_READER_CONFIG:由客户端下达报文给读写器,该报文包含一组LLRP的参数,依照参数内容要求,读写器更改其配置档数据。读取器会回应SET_READER_CONFIG_RESPONSE报文,报文包含一组LLRPStatus Parameter,如果成功,则会回传一个成功码,否则回传适当的错误码。
n CLOSE_CONNECTION:由客户端要求关闭与读写器端的连线,正常工作环境下,客户端须尝试下达CLOSE_CONNECTION指令,读写器会回复CLOSE_CONNECTION_RESPONSE,并且关闭与客户端的连线。
? 报告报文: 这类报文主要有Report、Notifications、Keepalives这三大类,当回传报告触发条件成立时、使用者下达取得报告指令时以及通知事件发生时,读写器须回传相对应的报告到客户端,报告可能包含读写器的状态、标签数据、RF分析报告结果等信息。Keepalives主要是由读写器向客户端发送,以确保与客户端的连线,包含以下:
n GET_REPORT:由客户端向读写器要求回复报告。
n RO_ACCESS_REPORT:由读写器向客户端传送Rrader Operations及Access Operations的结果。
n READER_EVENT_NOTIFICATION:当先前客户端设定的事件发生,读写器须向客户端发出此报文,此报文会包含事件信息由ReaderEventNotificationData parameter所表示。
n KEEPALIVE:当读写器需要客户端保持连线状态时,由读写器向客户端发出。客户端需回应KEEPALIVE_ACK报文,已通知读写器客户端还在连线状态中。
n ENABLE_EVENTS_AND_REPORTS:当LLRP读写器建立连线后,由客户端向读写器发出的报文,客户端由此报文告知读写器可以移除在读写器内所保留的事件或报告报文。
? 客户延伸报文: 这个报文可以包含版本内容,客户需额外定义的数据格式以及数据内容等。
n CUSTOM_MESSAGE:此报文会携带版本定义内容由读写器发送给客户端或是由客户端发送给读写器,除了版本报文之外,CUSTOM_MESSAGE也可以携带一些客户端特定的数据。
? 错误报文: 此类报文负责定义错误事件或错误码,典型的错误在定义LLRP报文内容,此错误报文会由读写器回应给客户端。除了报文内容错误之外,如果有接收到不支持的报文类型或是一个CUSTOM_MESSAGE,在此情况下,读写器也需要回应给客户端一个错误报文。
n ERROR_MESSAGE:由读写器给客户端的报文,包含一组LLRPStatus Parameter去描述报文中的错误。
由图2.2.-2所示,当读写器接收到客户端传送的报文 (message) 之后,读写器须做相对应的回复及动作,由图简单显示其客户端与读写器之间的互动,以及各类报文的传递,例如当读写器接收到GET_READER_CAPABILITIES报文时,读写器此时应该回应读写器的能力数据,除了回应客户端的要求之外,读写器还需要时常发送KEEPALIVE报文给客户端,要求客户端保持连线以接收报文,而此时客户端需回应告知读写器,没有回应读写器将视为连线中断。客户端最后发送CLOSE_CONNECTION报文表示结束与读写器的连线。
图2.2.-2 LLRP Messages and Reader Actions
第三章 ADD_ROSPEC报文举例
实现对标签盘存操作的报文为ADD_ROSPEC,报文格式如图3-1所示。
方向:Client ==> Reader
图3-1 ADD_ROSPEC报文
图3-1所示ADD_ROSPEC报文中:
Rsvd: 3 bits,保留位,全部设为0;保留位服从规则:终端忽略保留位;读写器中判断保留位不为全0时报错;
Ver: 3 bits,LLRP的版本编码,本协议版本为LLRP v1.1;故Ver区应为2;
Message Type: 10bits;报文类型编码,具体见llrp_1_1-standard-20101013.pdf的Table5;
Message Length: 32bits,整个报文的字节数;
Message ID: 32bits,在多包报文通信中用于关联终端发出的命令/请求与读写器相应的响应;
ROSpec Parameter场域参数格式见图3-2:
图3-2 ROSpec Parameter
图3-2中ROBoundarySpec Parameter场域参数格式见图3-3:
SpecParameter场域参数为AISpec Parameter时参数格式见图3-8:
SpecParameter场域参数为RFSurveySpec Parameter 时参数格式见图3-12:
SpecParameter场域参数为LoopSpec Parameter 时参数格式见图3-14:
SpecParameter场域参数为Custom Parameter 时参数格式见图3-15:
ROReportSpec Parameter场域参数格式见图3-15:
图3-3 ROSpec Parameter
图3-3中ROSpecStar tTrigger Parameter场域参数格式见图3-4:
图3-3中ROSpecStop Trigger Parameter场域参数格式见图3-7:
图3-4 ROSpecStar tTrigger Parameter
图3-4中PeriodicTriggerValue Parameter (0 - 1)场域参数格式见图3-5:
图3-4中GPITriggerValue Parameter (0 - 1)场域参数格式见图3-6:
图3-5 PeriodicTriggerValue Parameter
图3-6 GPITriggerValue Parameter
图3-7 ROSpecStop Trigger Parameter
图3-8 AISpec Parameter
图3-8中AISpecStopTrigger Parameter场域参数格式见图3-9:
图3-8中Invento ry ParameterSpec Parameter场域参数格式见图3-11:
图3-8中Custom Parameter场域参数格式见图3-15:
图3-9 AISpecStopTrigger Parameter
图3-9中GPITriggerValue Parameter场域参数格式见图3-6:
图3-9中TagObservationTrigger Parameter场域参数格式见图3-10:
图3-10 TagObservationTrigger Parameter
图3-11 Invento ry ParameterSpec Parameter
图3-12 RFSurveySpec Parameter
图3-12中RFSurveySpec Stop Trigger Parameter场域参数格式见图3-13:
图3-13 RFSurveySpec Stop Trigger Parameter
图3-14 LoopSpec Parameter
图3-15 Custom Parameter
图3-16 ROReportSpec Parameter
原文地址:https://www.cnblogs.com/fire909090/p/9723707.html