McePosTableEntry

0.1.0

Datatype for a PosTable entry.

Version history

0.1.0

  Rioual

Changes

Added:
  • first version

Overview

nametypedefaultcomment
bSkipEntryBOOL1=skip this entry
bLastEntryBOOL1=mark this as the last entry (ignoring rest of the PosTable)
bTargetTypeBOOL0=axis position, 1=TCP position
bUseRotationalSpeedBOOL0=as linear speed, 1=as rotational speed
aPositionARRAY [0..5] OF REALaxis positions [deg] for TargetType=0 / TCP position (X, Y, Z, Rx, Ry, Rz) for TargetType=1
fSpeedREAL[% from max] for SpeedUnits=0 / [absolute units (mm/sec and deg/sec)] for SpeedUnits=1 / [50-100% from VMAX] for SpeedUnits=2 (n/a for DX200)
bMoveTypeSINT0=Point-to-Point move, 1=linear move
nSpeedUnitsSINT0=as percentage from max, 1=as position units/sec, 2=as percentage from VMAX (n/a for DX200)
nAccSINTacceleration [20 to 100%]
nDecSINTdeceleration [20 to 100%]
nBlendFactorSINTfactor for blending motions [-1 to 8] (-1=speed dependent, 0=exact position, 1-8=fine to coarse)
nUserFrameNumberSINTuser frame number for this motion
nToolNumberSINTtool number for this motion (uses SelectTool; requires tools to be configured into robot e.g. with SetToolProperties or by pendant)
nActionIDSINTaction with standstill; 0=none, 1=wait one PLC scan, 2=wait for step, >=20=custom actions

Details

bSkipEntry

BOOL

If True the entry will be ignored.

Some use cases:

  • Temporarily deactivating an entry
  • Declaring some entries as “spare” to reserve space for future changes
  • Dividing a PosTable trajectory in parts, with each part having its own range (e.g. entry[1..9] for Pick and entry[10..19] for Place)

bLastEntry

BOOL

If True all remaining entries of the PosTable are ignored.

Use case:

  • Declaring this entry as the end of the trajectory (no need to set each remaining entry to bSkipEntry=True)
  • Temporarily deactivating the rest of the trajectory

bTargetType

BOOL

Specifies the type of the target position .

It is adviced to have at least one entry (e.g. the rest position) defined as axis position. The reason for this is that an axis position is “fully defined”, whereas TCP positions can often be reached in multiple ways. Using only TCP positions could result in running into an axis limit due to starting off the trajectory in an undesired arm pose (e.g. R-axis rotated by 180 degrees).

valueexplanation
0Axis position
1TCP position

bUseRotationalSpeed

BOOL

Specifies how the speed setting for the robot motion should be interpreted.

By default, the speed setting for a motion to a TCP target position is interpreted as linear speed. That is fine for most cases. However, if the resulting motion of this entry has a big portion of TCP rotational motion and just little (or no) TCP translational motion, it will result in unexpected fast axis motion.

In such case, this parameter shall be set True.

valueexplanation
0as linear speed
1as rotational speed

aPosition

ARRAY [0..5] OF REAL

Target position for this motion.

The values unit depends on the aTargetType parameter :

  • degrees if it is an Axis position
  • mm and degrees if it is a TCP position

fSpeed

REAL

Specifies the speed of the motion.

The speed unit depends on the nSpeedUnits parameter.

bMoveType

SINT

Specifies the type of movement for the entry.

valueexplanation
0Point-to-point move (MOVJ)
1Linear motion (MOVL)

nSpeedUnits

SINT

Specifies the speed unit of the fSpeed parameter.

valueexplanation
0As % of max [0-100%]
1As position unit/sec. Unit depends on bUseRotationalSpeed
2As % of VMAX [50-100%] (n/a for DX200)

nAcc

SINT

Acceleration in % of maximum rated acceleration (range: 20-100%).

For a fast but also efficient trajectory: try a bit lower value (e.g. 90%)

nDec

SINT

Deceleration in % of maximum rated deceleration (range: 20-100%).

For a fast but also efficient trajectory: try a bit lower value (e.g. 90%)

nBlendFactor

SINT

Specification for the amount of blending from the current motion into the following motion.

It is specified as a number which corresponds to the PL (“position level”) setting in INFORM programming.

If this entry is the last motion before a standstill, the blend factor influences the timing of the Sts_PC signal of the underlaying motion instruction.

Check the YaskawaMLx library for more information.

valueexplanation
-1Speed dependent
0Exact position
1-8Fine to coarse

nUserFrameNumber

SINT

User Frame number used for this motion.

nToolNumber

SINT

Tool number used for this motion.

PosTable does not write tool data; It only selects already configured tools (by number). Tools must be configured beforehand using SetToolProperties or by pendant.

nActionID

SINT

Action to execute after the motion has completed.

ActionID < 20 are default actions (listed below). These actions are built-in and available for every instance of McePosTable.

In some cases, you might want to create an action which is only needed for this particular instance. This is where the custom actions come in.

ActionID >= 20 are reserved for these custom actions. They shall be programmed outside of McePosTable, using the following variables from the interface:

  • bActionStart
  • nActionID
  • bCustomActionDone

valueexplanation
0no action
1wait one PLC scan
2wait for rising edge on bStep
>=20reserved for custom actions

Source code

Declarations

(*Datatype for a PosTable entry*)
TYPE McePosTableEntry : 

(*
 * -----------------------------------------------------------------------------
 * Name               : McePosTableEntry
 * Version            : 0.1.0
 * Date               : 2024-02-12
 * Author             : Rioual
 * Family             : YaskawaMce
 * Organisation       : github.com/YaskawaEurope/mlx-examples
 * 
 * -----------------------------------------------------------------------------
 * Datatype for a PosTable entry
 * -----------------------------------------------------------------------------
 *)

STRUCT
  bSkipEntry : BOOL; (*1=skip this entry*)
  bLastEntry : BOOL; (*1=mark this as the last entry (ignoring rest of the PosTable)*)
  bTargetType : BOOL; (*0=axis position, 1=TCP position*)
  bUseRotationalSpeed : BOOL; (*0=as linear speed, 1=as rotational speed*)
  aPosition : ARRAY [0..5] OF REAL; (*axis positions [deg] for TargetType=0 / TCP position (X, Y, Z, Rx, Ry, Rz) for TargetType=1*)
  fSpeed : REAL; (*[% from max] for SpeedUnits=0 / [absolute units (mm/sec and deg/sec)] for SpeedUnits=1 / [50-100% from VMAX] for SpeedUnits=2 (n/a for DX200)*)
  bMoveType : SINT; (*0=Point-to-Point move, 1=linear move*)
  nSpeedUnits : SINT; (*0=as percentage from max, 1=as position units/sec, 2=as percentage from VMAX (n/a for DX200)*)
  nAcc : SINT; (*acceleration [20 to 100%]*)
  nDec : SINT; (*deceleration [20 to 100%]*)
  nBlendFactor : SINT; (*factor for blending motions [-1 to 8] (-1=speed dependent, 0=exact position, 1-8=fine to coarse)*)
  nUserFrameNumber : SINT; (*user frame number for this motion*)
  nToolNumber : SINT; (*tool number for this motion (uses SelectTool; requires tools to be configured into robot e.g. with SetToolProperties or by pendant)*)
  nActionID : SINT; (*action with standstill; 0=none, 1=wait one PLC scan, 2=wait for step, >=20=custom actions*)
END_STRUCT
END_TYPE

Pages built with Hugo - 23 Apr 2024 11:54 CEST