自动化立体仓库一般是指采用几层、十几层乃至几十层高的货架储存单元货物,用相应的物料搬运设备进行货物入库和出库作业的仓库。由于这类仓库能充分利用空间储存货物,故常形象地将其称为“立体仓库”。自动化立体仓库是现代物流系统中迅速发展的一个重要组成部分,它具有节约用地、减轻劳动强度、消除差错、提高仓储自动化水平及管理水平、提高管理和操作人员素质、降低储运损耗、有效减少流动资金的积压、提高物流效率等诸多优点。与厂级计算机管理信息系统联网以及与生产线紧密相连的自动化立体仓库更是当今CIMS(计算机集成制造系统)及FMS(柔性制造系统)必不可少的关键环节[1] 。
Postgre SQL是自由的对象-关系型数据库服务器,它使用SQL语言来在执行资料的查询。这些资料通过外键联系在一起,以一系列表格的形式存在。Postgre SQL相对于竞争者的主要优势为可编程性:对于使用数据库资料的实际应用,Postgre SQL让开发与使用变得更简单[2] 。
在设计与操作维护数据库时,最关键的问题就是要确保数据能够正确地分布到数据库的表中。使用正确的数据结构,不仅有助于对数据库进行相应的读取操作,还可以简化应用程序中的其他内容(查询、窗体、报表、代码等),按照“数据库规范化”对表进行设计,其目的就是减少数据库中的数据冗余,以增加数据的一致性。
范式是在识别数据库中的数据元素、关系以及定义所需要的表和各种表中的项目这些初始工作之后的一个细化的过程。常见的范式有1NF、2NF、3NF、BCNF、4NF。但是使用的范式越多,则数据库表格的复杂度越高,有时会增加编程的难度,所以,本文设计数据库时主要考虑1NF、2NF、3NF[3,4] 。
第一范式:第一范式是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多的关系。
第二范式:第二范式是在第一范式及基础上建立起来的,它要求数据库表中的每个实例或者行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的候选。
第三范式:如果关系模式R是第二范式,且每个非主属性都不传递依赖于R的候选键,则称R是第三范式的模式。
通过对产品的需求分析,功能分析,结合数据库的范式对数据库进行设计以及优化,下面将会列举出几个关键的数据库表单,其中包括异常表,异常日志表,任务表[5] 。
1)异常表(supervise_except_t)。异常表主要是用来存储在设备运行过程中出现的异常,通过下位机对错误异常的报告,服务器端可以通过这个表单中读取出错的类型并显示,它主要的组成及类型见表1。
表1 异常表 下载原表
解释:E_num#-错误代码;
E_state#-故障状态;
E_states#-故障描述。
2)异常日志(public.supervise_exceptionlist_t)。异常日志主要是用来存储指定时间指定长度的异常,通过对异常日志的读取,可以判断异常有没有完全解决,反正系统进入不停报错的死循环。它主要的组成及类型见表2。
表2 异常日志表 下载原表
解释:El_num#-异常编码;
El_date#-异常发生的日期;
El_time#-异常发生的时间;
El_state#-异常状态,0为异常未处理,1为处理完毕;
El_plc_IP#-仓库对应的主PLCIP;
El_express#-异常备注。
3)任务表(Task_t)。这是个最为重要的一个表单,里面存储了任务类型、任务执行的下位机、发送的任务信息、任务模式等重要信息。它主要的组成及类型见表3。
表3 任务表 下载原表
解释:T_state-任务状态,0-创建,1-处理中,2-完成;
T_date-处理日期;
T_time-处理的时间;
T_mode-0x02为单一任务入库应答,0x03为拣选出库应答,0x04为盘点应答;0x05为库内移动应答,0x06为单件入库应答,0x07为单一任务出库应答;
T_origin-源货位;
T_target-目标货位;
T_plc_IP-任务对应的主PLCIP;
T_cmd-命令串;
T_IP-操作员PC的IP。
沃迪立体库系统WMS系统与WCS系统需要相互通讯,完成立体库的管理与控制。目前用TCP/IP协议来完成。
通讯协议总纲:该TCP/IP协议的指令帧命名为WDTcp Chatter指令帧,WDTcp Chatter指令帧用于在客户端(以后简称:主PLC)与服务端(WMS服务器监控端,以后简称:监控端)进行统一格式的数据通信,其基本构成为:WDTcp Chatter指令域+WDTcp Chatter数据域[6] ,具体组成见表4。
WDTcp Chatter指令域构成:命令头+命令请求模式+发送者ID+收接者ID+预留指令,其中WDTcp Chatter指令域长度为8bytes,WDTcp Chatter数据域长度:(1)主PLC发送到监控端为2bytes;(2)监控端发送到主PLC为6bytes。
表4 WDTcp Chatter指令帧 下载原表
指令详细说明:
WDTcp Chatter指令域:Head———0x01;Mode———0x01为轮询,0x02为应答;Send ID———0x01为主PLCID;Recv ID———0x FF为监控端ID;Resv1~Resv4保留全部为0x00。
WDTcp Chatter数据域:Data 1为应答标示,0x08正常命令结束应答,0x00为非应答,0x FF为出错;Data 2———为底层控制系统错误标示,0x00为正常。
WDTcp Chatter指令域:Head———0x01;Mode———0x01为正常无任务轮询应答,0x02为单一任务应答(包括入库、出库),0x03为拣选出库应答,0x04为盘点应答,0x05为库内移动应答;Send ID———0x FF为监控端ID;Recv ID———0x01为主PL-CID;Resv1~Resv4保留全部为0x00。
WDTcp Chatter数据域:Data 1、Data 2、Data 3———为源货位编号,Data 1———为列号(1-16*2),Data 2———为行号(1~2),Data 3———为层号(1~6),初始值0x00、0x00、0x00是不用的源货位编号,另外0x FF、0x00、0x00为入库输送机货位;
Data 4、Data 5、Data 6———为目标货位编号,Data 4———为列号,Data 5———为行号,Data 6———为层号,初始值0x00、0x00、0x00是不用的目标货位编号,另外0x FE、0x00、0x00为出库输送机货位。
信息交互序列图如图1所示。
为了对系统的性能进行调试,并且对通信协议处理流程进行验证,这里用单片机模拟下位机进行前期的程序调试,此下位机为一种智能控制滚刷设备,以模拟自动化立体仓库的堆垛机在巷道内的上下运动[7] 。本设备的技术方案如下:一种智能控制滚刷设备,包括通信模块、单片机控制模块、模式选择按键模块、加减速按键模块、数码管扫描显示模块、电机驱动模块、直流电机A、直流电机B、滚筒;所述通信模块与单片机控制模块的输入口相连,用来设置滚刷的运动模式;所述数码管扫描显示模块与单片机控制模块的输出口相连,单片机控制模块将采集到的速度数据传输给数码管扫描显示模块显示出来;所述电机驱动模块与单片机控制模块的输出口相连,单片机控制模块根据采集到的模式选择数据及速度数据控制电机驱动模块,电机驱动模块进而驱动直流电机A和直流电机B执行相应的模式及转速;所述直流电机A,直流电机B分别安装在滚筒内部的两侧,带动滚筒的运动,图2为智能控制滚刷设备的系统机构图[8,9] 。
下位机系统完成之后,模拟监控端对下位机进行无任务轮询(模式选择)、无任务异常(正转)、新任务处理(正反转)三种不同情况进行模拟,其模拟的流程图如图3。
本文建立了一个完整的服务器与下位机的通信协议,设计了一种对系统及通信协议进行检测的自动化机械装置,这个装置的目的是通过滚轮来模拟下位机的运动,并且通过滚轮的运动方式来模拟下位机对不同的命令的操作反应。
标签:
上一篇: 基于EIQ模型的仓库布局优化
下一篇: 自动化立体仓库管理与监控系统的分析