output function add_blank : BOOL

derived relation UnloadingDepositBelt
  == CraneHorizontalMot = cIdle and GripperOverDepositBelt

derived relation Crane_not_loaded 
  == CraneHorizontalMot = ToDepositBelt or 
     WaitingToUnloadDepositBelt or
     UnloadingDepositBelt

transition all_rules ==

   // put a blank on the feed belt (if possible)
   if FeedBeltFree and Crane_not_loaded
   then if add_blank
        then FeedBeltFree := false
        endif
   endif

   // press
   WAITING_UNLOAD_PRESS
   MOVING_TO_MIDDLE
   WAITING_LOAD_PRESS
   MOVING_TO_UPPER
   CLOSED
   MOVING_TO_LOWER

   // crane
   WAITING_DB
   UNLOADING_DB
   MOVING_FB
   WAITING_FB
   LOADING_FB
   MOVING_DB
   
   // robot
   WAITING
   ACTION_extension
   ACTION_proper
   ACTION_retraction
   MOVING
   
   // deposit belt
   DB_NORMAL
   DB_CRITICAL
   DB_STOPPED

   // elevation rotary table
   WAITING_LOAD
   MOVING_UNLOAD
   WAITING_UNLOAD
   MOVING_LOAD

   // feedbelt
   FB_NORMAL
   FB_STOPPED
   FB_CRITICAL