第4章 基于RFID的仓储管理系统的实现

版权声明:本文出自www.54manong.com,转载请注明原地址,谢谢! https://blog.csdn.net/xiaohuanglv/article/details/89194039

4.1.需求分析

目前,在国内外应用比较广泛的仓储管理系统都采用了条形码或RFID,与条形码识别系统相比,无线射频识别技术具有很多优势,因此研究最多的还是射频识别技术在仓储中的应用,RFID技术的应用可以改善目前仓库管理的现状的不足

根据对实际仓储管理流程的分析,基于RFID的仓储管系统应满足以下几个方面的需求:

1) 实现管理系统应用的基本功能,例如用户权限管理、数据查询、统计管理等。

2) 利用RFID技术能够对库存信息自动化采集,实现库存管理的无纸化作业,提高货物查询的准确性和盘点作业的质量,加快货物出入库速度,从而增加库存中心的吞吐量,以帮助企业减低库存管理的成本。

3) 能够给管理员和用户提供及时准确的库存信息,例如在货物库存量低于安全库存量或者货物过期时,系统能够提供警示。

4.2.系统整体结构

基于RFID的仓储管理系统采用三层体系结构,如下图所示:

  1)RFID识别模块是利用RFID技术的特性,对进入识别范围内的货物进行实时的获取,它是系统的最底层,通过相关接口与上层建立连接,通过相关的通信机制,使得其上层可以获得RFID阅读器获得的信息。

  2)数据仓库建立模块主要通过建立数据库来存储RFID阅读器获得的数据信息。主要包括:

确定主题进行数据建模。

设计数据库 即设计多维数据结构关系表针对不同主题,选择不同数据模型

数据转换过程实现从源系统中抽取数据清理数据一致性格式化数据等。

  3)数据分析处理模块是用户层次,也是三层结构的最高层,是用户通过实际需要对数据仓库进行的一系列操作。

image.png

4.3.任务流程

  1)Alien RFID系统接口软件的设计与实现。

  2)基于RFID的仓储管理系统的具体实现。

  3)RFID本地复杂事件检测算法的实现。

4.4.接口软件的设计与实现

Alien RFID Reader给我们提供了一个名为AlienRFID2.dll的动态链接库,这个链接库中提供了所有用户所需的与阅读器进行通信的接口,我们根据这个库文件的的接口和另外一个与接口相关的说明文件可以方便地与Alien RFID Reader进行通信。这样就设计基于Alien RFID系统的接口软件,实现检测、连接、配置和操作Alien RFID Reader的功能。

4.4.1.Alien RFID Reader的检测与发现

Alien RFID Reader提供来两种方式来帮助主机发现Reader,一种是“Serial Interrogation”,即串行访问方式,这种方式需要在主机和阅读器之间建立一条物理链接,本文不再讨论。另一种是NetWork方式,主机与阅读器必须在一个局域网网段内,然后主机通过“Heartsbeat”机制来发现网络中的阅读器。主要代码如下:

private clsReaderMonitor mDiscovery = new clsReaderMonitor();

mDiscovery.ReaderAddedOnNetwork += new

clsReaderMonitor.ReaderAddedOnNetworkEventHandler(mDiscovery_ReaderAddedOnNetwork);

mDiscovery.StartListening();

前两行是C#中的委托事件处理机制,clsReaderMonitor类中定义了许多属性和方法,用来监测和发现Alien RFID Reader。代码第1行创建了一个clsReaderMonitor类的对象mDiscovery。代码第2,3,4行注册了clsReaderMonitor 类的一个ReaderAddedOnNetwork事件。ReaderAddedOnNetwork事件通过在网络上监听阅读器发出的“heartsbeat”信息来发现阅读器并将其加入到Reader队列中。最后一行代码是开始事件的监听。

4.4.2.Alien RFID Reader的连接与登录

我们可以通过“heartsbeat”机制发现阅读器,并获得其IP地址等信息。接下来我们可以通过TCP/IP协议来实现主机与指定IP地址的阅读器之间的连接与登录。主要代码如下:

clsReader mReader = new clsReader();

mReader.ConnectAndLogin(IP,Port,“Alien”,“password”);

mReader.Disconnect();

clsReader类定义了一些属性、方法,其中包括Alien RFID Reader的一些信息和特性。代码第1行创建了一个clsReader类的对象mReader.代码第2行调用了clsReader类的一个ConnectAndLogin方法来实现主机与指定IP地址的阅读器之间的连接与登录。ConnectAndLogin方法中四个参数分别为主机的IP地址,端口号,默认的用户名和密码。最后一行调用动态链接库中的Disconnect方法断开主机与阅读器的连接。

4.4.3.Alien RFID Reader的配置

主机与阅读器建立连接并登录后,我们可以通过命令行来配置阅读器的一些信息,比如配置其工作模式和显示数据的格式等。我们可以通过调用clsReader类中的SendReceive方法将命令结果返回到指定位置。例如:

clsReader mReader = new clsReader();

string ipaddress = mReader.SendReceive(Get IpAddress,false);

代码执行后变量ipaddress中将存放阅读器的ip地址信息。

SendReceive是动态链接库中的接口函数。

4.4.4. Autonomous Mode工作模式下的仓储管理系统

在实际的仓储管理系统中,多个阅读器同时监控着仓库里的物品,并将获得的物品信息返回给主机,这样我们不仅要使主机与阅读器之间能够进行交互式的通信,同时,我们需要主机能够接收多个阅读器广播的信息,然后实时的对这些信息进行处理。

在本文的3.1节中,我们介绍了Autonomous Mode工作模式。在这种模式下,阅读器可以自主的进行标签的读取等操作。主机上的应用程序可以设置监听事件来读取阅读器上的电子标签信息。同时这种操作模式最主要的优势在于它可以让多个阅读器同时向一个主机发送信息。这样,一个应用程序可以监听并处理局域网内多个阅读器发来的taglist信息。在完成上述操作之前,我们首先要配置一下阅读器的工作模式信息,使其能够工作在Autonomous Mode模式下,具体的命令及作用是:

AutoMode = “On”;// 使阅读器工作在AutoMode模式下

TagStreamMode = On;// 使阅读器工作在TagStreamMode模式下

TagStreamAdderss = IP:Port;// 设置主机的IP地址和端口号

然后实现操作的关键代码如下:

CAlienServer mServers = new CAlienServer(Port,IP);

mServers.ServerMessageReceived += new

CAlienServer.ServerMessageReceivedEventHandler(mServers_ServerMessageReceived);

mServers.StartListening();

其中CAlienServer类提供了一个TCP服务套接字来监听传入的连接,并接收一个或多个阅读器发送的信息。代码的第1行创建了一个CAlienServer类的对象mServers,其中的参数为主机的IP地址和端口号。代码的第2,3,4行注册了CAlienServer类的一个ServerMessageReceived事件。ServerMessageReceived事件用来接收一个或多个阅读器发来的taglist信息。代码的第5行开始事件的监听。

4.4.5.Alien RFID 系统接口软件的演示、

1)Alien RFID Reader的检测与发现,如图4-2所示。

image.png

点击“DiscoverNetworkReader”时系统会检测和发现网络中的阅读器,并显示其IP地址。

2)在Input IP Address编辑框中输入想要进行观测的阅读器的IP地址,就会进入下一个界面,首先要对Alien RFID Reader进行连接登录然后才能配置和获取信息,配置和获取信息有两种方式,一种是命令行方式如图4-3所示。

image.png

另外一种是树形菜单方式进行配置和获取信息,树形菜单界面如图4-4所示。

image.png

4-4 树形菜单方式配置和获取信息

 上述两种方法实现的功能完全相同,在进行阅读器信息配置之前首先必须将主机与指定IP地址的阅读器连接和登录,然后输入或者在树形菜单中选择命令,单击OK按钮执行,执行结果将显示在窗口中,单击Clear按钮将清空命令结果。操作完毕后,可单击Disconnect按钮,断开主机与阅读器之间的连接。

 3)上面采用的是交互式方式,一个主机只能通过命令与单个阅读器进行通信。当主机与Alien RFID Reader采用“Autonomous Mode”进行连接时,就可以以“流”的形式同时接受多个阅读器发送的信息,如图4-5所示。

image.png

单击Display按钮,程序自动检测并发现阅读器,然后一面接受多个阅读器发送来的信息,将这信息存储在一个队列中缓冲。一面又将信息从队列中读出,显示在窗体中,并清空已显示过的缓冲队列中的信息,单击Clear按钮,清空显示信息。

4.5.基于RFID的仓储管理系统的具体实现

4.5.1.基于RFID的仓储管理系统的流程设计

用户按分配的用户名进行登录,用户名和密码正确则进入系统,若登陆失败则弹出错误提示窗口。登录成功后,系统对用户的身份进行验证。用户的身份分为三类,Amin、Group_A和Group_B。Admin用户可以访问系统中的所有模块,并执行相应的操作。Group_A用户可以访问设备管理模块和出入库管理模块,并执行相应操作。Group_B用户可以访问库存管理模块和智能化模块,并执行操作。具体的流程图如图4-6.

image.png

4.5.2.基于RFID的仓储管理系统的功能模块设计

整个仓储管理系统由五个功能模块组成,分别为用户管理模块,设备管理模块,出入库管理模块,库存管理模块和智能化模块。

1) 用户管理模块

用户管理模块主要是由Amin用户来管理,可以完成创建新用户,查询用户

信息,修改用户信息,删除用户信息,用户权限设置等功能。同时,Group_A和Group_B用户可以也用户管理模块中完成修改密码的操作。

2) 设备管理模块

设备管理模块由Admin用户和Group_A用户共同来管理,主要完成设备检测

与配置以及设备区域映射的操作。

3) 出入库管理模块

出入库管理模块由Admin用户和Group_A用户共同来管理,主要包括人工编辑入库单,出库单以及出入库的自动检测。

4) 库存管理模块

  库存管理模块由Admin用户和Group_B用户共同来管理,主要完成库存盘点,

库存多样化查询以及移库等操作。

5) 智能化模块

智能化模块由Admin用户和Group_B用户共同来管理,主要包括库存报警以

及产品过期报警。

具体的系统功能模块图如图4-7.

image.png

4.5.3.基于RFID的仓储管理系统数据库设计

基于5.3.2的系统功能模块设计,我们创建了6张信息表,分别为用户信息表User,货物信息表GoodsInfo,入库信息表InStore,出库信息表OutStore,设备映射表LocationMap,标签信息表TagList。它们的具体设计如下。

 

4-8 用户信息表(User)

image.png
image.png

image.png

image.png

4.5.4.基于RFID的仓储管理系统功能模块的具体实现

由于本项目是我和李胜同学一起实现的,在编写代码阶段我们进行了明确的分工。我的任务就是实现以下三个主要的模块:登录界面与主菜单模块、用户管理模块、库存管理模块。

    下面简要介绍下这几个模块的功能和操作过程:

1)登录界面与主菜单

系统的登录界面如图4-14所示。在登录窗口中,用户需要选择输入选择自己的用户名,并输入正确的密码才能进入系统。对于不同分组的用户,拥有不同的权限。Admin用户有最高权限,并为其他用户分配权限。

image.png

登录系统后,系统的主窗口如图4-15所示。用户可以根据自己的权限操作相应的模块。

image.png

2)用户管理模块

在用户管理模块中,Adimn用户可以完成用户管理的所有操作,其他分组的

用户只可以在这个模块中完成修改密码的操作。

image.png

用户编号由系统自动生成,输入用户名密码,选择用户类型,单击确定按钮完成操作。

image.png

image.png

输入用户编号,或者单击用户所在的行选择用户编号,单击删除按钮删除该用户信息,单击取消按钮退出程序。

image.png

4-19 修改用户信息

 

 

选择或输入用户编号,然后选择要修改的内容,填入修改信息,单击修改按钮即可完成修改用户信息的操作。

image.png

按照提示输入相应的密码,单击确定按钮完成操作,修改密码成功后程序自动退出,需要用新密码重新登录系统进行其他操作。

3)库存管理模块

库存管理模块中主要完成了库存盘点,库存多样化查询和移动操作。

库存盘点主要是通过选择货物的种类及名称,可以查询出该货物在仓库中的

库存情况,及该货物的库存总量。同时,当盘点出的仓库库存量库盈或库亏时,

可以通过此模块对货物库存量进行微调。操作界面如图4-21所示。

image.png

库存多样化查询为用户提供了一个多样化的查询方式,用户可以根据物品的

任意一个或多个属性进行库存查询。具体的操作如图4-22.

image.png

移库操作主要是将仓库中的物品从当前位置移动到另一个新的位置,操作简单,例如8号货物原来在仓库1,现在移为仓库2.具体的操作如图4-23所示。

image.png


来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=1255

'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();

猜你喜欢

转载自blog.csdn.net/xiaohuanglv/article/details/89194039