基层供电所传统的仓库物资管理采用纸质表单登记方式,无法满足快速抢修、登记便捷、绿色环保的管理要求。本课题是对物品出入仓快速记录智能仓库管理系统的研究,仓库软件在C++Builder6.0环境下设计,采用自动指纹识别技术进行身份验证与快速登录,采用条形码作为物品标识码与主程序进行数据交互,通过SQL Server数据库进行数据储存与读写,利用C/S(客户端与服务器)网络架构在局域网内完成逻辑运算与数据显示。可实现指纹扫描登陆、物品借还、信息查询、数据修改、智能判别、密码管理、条件筛选、系统设置、数据导出等功能。
指纹具有普遍性、稳定性、唯一性、方便性和可采集性[1],这些优点使其可以得到广泛利用。自动指纹识别系统涉及图像处理、模式识别、计算机和传感器[2]。指纹识别需先经过注册,然后才能实现指纹认证,见图1。注册部分是将用户的特征数据提取形成对应ID的数据库。认证部分利用实时获得的指纹数据与数据库信息进行比较,从而确定用户身份[3]。
本课题采用Biokey算法是一种快速、准确的1:1和1:N指纹识别算法[4],可快速完成指纹的录入与识别。Active X控件是Biokey程序开发包实现工具,通过C++Builder控件来实现识别仪与仓库管理程序的连接。
指纹识别的工作流程如图2所示:首先初始化指纹仪,进入Begin Enroll子程序用于指纹登记,进入Begin Capture子程序用于指纹验证。登记指纹时按同一手指1~4次,接着通过图像识别和数据处理形成指纹模板,Enroll Count记录了指纹录入的次数,达到设定次数后触发On Enroll和On Enroll To File事件。
指纹验证时,按压手指后会触发On Capture和On Capture To File事件,此时可以调用Ver Finger或者Identification In FPCache DB进行1:1或者1:N比对。指纹录入不及格弹出提示框提醒用户重新录入指纹。
条形码由一组宽度不同、反射率不同的平行相邻线条和孔隙组成,编码有特定的规则[5]。原理是通过光学设备读取条码,将光信号转换成电信号,再将电信号放大整形,最后用译码器转换成进制代码[6]。条形码由三大块组成:静区、条码区、字符数字区,常见的条码码制有:UPC码、EAN码、JAN码、39码等[7]。由于仓库系统的物资具有不同的命名方式且Code128码具有编码范围较广、支持的字元、长度可变应用弹性大、允许双向扫描等优点,因此本项目选用其作为条形码的编码方式。
仓库管理系统可分为条形码、扫描枪、指纹仪、主程序、服务器、显示器六大模块,见图3。其中条形码和扫描枪用于标识和读取物品信息;指纹识别仪用于个体认证;主程序是系统的核心部分,负责智能识别、逻辑判断、数据分析等;服务器是储存人、物和借还记录的载体;鼠标、键盘、显示器用于控制和显示。
软件初始化阶段,通过程序自动刷新各项数据,这些数据包括物品借出次数、物品的状态(未归还、已过期、快过期等),刷新的原理是在利用SQL语言通过遍历和数组的方式查询物品最后的借出状态以及物品登记的有效时间。软件自动将各项数据通过滚动条的形式来提醒用户。
仓库管理软件应用的可视化控件有ADO控件(数据库管理)、Edit和Mask Edit(数据显示和输入)、ZKFPEng X(指纹识别)、Button(操作控制)、Main Menu(菜单栏)、Date Time Picker(日期选择)、Timer(定时器)、Combo Box(项目选择)、Quick Rep(打印报表)、label(文字显示)、Image(界面美化),对图形化控件编程完成软件功能。
身份验证模块包括客户端计算机的验证以及人的身份验证。用户在某一计算机打开仓库管理系统软件后,系统自动获取本计算机的名称以及网络IP并在后台数据库中进行搜索对比,若后台数据库中存在对应计算机信息则可登陆使用,否则本软件将自动关闭以保护内部数据。新用户进行初次验证时,系统会登记新计算机对应的单位名称和计算机名称等将其发送至后台管理人员的界面,管理人员实现验证登记。
身份验证模块的更重要的部分在于指纹识别部分,见图4。在进行指纹识别之前,系统一直等待指纹激活门禁。若有登记过的指纹进行识别,则指纹仪判断指纹质量及格且内部已登记过后传输信息唤醒管理系统,并及时记录指纹对应的个体信息。指纹识别身份验证流程将实时提取的指纹与高速缓冲器里的数据进行比较,校验比对分数和比对的次数,并返回结果。
物品出入仓登记模块是系统的关键模块,见图5,具备智能判别、安全提醒等优点。大部分时间下,软件都在定时地检测光电扫描器脉冲信号,将条形码转换为数字信息,通过程序识别条形码中包含的字符是否有非法字符并通过SQL中的select语句搜索数据库中是否存在该条码,存在则继续往下走,不存在则弹出对应的子程序。
若物品不在列表中,则利用insertinto语句将其显示出来,并查找物品对应的属性和状态,自动判断本次操作是借出还是归还。接着利用getdate()语句自动判断物品的有效日期与当前时间进行比较,得出不同的状态,若物品已过期就不能外借,快过期就弹出提示框,从而有效杜绝过期工器具外借,保证使用人员的人身安全。同时,根据物品的种类,利用数据库内的规则判断使用该物品时的注意事项以及需要配套使用的其它物品等,最后生成新的借还记录,用户确定后利用update语句实时刷新物品状态[8]。
为了方便前期物品数据录入,仓库系统管理具备自动录入模块,见图6,管理人员根据设定的条形码编码原则打印好条形码,进入系统的新物品录入窗口后,简单扫描条形码即可完成物品的录入,做到免输入自动录入数据。由于条形码是按照特定的编码原则来设计的,因此软件识别到字符串后,可立刻利用C++语言中的Sub String功能对字符串进行拆解,将不同位别对应数字的具体含义解析出来,并显示在窗口上,用户选择物品的出厂日期和上次试验日期后,程序根据对应物品的生命周期和试验周期自动算出物品的有效日期,可快速完成物资信息录入。条形码的打印使用基层班所现有的P-touch Editor标签打印软件,软件功能非常强大,功能齐全,操作简单。
利用SQL Server结构化语言,仓库管理系统可对工器具信息及借还记录进行数据条件筛选,根据物品ID、种类、所属单位、是否在库、是否过期、借出人、借出人工号进行筛选,方便用户显示。系统具备数据导出功能,可将筛选过的列表一键导出至Excel中,完成数据归纳汇总。导出功能是利用对象连接与嵌入功能(OLE)技术实现,OLE定义的连接机制和协议称为组件对象模型(COM),其中的应用程序编程接口(API)函数实现C++Builder语言与office软件的连接[9]。
为了对物品进行分类,本项目为工器具设计了具体的编码原则对物品进行区分,从而避免了工器具新增和作废带来的排序混乱的问题。制定物品条形码的11位编码原则,其中第1~2位数字代表县级供电局编号,第3~4位数字代表供电所和专业班编号,第5位数字代表仓库编号,第6~7位数字代表物品种类编号,第8~10位数字代表物品编号,第11位数字代表物品特性,这里的特性是指物品的颜色、左右、分段等。
系统采用分层分级管理,具备权限管理功能,一般员工权限最低只需完成物品出入仓借还登记。仓库管理员使用要输入不同密码,仓管人员可以使用日常简单功能,后台管理人员可进行归纳汇总统计、数据新增、修改和删除。后台数据库是根据用户的计算机名称以及IP地址并与数据库进行匹配来区分不同用户的,用户初次在某台计算机登陆时,系统会提示用户选择单位及权限,并将信息发送至后台数据库,后台管理人员核实无误后进行信息登记,设置该台计算机的权限,从而实现闭环管理。
目前流行的数据模型有层次结构模型、网状结构模型及关系结构模型[12]。为实现仓库物品入库、出库、登记、统计等功能,本软件选用SQL Server关系型数据库管理系统,用于对记录的新增、筛选、编辑、删除、排序和分组统计,涉及到的表格可分为人(职工信息表)、物(物资信息表)和关系(借还记录表),需设计多张数据表来完成系统功能,不同的表格采用不同的列作为主键。ADOConnection组件用于连接数据表,ADOQuery用于执行SQL程序,Data Source组件用于数据解析DBGrid组件实现可视化显示。为实现信息安全,系统还利用SQL Server自带的自动备份功能对数据库进行定期备份。
本系统利用C/S网络架构在局域网内完成客户端与服务器的数据交互,用户启动客户端后,客户端立即读取本机的计算机名称和IP地址,并通过SQL中的select语句在服务器数据库中搜索该计算机的信息,若已登记则确认用户权限并登陆系统;若后台数据库没有本机信息则弹出提示框,要求用户登记信息并利用insertinto语句插入至后台数据库由管理员确认。
在通信过程中,为了增强数据访问的安全性,客户端与服务器进行数据交互式采用SQL模式,该模式比Windows模式更安全。此外为了减少对现有的局域网的影响,本系统设置休眠模式,即没有数据更新时,客户端与服务器是没有数据交互的,从而减少了现有网宽的压力。
可视化层是用户直观使用系统的部分,将系统的界面设置满足实时、可靠、友好等要求。例如界面以文字提示、背景凸显、指示灯闪烁、滚动条流动等方式提示运行信息,为增强界面美观度,对界面文字的字体、颜色、阴影进行编程。利用Mask Edit控件限制用户输入字符格式,或在Edit控件的On Key Press事件中编程限制,数据无误才进行保存。
本试验以联网版的仓库管理系统V2.0为例,调试方案如下。
利用指纹识别仪进行测试,录入指纹并登陆,能够快速解除门禁自动登陆仓库管理系统,将当前登陆人的信息显示在软件借还窗口上。通过扫描物品条形码输入,能够实现快速录入物品信息,完成识别及借还登记并在数据表中显著标出,系统自动识别借还操作,实时刷新库存数据,试验结果均符合设计和使用要求。
为测试权限问题,通过登陆不同人员账号,系统弹出不同界面,确保数据不会被误删或修改。尝试将物品设置为过期,系统自动过滤出过期物品并禁止借出,起到提示及警告作用。在数据安全方面,使用加密的SQL模式,进一步提高数据安全性。
在服务器主机和客户端从机中安装SQL Server数据库,在主机中新建对应数据库,在从机中编写不同查询语句,调试结果表明从机均能在主机中读写数据。利用C++Builder数据库控件中编程实现对应功能。在不同的客户端进行物品借还操作或数据更新,在后台数据库和监控机均能实时监测到数据变动,完成N个客户端数据汇总、分类和统计等。
基层员工普遍反映填写繁琐,费时费力,而仓库管理人员后续还需对相关资料进行整理、统计、保存。本文基于C++Builder环境设计了仓库管理系统,在客户端上进行物资管理和借还记录登记,一方面方便普通员工进行借还记录登记,为紧急抢修节省前期准备时间;另一方面也节省了仓库管理人员整理表单、统计数据的时间,减少出错率。该系统还通过局域网实现了各客户端的联网功能,为后台物品台账管理和借还数据统计提供了方便,为紧急物品调配提供了条件。大量试验结果表明,仓库管理系统登记方便,通信准确,实时性强,大大提高了工作效率,对同类产品设计具有实用参考价值。
标签:
上一篇: 自动化立体仓库网络维护管理系统研究
下一篇: 基于IE的成品自动化立体仓库优化设计