Hi,
I'm trying to make a transport system. I use the assembly as a station in my system, but I have some issues. I have 2 options for the same component. I use a queue in which I have added a percentage that in the first case goes to scrap (sink) and the second case goes to the assembly. I want to take a new component from a warehouse in case the first component goes to scrap. The assembly doesn't let me add another input (from the warehouse) which means the number of input=number of components for the assembly, so I couldn't add the second case as a new input on assembly. I connected those 2 options into 1 storage, so I could have 1 input, but it doesn't run correctly because it takes a mix of new and old and not a specific component in any case. I don't know how to specify the component that goes out of the warehouse because of the percentage of the queue that gives me random components in any time.
Thank you in advance.
Angeliki
Assembly
- Marnix Vos
- Posts: 3
- Joined: Friday 10 May, 2024 - 08:27
Re: Assembly
Hi Angeliki,
You are correct that the assembler atom has one input channel for each component type it expects. To get the functionality you desire, it is indeed best to have the components arrive from the same atom, whether it originates from the warehouse or the original queue. However, I think it will be easier to not route the original components through the warehouse (because of the added complexity of having to select the right components then), and instead merge the two flows in an additional queue atom that serves as the collection point.
If I understand you correctly, you want to release exactly one component from the warehouse each time a component is scrapped. To apply such flow conditions, I recommend using the Lock & Unlock atoms in the flow control section of the library. This should accomplish the described functionality without having to implement a selection process on the warehouse.
If this does not solve your problem, I would recommend taking a look at how to write your own custom triggers/scripts. Enterprise dynamics has its own scripting language for this (4Dscript). Did you perhaps already take a look at that? If not, the pdf tutorial "A first start in 4Dscript" can be found in the dropdown menu "TutorialOverview" in the help tab of Enterprise Dynamics. Writing your own triggers greatly increases your flexibility when building models with complex interations between atoms, which seems to be the direction you are going.
Let me know if this solved your problems!
Best,
Marnix
You are correct that the assembler atom has one input channel for each component type it expects. To get the functionality you desire, it is indeed best to have the components arrive from the same atom, whether it originates from the warehouse or the original queue. However, I think it will be easier to not route the original components through the warehouse (because of the added complexity of having to select the right components then), and instead merge the two flows in an additional queue atom that serves as the collection point.
If I understand you correctly, you want to release exactly one component from the warehouse each time a component is scrapped. To apply such flow conditions, I recommend using the Lock & Unlock atoms in the flow control section of the library. This should accomplish the described functionality without having to implement a selection process on the warehouse.
If this does not solve your problem, I would recommend taking a look at how to write your own custom triggers/scripts. Enterprise dynamics has its own scripting language for this (4Dscript). Did you perhaps already take a look at that? If not, the pdf tutorial "A first start in 4Dscript" can be found in the dropdown menu "TutorialOverview" in the help tab of Enterprise Dynamics. Writing your own triggers greatly increases your flexibility when building models with complex interations between atoms, which seems to be the direction you are going.
Let me know if this solved your problems!
Best,
Marnix
Re: Assembly
Hi Marnix,
I can use a queue to connect the components; the first one is coming from one queue and the other from the warehouse. I have to keep the warehouse to store the components (it is a station that has to appear in the system). How can I separate those two components with the help of the queue? Which setting do I have to change? Do I need to add the Lock & Unlock atoms? I'm unfamiliar with this program and have already read the tutorials. I haven't understood completely how to use the Lock & Unlock atoms. Would you have any advice? It will be challenging for me to use a 4D script, so if there is any other way to do this, I would prefer it. Thank you very much for your response.
Kind regards,
Angeliki
I can use a queue to connect the components; the first one is coming from one queue and the other from the warehouse. I have to keep the warehouse to store the components (it is a station that has to appear in the system). How can I separate those two components with the help of the queue? Which setting do I have to change? Do I need to add the Lock & Unlock atoms? I'm unfamiliar with this program and have already read the tutorials. I haven't understood completely how to use the Lock & Unlock atoms. Would you have any advice? It will be challenging for me to use a 4D script, so if there is any other way to do this, I would prefer it. Thank you very much for your response.
Kind regards,
Angeliki
- Marnix Vos
- Posts: 3
- Joined: Friday 10 May, 2024 - 08:27
Re: Assembly
Hi Angeliki,
Splitting two types of products can be done by assigning them labels on entry/exit triggers. The queue can then base the queue discipline / send to properties on this label. This is quite straightforward, so if that solves your problems, I would indeed recommend doing that.
However, if you want to only release a component from the warehouse when another component gets scrapped, this is more involved. After all, the warehouse somehow needs to be notified that a product was scrapped. With the use of lock and unlock atoms, it is possible to get (close to) the desired functionality without writing 4DScript.
The basic use of the lock atom is to limit the number of products in a certain part of the system. When the lock level is set to 1, the lock closes when a product passes the lock (allowing no more products to pass), and opens when that same product passes the unlock atom. The Lock should be placed in the flow similar to a Queue or Server atom. The first input and output channel should be used to place the Lock in the flow. By connecting output channel 2 with input channel 2 of an Unlock, one achieves that the atom input is opened when an atom passes the Unlock.
In your case, we apply the lock somewhat differently, using the feature that the product that closes the lock does not have to be the same as the one that reopens it. Try the following:
There is one thing to note about this solution: a lock is always open at the start of the simulation. This means that the warehouse will release one component at the start of the simulation. This may or may not be a problem for your application.
I hope this helps!
Kind regards,
Marnix
Splitting two types of products can be done by assigning them labels on entry/exit triggers. The queue can then base the queue discipline / send to properties on this label. This is quite straightforward, so if that solves your problems, I would indeed recommend doing that.
However, if you want to only release a component from the warehouse when another component gets scrapped, this is more involved. After all, the warehouse somehow needs to be notified that a product was scrapped. With the use of lock and unlock atoms, it is possible to get (close to) the desired functionality without writing 4DScript.
The basic use of the lock atom is to limit the number of products in a certain part of the system. When the lock level is set to 1, the lock closes when a product passes the lock (allowing no more products to pass), and opens when that same product passes the unlock atom. The Lock should be placed in the flow similar to a Queue or Server atom. The first input and output channel should be used to place the Lock in the flow. By connecting output channel 2 with input channel 2 of an Unlock, one achieves that the atom input is opened when an atom passes the Unlock.
In your case, we apply the lock somewhat differently, using the feature that the product that closes the lock does not have to be the same as the one that reopens it. Try the following:
- Put the lock atom between "the warehouse" and "the queue right before the assembler".
- Put the unlock atom between "the queue/server that decides whether a component from the non-warehouse source is faulty or not" and the "Faulty component Sink".
- Connect the lock and unlock atom using their second Input/output channels.
- The lock level should default to 1, which is the value we want for this application
- If the component is not scrapped, it is send to the queue before the assembler, and will be used by the assembler when it is ready
- If the component is scrapped, it is send through the unlock atom to the sink. This opens the lock next to the warehouse, immediately prompting the warehouse to release a component (if one is available). The component passes the lock, closing it again, and continues towards the assembler.
There is one thing to note about this solution: a lock is always open at the start of the simulation. This means that the warehouse will release one component at the start of the simulation. This may or may not be a problem for your application.
I hope this helps!
Kind regards,
Marnix
Re: Assembly
Hi Marnix,
Thank you very much for your response. It was very helpful. For your interest, I used lock and unlock and it gave me the results I wanted.
Kind regards,
Angeliki
Thank you very much for your response. It was very helpful. For your interest, I used lock and unlock and it gave me the results I wanted.
Kind regards,
Angeliki