I'm trying to design a production line where different workers perform a task on the same machine one after the other, with each worker taking a different amount of time to perform the task.
I'd like some guidance on how to achieve this.
I am making use of ED version 8.2.5
What you want to do is change the CycleTime of the server that is representing the machine, when a worker (HumanResource, HR) is assigned the task. So this is the moment an HR is called.
Especially for such moments, the HR has a trigger "When called". Here you can update the value that is set in the CycleTime of the server using the following code:
Since we are making a call to the server, we need to create a reference to the server. In the help of the HR we can find that we have a link to a product of the in(3, c), so that is the 3rd incoming channel of the HR. We know that the product is currently located in the Server that just requested this HR. So the up(in(3,c)) is the server. Then the only thing we have to do is set the attribute CylceTime of the server.
Code: Select all
Do( var([atmServer], vbAtom, up(in(3, c))), Att([CycleTime], atmServer) := 100 )
When there are more machines, you'll have to check which machine it is, and assign a time. So that would be something for a case statement in combination with a WhichIsTrue.
I hope this helps you further!