Models Aren’t Meant to Be Rigid!. A Case New Holland Combine Case Study. Epicenter Development Group Client List. Automotive/Trucking Amtex Corporation – Ohio Bellemar Parts – Ohio Case New Holland – Nebraska Chrysler Motors/Jeep – Ohio Eaton Corporation - Kentucky, Michigan
Models Aren’t Meant to Be Rigid!
A Case New Holland Combine Case Study
The GreenRoom Engineering Process
Put as many of the calculations and variables in a linked spreadsheet as possible. Spreadsheets are “user-friendly” to people.
Before we built our model, we identified several variables that had the potential to change. We put these variables into spreadsheet tables.
Every Variable that could be put into the spreadsheet – was!
A spreadsheet system was developed to create crane routings for the model.
The spreadsheet also identified the crane movement and processing times for the model.
Create “toggles” in the model to turn on and off elements “on the fly”
In our model, we could manually turn off paint booths during the model run by manually setting certain key variables. This allowed us to rapidly experiment with how the system reacted to downtime or less available stations.
Example: “wait until stop_paint2=0 #for manual shutdown of paint line”
Use “rules-of-thumb” that govern how information is used
Instead of hard-coding the model to handle every scenario, we used “rules-of-thumb” logic. This allowed the model to adjust to most scenarios (ex: rules to handle “traffic control” for carriers in the system)
#part is e-coat only and zone is free and Stop19 queue is open
If zlock[3,1]=0 and color=0 and size<3 and partcounter[(loc(l_Stop_19_Q_1))]+partcounter[(loc(l_Stop_19))]<2 then
#part is e-coat only and zone is free and Stop19 queue is not open - send through topcoat
If zlock[3,1]=0 and color=0 and size<3 and partcounter[loc((l_Stop_20_Q_1))]+partcounter[loc((l_Stop_20))]<2 then
Nextroute=3 #send through topcoat
#part is e-coat only and zone is free and Stop19 queue is not open and paint is backed up - send to paint overflow queue
If zlock[3,1]=0 and color=0 and size<3 and partcounter[(loc(l_Stop_07_Q_1))]+partcounter[(loc(l_Stop_07))]<2 and size<3 and (paintoverflow_counter<paintoverflow_target or offshift>0) then
Nextroute=4 #to paint queue
Use subroutines so changes can be made more globally when necessary.
Subroutines give you single point control over general model functions.
#####This is a multi-purpose subroutine for chain delays
##s_stop_delay(stopped, queue_index, chain_trans, stop_point)
# "stopped" is whether the unit stopped due to non-queue backups.
# "queue_index" is the index of the next conveyor to consider for queue delays
# "chain_trans" is whether there is a chain transfer involved in the move. This will always happen
# "stop_point" says that this is a stop point - if there is a queue delay then we need to do a full start
###########start with whether we need to chain delay or not
If queue_index=0 then goto L2 #skip conveyor release delay step
If clock(min)-Zone_Delay[queue_index,1]<Std_queue_delay then #wait if turned on(queue_index>0) or part is in next zone
wait .03 #wait 2 seconds and check again
If stop_point=1 then stopped=1 #if we had to wait, then there is a stop delay
If stopped=1 then wait rand(STD_Stop_Delay_Max) min #we must do a chain start
If chain_trans=1 then wait rand(STD_Chain_Delay_Max) min #we must do a chain to chain wait
Keep things simple! (K.I.S.S. Principle)
Our goal is always to use the simplest logic necessary to “get the job done”. Although we have several model locations, most P&F locations used the same operation logic with minor variations.
#Index 20, next index 21
s_stop_delay(0,21,0,0) #forced to stop, next index, chain trans?, stop point?