动态柔性制造系统仿真平台
% l/ P4 s9 H+ |# ? 现代制造业竞争日趋激烈,复杂多变的市场要求缩短设计生产周期并且降低成本.柔性制造系统(FlexibleManufacturingSystem,FMS)有效地解决了这一问题.FMS通常包括一组数控机床和物料传输系统(如AutomatedGuidedVehicle,AGV),并由一台中央控制计算机协调控制各个部分.这个系统具有较强的效率、柔性和自适应性.FMS优越性的体现,依赖于系统调度的方法.静态调度在生产之前把资源全部分配好,然后按计划生产.对于生产任务在一个阶段中不变的制造系统,这类方法是非常有效的.目前,人工智能的一些理论和方法广泛地应用到静态调度当中,如遗传算法中使用启发式搜索[1]后,取得了令人满意的调度速度,也使得动态调度策略的实现成为可能[2].动态调度是根据系统当前状况与资源,动态地决定生产路线.对于生产任务随机到达的制造系统,或者系统存在随机干扰,这类方法更为实用.近年来,动态调度的问题越来越多地引起了人们的注意[3],但以往的仿真系统往往只是静态调度结果的执行和分析评价,对系统动态变化特性(动态调度与控制策略的变化)则显得有些无能为力.本文提出了一个能较完整描绘动态FMS的仿真系统构架.% {6 J* W9 O+ u
1 仿真平台系统框架为了处理动态调度和控制问题,一个优秀的动态仿真平台取决于两个因素:) R( r$ D* F( w
(1)在需要动态再调度时,能够用系统当前的状态信息初始化模型;. F# N( n0 u! z) ]0 A7 w7 d
(2)在调度与控制逻辑中把系统的随机性与动态性综合在一起.
* F# s" N0 ~9 G' y因此,仔细分析系统的动态因素并适当地处理动态事件是仿真模型的关键.文献[3]中较为详细地讨论了FMS的动态事件并根据产生原因将其分为4类.本文从仿真的角度出发,更为全面地考虑这一问题并重新分类为:& q) F, l3 K% S I5 g& j
(1)工件.工件随机到达,加工优先级变化,订单的增加和删减等;( e; [8 O! A h; ?8 G) k% B1 Z
(2)机器.加工时间不确定,加工负载能力出现变动,机器损坏、阻塞、死锁以及维护等;" q1 P* I+ r/ v' }, J7 f/ j9 Z
(3)小车.小车运输、装卸延迟,运输出错,小车数量、装载能力有限等;6 x* P1 m* k k. v/ K! _
(4)其他.操作人员因素,原材料延期、有缺陷,动态加工路线等.$ J( Z7 U0 f2 {) z7 A. H' T
此外,为了更真实地对FMS进行仿真,采用了分布式系统结构,引入网络通信中的复杂性和不确定因素,可以更好地仿照实际运行状况考查调度、控制策略.( R) Z% w* r" l/ e1 M n2 p
与真实FMS类似,仿真系统中的中央控制部分用一台计算机模拟,而每个车床、小车和缓冲区都单独用一台网络计算机模拟.总控部分由输入模块、控制逻辑、调度模块、网络模块和评价模块组成.输入模块处理各种订单和工件加工流程信息,也能够在运行中处理订单增减的请求;控制逻辑是主控部分的核心,由它控制仿真系统的运行;调度模块接受控制逻辑的命令选择调度或重调度规则执行;网络模块负责与分布单元的通信;评价模块对仿真的结果进行分析,是改变调动、控制策略的依据.+ {4 t/ f5 j. j2 y+ a
2 仿真模型根据面向对象的软件工程方法,在确定了系统框架后,设计系统的对象模型,并在对象模型基础上,设计能体现对象及对象间状态变化的动态模型.
6 H3 y8 s) b, ?. Z2.1 对象模型重点在于定义各个设备的类对象.首先定义一个抽象的设备类作为父类,定义各个设备之间共同的属性和操作,例如设备位置、设备状态、装载和卸载等.对于定义各个具体的设备,比如机床,缓冲区,AGV等,可以利用继承机制,在继承父类共有属性和操作的同时,定义自己特殊的属性和操作,例如,机床的加工零件操作、AGV的运输操作等.
4 N7 ^7 a) _1 p- R* \+ F2.2 Petri网动态模型用对象模型描述系统可以反应系统类结构情况.此外,还需要用动态模型来表现系统运行时状态的转变情况.基于FMS的离散性、并发性等特点,采用Petri网来进行描述.但是,在处理Jobshop一类复杂问题时,Petri网会导致节点指数增长,使模型分析能力下降.为此采用高级Petri网技术[4],在不过多损失Petri网描述能力的同时,大幅减少节点数.根据本系统的动态特点,* c" b9 h8 _. |0 p! c, p! u
在该网络中,机床、缓冲区、装卸台等是实体库所,其中流动的令牌是工件实体,这类令牌有3个元素表示其色泽:工件类型,未完成的工序数,下一步加工所用机床类型.工件进入系统时,在T5处,装卸台根据工件类型从数据库中提取知识,将工件工序数和第一道工序所需机床类型填入工件令牌.在T3处,根据下一道工序的机床类型,工件被调度到相应机床输入缓冲.各类型工件的加工信息(工序流程,加工时间等)保存在机床加工变迁T1a、T1b、…、T1m数据库中,工件令牌在该变迁中按工序要求进行加工,完工时从数据库中查明下道工序机床类型,并将零件未完成工序数减1,组成新令牌,流入输出缓冲.若未完成工序为0,指派变迁T2将工件送入装卸台离开系统,否则送入中央缓冲区等待进一步加工.为了能处理异常事件,在文献[4]模型的基础上引入了反映机床状态的信息库所Ps,机床加工变迁完成时,会填写一个信息令牌送入Ps,知识库KB存放系统的调度知识,与Ps一起对变迁T3加以控制,决定工件流向.当缓冲区PB有工件令牌且机床有空闲时,先检查Ps中的信息与KB中的调度结果是否吻合,如吻合则根据KB的调度知识进行调度,否则进行再调度,把新的调度结果存入KB再执行调度.
) J- v, I. A" G3 j) g9 ^: b3 系统设计与实现采用具有通用性的面向对象的C++语言,并在Windows操作系统及其网络环境下用VC6.0实现这个仿真系统.针对本仿真系统,C++具有其他语言无法比拟的两个优势:- P% Q: R7 @: x- e8 P( h
(1)各种调度、控制算法多采用C语言编制,可以很好地与仿真程序集成;
# h5 N/ ~- k1 L/ O6 [9 _5 e+ h(2)对于分布式系统,网络的一些底层操作只有在C、C++语言中才能比较方便地实现.
; ^( @9 ` l# X6 r5 v! x采用网状图的数据结构和相应算法,可以模拟网状轨道并在轨道上配置机器资源,还可以在运行中增减机器,机器故障也将在界面上表示出来,在网状图的数据结构基础上,对于小车寻找路径问题,程序采用了Dijkstra的最短路线算法.网络部分和调度算法都作为独立的线程运行,从而保证网络延迟和调度运算不会影响控制线程运行.用MFC类库的Cwinthread线程类实现.作为一个仿真平台,程序为调度、控制算法留出了接口.
i2 f" b7 \9 e6 o0 }$ I4 仿真实例对文献[5]中的动态调度算法进行仿真.其基本原理是:在静态调度算法的基础上,如果系统出现动态事件,则根据系统当前资源状态,将未完成的任务(包括未加工工件的任务和已经加工但还有未完成工序的工件的任务,还可以包括新订单等)当作新任务再运用静态调度算法重调度.- E* {- s H, G. b
4.1 静态调度结果 资源参数及其布局,即有3种类型6台机器,1、2号机器为类型 ;3号机器为类型 ;4、5、6号机器为类型 .任务参数如表1所示,共需要加工12个工件,每个工件有1~4个工序,带*的工件具有优先级0.5,其余工件的优先级为1.其中:pi为工件i的优先级;ti为工件i的完工时间;t0,i为工件i的期望完工时间.如果希望能尽早完工,可把期望完工时间设置为0.完成车间布局并输入任务参数后,仿真程序将机器最早工作时间和工件每道工序的最早开始时间都设为0,运行调度算法,并根据调度结果执行.为使问题简化,小车运输时间相对加工时间可以忽略,在没有任何动态事件干扰的情况下,仿真运行结果Gantt图,纵坐标M1~M6为6台机床,横坐标为无因次时间,在进度条下用数字表示,进度条中的数字i.j表示第i个工件的第j道工序,没有数字则表示机床空闲.总加工时间为55,这个结果和调度的结果是一致的.
/ u) ^( K' i/ S$ ?4.2 动态再调度为了测试动态调度的性能,在10时刻把机床6的网络切断,数秒钟后,总控没有收到机床6的状态信息,认为机床6故障.在程序的车间布局界面上的机床6处将出现出错提示.同时,控制部分更改调度任务的参数,然后重新执行调度算法.首先把1~6号机床完成当前工序后的时间作为机床的最早工作时间,依次为14、12、12、12、11、∞.然后更改每个工件的任务参数,对于等待加工的工件,工件未完成的工序为新的加工工 以上是对机器故障仿真程序用重调度算法的运行结果.对其他动态事件,如机器加工时间不确定,工件随机到达,中途加入新任务,工件优先级变化,小车运输延迟等,都可以用该算法进行类似处理. c" k' d: {7 Q4 U) a) d0 Y
4.3 仿真结果分析利用Gantt图可以很方便地进行分析.上例对于静态调度结果,各个机床利用率不是很平均,比如机床1、2为同一类型,机床1利用率为100%,机床2利用率只有63%,重新分配各个机床也许可以缩短总完工时间,但考虑到工件的优先级,优先级高的工件完工时间较早,优先级低的工件完工时间较晚,因此调度结果尚好.发生机器故障后的调度结果恰好相反,各个机床的利用率比较平均,总完工时间进序,工件的最早开始时间为0;对于正在加工的工件,当前工序以外的未完成工序为新加工工序,工件的最早开始时间为当前工序的完工时间,比如:工件1有1道工序,最早开始时间为12,工件4有3道工序,依此类推.这样就保证了新的调度结果不会与已经完成的和正在加工的任务发生冲突.参数重新设置好后,重新运行调度算法,然后根据新调度结果继续仿真,其结果Gantt图如图5所示,图中深色进度条表示重新调度后的结果,总时间增长为57.一步减少的余地不大,但是优先级为1的工件8完工时间较晚,需要进一步改进.5 结 语FMS是一种典型的复杂离散事件动态系统,在对于这类系统的建模与分析方法不够完善的情况下,仿真作为一种重要的分析手段,发挥着突出作用.本文着重研究如何较全面地体现实际制造系统的动态性、随机性、分布性等特点,实现了一个仿真系统.该系统能及时准确地报告制造系统的动态变化,并提交调度、控制系统处理.以此仿真平台为测试工具,可进一步讨论FMS的调度、控制问题.应的k2=69.58kN/m,d0=0.8mm已十分接近.4 结 语在对人工神经网络优化方法的认识基础上,提出一种基于结构的神经网络优化方法.它的前提是建立系统的基于结构的神经网络模型,该网络模型应对优化参数具有良好的泛化性.对Y2-Hc10型先导式溢流阀结构参数的优化实例,表明了所提出的方法是有效的.该方法为非线性系统的结构参数优化,特别是为难以用传统方法求解的大型、严重非线性系统的结构参数优化提供了一条新的途径,并且对新系统的开发和优化设计也具有重要意义. |