freetype UP_DOWN == { Up, Down, udIdle }
dynamic function TableElevationMot : UP_DOWN
initially udIdle
dynamic function TableRotationMot : ROTATION
initially rIdle
output function MinRotation : BOOL
output function MaxRotation : BOOL
output function ErtInBottomPosition : BOOL
output function ErtInTopPosition : BOOL
dynamic relation TableLoaded
initially false
derived relation StoppedInLoadPosition ==
ErtInBottomPosition and MinRotation and TableElevationMot = udIdle
and TableRotationMot = rIdle
derived relation StoppedInUnloadPosition ==
ErtInTopPosition and MaxRotation and TableElevationMot = udIdle
and TableRotationMot = rIdle
transition WAITING_LOAD ==
if StoppedInLoadPosition and TableLoaded
then TableElevationMot := Up
TableRotationMot := Clockwise
endif
transition MOVING_UNLOAD ==
if TableElevationMot = Up and ErtInTopPosition
then TableElevationMot := udIdle
endif
if TableRotationMot = Clockwise and MaxRotation
then TableRotationMot := rIdle
endif
transition WAITING_UNLOAD ==
if StoppedInUnloadPosition and not( TableLoaded )
then TableElevationMot := Down
TableRotationMot := CounterClock
endif
transition MOVING_LOAD ==
if TableElevationMot = Down and ErtInBottomPosition
then TableElevationMot := udIdle
endif
if TableRotationMot = CounterClock and MinRotation
then TableRotationMot := rIdle
endif