Packing products into a container as assembly in a manual process

I’m currently learning about assemblies and this might be a basic question, but I cannot figure it out. Alreaduy tried to get help from the VC courses, but it didn’t help.


I’ve created a demo layout where the goal is for the worker to pack a quantity of products into a box, (essentially assemble an assembly). So essentially:

  1. Take a box and put it on the workstation
  2. Then, take as many products as there are in the assembly and put them in the same box
  3. Once assembly is complete, take it to the output conveyor
  4. Repeat the process with a new box

Layout:

Example of the assembly:

What is the right way to simulate this? I ran into a bunch of problems.

  1. Problem 1: worker does take the box and put the first bottle into it - but then takes another box. Then repeats this cycle.

  2. Question 2: if the result should be an assembly, is it right to feed in a product? Using a Feeder or a Feeder Process I didn’t see the possibility of feeding an assembly with just the initial step, for example.

I found I can do this using a Process Node and a Create statement. Is this the right way to feed components in this case? What is the point of the feeder then?

This is how the process flow looks:


So main question, what am I missing here and what is the right way to set this sort of scenario up?

Thanks!

Tried to adjust the flow so that there are now 2 flows:

  1. Box from conveyor to processing to out
  2. Products into the box

And in both flows processes should be creating steps of the same assembly (if I understand correctly).

Trying to explain my logic:

  • Box_Feeder creates the assembly with only the Box step. It goes to the end of the conveyor but for some reason disappears and doesn’t stop at Box_FromConveyor :cry:
  • Product_Feeder creates the assembly with the Products step. For some reason, this is immediately giving an error: Process Node #2::ProcessExecutor::Product_Feeder::Transport Out error: Lists containing more than one Assembly Instance are not supported.
  • At processing, the first TransportIn just brings any product in (the box). Then with GetAssembly it defines the first incomplete step - the step after Box in the assembly is Products. Theoretically with the next TransportIn it should take 3x4 products and put them in the box.

These are the flows by the way:

Any ideas on what is wrong here? Thanks!

Hi,

it’s hard to understand everything without the layout, but from what I got, it seems there are several mistakes.

Did you watch the Academy videos about Assembly?

I would also suggest the Layout Template (in eCat) “Assembly - Brick Example Layout”, which gives several example with Assembly. –> You could try doing the same as in the box “Product Type to Build Assembly”, where an Assembly is created from products, which will be easier.

1 Like

Tilma,

Thanks for the suggestions! I checked the “Construct example” in that layout and using the logic there actually got my test running now. However, there are 2 things I don’t like about it.

  1. To get exactly 12 bottles as in the assembly I added a while loop into the process that loops over TransportIn 12 times.

This seems like a workaround. What if the assembly changes from 3x4 to 4x5? If the assembly already contains the step with a pattern of products, can the process somehow use that info directly to fetch the right amount of products in?

  1. The bottles are put in the exact same place in the box. Visually, I would like them to be put in the right pattern immediately.

Is there a good way to achieve that? (apart from creating 12 new frames and somehow assigning each TransportIn to its own frame)

I’m not sure the Construct statement is the best way to go here. And if you don’t use it, it will solve both problems: you won’t need a While loop and the bottles can be directly placed at the correct position.

–> Either use the technique of importing the box as Assembly step and the bottles as products, or everything as a product with the example I suggested before.

For the different pattern, there are also different possibilities: doing one Assembly per pattern, or one Assembly with different parallel steps for each patterns.

Here is an example: Example_Assemblies.vcmx (2.9 MB)

1 Like

Thanks @Tilma, excellent examples :+1: This clarifies it and I can see now that the solution can actually be much simpler than I thought.

1 Like

@Tilma actually I have a followup question for you - let’s say that each bottle that is put into the box takes a certain time to be completed, so we would want to add a Work: for x seconds after adding each bottle.

I didn’t find any way to accomplish this, because it seems the process stays on TransportIn for bottles until the whole assembly step is completed (all slots filled). GetAssembly does not return the next empty slot.

Do you have any ideas on how this could be realised that each action of bringing the bottle would be followed by a work statement?

One workaround I thought of: in the transport link it’s possible to set a long PlaceTime for the bottle to simulate the working time.

I was not planing on being very active on the Forum at the moment, but I had a few minutes of fun making a new exemple :grinning_face_with_smiling_eyes:

As you said, the easiest way is to make the PlaceTime a bit longer in the TransportLink. If you want to make it look a bit nicer, you can adapt the movement of the operator for this transport by adding a new routine in the Programm tab (see page 22: Process Modeling Resources Manual | Visual Components Academy )

The more realistic way, but a bit more complex, would be adding the products one by one with a work statement in between. To do that, you need to have one product per step in your assembly. You can use the Auto-Assembly Addon to do that easily (check the demo video or pdf in the forum post). Then in a while loop, add one step at a time, do a work statement and check if the Assembly is full to be able to break out of the loop if it is.

Here are the 2 exemples:

Assembly Examples_with check assembly.vcmx (3.0 MB)

1 Like

I’m glad you are :smiling_face_with_sunglasses: Not sure how you managed to learn VC, but when you’re stuck then I think there’s no better way than to ask more experienced people on the forum for help - especially these examples are super helpful.

Yep, thanks! I can see how the Auto-Assembly Addon and one assembly step per slot makes sense, I’ll try that out later.

This flow is actually part of a real-world scenario I’m simulating - and ideally I’m looking to add some more steps to it ((1) worker should pack the bottle in its own individual package on the workstation - bottle package does not need to come from anywhere, basically just changing the product type; (2) filled box should be put on a pallet that’s waiting in the output, instead of output conveyor; (3) once pallet is filled, it should go out).
I’ll try to figure out how to implement these extra steps on my own - but if I get really stuck somewhere, I might reach out to you for some more examples. :sweat_smile:

Have a nice day!

@Tilma I created another similar test here to try out the Auto-Assembly Addon. Ran into this strange behaviour with the Box feeder.

When set to feed the Box Assembly (assembly I created manually with steps box and a pattern for bottles), it feeds an empty box.

However, when set to feed Box_Assembly_Separate_Steps (autogenerated with box and separate steps for each bottle), it immediately feeds the finished assembly with all bottles? It should be the empty box step.

Attaching the layout here just in case (don’t mind some of the other unfinished parts).
Assembly, Box assembly, pallet assembly.vcmx (2.8 MB)

The product creator behavior (that the feeder components use) doesn’t support defining assembly steps when creating assembly product instances so it creates them fully populated with default products.

You’ll need to use a process with a Create statement to create partially filled assemblies.

1 Like

@TSy but then why doesn’t it create the fully populated assembly in the first example? Product creator is set to Box Assembly, but it produces an empty part.

Actually I guess the answer is that in this case I defined the last step with DefaultProductType = Null

In the other case, a type is set for each product.

Update: got it working after I noticed these examples and set the default type to Null for each product in the assembly. :+1: