Datatype for a PosTable entry.
Version history
0.1.0
Changes
- first version
Overview
name | type | default | comment |
---|---|---|---|
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 |
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).
value | explanation |
---|---|
0 | Axis position |
1 | TCP 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
.
value | explanation |
---|---|
0 | as linear speed |
1 | as 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 positionmm
anddegrees
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.
value | explanation |
---|---|
0 | Point-to-point move (MOVJ) |
1 | Linear motion (MOVL) |
nSpeedUnits
SINT
Specifies the speed unit of the
fSpeed
parameter.
value | explanation |
---|---|
0 | As % of max [0-100%] |
1 | As position unit/sec. Unit depends on
bUseRotationalSpeed |
2 | As % 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.
value | explanation |
---|---|
-1 | Speed dependent |
0 | Exact position |
1-8 | Fine 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
value | explanation |
---|---|
0 | no action |
1 | wait one PLC scan |
2 | wait for rising edge on bStep |
>=20 | reserved 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