Cancel
Showing results for 
Search instead for 
Did you mean: 

Preventive Maintenance and Corrective Maintenance

Pioneer
Pioneer

Hi, 

I'm having problems modeling a system were corrective and preventive maintenance occurs. When a machine fails (lifetime follows weibull), then emergency repair has to occur. I modeled this with workers, workerpool and a path etc.. since it takes time to get the repairman to the machine + the repairtime (=duration of failure). This works fine. Now I created a method that counts the number of failures, but when I enter this as an failure control, I keep getting the error that this failure control does not exist. I'm new to PS so maybe there are more settings?? 

Furthermore, there is the option to have preventive maintenance, when the lifetime of a machine (failure?) exceeds a certain threshold/time. There is a different repairman for this. Also I want to count the number of preventive maintenances, but I guess when I know how to count emergency repairs, I can count this too. A repairman who performs emergency repairs can also, afterwards (immediately), perform preventive maintenance, if necessary. I want to create a method that says something like this:

If the machine is failed, send emergency worker here (takes time). Update nr of emergency repairs by 1. Check if preventive maintenance is necessary somewhere. Yes?-> send worker there immediately (takes no time). Update nr Preventive repairs. Send worker back to workerpool. 

If time threshold has passed, send preventive worker to machine (takes time), update a counter that counts how many times this worker is sent, repair machine, update counter preventive repairs, check other machines => same as above.

 

I am so stuck on this. 

38 REPLIES 38

Re: Preventive Maintenance and Corrective Maintenance

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

see this example:

 

http://www.bangsow.de/detail.php?id=471

 

If you assign a failure control, than you can read the name of the failure profile. Then you can set the necessary service for this failure.

 

To simplify you should decide, if you beam all or let them use FootPaths. The preventive Maintenance you can set as additional failure profiles (e.g. based on process time, regular interval, const. duration). Then the complete mediation can do the Broker.

 

You need to check the name of the failure control, may be you need to set a path (e.g. root.method) if you work with subframes. Normally it is only misspelling.

 

 

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

Re: Preventive Maintenance and Corrective Maintenance

Pioneer
Pioneer

Thank you for your reply. 

I managed to set the failures and the repair of it. There is a footpath that takes time, which is what I need, and the failure control was just a silly mistake. I now have a method set as failure control that counts all failures. But now, in this method, can I also check, after the machine is repaired, if there is also a machine that needs preventive maintenance? And then send the worker here, without him letting use the footpath, because it shouldn't take time, since the repairman is already "in the plant". I don't know the commands in SimTalk for the worker etc.. 

Also, for just preventive maintenance itself, can I make a method for this and assign it as en exit control for all machines? So it is checked often if the time exceeds a threshold.

Re: Preventive Maintenance and Corrective Maintenance

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

I think, this not a good idea, but yes, you can do this.

There are some problems you have to solve: "beaming" is a setting of the workerpool. If the maintenance guys shold beam, they need an extra workerpool. You can fail a machine with SimTalk (see help failure, startFailure or failureProfile.fail). You can set the right service before fail the machine, so the broker can send the right person.

 

 

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

Re: Preventive Maintenance and Corrective Maintenance

Pioneer
Pioneer

I did write a method that sets all the failures, that works. And in the init method I make all the emergency failures active and all the preventive maintenance are not active. However, when I define the failures in the method, I also want them to relate to the processing time. When I type <path>.FailureMode="processingtime" it gives me an error that failuremode is an unknown identifier. While the help says that this is the way to do it?

 

But how can I use simtalk to send workers to a station?


I will check out the example you send.

Re: Preventive Maintenance and Corrective Maintenance

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

all the settings are related to the failureprofile, so the SimTalk command is:

 

<path>.<failureProfile>.Mode

 

to send the worker, you could try:

 

<path>.<failureProfile>.failed

 

if you have activated the failure importer.

 

to send the worker to a workplace:

<worker>.goTo

 

 

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

Re: Preventive Maintenance and Corrective Maintenance

Pioneer
Pioneer

the goTo is for when the worker is already in a workplace and then send it to another workplace?

And it makes sense indeed that to send to worker in the first place, just fail the machine. The Mode thing is working now, thanks!

Re: Preventive Maintenance and Corrective Maintenance

Pioneer
Pioneer

I can't open the example?

Re: Preventive Maintenance and Corrective Maintenance

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

with goto you can also send the worker from the Workerpool to the workstation

 

here is the example, it runs from 10.1

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

Re: Preventive Maintenance and Corrective Maintenance

Pioneer
Pioneer

I have an error when I use str_to_obj, it says it is an unknown identifier, however, I see it in several examples?