随着图书馆向“藏借阅一体”全开架管理模式转变,原本一直困扰图书馆工作的乱架问题变得愈发严重。无论是配发书位牌、还是专设临时书架等方法,都无法很好地解决乱架问题,从而造成馆内死书不断产生,带来了文献资源的大量浪费。在RFID(RadioFrequencyIdentification)引入图书馆后,为解决图书乱架问题提供了一种全新的技术手段。现通行的主流方式是由管理员手持RFID读取器,沿书架依次扫描,根据报警提示,及时发现乱架图书。相比传统方法,在效率上有了极大提高,但仍需要管理员进行走动管理,逐架检查,要花费不少人力。本文基于RFID技术,构建了智能书架设计实例一则,以期实现对乱架图书的自动检查。
智能书架的主要设计目的是采用RFID技术,来改进图书馆现有在架、外借图书的统计工作,是以即时书库检查和乱架图书检查为主要功能的系统。它通过对书库的扫描,检查并找出乱架图书,并提供与之对应的正确架位。此外,系统还将根据图书的最新状态显示细节,即哪些在架、哪些已外借以及正在馆内使用的图书。
1硬件需求
智能书架所应用的硬件主要包括:UHF(UltraHighFrequency)电子标签、RFID读取器以及天线。系统采用C/S架构,硬件需求以馆内现有服务器为准。
1.1UHF电子标签
尽管绝大多数应用RFID技术的图书馆都采用了HF(HighFrequency)方案,但在本案中通过对HF与UHF进行对比后(表1、表2[1]),选择了后者。
从以上对比可以看出,UHF相对于HF具有标签较小,读取距离远,读取速度快,适用于远场数据传输,天线尺寸合适,电磁噪声小等优点,因此本案选择的是频率为920MHz的UHF电子标签。由于实验选择用书厚度不均,仅保证每层书架存放30册图书,因此标签一律置于图书的第二页。
1.2读取器及天线
与手持式RFID读取器不同,智能书架采用的是固定读取器,安装于书架顶部及底部。书架每层各有2根天线,分别置于两侧。具体读取器和天线的安装数量,取决于书架的层数。如果一个书架有4层,每层安装2根天线,就需要用到2个读取器和8根天线。在本案中仅设计了2层书架,只需要1个读取器和4根天线。采用成本较低的钢制天线盒,将天线盒安装于每层书架的两侧(见图1)。
在电源方面,通过测试最终确定最适用于读取器的功率为29.50dBm。
2系统设计
管理员登入:在进入系统工作界面之前,设置了管理员登陆窗口,用以限制用户。有权限的管理员键入ID及相应的密码后即可登陆系统主页。
3数据库开发
本案数据库系统采用C#和SQLSever2008开发,此处重点介绍数据库SOLSever2008的使用。
首先,创建一个名为Library的数据库,在该库中初始创建了3个永久表:Librarian、Antennalocation、Book。当书架上的天线检查到某本图书,参照天线位置图,就可以知道该书在哪个书架的第几层。
系统运行后,会创建4个新的临时表:Reader、Inventorylatest、Misplace、Correctplace。这4个表中所记录的内容都需要及时更新,因此可以随机写入和清除。系统每运行1次,这4个表都会被重新创建1次。
数据库内所有图书的初始状态均被置为使用中,当图书被借出时,其状态更新为已外借,当图书通过借还书系统归还后又将恢复使用状态,当图书被置于书架上时,状态则被更新为在架。以上状态的更改变化均通过读取器读取电子标签自动完成。
3.1书库检查
查询语句1
UpdateBook
setStatus=’Using’
fromBook.Reader
whereReader.BookID<>Book.BookIDandBook.Status<>’Borrowed’
该查询语句用于更新那些非已外借和使用中的图书状态,当读取器没有读取到图书的ID,并且图书的状态也不是已外借,则该书的状态被更新为使用中(Reader表中的图书ID与Book表不同,并且图书状态为非已外借)。其功能主要是清除之前读取到的状态。
查询语句2
updateBook
setStatus=’Available’
fromBook,Reader
whereBook.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
selectR.BookID,B.Title,A.Shelf,A.LevellintoinventorylatestfromReaderR,BookB,AntennalocationAwhereR.BookID=B.BookIDandR.Antenna=A.Antenna
查询语句4
selectTitle,Shelf,LevellintomisplacefrominventorylatestWHERENOTEXISTS(SELECTTitle,Shelf,LevellFROMBookWHEREBook.BookID=inventorylatest.BookIDandBook.Shelf=inventorylatest.ShelfandBook.Levell=inventorylatest.Levell)
查询语句5
selectA.Title,B.Shelf,B.LevellintofrommisplaceA,BookBwhereB.Title=A.Title
查询语句6
SelectA.Title,A.Shelf,A.Levell,B.Shelf,B.LevellFROMmisplaceALEFTJOINcorrectplaceBONA.Title=B.Title
4系统测试
4.1读取器读取能力测试
在本案所设的两层书架上,每层各安置30册图书,共计60册。为了验证读取器的读取能力,本案在10分钟内,每隔2分钟进行1次读取测试,一共进行了5轮测试,结果如表3。
由以上数据可以看出,读取器的读取能力还是非常可靠,总共25次测试当中24次成功读取全部图书,1次读取到59册图书,准确率达96%。
4.2书库检查准确率测试
从书架上随机取出1本图书,然后启动书库检查程序,验证其准确率。测试重复进行了10次,结果如表4。表4书库检查准确率测试
由以上数据可以看出,书库检查系统对于不在架图书的检测10全部成功,准确率达到100%。
4.3乱架检查准确率测试
本案将书架分为6个分区(见图3),每层3个分区,每个分区各放置一本乱架图书,然后分别运行人工检查和自动检查程序,测试各重复5次,结果如表5、表6。
由以上数据可以看出,人工检查在对6个分区的5次测试中,全部成功。自动检查在对6个分区的5次测试中,成功29次,失败1次,准确率达到97%。
4.4乱架检查流程测试
将自动检查定时器设置为间隔1小时,然后运行自动乱架检查程序,结果如下:
第一次:正常运行自动乱架检查程序,1小时后,检查结果自动弹出。
第二次:启动人工乱架检查程序,并记录结果,1小时后,人工乱架检查结果自动关闭,自动乱架检查结果自动弹出。
第三次:连续点击两次书库检查按钮启动按钮,1小时后,自动乱架检查结果自动弹出,此后没有第二次弹出。
由以上结果可以看出,整个系统流程运行正常,没有出现意外卡死或报错。
5结语
以上智能书架系统设计,作为一个小型的实验模型来讲基本达到了最初的设计目的,能够实现对馆藏图书的自动检查、比对,以及对乱架图书的自动报错,这也证实了基于RFID设计智能书架是完全可行的。但本案仅仅是对局部进行了小范围实验,对于动辄数千个书架的整体馆藏规模尚没有充分的验证,因此扩大实验样本后的准确率究竟有多高,还无法做出明确的估计。而且本案在整个设计过程中对于成本问题没有过多的考虑,对于推广应用中的成本核算也没有明确的预估。从这些角度来看,本案仍有待于进一步改进提高。
RFID世界网公众号
为业界提供实时、全面、高质量的RFID行业新闻、方案、案例与技术资讯与深度报道,打造全球权威的RFID产业中文信息门户!