Multi-compartment loading controller

Overview and Key Concepts

The Multi-compartment loading controller coordinates the loading or unloading of multiple loading arms, usually in the case of items (vessels, trucks, ...) with multiple FloWorks tanks. Its intended use is as the loading controller of a loading point. Conceptually, it has a similar role as the Dispatcher for Task Executers.

When a vessel only has one compartment, you usually create one or more loading arms, and select one of them to be the loading controller in the properties of the berth or loading point. The loading arm then controls when the (un)loading process is complete by listening for the events of the transporter's tank, and notifies the loading point when the transporter can be released. When you have multiple loading arms, for example because the vessel has multiple compartments that you want to unload simultaneously or sequentially, the transporter should not listen for the signal of a single loading arm. Instead, all loading arms should report that they are ready before the berth can release the item. The multi-compartment loading controller's purpose is to play this coordinating role. You attach it to the loading point instead of a single loading arm, then connect the loading arms to the multi-compartment loading controller.

The loading or unloading strategy of the multi-compartment loading controller consists of a number of steps, that will be executed consecutively. In each step, you can select one or more loading arms in the model, that will all be given the order to execute their (un)loading operation simultaneously. Which tank they will (un)load and to which level, is determined by each loading arm. Only when all the loading arms in a step report that they have completed the operation, will the multi-compartment loading controller continue to the next step. When all the steps are complete, the berth or loading point is signalled that the vessel has been fully (un)loaded and that it can proceed to the post-processing step (if applicable) before releasing the vessel.

The loading arms in each step can be referenced directly, for example by name or by using an object sampler, but the more common set up is to connect the loading arms to the multi-compartment loading controller by center port ('S') connection and then using the pick options provided by FloWorks to select one or more of these arms for every step. A typical model with a multi-compartment loading controller then looks as follows:

An example model with a flow vessel with four compartments, and a multi-compartment loading controller that controls four loading arms to unload each product to an appropriate tank. Note that the berth has a center port connection to the loading controller so it can reference it; the loading controller has center port connections to three loading arms but references one loading arm explicitly by name.


The multi-compartment loading controller has a minimal set of events: On Reset, On Message and On Draw. These are described on the FloWorks Triggers page. Note that all other events described on that page are not applicable since on flow actually goes through the multi-compartment loading controller.


The multi-compartment loading controller does not have a FloWorks state profile as it is not a flow object, and does not keep any statistics on its primary state profile. In most cases statistics on the loading and unloading process are probably best tracked on the berth or loading point, or on the individual loading arms.


The multi-compartment loading controller does not keep track of any statistics, as it does not change its state and neither flow items nor continuous flow passes through it.


The multi-compartment loading controller uses the following properties panels: