智能仓储管理系统设计与实现
2019-12-11王珺吉张建宏
王珺吉,杜 燕,张建宏,鲍 俊
(1.78179部队,四川 都江堰 611830;2.68048部队,陕西 宝鸡 721013;3.66061部队,北京 100144)
0 引 言
传统仓储管理存在的问题主要表现在:(1)信息化程度低,大部分仓储管理工作仍然以手工作业为主;(2)仓储管理损耗大,装备物资误置误发现象难以避免;(3)作业效率低,盘点移库等作业耗时耗力。
RFID即射频识别技术[1],是一种非接触式的主动识别技术。它可通过射频信号自动识别目标对象并实现数据交换,供后台应用系统识别、处理。相对传统的条码技术而言,射频识别技术具有以下一些应用优势:(1)非接触识别。RFID的有效识别距离可达十余米,用户应用限制比较小;(2)存储信息容量大。电子标签可存储的数据高达上百K,并且内容可动态读写。(3)安全性高。标签上的数据可加密存储,十分适合安全应用等级较高的场合。目前,射频识别技术已广泛应用于仓储、物流、医疗、固定资产管理、图书管理、物联网等领域[2-7]。
1 总体设计
1.1 设计思想
该系统的核心思想是建立一套编码规则标准,并利用编码的唯一性来唯一标识每个物理实体。将该编码输出到RFID电子标签,并将其粘贴到物理实体上,实现电子标签与物理实体的一一对应。使用时,通过固定式或手持式RFID设备实现对电子标签的自动扫描,从而智能、动态、自动地感知管理对象,实现管理目标。
1.2 体系结构
智能仓储管理系统硬件主要由管理服务器、工作终端、手持终端、交互式查询一体机、RFID阅读器、RFID发卡器、RFID打印机、货架标签读写器与查找标签读写器组成,其系统结构如图1所示。
图1 智能仓储管理系统架构
整个系统基于IP网络构建。其中,工作终端主要用于设置与控制RFID读写设备,同时,向管理服务器转发现场扫描到的RFID标签,供服务器进行相关处理。管理服务器上运行系统管理程序,主要实现编码、上下架、出入库等仓储管理功能。手持终端主要实现移动条件下对仓储物资的扫描与管理,如上下架、移库与盘点等仓储作业。查找标签读写器,可迅速定位装备物资的物理存储位置,特别适合海量装备物资中的个体查找,同时,该读写器还可以实时监控库房的温湿度变化。货架标签读写器,可根据装备物资的上下架情况,实时动态地更新货架标签上的库存显示。
1.3 软件架构
系统软件主要以BS方式实现。整个系统由WEB应用管理系统、RFID相关功能模块、智能仓储功能模块以及数据库组成。系统软件结构如图2所示。
图2 智能仓储管理系统软件架构
RFID功能模块主要实现电子标签的打印输出、库房货架的精准管理以及电子标签的自动扫描与相关处理;智能仓储功能模块主要实现库房温湿度的实时测量、货架标签显示内容的动态更新以及装备物资的实时定位;WEB应用管理系统主要实现装备物资的编码、管理、查询、统计、报表、分析处理等管理功能。RFID与智能仓储功能模块通过WebService实现与应用管理程序的数据交换。
1.4 主要功能
1.4.1 电子标签输出
根据编码规则生成装备标识码,并利用RFID读写器将其输出到电子标签中。
1.4.2 库房货位管理
实现仓储库房与货架信息的添加、修改、删除与查询功能。
1.4.3 出入库管理
根据调拨单,接收(发放)装备物资,并建立物资与仓库、货架之间的对应关系。
1.4.4 库存盘点
主要检查仓储物资与账面数量的一致性。
1.4.5 智能仓储感知
实现对出入库与上下架物资的智能感知,降低因误置误发等操作带来的管理风险。上下架时,系统建立物资-货架-库房之间的对应关系,并动态更新货架标签显示内容。出入库时,系统自动扫描出入库物资,并根据当前任务判断该操作的合法性:对于合法操作进行日志,便于日后审计查询;对于非法操作即时报警,便于管理员采取相应管理措施。系统实时监控库房当前的温湿度,超过设定阈值时自动报警提示。
1.4.6 统计查询
借助交互式一体查询机与用户终端,实时查询、统计、分析各类物资的数质量分布、存储位置、当前状态等管理信息,查询结果通过图形、表格、报表等形式进行呈现。
2 系统实现
系统开发环境为Visual Studio C#,数据库选用SQL Server。RFID与智能仓储相关功能模块均基于硬件厂商的SDK进行二次开发,并以ActiveX控件方式实现。
2.1 电子编码
电子编码类似于居民身份证号,主要用于唯一标识每个物理实体。在仓储入库环节,系统根据装备物资的类型、密级、用途、性质等要素,自动生成系统唯一的24位字符串,将该字符串输出到RFID电子标签中即完成系统的电子编码操作。后台数据库中,根据该电子编码可详细存储每台装备实体的仓储活动记录与管理信息,同时,该编码作为管理对象的“身份标识”,将贯穿该装备的整个生命周期。
智能仓储管理系统的装备编码由24位16进制字符串组成,其中:第95-72位共3个字节作为系统保留待用;第71-69位表示装备的涉密等级;第68-55位表示装备的生产年份;第54-45位表示装备的所属单位;第44-42位表示装备的使用状态;第41-32位表示装备的规格型号;第31位-0位表示装备流水顺序号。其电子编码规则如表1所示。
表1 智能仓储管理系统电子编码规则
2.2 RFID功能模块
系统所使用电子标签分为三类:PCB抗金属标签,主要用于标识库房与货柜;ABS硬质标签,主要用于唯一标识装备物资,贯穿装备实体的整个生命周期;PET外包装标签,与ABS标签一一对应,主要用于物资的出入库与上下架作业。系统选用电子标签均由Alien 9662定制,支持ISO/IEC 18000-6C协议,EPC容量96位。RFID发卡器选用富士康CMC187,可实现各类电子标签的输出。RFID打印机选用易腾迈PX4i,主要实现批量环境下PET电子标签的输出。RFID阅读器选用富士康CMC182通道式一体机,部署在库房出入口位置,主要用于识别装备物资的出入库操作。移动手持端选用富士康CMC165C,主要实现装备物资的上下架、移库以及库存盘点操作。
CMC181读写器开发流程如图3所示。首先,设置读写器通信方式,打开读写器成功后,可发送读、写、寻卡等相关指令。系统回调函数获取到读写器扫描到的电子标签后,根据业务规则进行相应处理。CMC182、CMC187、CMC165C开发过程与CMC181极为相似,这里不再阐述。
移动手持终主要用于实现移动环境下电子标签的扫描识别,如装备物资的上架、下架、库存装备的数量盘点等仓储操作。CMC165C采用了微软的WinCE 6.0嵌入式操作系统,根据用户需求可选配2维图形码扫描、WIFI、RFID、蓝牙等功能。
微软提供的ActiveSync可实现Visual Studio开发环境到CMC165C之间的程序与数据同步。利用该程序,可以很方便地在Visual Studio开发环境下调试运行于手持终端上的应用程序。就开发过程而言,基于WinCE的手持终端开发与传统的桌面应用程序开发没有什么本质上的区别:在Visual Studio上编写相应的业务逻辑,然后将编译好的程序通过ActiveSync下载到CMC165C上执行即可。
图3 RFID读写器开发流程
智能仓储管理系统移动手持终端的RFID模块开发流程是:(1)指定RFID读写器的COM端口号(CMC165C只有串口一种工作模式);(2)连接并打开读写器;(3)执行读、写、寻卡等操作,并在对应操作的回调函数中添加需要处理的业务逻辑代码;(4)关闭读写器。
PX4i的打印控制基于.NET的SerialPort[8-9]组件实现。系统实例化SerialPort对象后,设置该对象相关串口属性。打开端口后,可通过? VERSION$命令判断与PX4i的连接是否成功。如连接正常,则通过Write()方法直接向打印机发送IPL指令,控制打印机的打印输出。PX4i IPL打印机控制指令可参见参考文献[10-11],其主要实现代码如下:
//初始化串口对象,设置串口波特率、端口号、奇偶效验位等属性
SerialPort sp=new SerialPort ();
sp.PortName="COM1";
sp.BaudRate="57600";
sp.Parity=System.IO.Ports.Parity.None;
sp.StopBits=System.IO.Ports.StopBits.None;
//打开串口
sp.Open();
//发送IPL指令:启用条码,设置字体为12号宋体,设置标签可写区域,设置标签数据格式,写数据
sp.WriteLine("BF ON");//
sp.WriteLine("BF "宋体",12");
sp.WriteLine("TAGFIELD "@ID"");
sp.WriteLine("TAGFORMAT "EPC-HEX64"");
sp.WriteLine("TAGWRITE "+""" + data + """);
//关闭串口
sp.Close();
2.3 智能仓储功能模块
查找标签属于有源电子标签[12],是工作频点在2.4 G的主动式标签,接收到查找指令后,会发出声、光提示信号。系统为每层货架配置一枚查找标签,当提交查找请求后,该货架查找标签通过蜂鸣与闪灯提示用户。查找标签读写器选用富士康CMC195N,查找标签选用富士康CMC3606,系统支持装备物资的单个与批量查找。
根据需要,系统在每个库房不同位置部署三枚温湿度感应标签。CMC195N定期读取感应标签采集到的温度与湿度,如果该读数超过系统设定值,则立即予以提示报警。
CMC195N开发流程为:声明回调函数并连接读写器;发送查寻指令搜索标签;回调函数扫描到对应标签后进行相应处理。其主要实现代码如下:
private void btnConnect_Click(object sender, EventArgs e)
{
……
fun=new API.FUN_CMC(Recv_data);
//声明回调函数
ret=API.ConnectDevice(ref m_hDev,strIP, fun);
//连接读写器
if(ret==R_OK)
{
//若连接成功执行一次查找操作,tag为查找标签ID
ret=API.FindTagOnce(m_hDev,tag,iblinktimes);
}
else
{
//连接失败
}
}
public UInt32 Recv_data(IntPtr pThread,UInt32 funid,IntPtr p,UInt32 size,UInt32 channel)
{
……
if(funid==CMD_SET_ACKPayload)
{
switch (data[0])
{
case 0x96: //查找标签
……
break;
case 0x94: //温湿度标签
……
break;
}
else if (funid==CMD_UART_MESSAGE)
{
if (data[0]!=CMD_SET_ACKPayload)
{
return 0;
}
}
return 0;
}
系统为每层货架配置一枚货架标签[13-15]:货架标签是可放置在货架上、用于替代传统纸质价格标签的电子显示装置。标签读写器通过无线信号(13.56M—2.4G)广播货架标签ID,货架标签如匹配此ID则更新电子纸显示,如当前货架存放的货品名称、种类与数量等信息。该系统货架标签读写器选用富士康CMC191,货架标签选用富士康CMC3703。
装备物资上架时,首先将装备在货架上码放整齐,然后通过手持终端读取调拨单,接着扫描PCB货柜标识,随后依次扫描装备ABS标签(或PET标签)……最后,提交系统验证。如果手持终端扫描到的装备物资与调拨单不一致,系统给予相应提示,上架操作失败;如果核对一致,系统立即更新货架标签显示内容。此时,系统已在装备实体(ABS标签或PET标签)、PCB货柜标识、ESL货架标签以及查找标签之间建立了一一对应关系。根据该对应关系,系统可很容易实现装备物资的查找、查询、统计等仓储相关工作。
ESL货架标签动态更新过程如下:当物资上下架后,系统首先根据货架标签ID计算出该层货架存放的物品名称与数量,然后利用.NET GDI+动态绘制一张表格,并将表格保存为bmp格式的文件。接着,连接CMC191读写器并发送Update命令,更新此货架标签ID号的显示,显示内容即为刚刚生成的bmp文件。
3 系统应用
智能仓储管理系统先后在笔者单位与友邻单位装备储备库房进行应用。从运行效果看,该系统设计思想新、实现技术新,将先进的信息技术成果与传统仓储管理作业相结合,有效提高了仓储作业的快捷性与准确性,基本实现了管理目标。
4 结束语
仓储管理贯穿整个装备管理链条,是实现装备物资“全寿命”管理的基础和源头。实现仓储管理节点的智能化与自动化,对于创新仓储管理模式,提高仓储管理效率具有突出的指导意义。该系统应用成熟的信息技术成果,实现了集装备管理、实体统计、智能感知、物流保障等功能于一体的智能仓储管理系统,对实现仓储管理的网络化、自动化与智能化具有较强的实践意义。