随着工业4.0和智能制造的大力推进,工厂对自动化提出了更高的要求。无人化仓库实现了行车无人驾驶、库区智能管理等一系列自动化水平高的自动控制系统,在国外已经有成功的案例并且取得较好的收益,国内大型钢铁厂正在大力推广无人化仓库,其发展前景良好[1]。
无人化仓库要求能够智能识别出、入库车辆,便于物流信息贯通和车辆出入管理,提高生产运行及管理效率。RTLS是一种有源RFID技术,可靠性及识别精度高。通过RTLS对运输车辆的管理,可以精准、快速地识别经过仓库门禁的车辆信息,从而快速响应门禁的控制。相比相机识别的门禁控制系统,RTLS性价比更高,方便维护,设计成本低,准确度高。
无人化仓库引入停车位推荐模型,对仓库车辆停靠进行智能管理,通过计算出车辆运输钢卷入库的最短距离,缩短行车的作业距离,提高行车的作业效率,有利于无人化仓库的高效运转,提高无人化仓库的自动化水平。
RTLS可以实时识别经过的电子标签(Tag)并且将Tag数据发送出去。该系统由Tag、实时定位系统WhereLan(定位基站)和VSS服务器组成。系统中将Tag ID与车辆编号进行绑定,带有已激活Tag的运输车辆经过仓库出入口时,被安装在仓库出入口附近的Port(信号触发器)激励,Tag开始发送Tag ID的信息[2]。WhereLan接收Tag发过来的信息,并在信息中加入时间戳后将数传送给VSS服务器。VSS服务器将处理过的信息发送到后台生产系统,UACS(无人全自动行车系统)后台系统根据VSS发来的信息识别出车辆信息和车辆经过时刻。
门禁和LED显示屏是智能门禁系统中的执行机构,用于引导和管理车辆的出入,显示车辆信息和系统推荐的停靠车位。门禁是车辆出入库的开关,支持遥控开闸、手动开闸、开关量控制多种开闸策略,支持外接地感线圈防砸,满足仓库日常生产的多种情况;LED显示屏用于出入车辆的车牌和推荐停靠车位显示,LED显示屏显示系统支持远程数据下载,实时更新显示内容。
Ice是一个面向对象的远程过程调用(RPC)框架。它允许用户将精力集中在应用程序逻辑上,并负责与低级网络编程接口的所有交互[3]。Ice采用与通用对象请求代理体系结构(common object request broker architecture,简称CORBA)同样的原理,通过建立与编程语言无关的Slice语言(specification language for ice)来描述服务的接口,实现对象接口与实践的分离。Slice定义通过Ice编译器转化为特定语言的类型定义及应用程序接口(APIs),应用这些类型定义和APIs实现应用功能及与Ice交互。Ice目前支持C++、C#、Java等语言。利用Slice用于对象接口定义与实现相分离的基础性抽象机制,可以把定义好的Ice对象映射成特定语言,可以轻松实现跨语言编程。
硬件设计采用TCP/IP网络通信,实现门禁的自动化控制。门禁系统设计原理图如图1所示。无人化系统汇聚交换机通过单模光纤连接到门禁系统交换机,由该交换机通过网线连接现场的相关设备,实现服务器与现场设备的数据交换。定位基站用来接收无线触发器发送的信号,并将数据发送给服务器。无线触发器在一定的范围内检测到有Tag信号时,就会发送数据给定位基站,服务器收到定位基站发送的数据后,后台程序对数据进行分析处理,可以发送电文给地面PLC并通过接口发送车牌号、推荐停靠车位给LED显示屏显示。地面PLC接收到后台发过来的电文后,控制门禁的打开。门禁入口的地面上设有防砸地感线圈,车辆经过时门禁不会关闭,直到车辆完全离开后门禁才关闭[4]。
软件系统设计包括前台设计和后台设计,前台设计主要是画面设计,进行门禁状态显示以及实时监控经过门禁的车辆;后台设计主要是对业务逻辑的控制设计以及停靠车位推荐模型设计。智能门禁控制系统提供数据表配置,一是记录车辆信息的车辆信息统计表,该表记录了出入仓库作业车辆的详细信息以及绑定的Tag ID号,使系统通过识别Tag ID号就能获得相应车辆的信息,包括车牌号、车辆类型等信息;二是出入门禁的历史表,该表记录了出入库区车辆的车牌、出入库类型、出入库时刻等相关信息,对仓库出入库车辆进行跟踪和记录,可以更好地对仓库车辆进行管理;三是用于停靠车位推荐的表,该表给库位推荐模型使用。
软件系统设计图如图2所示。当系统初始化完成后,前台程序通过Stoket通信监听WhereLan系统发过来的门禁Tag信息,实时对信息进行处理,根据Port是否激励可以判断是否有车辆经过及激励的南、北门禁。定位基站一旦被激励,在一定时间内会按照设定的频率发出信息,程序捕捉到门禁服务端发出的信号后,根据定位基站Port ID和Tag ID号识别经过的车辆和门禁,从而实现门禁控制。
为了避免信号的多次处理,程序根据时间段设定一个阈值,通过阈值来比较车辆是否是第1次经过,只要车辆上次系统记录经过门禁的时间与当前时间之差小于该阈值(本次系统设定为100 s),系统就不对该信号进行处理,直到差值大于该阈值时,系统才对信号进行处理,门禁打开、LED显示屏显示,并且更新车辆的出入状态和经过时刻。当系统下一次接收到该车辆信号时,该车辆的上次经过门禁的时刻与当前时间的差值又小于设定的阈值,实现对重复信号的过滤和门禁的控制。自动推荐停靠车位模型可以根据车辆信息和库区区域的划分,在适合的区域中找出距离最近的停车位。
前台通过C#编程语言搭建Stoket通信客户端,门禁的VSS服务器作为服务端,客户端与服务端通过现场搭建的以太网进行连接,并绑定指定的端口,实现C/S通信模型。前台信息交互图如图3所示。
前台客户可以独立运行,不需要依赖其他平台。本次应用开发的数据库为DB2数据库,通过IBM提供的数据访问接口,实现数据库的连接,可以获得数据库所有车辆的信息。将车辆抽象成一个类,类中包含车辆所有数据以及其他相关控制参数。通过初始化将每一辆车的信息都存储到一个字典类型里,根据车号可以在字典里获得车辆相应的类。当有车辆经过时,字典里相关的类都会及时更新,使字典里每辆车的记录都是车辆经过门禁时刻的最新状态记录。
利用Slice编译好的接口,实现前台与后台的信息交换。采用工厂方法设计模式,实现不同接口的调用[5]。根据客户端接收的数据,若需要打开门禁,则通过定义的接口发送车辆信息给后台处理,同时将车辆经过记录写入数据库。
控制系统的后台设计是通过C++建立Ice服务端,实现画面功能需要的接口,如车辆信息获取、推荐停靠车位修改等。
为了提高对库区钢卷流向的管理,无人化仓库对不同流向的钢卷指定位置摆放。智能门禁系统首先根据前台发送的车牌信息,在无人化系统查找车辆的配载情况,即可获得车辆上的钢卷配载信息,再由钢卷以及用户根据钢卷流向定义的摆放区域,可以得到这些钢卷需要摆放的实际区域,库位推荐模型根据这些信息,可以得到关于停车位的有序数组。这个数组中停车位根据距离排序,离钢卷摆放区域越远、距离越大,停车位排得越后,排在最前的优先推荐。程序将推荐出的库位与车牌信息发送给LED显示屏进行显示,通过发送电文通知PLC,由地面PLC控制门禁打开。司机根据LED显示屏提示信息将车辆停放到指定位置。
Ice服务端都是由C++语言实现的[3]。编写Slice编译指定的接口文件(*.ice)分别编译成C++、C#类型的接口文件,C++接口文件用于后台功能的实现,C#接口文件用于生成接口动态链接库(DLL),供前台画面调用。本次Ice服务地址配置格式如下:
前台应用程序通过指定的服务响应地址,能访问到相应的后台接口(Ice Proxy),后台接口根据前台接口发过来的信息,进行相关的业务逻辑处理,再将处理结果反馈给前台,实现前后台信息交互。
停靠库位推荐模型主要是以车位与库区中心的距离作为参考,距离越近,优先推荐级别越高。由于每个停靠车位和库区的形状都是对称的,且每个停靠车位的水平方向与库区的水平方向是平行的,因此,比较每个停靠车位到库区的距离等价于比较停靠车位中心线到库区中心线的距离。停靠车位与库区的示意图如图4所示。
停靠车位到库区距离
单个停车位到每个库区的距离集合
由于每个车位都会与每个库区进行距离计算,因此数组AD存在多个相同停车位的数据。而在实际应用中,笔者想得到的是对应车位唯一的一组关于距离的有序数组。通过保留数组AD中距离最小的Di,可以得到车位到指定库区的最小距离。
停车位到每个库区的最小距离集合
依次计算每个停车位到指定库区的最小距离,可以得到所有车位关于距离的有序数组
根据UACS提供的车位信息,获取当前没有停车的车位,存放在数组ND中,按照距离从小到大依次索引ED数组中的停车位,判断是否在可以推荐的数组ND中,若在,则推荐该车位;否则,索引下一个停车位比较,直到找到满意的推荐车位。
LED显示屏用来打印实时出入车辆的车牌信息以及推荐车位,通过LED显示屏的C++接口实现数据下载。当需要显示相应数据时,调用控制LED显示屏的接口,将数据下载到LED显示屏的控制器上,显示相应的车号和推荐停靠车位。
智能门禁系统在钢制品无人化仓库中的应用,不仅实现了仓库出入口门禁的自动控制,也实现了无人化仓库停靠车位的智能推荐,减少了人为对运输车辆停靠位置的引导,提高了无人化仓库的智能化水平和无人化行车的运行效率。
上一篇: 智能立体仓库在压贴板存储养生中的应用