ATTENTIONThis FlexSim Community Forum is read-only. Please post any new questions, ideas, or discussions to our new community (we call it Answers) at https://answers.flexsim.com/. Our new Question & Answer site brings a modern, mobile-friendly interface and more focus on getting answers quickly. There are a few differences between how our new Q&A community works vs. a classic, threaded-conversation-style forum like the one below, so be sure to read our Answers Best Practices. |
flexsim.com |
#1
|
||||
|
||||
Problem with combiner
Hi
I have a problem on combiner.I have six item types that goes to the combiner.Out of six itemtypes each of 2 itemtype combined with each of the itemtype coming from the container port.If any one of six itemtype is finished the combiner will stop assembling the items. What i want is even if any one of the itemtype is finished I want the remaining items to be combined without waiting for missing itemtype(yellow box).I tried items to be combined from port2,port3 with port1 open and other incoming items coming from remaining ports closed that even that did not solve the problem because the items coming from other arrivals from container port (port I) is opened and hence the source7 gets blocked.I also need clarity of how and where to use senddelayed messages in this context. Can any one help me in solving the problem. |
#2
|
||||
|
||||
Hello Sagar,
As you probably read, the componentlist is updated only when an Item enters through Port 1, the Container Port. If you want to change the Componentlist while the combining is running you have to change the already created events of the flexsim engine. That is not recommendable. You can fulfill the last compentlist, if you add a queue in front of each Component Input Port of the Combiner. When a needed Queue becomes empty, you can move anytime a different Itemtype to this queue and the standard mechanism will finish the work. But if your intention is that the amount differ from the current component list you can still use the command moveobject, to combine any amount of items you want. And you can move the unfinished pallet with moveobject to the outobject, too. Even the OnExit Trigger is fired. Jörg |
The Following 2 Users Say Thank You to Jörg Vogel For This Useful Post: | ||
Tom David (04-14-2014) |
#3
|
||||
|
||||
Hi jorg can you clarify these point once more
Quote:
|
#4
|
||||
|
||||
If you had placed queues in front of the component input ports of the combiner and you move items to these queues by the command moveobject, your palette contains other itemtypes than from the standard componentlist. But the amount is still the same as in the actual componentlist. You have asked, too, how you can place more or less items to a palette in the combiner when you want this should happen. Then you combine the components by the command moveobject on the palette- maybe you repeat the command several times. After combining you can release the palette by releaseitem(first(obj Combiner),1); or move the palette by moveobject(first(obj Combiner), outobject(obj Combiner,1)); to the following object on port 1(- obj Combiner is a pointer or treenode to your Combiner object).
Jörg Last edited by Jörg Vogel; 12-03-2014 at 02:52 AM. Reason: add sample model |
The Following 2 Users Say Thank You to Jörg Vogel For This Useful Post: | ||
Tom David (04-16-2014) |
#6
|
||||
|
||||
From the previous model.I am trying to change the 3d shape of flow item on exit from the combiner.I have used change 3d shape picklist option and selected join mode but the items are going out of the combiner as if they are in pack mode.What to do in order to get the items in join mode?
Last edited by sagar bolisetti; 04-19-2014 at 12:29 PM. |
#7
|
||||
|
||||
If you had moved the flowitems by command into the combiner and you want them joining instead of packing then you can destroy the moved flowitems. The previous moveobject command is only necessary for a correct statistic in the combiner.
Jörg |
#8
|
||||
|
||||
I tried using with destroyobject command still the items are going out in pack mode.
Last edited by sagar bolisetti; 04-19-2014 at 07:37 AM. |
#9
|
||||
|
||||
To be more precise: if you don't use the standard functionality and you transfer the container item by moveobject, you have to build the standard behaviour on your own. In join mode the engine destroys all items but the container item. Therefore you have to write a loop and destroy the items in the container. Maybe it works clearcontent, too. But be aware of the actual tracked variables as wip, perhaps the destruction of the items isn't recognized.
Jörg |
The Following User Says Thank You to Jörg Vogel For This Useful Post: | ||
sagar bolisetti (04-20-2014) |
#10
|
||||
|
||||
Thanks jorg it works.I written a for loop clearing the contents on container item at the exit of the combiner.But i also do not know that tracked variables recognize the destruction of flowitems
Last edited by sagar bolisetti; 12-15-2014 at 11:55 PM. Reason: Uploaded attachment model |
#11
|
||||
|
||||
My problem is most relevant with the ongoing topic so i posted here.I want to calculate throughput and leadtime after the items leave the combiner in join mode.I figured out from Anthony's post that
when combiner carry out in join mode items gets vanished from the system.I want to know the possible ways of calculating throughput and lead time from the tracked variables Last edited by sagar bolisetti; 05-12-2014 at 01:11 PM. |
#12
|
||||
|
||||
Hello Sagar,
the standard tracked variables WorkInProgress and TimeInSystem are cumulative variables. They do not store individually values dependend to unique items. If you want such behaviour you can create your own tracked variables or bundles which let you identify the time an item stays in the model. Another approach is the using of labels at the items or the function getcreationtime(obj). Jörg |
The Following User Says Thank You to Jörg Vogel For This Useful Post: | ||
sagar bolisetti (05-15-2014) |
#13
|
||||
|
||||
I am trying to track the time each flow item spent in the system using labels and append the results to global table (my table).Please see the code In Queue 9 and sink 12,Queue9 is from where the time is recorded and sink 12 is where the results are collected.I have tested it without adding combiners and the model is working fine.The problem here is when the items are combined the attributes of the items are destroyed So I have set a label (start_time) at the exit of combiner so that cumulative values of start_time in container item are recorded.The value of start_time is always recording as zero from the combiner as a result the flow time here shows in global table is more than intended.I have figured it out by printing the values(start_time) in output console.
My Question is how can be the cumulative values of start _time can be achieved in the container item so that flow time can be read correctly from global table? Last edited by sagar bolisetti; 12-15-2014 at 11:56 PM. Reason: lost attachment |
#14
|
||||
|
||||
Hello Sagar,
I did not look into your model. But you can test, when it is useful to collect your data in the combiner. You can test the content whenever an event happens at the combiner. If the content is equal to the parts entered the combiner, none item is destroyed, otherwise collected items are destroyed. Update your labels at the container item just before any item gets destroyed or store those values at the combiner himself until the combiner finishes the process. Then you can update the container on exit. Jörg |
#15
|
||||
|
||||
Hello Sagar,
I took a look in your model. It is obviously correct, that the stored variable's value is zero, because you add at the same trigger a new label, read this label value and write this value back to the label. A new label is per definition null. You can not expect a label value just by declaring a label. You have to set a value. It is a bit tricky because the treenode or pointer named involved and item point both to parnode(1). You can not get any information to the already destroyed joined items on exit anymore. But you can use the command getcreationtime(item) to set the label value by setlabelnum(item,"start-time", getcreationtime(item)); Another approach is to declare a new label to the item at the source OnCreation- or OnExit-trigger and set its value to the current simulation runtime by the command time(). As you have done it in the queue in front of the multiprocessors. Now you can build the difference of the actual runtime to the stored time in the label at any trigger or anytime you want. Experienced user would prefer the command getcreationtime instead. Back to my previous Post, if you want to keep the information of the creation time of all items joined to the container item, you have to store them temporarily at the combiner. On the Entry Trigger you set an own label for each item which enters through a port above number one to the value of creation time of the item. After collecting all items the combiner processes the items and destroys them but one. On the Exit Trigger you decide which values or the meantime of the creation times do you use to set the value to a new label of the item which leaves the combiner. If you need more hints, just ask again. Jörg Last edited by Jörg Vogel; 05-16-2014 at 07:58 AM. Reason: be more precise |
The Following User Says Thank You to Jörg Vogel For This Useful Post: | ||
sagar bolisetti (05-17-2014) |
#16
|
||||
|
||||
Hi jorg,
I am not able to get a solution yet.I have created another set of items in the source and added queue before the multiprocessor to record creation time for these items .Please see the model and correct me where did i go wrong Last edited by sagar bolisetti; 12-16-2014 at 09:03 PM. Reason: lost attachment |
#17
|
||||
|
||||
Hello Sagar,
I am a bit confused. What do you want to achieve with your code in the on entry and on exit trigger? Why do you set the integer variable port with a double value? What purpose has the return statement? Jörg |
#18
|
||||
|
||||
Hi jorg,
I have my updated model in my previous post.Its my mistake to use integer variable port with a double value and i thought that i should return the value at the exit trigger.Now i understood my mistake.In the present model i tried to give the value of creationtime to the container item and store the value in the label(start_time).In the exit trigger i tried to assign the value of creationtime to particular label through switch statement block. |
#19
|
||||
|
||||
Hello Sagar,
I can't find your corrected model. Maybe you could attach it. I have a problem with the lead time of a combined product. Maybe a part of the product,for example a screw, has been stored in a warehouse for a period of three years, when does the lead time start? How do you want to compute the lead time? Which times do you want to get an influence in the lead time? Which influence should these times get? I have made a mistake. It is not the number of ports which defines the amount of labels you need to store temporarily the creation times of incoming items in a combiner. In fact it is the number of items, which are combined. If you know the maximum number of combined items during one combination process in the simulation run, you can build as much labels as you need in the combiner statically in the combiner's label tab. If you intend to build only the amount of labels a combination needs you can add the not already created labels dynamically in the On Entry trigger of the combiner to the combiner's labels. When the assembled item leaves the combiner you can decide on the On Exit Trigger how the joined item's lead times should go into the lead time of this item.You can save the computed times in labels in the leaving item. When this item leaves your model you decide again which influence the assembled items lead times get in its own lead time. Jörg |
#20
|
||||
|
||||
The screws are usually stored in inventory.But I want to account lead time from the time it has been released to shopfloor.So I want to compute the lead time starting from there.The times I want to include it are traveling times,waiting times,times spent in temporary storage area,time spent in processors.The influence usually gets on times are the batch size and WIP.
In my present model i am combining the items based on the average value of combination of processes.For example I have one product that needs two parts and other needs 4 parts.so I am taking its average i.e 3. Now I have attached my model.Please kindly correct my model Last edited by sagar bolisetti; 05-19-2014 at 09:54 AM. |
Thread | Thread Starter | Forum | Replies | Last Post |
combiner attributes problem | sagar bolisetti | Flexsim Student Forum | 3 | 01-28-2014 12:43 AM |
Problem with a coordinated task sequence. Could somebody please help spotting the problem? | Vadim Fooks | Q&A | 1 | 08-27-2012 03:26 PM |
Problem With Combiner | Bill Lank | Q&A | 3 | 01-31-2011 11:57 AM |
Combiner problem | Angie Williamson | Q&A | 6 | 04-21-2010 09:04 AM |
Combiner problem | Simon Farsah | Q&A | 4 | 05-29-2008 06:34 AM |