Datatype for a PosTable entry.
Version history
0.3.0
Changes
- Correct
bMoveTypename tonMoveTypeto respect the naming convention
show full history
0.2.0
Changes
aStartConditionvariable
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) | |
| nMoveType | 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 | |
| aStartCondition | ARRAY [0..GVL.CONDITIONS_UBOUND] OF BOOL | conditions to continue the trajectory |
Details
bSkipEntry
BOOLIf 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
BOOLIf 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
BOOLSpecifies 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
BOOLSpecifies 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 REALTarget position for this motion.
The values unit depends on the
aTargetType
parameter :
degreesif it is an Axis positionmmanddegreesif it is a TCP position
fSpeed
REALSpecifies the speed of the motion.
The speed unit depends on the
nSpeedUnits
parameter.
nMoveType
SINTSpecifies the type of movement for the entry.
| value | explanation |
|---|---|
| 0 | Point-to-point move (MOVJ) |
| 1 | Linear motion (MOVL) |
nSpeedUnits
SINTSpecifies 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
SINTAcceleration in % of maximum rated acceleration (range: 20-100%).
For a fast but also efficient trajectory: try a bit lower value (e.g. 90%)
nDec
SINTDeceleration in % of maximum rated deceleration (range: 20-100%).
For a fast but also efficient trajectory: try a bit lower value (e.g. 90%)
nBlendFactor
SINTSpecification 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
SINTUser Frame number used for this motion.
nToolNumber
SINTTool 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
SINTAction 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:
bActionStartnActionIDbCustomActionDone
| value | explanation |
|---|---|
| 0 | no action |
| 1 | wait one PLC scan |
| 2 | wait for rising edge on bStep |
| >=20 | reserved for custom actions |
aStartCondition
ARRAY [0..GVL.CONDITIONS_UBOUND] OF BOOLSelect which start conditions must be respected to continue the trajectory.
If a PosTable entry has one or more bits in startConditions set to TRUE
then the motion for that entry will not be started until the start conditions
are satisfied.
- Conditions are only checked for the
TRUEstate - If you need a condition to be checked for the
FALSEstate, you need to invert the connected signal outside of PosTable
For example: if aStartCondition[0] and aStartCondition[4] are True,
then aConditions[0] and aConditions[4] of McePosTableIO are
considered.
If conditions are already satisfied, the robot blend the trajectory without stop.
Source code
Declarations
(*Datatype for a PosTable entry*)
TYPE McePosTableEntry :
(*
* -----------------------------------------------------------------------------
* Name : McePosTableEntry
* Version : 0.3.0
* Date : 2024-09-30
* 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)*)
nMoveType : 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*)
aStartCondition : ARRAY [0..GVL.CONDITIONS_UBOUND] OF BOOL; (*conditions to continue the trajectory*)
END_STRUCT
END_TYPE