question

pc neo avatar image
0 Likes"
pc neo asked Mischa Spelt commented

FloWorks: how to send vessel away before unload till empty

@Mischa SpeltI am working on a model that has vessels filled up GearlessOGV, when the OGV is filled
I will like to send the vessels away and not keep them at the Berth. In order to achieve this I have used ProcessFlow to manually disconnect the FlowTank of vessel from the LoadingArm and send it away. After this action, it seems that the Berth is now left in a state that is unable to process any other vessels. Though when OGV arrive the Berth receives vessels but the vessels are never unloaded through the LoadingArm. Also, I noted that the vessels that are received by Berth cannot be seen visually though you can find them using Model Tree (as shown in the pic attached).

vessel.jpg

Please advice on what is done wrong or what is the best approach to achieve it. A sample is attached.

sample-model-partialrecycle.fsm

The version of FloWorks that I used is FloWorks 19.2.1 with a patch given in https://answers.flexsim.com/questions/75319/install-1924-give-error-on-floworks.html?childToView=75327#answer-75327

FlexSim 19.2.4
FloWorksberthloadingarmdisconnect
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

Mischa Spelt avatar image
1 Like"
Mischa Spelt answered Mischa Spelt commented

The loading arm and berth have some internal communication going on that gets disrupted when you just disconnect the loading arm and kick out the vessel. The main reason your berth stops working is the loading arm stays assigned to the barge and will not release the position on the berth until it detects the target level.

As a workaround, you could try not disconnecting the vessel manually, but scheduling the message it expects, using the following code in Disconnect Loading Arm.

  1. FlowObject loadingArm = token.bargeCompartment.as(Object).outObjects[1];
  2. destroyeventsofobject(loadingArm);
  3. createevent( loadingArm, 0, 0x81300, "", token.barge );
  4. //token.bargeCompartment.as(FlowObject).output.ports[1].disconnect() ;

The constant 0x81300 is the internal code for the "Loading complete" event. See the attached model 24067-sample-model-partialrecycle-ms.fsm.

I hope that provides a solution to the problem. As said, this is more of a workaround. The Berth/Loading Arm is suitable in most simple cases, but if you seriously start simulating port operations our experience is it is often better to replace the berth with a Queue or Basic FR and the loading arm with a Pump, then do the connecting and waiting logic in Process Flow. We have done this a few times ourselves, and were planning to add a Process Flow template to the FloWorks 20.0 release similar to the attached example berth-with-processflow.fsm.


· 6
5 |100000

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