摘要:本文主要论述AGV小车未在规定时间内完成指定任务的情况下,触发报警的实现方法。简要阐述了JAVA中进行串口及数据库链接的方法,及报警系统的设计思路。通过对仓储控制系统(WCS)的数据库进行任务轮询,来判定是否未在规定时间完成了AGV任务,来判断是否输出预警。
关键词:仓储控制系统;WCS;串口协议;AGV;JAVA;Oracle数据库
1 WCS系统简介及存在的问题
厦烟公司烟丝库区的控制管理采用的是C/S架构的仓储控制系统(WCS)。该系统应用在仓库管理,协调各种物流设备之间的运行等方面。通过任务引擎和消息引擎,优化分解任务、分析执行路径,完成对输送机、堆垛机、穿梭车、自动导引小车(AGV)等物流设备的任务分发控制。同时为上层系统的调度指令提供执行保障和优化,实现对各种设备的接口集成和智能调度。仓储控制系统下端通过设备专业LAN与执行设备相连,上端通过局域网与仓储管理系统WMS相连。如图1所示
图1
厦烟公司烟丝库WCS系统由于对接设备繁杂、任务较重,一直是物流设备故障的多发地。烟丝库区的WCS系统只针对能采集到的故障进行报警。在实际运作中,由于WCS系统崩溃及由AGV小车互锁,导致的任务超时故障没有相应的预警,常引起烟丝断料,影响到实际生产。为了满足生产需要,之前班组长期派驻人员进行现场驻点值班,效率低下。
2 AGV小车任务超时报警系统
为了提升烟丝库区任务超时故障的发现效率,开发了AGV小车任务超时报警系统。该系统由一个三色可报警信号灯和可链接WCS数据库的PC主机组成,通过JAVA程序代码轮询WCS系统的Oracle数据库来实现。
2.1 三色信号灯及主控命令
该报警系统采用万拓电气的三色信号灯。其电脑串口控制协议采用的波特为9600,主要控制命令:14H 控制绿灯工作,19H 控制红灯和蜂鸣器工作,2FH 控制红灯、黄灯、绿灯和蜂鸣器全部关闭。
2.2 JAVA程序的实现
通过JAVA程序实现对WCS系统的数据链接访问,串口的通信,及WCS时间任务的比较。编写SerPort,DataCon,WcsTimerTask,及TestDemo共4个类实现相应功能。
SerPort类:实现电脑与报警灯的串口连接。首先导入支持java串口通信的jar包:RXTXcomm.jar,而后通过CommPortIdentifier.getPortIdentifier()方法获取系统中对应的通讯端口; 使用portIdentifier.open(port, 2000)方法打开该端口及设定一个打开操作的超时时间2000毫秒。之后设置串口通讯参数:波特率9600,数据位,停止位,校验方式serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE)。最后返回serialPort.getOutputStream(),输出数据流。
DataCon类:实现与Oracle数据库的链接。首先载入Oracle的驱动包ojdbc7.jar,而后通过Class.forName("oracle.jdbc.driver.OracleDriver")建立与Oracle数据库的驱动。驱动成功后尝试创建链接con = DriverManager.getConnection(url,username,password),链接成功后,返回链接的con值。
WcsTimerTask类:实现对数据库中在执行的第一条数据的对比,在设定的时间轮询一次,通过对比数据库中第一条任务号taskno与之前存储的任务号temp是否一致,来输出数据流。若不一致说明数据库第一条任务在轮询时间内已完成,任务执行正常,不输出报警。若temp值与taskno值一致,说明在轮询的时间内,任务还未完成,存在超时可能,输出报警。创建一个order[0..2]的数组用来存储对三色报警灯的控制命令,其中order[0]存储0X14即控制绿灯工作,order[1]存储0X19即控制红灯和蜂鸣器工作,order[2]存储0X2F控制红灯、黄灯、绿灯和蜂鸣器全部关闭状态。正常不报警时输出order[0]数据流,报警时输出order[1]数据流,系统关闭时输出order[2]数据流。
TestDemo类:主程序代码主要制作电脑报警的UI设定界面,通过界面可选择是否启动报警功能,采集并设定任务超时的时间。UI代码实现用到JTattoo.jar包,界面如图2所示:
图2
“二区烟丝库报警监控启动”后,可在对应文本框设置延时时间intevalPeriod。每隔intevalPeriod时间周期调用WcsTimerTask()执行一次Oracle数据库等待执行任务的查询比较。使用"select taskno from wcs_subtaskinfo where equipmenttype = 'AGV' AND warehouseid like 'ab%' order by taskno asc"数据库查询语句,查询AGV小车的任务。
若发现数据库中的首条任务,在轮询时间内还存在,则输出ysout.write(order[2]) 控制红灯和蜂鸣器工作,实现预警。
3 系统运用后的效果
该报警系统上线后,有效地提高了任务超时的发现效率。对于AGV小车在路线上运行互锁的情况,WCS系统宕机情况,及其他无预警故障导致的任务延时,可及时发现处理,避免生产事故扩大。同时也为公司减免了现场人工驻点查看的工作量,大幅提高了工作效率。
参考文献:
[1] Java网络数据库编程及其应用[J]. 杨霞,唐颖. 数字技术与应用. 2012(09)
[2] Java核心技术精讲 [M].李新华编著.北京:清华大学出版社,2013.
[3] 数据库编程中Java设计模式的应用研究[J]. 杨振华,杨明红. 电脑迷. 2017(06)
[4] 基于分离模型体系的Java UI代理的编程方法[J]. 袁嵩,张雨. 计算机应用. 2005(S1)