Loading Arm

Overview and Key Concepts

The Loading Arm is used to load or unload items (vessels, trucks, ...) containing one or more FloWorks tanks. Its intended use is as the loading controller of a loading point.

In abstract terms, the Loading Arm is a pump which allows material to flow from (usually) a fixed tank from or into a mobile tank, i.e. the storage compartment of a vessel or truck. The loading arm is a loading controller, which means that it controls the connection and disconnection to or from the fixed tank, and signals to the berth or loading point when the (un)loading process is complete.

A typical model using the Loading Arm looks as follows:

  • A (regular FlexSim) source whose FlowItem class is set to generate FlowVessels or Trucks.
  • A loading point connected by center port connection ('S'-connection) from the loading point to the loading arm.
  • A flow source and flow tank to represent the production of material.
  • The flow tank is connected (by regular 'A'-connection) to the loading arm.
    For unloading from the vessel to the tank, the connection would have been from the loading arm to the tank.
  • A (regular FlexSim) sink to model the route of the flow vessels or trucks after loading.

Events

The flow pipe uses the standard events that are common to almost all FloWorks objects. See FloWorks Triggers for an explanation of these events.

States

For statistical purposes, the item to flow's FloWorks state profile will be in one of the following states at various points during a simulation run:

  • Idle - There is no flow through the loading arm, because no transporter tank is connected or the flow is blocked (e.g. source tank is empty).
  • Processing - Material is flowing at a non-zero flow rate.

Properties

The item to flow object has five tabs with various properties. The first three tabs are standard tabs that are common to all flow objects. For more information about the properties on these tabs, see:

The last two tabs are the standard tabs that are common to all fixed resources. For more information about the properties on these tabs, see:

Settings

Control

This setting is described here.

Unload transporter

This checkbox indicates the direction of flow through the loading arm. By default, the loading arm is used to load the transporter. This means that the vessel, truck, etc. will arrive with an empty tank that is to be filled from a FloWorks object, such as a flow source or fixed tank. In this case you make the connection from the flow source to the loading arm, and the loading arm will dynamically make connections to the transporter's tank. If the transporter arrives with a full tank that you want to unload, check the "Unload transporter" box, so that the loading arm knows to connect from the transporter tank to itself (and connect the loading arm to the fixed tank).

Flow item tank

The FlowTaskExecuter, FlowTruck and FlowVessel flow items provided by FloWorks have a single tank on board. However, you may create your own flow items that have multiple tanks, or in which the tank is not the first subnode. In this case you can use the Flow item tank field to tell the loading arm where to find the tank that it should connect to (or from). You can use the flowItem variable to reference the current flow item, the default expression is "Tank on flow item" which returns flowItem.first.

Target level

By default, a loading arm in "Load transporter" mode will continue loading the flow item tank until it reaches its maximum capacity; if the "Unload transporter" checkbox is checked the loading arm will let the flow continue until the flow item tank is empty. You can change the loading or unloading level by making this expression return a custom amount. When the content of the flow item tank reaches this amount, the loading arm will consider the loading process as finished. In this expression you have access to the flowitemtank variable which references the flow item tank to be (un)loaded, and the mode indicating whether the loading arm is set to LOADING the transporter or UNLOADING it to the fixed tank.

Custom coding

You may control the behavior of the loading arm dynamically by writing FlexScript, for example in a Script window or by changing the code behind one of the options in an object trigger.

The loading arm is an instance of the FlowObject class, see the class reference for information about its properties.