2' 'ư>HELPNA\NhNN:lCONTINUE n((pxEXIT&%p=lHALTމPldSTEP 1r4߉lg STOP߉X^F%EFSTOP ,,OFFg^w@߉UT߉WO\gp߉.Od\@g|߉\@|ŻOdg\@ModelsFmsmodel.gpsLFeCFEOyhLyhN|hE(((((((((({\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fmodern Courier New;}} {\colortbl\red0\green0\blue0;} \deflang1033\pard\tx1200\tx2400\tx4450\plain\f2\fs20 ; GPSS World Sample File - FMSMODEL.GPS, by Gerard F. Cummings \par *********************************************************************** \par * * \par * AGV Model in FMS Factory * \par * * \par *********************************************************************** \par * Time unit is one second \par \par *********************************************************************** \par * P1 =1 Means machine 1 is req'd first \par * P2 =2 Means " 2 " " " \par * P3 =3 Means " 3 " " " \par *********************************************************************** \par RMULT 71143 \par Transit TABLE M1,4000,4000,8 ;Transit time of jobs \par Type VARIABLE RN1@16+1 ;Categories of jobs processed \par AGV STORAGE 2 \par * \par Inspect FUNCTION P4,L16 \par 1,1200/2,1350/3,1500/4,1650/5,1800/6,1950/7,2100/8,2250/9,2400/10,2550 \par 11,2700/12,2850/13,3000/14,3150/15,3300/16,3450 \par * \par Product FUNCTION P4,L16 \par 1,600/2,700/3,800/4,900/5,1000/6,1100/7,1200/8,1300/9,1400/10,1500 \par 11,1600/12,1700/13,1800/14,1900/15,2000/16,2100 \par * \par Mach1 FUNCTION RN1,D3 \par .35,1/.80,2/1.0,3 \par *********************************************************************** \par GENERATE 720,60 ;Xacts are jobs \par QUEUE Arrival ;Arrival area queue \par ASSIGN 5,FN$Mach1 ;P5 is and index to machines \par *----Dummy values are put into parameters 1,2, and 3 so that they \par *----will be set up to receive the appropriate value in ASSIGN P5,P5. \par *----When P1, P2 or P3 are tested in various test blocks they must \par *----already exist. \par ASSIGN 1,6 ;Dummy value \par ASSIGN 2,6 ;Dummy value \par ASSIGN 3,6 ;Dummy value \par *----The contents of parameter 5 is put into the parameter with the \par *----same number as the contents value(eg. If parameter 5 has a \par *----value of 3, a 3 is put into pararmeter 3 indicating processing \par *----should start on machine 3. \par ASSIGN P5,P5 ;P1=1, P2=2, or P3=3 \par ASSIGN 4,V$Type ;P4 = Complexity of job \par ENTER AGV ;GET AN AGV \par SEIZE Robot ;Get robot \par ADVANCE 60 ;Time to get an AGV \par DEPART Arrival ;Depart arrival queue \par ADVANCE 45 ;Robot load job on AGV \par RELEASE Robot ;Free the robot \par SEIZE 1 ;Get section 1 of track \par ADVANCE 20 ;20 second to move 10 M \par RELEASE 1 ;Free section 1 of track \par TEST E P1,1,Skipone ;Machine 1 req'd? \par TRANSFER .10,,Next3 ;10% ALSO GO TO MACHINE 3 \par First SEIZE 3 ;Get section 3 of track \par ADVANCE 20 ;Move 10 meters \par LEAVE AGV ;Free AGV \par QUEUE One ;Queue for machine 1 \par RELEASE 3 ;Free section 3 of track \par SEIZE Machine1 ;Get machine 1 \par DEPART One ;Depart the queue \par ADVANCE FN$Product ;Machining on vertical CNC \par RELEASE Machine1 ;Machining center \par QUEUE Wipone ;Join work-in-progress \par ENTER AGV ;Get an AGV \par ADVANCE 60 ;Time to get an AGV \par DEPART Wipone ;Depart work-in-progress \par *********************************************************************** \par Second SEIZE 4 ;Get section 4 of track \par ADVANCE 20 ;10 section to move 10 M \par RELEASE 4 ;Release section 4 \par TEST E P2,2,Skiptwo ;Is machine 2 req'd? \par TRANSFER .15,,Next4 ;15% also go to machine 3 \par Andthree SEIZE 6 ;Get section 6 of track \par ADVANCE 20 ;Move 10 meters \par LEAVE AGV ;Free the AGV \par QUEUE Two ;JOIN QUEUE TWO \par RELEASE 6 ;Free section 6 of track \par SEIZE Machine2 ;Get machine 2 \par DEPART Two ;Depart queue 2 \par ADVANCE FN$Product ;Process on horizontal \par RELEASE Machine2 ;CNC machining center \par QUEUE Wiptwo ;Queue work-in-progress \par ENTER AGV ;Get an AGV \par ADVANCE 60 ;Time to get an AGV \par DEPART Wiptwo ;Depart work-in-progress \par *********************************************************************** \par Third TEST E P3,3,Skipthree ;Is machine 3 req'd? \par SEIZE 8 ;Get section 8 of track \par ADVANCE 20 ;Move 10 meters \par LEAVE AGV ;Free AGV \par QUEUE Three ;Join queue three \par RELEASE 8 ;Free section 8 of track \par SEIZE Machine3 ;Get machine 3 \par DEPART Three ;Depart queue three \par ADVANCE FN$Product ;Process on CNC lathe \par RELEASE Machine3 ;Free turning center \par QUEUE Wipthree ;Queue work in progress \par ENTER AGV ;Get an AGV \par ADVANCE 60 ;Time for AGV to arrive \par DEPART Wipthree ;Depart work-in-progress \par *********************************************************************** \par Fourth SEIZE 9 ;Get section 9 of track \par ADVANCE 20 ;Move 10 meters \par RELEASE 9 ;Free section 9 of track \par TRANSFER .960,,Skipfour ;4% Of components inspected \par SEIZE 11 ;Get section 11 of track \par ADVANCE 20 ;Move 10 meters \par LEAVE AGV ;Free the AGV \par QUEUE Four ;Join queue four \par RELEASE 11 ;Free section 11 of track \par SEIZE Machine4 ;Get machine 4 \par DEPART Four ;Depart queue 4 \par ADVANCE FN$Inspect ;Inspection on 3D machine \par RELEASE Machine4 ;Release machine 4 \par QUEUE Wipfour ;Join work-in-progress \par ENTER AGV ;Get and AGV \par ADVANCE 60 ;Time for AGV to arrive \par DEPART Wipfour ;Depart work-in-progress \par *********************************************************************** \par Fifth SEIZE 12 ;Get section 12 of track \par ADVANCE 20 ;Move 10 meters \par RELEASE 12 ;Free section 12 of track \par SEIZE Robot ;Get a robot \par ADVANCE 45 ;Robot unloads job from AGV \par RELEASE Robot ;Free the robot \par TABULATE Transit ;Record transit time \par SAVEVALUE P4+,1 ;One job finished \par SEIZE 13 ;Get section 13 of track \par ADVANCE 20 ;Recirculate AGV \par RELEASE 13 ;Free section 13 of track \par SEIZE 14 ;Get section 14 of track \par ADVANCE 20 ;Move 10 meters \par RELEASE 14 ;Free section 14 of track \par SEIZE 15 ;Get section 15 of track \par ADVANCE 20 ;Move 10 meters \par RELEASE 15 ;Free section 15 of track \par LEAVE AGV ;Free AGV \par TERMINATE ;Destroy xact \par *********************************************************************** \par Next3 ASSIGN 3,3 ;10% Use machine 1 and 3 \par TRANSFER ,First \par Next4 ASSIGN 3,3 ;15% Use machine 2 and 3 \par TRANSFER ,Andthree \par *********************************************************************** \par Skipone SEIZE 2 ;Seize section 2 of track \par ADVANCE 20 ;Move 10 meters \par RELEASE 2 ;Free section 2 of track \par TRANSFER ,Second \par *********************************************************************** \par Skiptwo SEIZE 5 ;Get section 5 of track \par ADVANCE 20 ;Move 10 meters \par RELEASE 5 ;Free section 5 of track \par TRANSFER ,Third \par *********************************************************************** \par Skipthree SEIZE 7 ;Get section 7 of track \par ADVANCE 20 ;Move 10 meters \par RELEASE 7 ;Free section 7 of track \par TRANSFER ,Fourth \par *********************************************************************** \par Skipfour SEIZE 10 ;Get section 10 of track \par ADVANCE 20 ;Move 10 meters \par RELEASE 10 ;Free section 10 of track \par TRANSFER ,Fifth \par *********************************************************************** \par GENERATE 28800 ;Xact every day \par TERMINATE 1 ;Destroy timer xact \par \par \par }