Pally for Doosan - Init Pally and Additional Programming

Pally for Doosan - Init Pally and Additional Programming

Init Pally program node

This node is optional. You can configure callbacks and get access to the Pally context via this node.

Define Pally context global variable

This is required to access the Pally variables.

Define a global variable for Pally and initialize it to 0. The examples here use Global_pally_context.

Set up callbacks

Create your own subroutines that will be called at specific events during palletizing. Enter the name of each subroutine in the corresponding edit box, or leave the edit box empty.

image (9)-20240719-114422.png

Currently, the following events are available:

  • beforePallet: Executed every time before a new pallet is started. This node is typically used to report the status to a production system.

  • beforeZone: Executed before entering a new zone. Zones are mainly used with lifting columns.

  • onNextTask: Executed before calculations for the next box position begin. The calculation parameters can be altered here. Set MovePerformed=True here to use a custom path towards the pick position.

  • beforeGrab: Executed when the robot is ready for pick up at the pickup position. Typical uses for this node are to turn on a custom gripper or stop the conveyor. Commands that move the robot to the pick position should be inserted here when a custom path is in use.

  • afterGrab: Executed when the robot has lifted the box from the pickup position. Commands that move the robot from the pick position to the target position should be inserted here when a custom path is in use.

  • beforeRelease: Executed when the robot is ready to drop the box on the pallet. Use this node to turn off a custom gripper.

  • afterRelease: Executed when the robot has released the box. Use this node, e.g., to report the progress to a production supervisor system. Commands that move the robot back from the target position should be inserted here when a custom path is in use.

  • afterZone: Executed after leaving a completed. Zones are mainly used with lifting columns.

  • onSheet: Executed every time a shim paper needs to be inserted. Commands that pick the shim paper and move it to the corresponding pallet should be inserted here.

  • afterPallet: Executed when the robot has finished the pallet. Use this node, e.g., to turn on a warning light or show a pop-up message so the operators can replace the pallet.

Access the Pally context

The Init Pally program node will return a variable called Global_pally_context, which points to an object with configuration data inside the Pally module.

You can use 'Global_pally_context' anywhere in the callback subroutines or below the Init Pally program node in the main program to change any Pally settings at runtime.

image-20240506-104759.png

 

Here is an example on how to add callbacks:

PallyDoosanCallbackExample.PNG

Pally for Doosan variables

In Pally, you can get access to the following variables via Global_pally_context:

  • # tuning parameters

    • max_speed

    • max_acceleration

    • precise_speed

    • precise_acceleration

    • min_grip_quality

    • release_strategy

    • grip_delay

    • grip_release_delay

    • blend

    • product_selection_strategy

    • product_selection_predefined

    • force_palletizing_mode

    • trace_program_callbacks

    • gui_ip

    • set_workpiece_weight

    • set_weight_workaround

    • gripper_weight

    • gripper_tcp

    • gripper_cog

  • # callback context

    • MovePerformed

    • TaskCompleted

    • ZoneNr

    • LayerNr

    • ProductCount

    • ProductName

    • LayerAlt

    • LayerHeight

    • PalletNr

    • PalletCenter

    • MoveTarget

    • MountPosition

  • # IO    

    • # conveyor IO

      • l1_sensors

      • l2_sensors

    • # gripper IO

      • pick_signals

      • drop_signals

      • vacuum_lost_sensor

    • # pallet confirmation IO 

      • p1_button

      • p2_button

      • p1_led

      • p2_led

    • # LED tower undefined

      • green_led

      • yellow_led

      • red_led

Example:
Global_pally_context.grip_release_delay=0.5

Example II:
movel(Global_pally_context.MoveTarget)
Global_pally_context.MovePerformed=True

Currently, there are some (experimental) settings in the Pally context that can be changed.

Parameters and their default values are shown below:

max_speed = 1300
max_acceleration = 1300
precise_speed = 200
precise_acceleration = 200
grip_delay = 0.2
grip_release_delay = 0.2
blend = 0.3
force_palletizing_mode = False
trace_program_callbacks = False
gui_ip = "127.0.0.1"
set_workpiece_weight = False
gripper_weight = 2.6
gripper_cog = [0.0, -100.0, 50.0]

l1_sensors = [ [0, 1], [0, 2] ]
l2_sensors = []

pick_signals = [ [1, 1] ]
drop_signals = [ [1, 2] ]
vacuum_sensor = [1, 1]