question

Liam Chiu avatar image
0 Likes"
Liam Chiu asked Kavika F commented

How can I carry four type item from different buffer at once

Hi,

I need to transport four types of item from queues 2,3,4,5 to queues 6,7,8,9 and 10,11,12,13 via an operator (two production lines), and the operator need to carry four items at once. Also, I need to align the cart1 with the position of the item, how can I set it ? I have attached a model of what I have.

Thank you in advance.


carry four types item from different buffer at once.fsm

FlexSim 20.1.3
flowitemoperatorstransport
· 1
5 |100000

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

Kavika F avatar image Kavika F ♦ commented ·

Hi @Wei_cheng Chiu, was Joerg Vogel's answer helpful? If so, please click the "Accept" button at the bottom of their answer. Or if you still have questions, add a comment and we'll continue the conversation.

If we haven't heard back from you within 3 business days we'll auto-accept an answer, but you can always unaccept and comment back to reopen your question.

0 Likes 0 ·

1 Answer

Joerg Vogel avatar image
0 Likes"
Joerg Vogel answered Jason Lightfoot commented

This is a model in Version 21:

carry-four-types_collected-JV.fsm

I have two Lists for tasksequences collecting by a partition ID -one list for each destination area. The partition ID is incremented individually by local variable "port" in each outgoing queue.

Additionally I push an Array to another List "ListOfTSLists" to count the entries on each TSList. This array consists of tasksequence list name and partition value. A dynamic field evaluates the entries of each partition.

Whenever the entries length of a partition reaches 4, I pull the value of ListOfTSLists. I can evaluate first array value to identify the Tasksequence list and by second element the partition. I pull all Tasksequences by this data and dispatch each tasksequences to the operator. I do this in a genearal Process Flow.

Use Transport : adjusted "push to Task Sequence List"

/***popup:PushToList:listType=TaskSequence*/
/**Push to Task Sequence List*/
/***tag:showAdvanced*//**1*/
string toport = "toPort"+string.fromNum(port,0); // string of labelname at queue
current.labels[toport].value +=1;// increment partition ID value

if (/** \nCondition: *//***tag:condition*//**/true/**/) {
    TaskSequence taskSequence = TaskSequence.create(assertattribute(current, "stored", 0), priority, preempt);

    taskSequence.addTask(TASKTYPE_TRAVEL, current, NULL);
    taskSequence.addTask(TASKTYPE_LOAD, item, current, port);
    taskSequence.addTask(TASKTYPE_BREAK, NULL, NULL);
    taskSequence.addTask(TASKTYPE_TRAVEL, destination, NULL);
    taskSequence.addTask(TASKTYPE_UNLOAD,item, destination, opipno(current,port));
    string listName = /** \nList: *//***tag:listName*//**/"TSList"+string.fromNum(port,0)  /**/;
    int partID = current.labels[toport].value; // read partition value
    List(listName).push(taskSequence, /** \nPartition ID: *//***tag:partitionId*//**/partID/**/);
    Array toPush2 = [listName, partID]; // create value to push to identify 4 combined tasksequences
    List("ListOfTSLists").push([toPush2]); // push value
}
return 0;   

Cart request: customize a pallet instead of a box item in flow item bin!


· 2
5 |100000

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

Liam Chiu avatar image Liam Chiu commented ·

Thank you I`ll be trying this

0 Likes 0 ·
Jason Lightfoot avatar image Jason Lightfoot ♦♦ commented ·

Here's an approach if you want the operator to be more proactive and not wait for 4 but to carry items to the same production line. It's done by matching the port the item is being sent to using the BreakTo trigger.

TaskSequence activets = param(1);
TaskExecuter current = ownerobject(c);
/***popup:SameLabel*/
/**Same PortNumber*/
/** \nOnly break to tasksequences that load flowitems whose send to port matches that of the first flowitem this object picked up.*/

Dispatcher theObject = /** \n\nObject queueing the tasksequences: *//***tag:dispatcher*//**/current/**list:current~current.inObjects[1]*/;
TaskSequence returnts = NULL;

for (int index = 1; index <= theObject.taskSequences.length && ! returnts; index++) {
  TaskSequence curts = theObject.taskSequences[index];
  Object involved = curts.tasks[2].involved1;
  if (
 getitemsendto(involved) == getitemsendto(current.first) //  Check to see if the item label values match
 && 
 gettotalnroftasks(curts) == getnroftasks(curts) // Make sure it is a complete sequence
  ) 
returnts = curts;
}
/** This option assumes that the tasksequences are standard sequences. (i.e. Travel/Load/Break/Travel/Unload)*/
return returnts;

carry-four-types-item-from-different-buffer-at-onc_jl.fsm

0 Likes 0 ·