钣金切割生产线上位控制系统开发

2021-01-25 07:42吴喆建
锻压装备与制造技术 2020年6期
关键词:供料出库钣金

吴喆建,田 杰,李 昂

(合肥工业大学 机械工程学院,安徽 合肥 230009)

我国制造业中的钣金制造技术已取得很大发展,但在智能化、自动化方面仍存在一定不足[1]。现仍有相当数量的钣金加工企业,其生产线上各设备之间相对独立,需要人工操控堆垛机完成出库入库工作,并手动修改板材的库存信息;需要人工监视激光切割机,在切割完毕的节点手动操控上下料机完成上下料动作;需要人工向切割机录入订单。生产线效率低下、关键信息录入繁琐且易错、信息采集不全、人力成本高。在实际生产过程中,由于板材型号迥异、订单任务错综复杂、临时插队任务时常出现。一旦人工出现错误,将导致生产节奏随之混乱,相关板材也需要全部出库清点,造成较大的经济损失。

近年来,钣金制造行业慢慢地从少品种大批量生产模式衍变为多品种小批量生产模式、从库存生产模式衍变为JIT(准时制生产或无库存生产)生产模式、从以人力为主的生产模式衍变成设备自动化为主流的生产模式[2]。为了适应这一需求,从自动化生产的角度出发,探索订单任务分解、触发的方法,采用数据库对产线信息实时存储,在不需要对现有生产线大规模改造的基础上,联动生产线上的各设备,提升生产效率[3,4]。

1 背景介绍

钣金切割生产线架构如图1所示,三个切割单元共用一套立体仓库和一个RGV出料小车形成一个完整的钣金切割生产线。

立体仓库[5]架构如图2所示,其存储有未加工板材以及临时缓存已加工板材,并提供板材出库功能。堆垛机负责将板材在各个库位之间或者库位与小车之间转运。供料小车可以在立体仓库与上下料机旁移动。入料小车负责将新的板材运至入库口。堆垛机、入料小车及三个供料小车由一个PLC统一控制。

钣金切割单元如图3所示,由以下核心设备组成:上下料机、激光切割机。上下料机配有专门的梳齿机构和吸盘,可以抓取单张板材,将之在供料小车、交换工作台以及RGV小车之间转运。RGV小车负责将加工完毕的工件运出生产线。上下料机和激光切割机分别由独立的控制器控制。RGV小车由所有的上下料机控制器联合控制。

生产过程中的基本动作有:出库、返库、上料、下料、切割。出库,即堆垛机将板材从立体仓库取出至对应出库口的供料小车,供料小车移动至上下料机旁以供上料。返库,即供料小车移回库内,堆垛机取回供料小车上的板材(或空托盘)至原库位。上料,即上下料机从供料小车取一块板材至交换工作台。下料,即上下料机从交换工作台取已加工的板材至RGV出料小车。切割,即根据事先输入进切割机的加工程序完成钣金的激光切割。一般的生产流程为:①目标板材出库;②板材上料;③工作台交换并开始切割;④切割完毕后工作台交换,已加工板材下料;⑤若已完成目标加工数量,则剩余板材返库,否则继续上料。

图1 产线整体架构

图2 立体仓库架构

图3 钣金切割单元架构

2 系统的整体架构设计

生产线的每个基本动作都已在各个PLC内部实现,但是动作之间没有联动。为了实现全自动生产,使用一台工业计算机作为上位机,联动各下位设备。

系统以工业计算机为核心,通过以太网经交换机和下位设备通信,并实时将关键信息写入数据库[6]。上位机控制立体仓库堆垛机的出库、入库动作并接收动作完成信号;控制上下料机的上料、下料动作并接收动作完成信号;控制激光切割机的工作台交换并接收交换完成信号;向激光切割机发送加工程序号。数据库中存储有各个仓位的板材信息、历史任务、排队任务、当前任务。系统自动根据当前任务和排队任务信息,结合各下位设备的实时状态,控制所有下位设备运行,实现钣金切割生产线的全自动生产。

3 钣金切割生产线上位控制系统程序设计

为了根据订单,全自动完成钣金切割,基于Windows操作系统,利用Visual Studio开发工具,使用C#语言开发了该系统。C#是一种简单的,现代的,通用的,面向对象的语言,且可以使用.Net代码库提供的各种功能[7]。

如图4所示,系统包含六个模块。任务的新建、触发、执行和恢复模块建立在数据库模块和通信模块之上,实现了以任务为核心的基本结构。系统运行时,通过数据库模块备份任务信息,通过通信模块采集关键信息并将基本动作的执行信号发送至下位设备。

图4 上位机软件结构

将一个生产订单视为一个任务,主要包含板材型号、加工数量、加工程序号。每个任务只有一种板材型号和加工程序号,并且可以分解为数个基本动作,由系统统一调配。在用户新建任务后,系统逐一触发并执行。

任务按照状态分为排队任务、当前任务和历史任务。排队任务指的是新建后添加到队列等待被触发的任务,这些任务对应的板材未上料。当前任务指的是已被触发且未完成的任务。历史任务指的是已经加工完毕的任务。

任务按照优先级可以分为普通任务、缓插队任务和急插队任务。普通任务是最低优先级的任务,只有当急插队任务和缓插队任务执行完毕后才会执行。缓插队任务是中等优先级的任务,在当前任务完成后,执行缓插队任务。急插队任务是最高优先级的任务,当前任务将被暂停,直接执行急插队任务。

3.1 任务新建模块

用户指定板材型号、加工数量、加工程序号、任务优先级以及目标切割机后,即可新建一个任务。可以将新建任务所需参数以Excel表格形式批量导入该系统,亦可在界面上直接输入参数。任务新建完成后,将被移入排队任务队列依次触发。排队任务队列在系统中以List<>的形式存在,List<>中strcut类型的元素用来表示每一个正在排队中的任务。除了用户指定的参数外,其余均由系统自动生成。

如表1所示,排队任务的类型是BasicTask,它的成员有9个,解释如下。①port:用于指明该任务对应哪一台切割机;②sn:序号;③taskNum:任务号,是对任务的唯一标识;④progNum:加工程序号;⑤goodInfo:板材信息,包括尺寸、材料、数量;⑥techName:工艺文件号;⑦amount:需求量,即需要加工的数量;⑧creationTime:任务创建的时间;⑨taskPriority:任务优先级,包括普通、急插队、缓插队。

新建任务时,普通任务被添加到排队任务队列底部,缓插队任务将被添加到排队任务顶部,而急插队任务将直接执行,不添加到排队任务队列。

3.2 任务触发模块

多个切割单元的任务触发都需要较高的实时性,而计算机中的多线程技术特别适用于实时性强的多任务系统[8]。系统中有一个单独的线程保持启动,用于循环触发任务,提升软件的运行效率。

表1 排队任务数据结构

如图5所示,该线程循环读取当前任务和排队任务队列,若当前任务不为空,则直接执行当前任务,待当前任务完成,将当前任务添加到历史任务队列,而后清空当前任务。若当前任务为空,则判断排队任务队列是否为空,若不为空,则将排队任务队列的顶端任务(即最先加入队列的任务)添加至当前任务,而后将其移出排队任务队列。如此循环往复,即可自动触发任务。

图5 任务的触发流程

当前任务的数据结构含有BasicTask成员,拥有上文排队任务的所有信息。除此之外添加了以下成员:①finishCount:已加工数量;②timeS:开始加工时间;③state:状态,包括正在进行、暂停;④order:次序,即前序、后序或本次任务;⑤isExisting:指示此任务是否存在;⑥processedNum:已加工板材序号;⑦unprocessedNum:未加工板材序号;⑧processingNum:正在加工板材序号。只有存在对应板材的时候,⑥⑦⑧才不为零,否则为零。由此可以用来判定交换工作台上的板材加工与否。例如,若unprocessedNum=0,processingNum=10,processedNum=9,即说明工作台上有两张板材,一张是正在加工的第10块板材,另一张是已加工的第9块板材。

3.3 任务执行模块

每当任务被触发,系统依据合产线的关键信息,将任务分解至各个基本动作,逐一进行。任务采用实时分解的原则,根据每个时刻的关键信息,判断当前应执行的基本动作。

关键信息有:供料小车上板材信息、交换工作台上板材信息、切割机内板材信息、堆垛机可用信号、上下料机可用信号。各位置的板材信息全部写入数据库,以便恢复。

上位机检测到出库完成信号后,联合供料小车上的对射开关判定小车上有料,并记录板材信息。若是返库完成,联合对射开关判定供料小车无料。上位机检测到上料完成信号后,联合供料小车上的板材信息,判定交换工作台上的板材是未加工的板材,并记录板材信息;上位机检测到交换工作台交换完成信号后,联合当前任务信息,即可判定交换工作台上的板材是已加工板材,并记录板材信息。根据当前任务,即可确定切割机内正在加工的板材信息。可用信号,即代表该设备是否可以执行动作,若是设备故障或正在执行动作,则可用信号为FALSE。该信号由下位设备提供,通过MODBUS协议[9]直接读取。

为了提高产线的整体效率,需要根据返库及出库动作所需的时间总和来提前进行板材需求判断,即比较当前已出库的板材和下个任务所需的板材是否相同。若不同,则需要将当前已出库的板材返回对应库位,下个订单所需的板材出库。

上下料机任务执行流程如图6所示,待出库完成后,执行上料动作,上料完成后上位机向激光切割机发送上料完成信号。激光切割机空闲时收到上料完成信号后会自动将工作台交换并开始切割。激光切割机工作台交换后,若有加工完毕的板材,则执行下料任务,若无,则继续上料。激光切割机加工完毕后,工作台交换,发送命令执行下料任务。下料任务执行完毕后,再次上料,以此类推。若是当天最后一块板材加工完毕,则不执行上料,所有订单生产完毕。

图6 上下料机任务执行流程图

3.4 任务恢复模块

某些情况下可能会需要恢复任务信息,如:程序异常崩溃、外部电源突然中断等。为了可以随时恢复任务信息,只要排队任务列表或当前任务被更新,系统都会对应地写入数据库中,保持数据库和系统内存一致。使得系统可以在需要的时候从数据库中读取任务信息,恢复当前任务以及排队任务队列。

3.5 数据库模块

MySQL数据库中存储有各个仓位的板材信息、出入库记录、设备运行记录以及各类任务信息。使用MySQL数据库进行数据的储存和关系型管理,重点是使用了RDBMS(关系型数据库管理系统)的功能,该功能不仅能够对繁杂种类的数据进行十分灵活的管理,也可以通过其中的表很容易地定位出需要提取的数据[10]。

3.6 通信模块

通信模块实现了设备端和监控端之间网络层和传输层的互联互通,基于多线程在网络层和传输层打通了设备端和监控端,设计Socket[11]通信接口实现了IP协议和TCP协议通信的过程[9]。将监控端作为客户端,设备端作为服务端,可以有效减少工作量。只需在监控端构建客户端程序并使用PLC提供的MODBUS TCP/IP服务器就可以实现稳定的通信。

4 结束语

通过实际使用,该系统在.Net平台上完成了对下位设备的任务管理,系统稳定可靠、可移植性强。简单修改后可以扩展到任意数量的激光切割机,适配不同的数据库。在该系统的基础上,可以扩展可视化监控系统、报表系统,与工厂MES系统实现对接。

猜你喜欢
供料出库钣金
分离设备清理的优化方法
揭秘钣金折弯成形技术的12大问题
钣金V形折弯成形的回弹控制研究
钣金成形技术在航空航天中的应用
浅谈钣金机械加工及其自动化的探索
汽车配件的出库、盘点与库存控制
让英语写作“主动”起来
优化拍卖出库流程控制防范拍卖出库环节财务风险
报文数据分析法在立体库故障分析中的应用
格雷母线技术在炼铁供料系统中应用及电气维护