物联传媒 旗下网站
登录 注册
RFID世界网 >  技术文章  >  图书  >  正文

基于RFID图书馆智能书架设计实例

作者:韩亮 郎筠
来源:现代情报
日期:2018-01-11 15:49:05
摘要:为彻底解决图书馆乱架问题,根据RFID技术特点,利用C#和SQL Sever2008,设计了一个基于RFID的图书馆智能书架系统。该系统硬件主要由频率为920MHz的UHF电子标签、RFID读取器、天线组成,软件系统包含书库检查和乱架检查两大部分,能够实现对在架、外借图书的清点、统计工作。通过RFID读取器读取电子标签信息,并将结果与数据库进行比对,从而检查并找出乱架图书以及相对应的正确架位。经过测试,结果表明该系统运行稳定,数据读取精确度较高,查找、比对结果达到预期目的,在实际工作中既可以节省人力,又可以提高工作效率。

  随着图书馆向“藏借阅一体”全开架管理模式转变,原本一直困扰图书馆工作的乱架问题变得愈发严重。无论是配发书位牌、还是专设临时书架等方法,都无法很好地解决乱架问题,从而造成馆内死书不断产生,带来了文献资源的大量浪费。在RFID(Radio Frequency Identification)引入图书馆后,为解决图书乱架问题提供了一种全新的技术手段。现通行的主流方式是由管理员手持RFID读取器,沿书架依次扫描,根据报警提示,及时发现乱架图书。相比传统方法,在效率上有了极大提高,但仍需要管理员进行走动管理,逐架检查,要花费不少人力。本文基于RFID技术,构建了智能书架设计实例一则,以期实现对乱架图书的自动检查。

  智能书架的主要设计目的是采用RFID技术,来改进图书馆现有在架、外借图书的统计工作,是以即时书库检查和乱架图书检查为主要功能的系统。它通过对书库的扫描,检查并找出乱架图书,并提供与之对应的正确架位。此外,系统还将根据图书的最新状态显示细节,即哪些在架、哪些已外借以及正在馆内使用的图书。

  1 硬件需求

  智能书架所应用的硬件主要包括:UHF(Ultra High Frequency)电子标签、RFID读取器以及天线。系统采用C/S架构,硬件需求以馆内现有服务器为准。

  1.1 UHF电子标签

  尽管绝大多数应用RFID技术的图书馆都采用了HF(High Frequency)方案,但在本案中通过对HF与UHF进行对比后(表1、表2[1]),选择了后者。

基于RFID图书馆智能书架设计实例

  从以上对比可以看出,UHF相对于HF具有标签较小,读取距离远,读取速度快,适用于远场数据传输,天线尺寸合适,电磁噪声小等优点,因此本案选择的是频率为920MHz的UHF电子标签。由于实验选择用书厚度不均,仅保证每层书架存放30册图书,因此标签一律置于图书的第二页。

  1.2 读取器及天线

  与手持式RFID读取器不同,智能书架采用的是固定读取器,安装于书架顶部及底部。书架每层各有2根天线,分别置于两侧。具体读取器和天线的安装数量,取决于书架的层数。如果一个书架有4层,每层安装2根天线,就需要用到2个读取器和8根天线。在本案中仅设计了2层书架,只需要1个读取器和4根天线。采用成本较低的钢制天线盒,将天线盒安装于每层书架的两侧(见图1)。

基于RFID图书馆智能书架设计实例

  在电源方面,通过测试最终确定最适用于读取器的功率为29.50dBm。

  2 系统设计

  管理员登入:在进入系统工作界面之前,设置了管理员登陆窗口,用以限制用户。有权限的管理员键入ID及相应的密码后即可登陆系统主页。

  系统主要有两部分组成:书库检查和乱架检查部分。书库检查部分的功能是进行及时书目校对,并根据图书的状态显示在架、外借、使用中等细节。乱架检测部分被分为人工生成和自动生成两个小部分,其功能是显示所有乱架图书、乱架位置及其正确位置。其中自动检查会根据设定的检查时间,自动生成并弹出乱架图书页面,管理员需根据页面信息将乱架图书归位,否则该页面会一直停留,直至全部乱架图书归位。

基于RFID图书馆智能书架设计实例

  书库检查部分,系统设有启动、暂停两个按钮,用于启动、暂停、重新启动书库检查工作进程。此处需调取馆内现有书目数据库的相关数据,用于更新已外借图书状态。当按下启动键,系统自动读取电子标签,并将读取结果与书目数据库进行比对,如数据状态发生改变,则更新数据库,如果没有改动则继续读取、比对进程直至结束。最终将书目数据按在架、已外借、使用中3个状态分别列表在页面上显示。在架表示图书可外借,已外借表示图示已被借出,使用中表示图书正在馆内使用或放于馆内某处。

  系统还设置有启动和终止人工乱架检查和自动乱架检查的按钮,用于启动或终止人工或自动乱架检查进程。但不管哪种运行方式,最终结果均按照乱架图书、乱架位置、正确架位分类显示不同之处在于,人工操作可以在任意时间选择任意架次执行,而自动操作则是书库检查结束后,按照设定时间,每隔一定时间进行自动检查(本案设为1小时),并弹出检查结果,直至管理员将乱架图书归位后才能再次激活书库检查系统。

  3 数据库开发

  本案数据库系统采用C#和SQL Sever2008开发,此处重点介绍数据库SOL Sever2008的使用。

  首先,创建一个名为Library的数据库,在该库中初始创建了3个永久表:Librarian、Antennalocation、Book。当书架上的天线检查到某本图书,参照天线位置图,就可以知道该书在哪个书架的第几层。

  系统运行后,会创建4个新的临时表:Reader、Inventorylatest、Misplace、Correctplace。这4个表中所记录的内容都需要及时更新,因此可以随机写入和清除。系统每运行1次,这4个表都会被重新创建1次。

  数据库内所有图书的初始状态均被置为使用中,当图书被借出时,其状态更新为已外借,当图书通过借还书系统归还后又将恢复使用状态,当图书被置于书架上时,状态则被更新为在架。以上状态的更改变化均通过读取器读取电子标签自动完成。

  3.1 书库检查

  当系统启动书库检查后,读取器按照定时器设定的时间间隔,定时读取电子标签(本案设为10秒读取1次)。读取到的信息被存入数据库的Reader表中。以下是用于显示图书状态的查询语句:

  查询语句1

  Update Book

  set Status=’Using’

  from Book.Reader

  where Reader.BookID<>Book.BookID and Book.Status<>’Borrowed’

  该查询语句用于更新那些非已外借和使用中的图书状态,当读取器没有读取到图书的ID,并且图书的状态也不是已外借,则该书的状态被更新为使用中(Reader表中的图书ID与Book表不同,并且图书状态为非已外借)。其功能主要是清除之前读取到的状态。

  查询语句2

  update Book

  set Status=’Available’

  from Book,Reader

  where Book.BookID=Reader.BookID

  该查询语句用于更新可外借图书的状态为在架,当读取器读取到图书ID并且该ID存在于Book表中,该书的状态即被更新为在架(Reader表中的图书ID与Book表中的ID一致)。

  3.2 乱架检查

  当系统启动人工乱架检查后,系统会自行判断乱架检查进程是否是初次运行。如果是初次运行,程序将通过查询语句3,继续将书库检查中的最新数据保存至Inventorylatest表,然后执行查询语句4,将最新的数据表(Inventorylatest)与原始数据表(Book)进行比对,同时将乱架图书信息保存至Misplace表中。

  如果曾经运行过乱架检查,系统将首先清除原有Inventorylatest、Misplace、Correctplace表中内容,然后再将书库检查中的最新数据保存至Inventorylatest表,并将最新的数据表(Inventorylatest)与原始数据表(Book)进行比对,同时将乱架图书信息保存至Misplace表中。

  比对结束后,如果有乱架图书,程序将通过查询语句5创建Correctplace表,以获取乱架图书的正确位置。然后通过查询语句6,以乱架图书的乱架位置、正确位置为题头,显示人工乱架检查结果。如果没有乱架图书,系统将会显示没有乱架图书的检查结果。如果要终止人工乱架检查,只需要点击页面上的退出按钮即可。

  该部分用到的查询语句:

  查询语句3

  select R.BookID,B.Title,A.Shelf,A.Levell into inventorylatest from Reader R,Book B,Antennalocation A where R.BookID=B.BookID and R.Antenna=A.Antenna

  查询语句4

  select Title,Shelf,Levell into misplace from inventorylatest WHERE NOT EXISTS (SELECT Title,Shelf,Levell FROM Book WHERE Book.BookID=inventorylatest.BookID and Book.Shelf=inventorylatest.Shelf and Book.Levell=inventorylatest.Levell)

  查询语句5

  select A.Title,B.Shelf,B.Levell into from misplace A,Book B where B.Title=A.Title

  查询语句6

  Select A.Title,A.Shelf,A.Levell,B.Shelf,B.Levell FROM misplace A LEFT JOIN correctplace B ON A.Title=B.Title

  自动乱架检查与人工检查程序大致相同,不同之处在于需要设置一个定时器,确保自动乱架检查结果每隔一定的时间弹出1次(本案设为1小时)。此外,自动乱架检查结果页面将会保持停留状态,直至管理员将图书归位,并且点击核实按钮,系统将会再次进行乱架检查,确保是否还有乱架图书。如果没有,则关闭页面返回主页。如果有,页面将会停留,管理员此时无法进行其他操作。

  4 系统测试

  4.1 读取器读取能力测试

  在本案所设的两层书架上,每层各安置30册图书,共计60册。为了验证读取器的读取能力,本案在10分钟内,每隔2分钟进行1次读取测试,一共进行了5轮测试,结果如表3。

基于RFID图书馆智能书架设计实例

  由以上数据可以看出,读取器的读取能力还是非常可靠,总共25次测试当中24次成功读取全部图书,1次读取到59册图书,准确率达96%。

  4.2 书库检查准确率测试

  从书架上随机取出1本图书,然后启动书库检查程序,验证其准确率。测试重复进行了10次,结果如表4。表4 书库检查准确率测试

基于RFID图书馆智能书架设计实例

  由以上数据可以看出,书库检查系统对于不在架图书的检测10全部成功,准确率达到100%。

  4.3 乱架检查准确率测试

  本案将书架分为6个分区(见图3),每层3个分区,每个分区各放置一本乱架图书,然后分别运行人工检查和自动检查程序,测试各重复5次,结果如表5、表6。

基于RFID图书馆智能书架设计实例

基于RFID图书馆智能书架设计实例

基于RFID图书馆智能书架设计实例

  由以上数据可以看出,人工检查在对6个分区的5次测试中,全部成功。自动检查在对6个分区的5次测试中,成功29次,失败1次,准确率达到97%。

  4.4 乱架检查流程测试

  将自动检查定时器设置为间隔1小时,然后运行自动乱架检查程序,结果如下:

  第一次:正常运行自动乱架检查程序,1小时后,检查结果自动弹出。

  第二次:启动人工乱架检查程序,并记录结果,1小时后,人工乱架检查结果自动关闭,自动乱架检查结果自动弹出。

  第三次:连续点击两次书库检查按钮启动按钮,1小时后,自动乱架检查结果自动弹出,此后没有第二次弹出。

  由以上结果可以看出,整个系统流程运行正常,没有出现意外卡死或报错。

  5 结 语

  以上智能书架系统设计,作为一个小型的实验模型来讲基本达到了最初的设计目的,能够实现对馆藏图书的自动检查、比对,以及对乱架图书的自动报错,这也证实了基于RFID设计智能书架是完全可行的。但本案仅仅是对局部进行了小范围实验,对于动辄数千个书架的整体馆藏规模尚没有充分的验证,因此扩大实验样本后的准确率究竟有多高,还无法做出明确的估计。而且本案在整个设计过程中对于成本问题没有过多的考虑,对于推广应用中的成本核算也没有明确的预估。从这些角度来看,本案仍有待于进一步改进提高。