Digital Input, Move to Position

This mode implements a very simple, easy-to-use method for automatically moving the robot to one of several predefined positions or sequence of positions ("MotionBlocks") in response to digital input signals. One hardware or software digital input signal is assigned to every MotionBlock or group of MotionBlocks.

The system operates by executing a loop that scans the states of the specified digital inputs. When a digital input transitions to the proper state, the corresponding MotionBlock or series of MotionBlocks is executed. At the completion of the MotionBlock(s), the system returns to its scanning loop waiting for the next signal to transition.

The MotionBlocks are stored in the Parameter Database. Depending upon your hardware configuration, there are typically between 5 and 20 blocks available.

To configure this mode of operation, you simply fill in the data in the MotionBlocks and initiate the Automatic Execution Mode per the instructions given previously. The system automatically takes care of scanning the DIN and executing the motions.

The following table summarizes the parameters that constitute a MotionBlock. For more information, please read the “Reference Document” section.  With the exception of the "DIN trigger" (DataID 6100), if any of these parameters are modified while the DIO MotionBlocks are being processed, the change will take effect immediately.  For the DIN trigger, the DIO Motion automatic execution mode must be stopped and restarted for any changed signal number to be recognized.

Data
ID
Parameter Label Description

6100

DIN trigger

Number of the hardware or software signal that triggers the start of the motion or sequence of motions. Positive channel numbers trigger on logical high signals and negative number trigger on logical low signals. If the channel number is 0, the motion block is ignored unless it is part of a sequence of motions.

6101

Level trigger

TRUE if the “DIN trigger” (DataID 6100) is interpreted as a level that must be maintained during the entire motion or FALSE if a momentary edge trigger is utilized.

6102

Target position in deg or mm

This is an array of joint values, either degrees for rotary joints or millimeters for linear axes, that define the final end point of the motion.

6103

Relative position

TRUE if the “Target position in deg or mm” (DataID 6102) is interpreted as a change in position relative to the previous final position. FALSE if the Target position specification is the joint positions in absolute joint coordinates.

6104

Speed (%sp,%sp2,%acl,%dcl,a_rmp,d_rmp)

This is the standard speed specification for a motion. It consists of the % speed to be used, a second speed for certain Cartesian motions, the % acceleration and deceleration for the motion, and the s-curve acceleration and deceleration ramp times.

6105

In range

Specifies if the motion is to come to a complete stop at the final destination (>= 0) before the next motion is started or it is to be blended with the next motion if possible (<0). If the motion is to be stopped, also specifies the position error criteria for determining when each axis is sufficiently close to its target position (1-100).

6106

Post motion delay in sec

If “Not cp motion” (DataID 6105) is TRUE, this specifies an amount of time that the system delays before executing any subsequent motion.

6107

Delay with torque 0

If the “Post motion delay in sec” (DataID 6106) is not zero and if this parameter is TRUE, the motors will be put into torque control mode with a torque command of 0 during the delay period. This allows the motor to freely spin.

6108

Do next motion

If you wish to execute a sequence of motions in response to a digital input signal, this value should be set TRUE. When TRUE, the next sequential motion block will automatically be execution at the completion of the current motion. An arbitrary number of motion blocks can be executed in sequence. The second and any following motion blocks should have their “DIN trigger” (DataID 6100) set to zero.

6109

Motion done DOUT

These are optional digital outputs that are signaled at the completion of a motion. If "Not cp motion" (DataID 6105) is TRUE, these are signaled when the robot reaches its final destination and before the delay period commences. For cp motions, these are signaled as soon as the motion begins execution and the pre-processing begins on any subsequent motion.

6110

Straight-line motion

TRUE if the motion is to follow a straight-line path in Cartesian space. If FALSE, the motion is performed by interpolating the axes positions. Straight-line path generation requires a kinematic model and can be extremely useful for robots with a complex geometry or rotary axes.

Edge Triggering verse Level Triggering

The setting of the “Level trigger” (DataID 6101) and the “Do next motion” (DataID 6108) affects the execution of the motions in the following manner:

  1. If the “Level trigger” value is set to FALSE (“edge triggering”), the corresponding MotionBlock will be initiated when the signal transitions to the specified value. For example, if the DIN channel number is a positive number, the motion will be triggered when the DIN transitions from a low to a high value. Conversely, if the channel number is negative, the motion will be triggered when the DIN transitions from a high to a low value.

    If a motion is edge triggered, once the edge trigger is detected, the motion will run to completion independent of the subsequent value of the DIN signal.

  2. If the “Level trigger” value is set to TRUE, the corresponding MotionBlock will be initiated whenever the signal is at the specified value. For example, if the channel number is positive, the motion will be initiated whenever the DIN is at a logical high value.

    If a motion is level triggered, the signal must remain at the specified state during the entire motion. If the signal ever changes state, the motion will be immediately decelerated to a stop.

    In addition, if “Do next motion” is FALSE and this is a single segment motion, after the completion of the motion, no further motions will be generated until the specified signal state changes. So, in essense, the system continues to execute the specified MotionBlock for as long as the signal is in the specified state.

    If the signal changes state before the motion is completed, if the signal is re-asserted before any other MotionBlock is executed, the original motion will be continued before it was interrupted. For motion that have the “Relative position” (DataID 6103) flag set, this can be an important distinction (see below).

  3. If the first MotionBlock in a multi-segment motion is “Level triggered”, at the completion of this first motion, the next sequential motion begins execution even if the signal state remains unchanged. This means that if you have a sequence of motions, i.e. “Do next motion” is TRUE, and use level triggering for the first motion, if the signal is always in the specified state, the motion sequence will be continously repeated. If a sequence of motions is edge triggered, it will only be executed once for each detected edge.

Relative versus Absolute Positions

The joint values specified by “Target position in deg or mm” (DataID 6102) are interpreted as either absolute joint positions or relative positions depending up the setting of the “Relative position” (DataID 6103) flag.

If a target position is in absolute coordinates, then the joint angles are defined relative to each joint’s home position. If you execute the same motion to absolute coordinates several times in a row, the robot will just stay the same position.

If a target position is in relative coordinates, the final position of the motion is computed as being relative to the planned final position of the previous motion. For example, if you specify a relative position of 10 mm and you execute this motion several times in sequence, each motion will move the axis 10 mm further.

Please note the following special comments about relative motions:

  1. A relative motion is always computed relative to the planned final position of the previous motion. For example, if the previous motion was level triggered and was targeted to move the X axis to a final position 45 mm, but was stopped at 37 mm due to the DIN channel changing state. Then, if you perform a relative motion of 10 mm, the final destination of the second motion will be X=55mm, not X=47mm.
  2. If a relative motion is level triggered and the DIN channel changes state and is subsequently re-asserted prior to another motion being executed, the restarted motion will move to the target position computed for the initial motion. That is, it will complete the initial motion as thought that motion had not been interrupted.