question

Vivek N avatar image
0 Likes"
Vivek N asked martin.j commented

Process flow - customize standard or inbuilt functionality of Queue

I need help with creating a similar loading pattern (attached jpg file - 22 pallets in 2 layers and 1 empty space for unloading) on Queue (Loading_Station) when simulation begins, and avoid the standard functionality of movement of pallet (objects/parts) on Queue. Robot should pick the available pallet for processing and place the completed pallet on empty location or on top of completed pallet.

parallel-station.fsm

2.jpg

FlexSim 17.1.2
animationstandard or inbuilt functionality
2.jpg (35.4 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

·
martin.j avatar image
1 Like"
martin.j answered martin.j commented

To do something like that I would use a floor storage rack instead of queues. In the attached example the Loading_Station Queue has been replaced with a rack with the Floor Storage property checked and the Place in bay & Place in Level triggers set to "First Available". The max Cell Content is set to 2 so there can be two stacked pallets in each cell for a Maximum Content of 24.

I have then created a global ItemList with a Cellcontent field that tells me how many pallets are in the current pallets cell, and a CellRank field that tells me the rank of the pallet in that cell. When a pallet enters the Loading_Station I have set the on entry trigger to push the pallet to my Items list.

The flow still creates 22 tokens and each of them creates a pallet, which is added to the rack and subsequently to the list. The token then continues to the process where it pulls a different pallet than it initially created from the list. The two fields help us choose the correct pallet rather than just a random one. We want a pallet on to of its cell and then the one beneath.

Finally I have added a SetLabels activity "Update Labels on Pallet" that will set the phase label to 2 to signify that the pallet has been processed. In the on entry trigger where I push the pallet to list I set the condition that pallet.phase != 2 to ensure that we dont reprocess finished pallets.

Please see the attached model: parallel-station.fsm

Your flow structure is very direct and simple, but if I were to create this logic I might prefer to create two flows in my process Flow. One that creates the pallets and adds them to the rack, and a separate one for the robot control. A single flow with a single token that loops through the robots processes would give you more control. Rather than the flow being item focused, it would become process focused.


parallestation.jpg (139.1 KiB)
· 4
5 |100000

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

Vivek N avatar image Vivek N commented ·

Thank you Martin for a detailed solution. I am a newbie to FlexSim and learning it through online tutorials and "answers" forum. I liked your recommendation to create a model focused on process, could you elaborate it with an added example in the attached file?

0 Likes 0 ·
martin.j avatar image martin.j Vivek N commented ·

For me a process oriented approach is simply to look at the stages of the process you want to model, and make those function in separate flows rather than have one token representing an item run through your whole model. The processes are viewed and designed through the perspective of the processing unit rather than the product.

So if you create a flow item and it arrives at a process it triggers a flow that handles that flow item and then passes it on, just like a processer would if you were to model it without Process Flow. This will often give you much greater control over your process and item flow, and using Wait For Event and Synchronization activities, there is no reason you cant have a token following your flow item through your plant if you really want to.

In the attached model parallel-station-process.fsm , I have split the flows using the push to list activity. The initialization flow simply creates the flowitems and puts them in Loading_Station and then pushes the items to the list. Notice that the push to list pushes the token.pallet to the list, not the token it self. After flow item creation the tokens could just go into a sink, or you can have them move on to other tasks if it makes sense, but generally it should now be the flowitems that are triggering the processes not the tokens.

The robot control loop then attempts to Get Pallet using a Pull From List activity. If there are no pallets, the process simply waits until one is available. It then tests to see if a station is available, if it is, it initiates a robot-processing sequence. If not, the loop waits until a station is available. Often the robot process would be in its own separate Fixed Resource or Task Executer - Process Flow, but this model illustrates the point.

0 Likes 0 ·
Vivek N avatar image Vivek N martin.j commented ·

Hello Martin, thanks for the quick response. I have gone through both the models to understand the steps added by you. I have following queries:

1. I am interested in using the current blank location on Loading_Station as the first unloading point. And keeping the pallets placement as it is, and reverse the sequence of pallets processing. i.e. the last location in current setup should become first and the vice versa.location-picking-sequence.jpg

2. In the first model 8078-parallel-station.fsm, when I run the simulation, the picking and placing of third and fourth pallet by robot shows a conflicting situation. The robot places finished third pallet on top of unprocessed pallet, and later picks the underneath pallet. Is there a way to restrict robot or Loading Station for picking up of the bottom layer part if there is already a top layer? Also, in this model under ItemList, I can see two expression fields 'Type' and 'age', what are there significance?

3. For the second model 809-parallel-station.fsm, I liked the idea of having independent flows for item creation and machine logic. I can see the separate process control loop, which led to robot arm waiting for pallet over loading station. Through this model I am trying to replicate a flexible manufacturing machine consist of two machining centers and a manipulator arm, which transfer the pallets between loading station (sliding tray) and machining stations. So, once all the loaded pallets at loading center are processed, manipulator will retract to a safe location, machine will stop and then through a human intervention Loading Station will be pulled out to unload the finished pallet and load the fresh batch of pallets. Since, animating the operation of manipulator will be tedious, I used already available robot in FlexSim to replicate the functioning. So, I am trying to move the robotic arm through "Travel" activity to retract to a home (or safe) location when machining centers are processing parts on pallet or when processing of all the pallets are finished. But, as you can see this causing unusual movement of robotic arm when token pass through this activity during the loading or unloading. Is there a way to overcome this issue?

0 Likes 0 ·
Show more comments

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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