Cancel
Showing results for 
Search instead for 
Did you mean: 

Machine Failure

Creator
Creator

Hi community,

 

I'm modelling an assembly system, the model shall also include machine failures: Whenever a failure occurs, all the other workstations are supposed to stop until the disturbed station is able to process MUs again (in order to prevent that the system runs empty). I wrote a quite simple method that might realize what I want the system to do.

 

is
do
   Teradyne_E.Pause:=true;
  Teradyne.Pause:=true;
  Teradyne_A.Pause:=true;
  OPUS_E.Pause:=true;
  OPUS1.Pause:=true;
  OPUS2.Pause:=true;
  OPUS_A.Pause:=true;
  Lackieren_E.Pause:=true;
  Lackieranlage.Pause:=true;
  Lackieren_A.Pause:=true;
  Fräsen_E.Pause:=true;
  Fräsen.Pause:=true;
  Fräsen_A.Pause:=true;
  SZ1_E.Pause:=true;
  SZ1.Pause:=true;
  SZ1_A.Pause:=true;
  SZ2_E.Pause:=true;
  SZ2.Pause:=true;
  SZ2_A.Pause:=true;
  Montage.Pause:=true;
  Geräteprüfung_E.Pause:=true;
  Geräteprüfung1.Pause:=true;
  Geräteprüfung2.Pause:=true;
  Geräteprüfung3.Pause:=true;
  Geräteprüfung_A.Pause:=true;
  Endmontage.Pause:=true;
 waituntil Teradyne.gestört=false and
    OPUS1.gestört=false and
    OPUS2.gestört=false and
    Lackieranlage.gestört=false and
    Fräsen.gestört=false and
    SZ1.gestört=false and
    SZ2.gestört=false and
    Montage.gestört=false and
    Geräteprüfung1.gestört=false and
    Geräteprüfung2.gestört=false and
    Geräteprüfung3.gestört=false and
    Endmontage.gestört=false prio 1;
     Teradyne_E.Pause:=false;
  Teradyne.Pause:=false;
  Teradyne_A.Pause:=false;
  OPUS_E.Pause:=false;
  OPUS1.Pause:=false;
  OPUS2.Pause:=false;
  OPUS_A.Pause:=false;
  Lackieren_E.Pause:=false;
  Lackieranlage.Pause:=false;
  Lackieren_A.Pause:=false;
  Fräsen_E.Pause:=false;
  Fräsen.Pause:=false;
  Fräsen_A.Pause:=false;
  SZ1_E.Pause:=false;
  SZ1.Pause:=false;
  SZ1_A.Pause:=false;
  SZ2_E.Pause:=false;
  SZ2.Pause:=false;
  SZ2_A.Pause:=false;
  Montage.Pause:=false;
  Geräteprüfung_E.Pause:=false;
  Geräteprüfung1.Pause:=false;
  Geräteprüfung2.Pause:=false;
  Geräteprüfung3.Pause:=false;
  Geräteprüfung_A.Pause:=false;
  Endmontage.Pause:=false;
end;

 

Long story short: All the workstations are paused when the method is called. None of the workstation becomes active as long as a failure exists. As soon as no failure exists anymore all the workstations are activated again.

 

The problem now is: where calling this method?

I first tried a modified version of this method and put it onto the entry control of each workstation. This kind of worked out, but the method was not called in the moment when a failure occured obviously. I want the method above to be called when a failure occurs. Any suggestions where to put it? I tried the failure importer's controls (don t know if this is an proper way to translate it english),  but it was not called eventually.

 

Thank you very much in advance!

 

Cheers,

M.L.

 

 

3 REPLIES

Re: Machine Failure

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

First: what you try to do is the job of the LockoutZone (Störkreis). Have a look in the help. All stations that you enter into the LockoutZone will be stopped, if one of them is failed. Exactly what you need (without programming).

 

To your question: the best way to start your method is an observer (Beobachter) for the attribute failed. You find it in the dialogs of the objects:Tools  - Select Observers...

You need to select an attribute and the method. The method iwill be called each time the attribute value changes.

 

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Machine Failure

Creator
Creator

Thanks a lot for your recommendations!

 

Regarding your first recommendation:

That s for sure the easiest way, but I m afraid that this function is not avaible in version 10.

 

Regarding your second recommendation:

Sadly my method was not called when I did it this way.

 

But I found another way that works out:

I opened the menu of all my machines that can fail and selected extras/failure control. In its context menu I chose the method I want to be called whenever a failure occurs.

Since not all machines are supposed to be paused when a certain machine fails, my method is quite extensive, but my problem was solved. If anybody is interested, here is the method's code:

 

is
do
 if Teradyne.gestört then
  OPUS1.Pause:=true;
  OPUS2.Pause:=true;
  Lackieranlage.Pause:=true;
  Fräsen.Pause:=true;
  SZ1.Pause:=true;
  SZ2.Pause:=true;
  Montage.Pause:=true;
  Geräteprüfung1.Pause:=true;
  Geräteprüfung2.Pause:=true;
  Geräteprüfung3.Pause:=true;
  Endmontage.Pause:=true;

 elseif Lackieranlage.gestört then  
  Teradyne.Pause:=true;
  OPUS1.Pause:=true;
  OPUS2.Pause:=true;
  Fräsen.Pause:=true;
  SZ1.Pause:=true;
  SZ2.Pause:=true;
  Montage.Pause:=true;
  Geräteprüfung1.Pause:=true;
  Geräteprüfung2.Pause:=true;
  Geräteprüfung3.Pause:=true;
  Endmontage.Pause:=true;
 
 elseif Fräsen.gestört then
  Teradyne.Pause:=true;
  OPUS1.Pause:=true;
  OPUS2.Pause:=true;
  SZ1.Pause:=true;
  SZ2.Pause:=true;
  Montage.Pause:=true;
  Geräteprüfung1.Pause:=true;
  Geräteprüfung2.Pause:=true;
  Geräteprüfung3.Pause:=true;
  Endmontage.Pause:=true;
 
 elseif SZ1.gestört then
  Teradyne.Pause:=true;
  OPUS1.Pause:=true;
  OPUS2.Pause:=true;
  Fräsen.Pause:=true;
  SZ2.Pause:=true;
  Montage.Pause:=true;
  Geräteprüfung1.Pause:=true;
  Geräteprüfung2.Pause:=true;
  Geräteprüfung3.Pause:=true;
  Endmontage.Pause:=true;
 
 elseif SZ2.gestört then
  Teradyne.Pause:=true;
  OPUS1.Pause:=true;
  OPUS2.Pause:=true;
  Lackieranlage.Pause:=true;
  Fräsen.Pause:=true;
  SZ1.Pause:=true;
  Montage.Pause:=true;
  Geräteprüfung1.Pause:=true;
  Geräteprüfung2.Pause:=true;
  Geräteprüfung3.Pause:=true;
  Endmontage.Pause:=true;
 
 elseif Montage.gestört then
  Teradyne.Pause:=true;
  OPUS1.Pause:=true;
  OPUS2.Pause:=true;
  Lackieranlage.Pause:=true;
  Fräsen.Pause:=true;
  SZ1.Pause:=true;
  SZ2.Pause:=true;
  Geräteprüfung1.Pause:=true;
  Geräteprüfung2.Pause:=true;
  Geräteprüfung3.Pause:=true;
  Endmontage.Pause:=true;
 
 elseif Endmontage.gestört then
  Teradyne.Pause:=true;
  OPUS1.Pause:=true;
  OPUS2.Pause:=true;
  Lackieranlage.Pause:=true;
  Fräsen.Pause:=true;
  SZ1.Pause:=true;
  SZ2.Pause:=true;
  Montage.Pause:=true;
  Geräteprüfung1.Pause:=true;
  Geräteprüfung2.Pause:=true;
  Geräteprüfung3.Pause:=true;
 end;  
  waituntil ?.gestört=false prio 1;
  Teradyne.Pause:=false;
  OPUS1.Pause:=false;
  OPUS2.Pause:=false;
  Lackieranlage.Pause:=false;
  Fräsen.Pause:=false;
  SZ1.Pause:=false;
  SZ2.Pause:=false;
  Montage.Pause:=false;
  Geräteprüfung1.Pause:=false;
  Geräteprüfung2.Pause:=false;
  Geräteprüfung3.Pause:=false;
  Endmontage.Pause:=false;
end;

 

Cheers,

M.L.
 

 

 

 

Re: Machine Failure

Phenom
Phenom

There are several ways to solve this issue,

 

As Steffen recommended, the so called Lockoutzone object ( better known as safety-/ or protection area) will do the job.

 

And - of course this object is available in version 10 ( look up in resources folder)