modelP10_2

Hybrid model of an orange juice canning company

Extends from DESLib.SIMANLib.SRC.Draft (Draft model for constructing new models).

Information

This model represents a factory that produces canned orange juice. It has been modeled as a hybrid model.

The orange juice arrives to the factory in trucks. Each truck must wait for a free dock to start pumping its content into the factory tank. When the truck is empty, it leaves the dock. If the factory tank gets full, the pumping operation is stopped until some capacity is available.

The canning system takes juice from the factory tank and produces pallets. If the tank is empty, the canning system has to wait.

The juice in the trucks and the factory tank have been modeled as continuous-time variables.
The control of the operations is performed by the flow of entities through the system.
The interaction between the discrete-event part and the continuous-time part has been performed using the ExternalAssign block, and the CrossUP and CrossDOWN models from the DEVSLib library (which are compatible with all the SIMANLib blocks).

Simulation

The number of completed pallets is counted, and the discrete-time statistics for the number of trucks waiting for a free dock are recorded.
Results are written to the SIMANLIB_RESULTS.txt file, at the end of the simulation.
The continuous-time variables representing the truck, tank and canner levels can be ploted using Dymola.

Components

TypeNameDefaultDescription
IntegerPSNumberIn (from Draft)
IntegerPSNumberOut (from Draft)
Booleaninit (from Draft)
RealtruckLevel
RealtruckRate
RealtankLevel
RealtankRate
RealcannerLevel
RealcannerRate
Blocks.CreateTruckArrival
Blocks.Queuequeue
Blocks.Seizeseize
Blocks.DelayDocking
Blocks.ExternalAssigntruckL1
Blocks.Queuequeue1
Blocks.Seizeseize1
Blocks.Releaserelease
Blocks.DisposeTruckLeave
Blocks.CreateTruckEmpty
DEVSLib.AuxModels.CrossDOWNcrossDOWN
DEVSLib.AuxModels.CrossUPcrossUP
Blocks.ExternalAssigntruckR1
Blocks.ExternalAssigntankR1
Blocks.ExternalAssigncannerR1
Blocks.ExternalAssigntruckR2
Blocks.ExternalAssigntruckL2
Blocks.ExternalAssigntankR2
Blocks.Releaserelease1
Blocks.Disposedispose1
Blocks.CreateTankEmpty
DEVSLib.AuxModels.CrossDOWNcrossDOWN1
Blocks.ExternalAssigncannerR2
Blocks.ExternalAssigntankR3
Blocks.Disposedispose2
Blocks.CreateTankFull
Blocks.ExternalAssigntruckR3
Blocks.ExternalAssigntankR4
Blocks.Disposedispose3
DEVSLib.AuxModels.CrossDOWNcrossDOWN2
Blocks.CreateTankLow
Blocks.Branchbranch
Blocks.BRulebRule
Blocks.ExternalAssigntruckR4
Blocks.ExternalAssigntankR5
Blocks.Disposedispose4
DEVSLib.AuxModels.CrossUPcrossUP1
Blocks.CreateProduceCan
Blocks.ExternalAssigncannerL1
Blocks.Disposedispose5
Blocks.Countcount
Elements.VariableTruckLevel
Elements.VariableTruckRate
Elements.VariableTankLevel
Elements.VariableTankRate
Elements.VariableCannerLevel
Elements.VariableCannerRate
Elements.CounterCompletedPallets
Elements.EntityTypeTruck
Elements.ResourceDock
Elements.ResourceDone
Elements.QueueDoneQ
Elements.QueueDockQ
Elements.DStatWaitingTrucks
Modelica.Blocks.Sources.RealExpressionrealExpression
Modelica.Blocks.Sources.RealExpressionrealExpression1
Modelica.Blocks.Sources.RealExpressionrealExpression2
Elements.EntityTypeCan