question

Willie avatar image
0 Likes"
Willie asked Felix Möhlmann commented

OHT loops problem

I am currently implementing the operational logic of an OHT (Overhead Hoist Transport).

After a machine finishes processing, it will call the OHT to transport the object away. Then, another OHT will be called to fetch materials from Queue1 for the next processing cycle. If the OHT has no tasks to perform, it will continuously run in a loop until it is given a task to execute.

I am trying to use a "List with preemptive logic" to interrupt the idle OHTs (those in the loop) to execute transport tasks. However, after the OHT unloads, I want it to return to the loop to wait for the next task. The model logic is stuck at the "Push to List" step.

1726205574117.png

I appreciate your help in resolving this issue in advance.

File:Question.fsm

FlexSim 23.0.15
agvlistprocess flow preemptionoht
1726205574117.png (408.6 KiB)
question.fsm (74.5 KiB)
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

1 Answer

Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann answered Felix Möhlmann commented

Set a Maximum Wait Time and activate the "Keep On List On Early Release" option on the Push to List activity, so the token doesn't have to wait until the value is pulled before it can continue. The pushed value should also be the OHT token, not the token from Event-Triggered Source.

question_1.fsm

With that being said, you don't need to use token preemption. You can also just have the task token create a preempting task sequence for the OHT.

question_2.fsm


question-1.fsm (74.6 KiB)
question-2.fsm (72.8 KiB)
· 6
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Willie avatar image Willie commented ·

@Felix Möhlmann Thank you,The model is now running normally.

I am now producing objects at the Queue1 and calling the OHT based on whether the machine is processing. Initially, since the machine is idle, it will transport objects from Queue1 to the machine for processing. After processing, an idle OHT will be called to remove the objects to Queue2, and the machine will then call another idle OHT to transport objects from Queue1, repeating the process.

I have divided the ProcessFlow into two logics: one is to call an OHT to transport objects from Queue1 to the machine for processing when the machine has no objects; the other is to call an idle OHT to transport objects from the machine to Queue2 after processing. For the first logic, should the Event Trigger Source be configured to trigger based on when the machine has no objects to activate the following logic?


1726211233556.png

File:Question.fsm

0 Likes 0 ·
question.fsm (78.1 KiB)
1726211233556.png (48.9 KiB)
Felix Möhlmann avatar image Felix Möhlmann Willie commented ·

That's certainly an option. Personally I'd trigger bringing a new item from the other flow. That lets you play around with the timing of starting the task more.

In both cases you'd need to create a token at model start to initialize the looped transport processes.

question_3.fsm

0 Likes 0 ·
question-3.fsm (77.5 KiB)
Willie avatar image Willie commented ·

Hello @Felix Möhlmann,

I'm trying to implement the logic where the processor will call the OHT that arrives at the processor in the minimum time, which is slightly different from the shortest distance.

In my model, all the paths are one-way. This means that while an OHT may have the absolute shortest distance to the processor, it might need to spend more time circling around to reach the processor.

Do you have any suggestions or methods to implement the logic of calling the OHT that can reach the processor in the shortest time?

Thank you in advance.

1726801427318.png


File:Question about minimum time.fsm

0 Likes 0 ·
Felix Möhlmann avatar image Felix Möhlmann Willie commented ·

Use the distancetotravel() command to determine the travel distance rather than the default straight-line calculation in the distance list field.

0 Likes 0 ·
Willie avatar image Willie Felix Möhlmann commented ·

@Felix Möhlmann I wrote the code as shown in the picture, but when the processor finished the process and called the OHT at 60 seconds, it called OHT11, which is farther from the processor than OHT1. It's not working.

1726813212126.png

1726814864172.png

File:Question about distancetotravel.fsm

0 Likes 0 ·
Show more comments