Galvo and IFOV Functions

IMPORTANT: Galvo and IFOV functionality are only available if you are using the PC-based controller.

Automation1 has galvo marking capabilities when used with the GI4 or GL4 hardware. The GI4 and GL4 are galvo drives that control a galvo scanner. You can issue motion to any galvo axis by using the motion functions in the controller such as MoveRapid(), MoveLinear(), MoveCw(), MoveCcw(), and MoveDelay().

This topic includes the galvo and Infinite Field of View (IFOV) functions that are available in the AeroScript API.

  • The galvo functions let you configure and control the laser and also configure advanced galvo-specific features.
  • The IFOV functions supply seamless marking over a field of view that is larger than the field of view of the galvo scan head. The controller combines the motion of the galvo scan head with the motion of traditional servo axes to extend the field of view of the galvo scan head.

WARNING: The GI4 and GL4 can control a laser scan system. When you install and use one of these galvo drives, you must obey all of the safety precautions for a laser. You are responsible for the laser safety for all of the system.

Configure the Laser

The laser configuration commands specify the behavior of the three laser output signals of the GI4 or GL4. For more information about the signals, refer to the hardware manual for your galvo drive. The laser output signals are on the Laser Interface connector of the GI4 and the Laser Output connector of the GL4. You must use the functions in this section to configure the laser before you can command the laser in your AeroScript program.

When you issue the GalvoConfigureLaserMode() function, the changes to the laser configuration are sent to your GI4 or GL4. Instructions about how to use the GalvoConfigureLaserMode() are listed below.

function GalvoConfigureLaserMode($axis as axis, $laserMode as integer)

Specifies the mode in which the laser output signals operate.

Arguments

$axis  The axis on which to configure the laser mode.

$laserMode  The value of the laser output mode.

WARNING: Do not issue the GalvoConfigureLaserMode() function when the laser is being commanded to fire.

Use this function to select the mode in which the laser output signals operate. When the laser is being commanded to fire, O3 is active. When the laser is not being commanded to fire, O3 is not active. To set the active polarity (for RS-422 outputs) and transistor state (for opto-isolated outputs) of the laser output signals, use the switch on the GL4. You cannot configure the active polarity on the GI4. For more information, refer to the hardware manual for your drive.

To set or change the laser configuration:

  1. Based on the type of laser that you have and how the laser operates, select the correct laser mode. For more information about how different types of lasers apply to different laser modes, refer to the Typical Application and the Description columns of the table listed below.
  2. In your AeroScript program, type all the configuration functions that are applicable to your laser mode and give the correct values to their arguments. Refer to the Related Functions column of the table listed below.
  3. In your AeroScript program, issue the GalvoConfigureLaserMode() function and give the correct values to all arguments. Make sure the value for $laserMode is the laser mode that you want to use.
  4. IMPORTANT: For the laser output to activate, you must enable all the axes of your galvo drive. Make sure to include axes that do not engage in marking motion.

  5. Run your AeroScript program to activate the laser mode. All of the laser configuration information is sent to the controller and the new laser mode is immediately active.

The table that follows shows the possible values for the $laserMode argument. Before you issue GalvoConfigureLaserMode(), you must configure the applicable functions in the Related Functions column of the table.

Table: $laserMode Argument Values

Value

Typical Application

Description

Related Functions

0

CO2 laser

When the laser is firing, O1 and O2 are modulation signals with a configurable frequency and a fixed 180° phase shift. You can independently specify the O1 and O2 pulse widths. When the laser is not firing and you use the GalvoConfigureStandbyPeriod() and GalvoConfigureStandbyPulseWidth() functions to specify a standby period and pulse width, O1 and O2 output standby pulses. When the laser is not firing and you do not specify a standby period and pulse width, O1 and O2 are not active.

GalvoConfigureLaserOutputPeriod()

GalvoConfigureLaser1PulseWidth()

GalvoConfigureLaser2PulseWidth()

GalvoConfigureStandbyPeriod()

GalvoConfigureStandbyPulseWidth()

1

YAG laser

O2 is a suppression pulse that is output when the laser starts firing. When the laser is firing, O1 is a periodic signal with a configurable frequency and pulse width. When the laser is not firing, O1 and O2 are not active.

GalvoConfigureLaserOutputPeriod()

GalvoConfigureLaser1PulseWidth()

GalvoConfigureSuppressionPulseWidth()

2

YAG laser

O2 is a suppression pulse that is output when the laser starts firing. O1 does not become active until the suppression pulse stops. While the laser is firing, O1 is a periodic signal with a configurable frequency and pulse width. When the laser is not firing, O1 and O2 are not active.

GalvoConfigureLaserOutputPeriod()

GalvoConfigureLaser1PulseWidth()

GalvoConfigureSuppressionPulseWidth()

3

YAG laser

O2 is a suppression pulse that is output when the laser starts firing. 10us after the start of the suppression pulse, O1 becomes active. When the laser is firing, O1 is a periodic signal with a configurable frequency and pulse width. When the laser is not firing, O1 and O2 are not active.

GalvoConfigureLaserOutputPeriod()

GalvoConfigureLaser1PulseWidth()

GalvoConfigureSuppressionPulseWidth()

4

General Purpose

O1 and O2 are standby signals with a configurable frequency and pulse width. They have a fixed 180° phase shift. When the laser is firing, O1 and O2 are active. When the laser is not firing, O1 and O2 are still active.

GalvoConfigureStandbyPeriod()

GalvoConfigureStandbyPulseWidth()

When the GalvoConfigureLaserMode() function executes, the laser interface disables while the new configuration information loads. All three laser output signals become inactive.

function GalvoConfigureLaser1PulseWidth($axis as axis, $time as real)

Specifies the pulse width, in microseconds, of the O1 signal.

Arguments

$axis  The axis on which to configure the laser 1 pulse width.

$time  The time value in microseconds.

Use GalvoConfigureLaser1PulseWidth() to specify the pulse width in microseconds of the O1 signal. This function applies only in laser modes 0, 1, 2, and 3 of the GalvoConfigureLaserMode() function.

The $time argument has a resolution of 0.01 microseconds and a maximum value of 42.9 seconds. If you specify a time that has a resolution that the GI4 or GL4 does not support, the controller rounds to the nearest supported value.

function GalvoConfigureLaser2PulseWidth($axis as axis, $time as real)

Specifies the pulse width, in microseconds, of the O2 signal.

Arguments

$axis  The axis on which to configure the laser 2 pulse width.

$time  The time value in microseconds.

Use GalvoConfigureLaser2PulseWidth() to specify the pulse width in microseconds of the O2 signal. This function applies only in laser mode 0 of the GalvoConfigureLaserMode() function.

The $time argument has a resolution of 0.01 microseconds and a maximum value of 42.9 seconds. If you specify a time that has a resolution that the GI4 or GL4 does not support, the controller rounds to the nearest supported value.

function GalvoConfigureLaserOutputPeriod($axis as axis, $time as real)

Specifies the period, in microseconds, of the O1 and O2 signals.

Arguments

$axis  The axis on which to configure the laser output period.

$time  The time value in microseconds.

Use GalvoConfigureLaserOutputPeriod() to specify the period in microseconds of the O1 signal and the O2 signal in laser mode 0. This function applies only in laser modes 0, 1, 2, and 3 of the GalvoConfigureLaserMode() function.

The $time argument has a resolution of 0.01 microseconds and a maximum value of 42.9 seconds. If you specify a time that has a resolution that the GI4 or GL4 does not support, the controller rounds to the nearest supported value.

function GalvoConfigureStandbyPeriod($axis as axis, $time as real)

Specifies the period, in microseconds, of the standby signals.

Arguments

$axis  The axis on which to configure the standby period.

$time  The time value in microseconds.

Use GalvoConfigureStandbyPeriod() to specify the period in microseconds of the standby signals. This function applies only in laser modes 0 and 4 of the GalvoConfigureLaserMode() function.

The $time argument has a resolution of 0.01 microseconds and a maximum value of 42.9 seconds. If you specify a time that has a resolution that the GI4 or GL4 does not support, the controller rounds to the nearest supported value.

function GalvoConfigureStandbyPulseWidth($axis as axis, $time as real)

Specifies the pulse width, in microseconds, of the standby signals.

Arguments

$axis  The axis on which to configure the standby pulse width.

$time  The time value in microseconds.

Use the GalvoConfigureStandbyPulseWidth() function to specify the pulse width in microseconds of the standby signals. This function applies only in laser modes 0 and 4 of the GalvoConfigureLaserMode() function.

The $time argument has a resolution of 0.01 microseconds and a maximum value of 42.9 seconds. If you specify a time that has a resolution that the GI4 or GL4 does not support, the controller rounds to the nearest supported value.

function GalvoConfigureSuppressionPulseWidth($axis as axis, $time as real)

Specifies the pulse width, in microseconds, of the suppression signal.

Arguments

$axis  The axis on which to configure the suppression pulse width.

$time  The time value in microseconds.

Use the GalvoConfigureSuppressionPulseWidth() function to specify the pulse width in microseconds of the suppression signal. This function applies only in laser modes 1, 2, and 3 of the GalvoConfigureLaserMode() function.

The $time argument has a resolution of 0.01 microseconds and a maximum value of 42.9 seconds. If you specify a time that has a resolution that the GI4 or GL4 does not support, the controller rounds to the nearest supported value.

Configure Laser Delays

function GalvoConfigureLaserDelays($axis as axis, $onDelay as real, $offDelay as real)

Specifies when the axis fires the laser relative to when you command the laser to power on and when the axis stops firing the laser relative to when you command the laser to power off.

Arguments

$axis  The axis on which to configure laser delays.

$onDelay  The delay time, in microseconds, that is necessary for the laser to power on. If your program uses the automatic laser mode, this value must be greater than or equal to -32,768 and less than or equal to 32,767. If your program uses the manual laser mode or if you are operating in IFOV mode, this value must be greater than or equal to -975 and less than or equal to 32,767.

$offDelay  The delay time, in microseconds, that is necessary for the laser to power off. This value must be greater than or equal to -975 and less than or equal to 2,000,000.

Use the GalvoConfigureLaserDelays() function to specify when the GI4 or GL4 starts or stops firing the laser relative to when you command the laser to power on or off. You must specify both a laser on delay and a laser off delay.

Laser On Delay

The $onDelay argument specifies when the GI4 or GL4 fires the laser relative to when you command the laser to power on. The delay can be a positive value, negative value, or zero. You can use a positive delay to prevent non-uniform marking while the mirrors accelerate to the marking speed. You can use a negative delay to mark a material that the laser must preheat before a marking move occurs.

If your AeroScript program uses the automatic laser mode, a positive delay powers on the laser after the start of a marking move sequence containing MoveLinear(), MoveCw(), or MoveCcw() moves. A negative delay powers on the laser before the start of a marking move sequence. Negative delays extend the total quantity of time of the marking move sequence because the delays occur before the marking move starts. A positive delay does not extend the total quantity of time of the marking move sequence. To use the automatic laser mode, refer to the GalvoLaser.Auto setting in the GalvoLaserOutput() function.

If your AeroScript program uses the manual laser mode, a positive delay powers on the laser after you issue the GalvoLaserOutput() function with the GalvoLaser.On setting. A negative delay powers on the laser before you issue the GalvoLaserOutput() function with the GalvoLaser.On setting. Positive and negative delays do not extend the total quantity of time of the marking move sequence. To use the manual laser mode, refer to the GalvoLaser.On and the GalvoLaser.Off settings in the GalvoLaserOutput() function.

Laser Off Delay

The $offDelay argument specifies when the GI4 or GL4 stops firing the laser relative to when you command the laser to power off. The delay can be a positive value, negative value, or zero. You can use a positive delay to keep the laser on while the scanner goes into position. You can use a negative delay to prevent the laser from supplying too much energy at the end of a deceleration.

If your AeroScript program uses the automatic laser mode, a positive delay powers off the laser after the end of a marking move sequence containing MoveLinear(), MoveCw(), or MoveCcw() moves. A negative delay powers off the laser before the end of a marking move sequence. To use the automatic laser mode, refer to the GalvoLaser.Auto setting in the GalvoLaserOutput() function.

If your AeroScript program uses the manual laser mode, a positive delay powers off the laser after you issue the GalvoLaserOutput() function with the GalvoLaser.Off setting. A negative delay powers off the laser before you issue the GalvoLaserOutput() function with the GalvoLaser.Off setting. To use the manual laser mode, refer to the GalvoLaser.On and the GalvoLaser.Off settings in the GalvoLaserOutput() function.

Additional Notes

  • For laser delays to operate correctly, you must set the MotionUpdateRate Parameter to a value that is greater than or equal to 10 kHz. The recommended value is 100 kHz.
  • The $onDelay and $offDelay values must both be less than the minimum time between laser pulses. The time between laser pulses is the duration of a marking move sequence (laser on time) added to the duration of a non-marking move sequence (laser off time). If either delay time argument is more than the time between laser pulses, the drive might not fire the laser at each pulse sequence.
    • The time of a marking move sequence is determined by dividing the marking distance by the average speeds of the moves.
    • The time of a non-marking move sequence is determined by dividing the non-marking distance by the average speeds of the moves.

Control the Laser and Perform Motion

IMPORTANT: Before you can use the laser, you must configure the laser according to the Configure the Laser section.

When performing motion on a galvo, moves are typically described as either marking moves or non-marking moves. Marking motion is motion that occurs while the laser is powered on. Non-marking motion is motion that occurs while the laser is powered off. The controller can be configured for either automatic or manual control of the laser. The GalvoLaserOutput() function is used for both automatic and manual control of the laser.

function GalvoLaserOutput($axis as axis, $laserState as GalvoLaser)

Specifies how the laser on a galvo axis is controlled.

Arguments

$axis  The axis on which to configure the laser state.

$laserState  The mode to use to control the laser.

The on and off state of the laser is controlled by the value specified for the $laserState argument.

Laser States

GalvoLaser.Auto configures the controller to control the laser in the automatic laser mode. This is the default state after a controller reset. MoveLinear(), MoveCw(), and MoveCcw() moves are treated as marking moves and the laser is on during these moves. All other types of motion, including MovePvt() and MoveRapid(), are treated as non-marking moves and the laser is off for these moves. For the laser output to activate, you must enable all the axes of your galvo drive. Make sure to include axes that do not engage in marking motion. In the automatic laser mode, if you disable one or more axes of the GI4 or GL4, then the laser powers off but will remain in the automatic laser mode. Issue this function one time at the top of your AeroScript program to configure automatic laser mode.

GalvoLaser.On configures the controller to control the laser in manual laser mode and powers on the laser. If you issue GalvoLaserOutput() with GalvoLaser.On during a MovePvt(), MoveRapid(), MoveLinear(), MoveCw(), MoveCcw(), and MoveDelay() move sequence, the controller synchronizes the laser with motion. This synchronization allows you to power the laser on manually during the move sequence. For the laser output to activate, you must enable all the axes of your galvo drive. Make sure to include axes that do not engage in marking motion. If you abort the motion or if you disable one or more axes of the GI4 or GL4, then the laser powers off and the mode changes to the automatic laser mode.

GalvoLaser.Off configures the controller to control the laser in manual laser mode and powers off the laser. If you issue GalvoLaserOutput() with GalvoLaser.Off during a MovePvt(), MoveRapid(), MoveLinear(), MoveCw(), MoveCcw(), and MoveDelay() move sequence, the controller synchronizes the laser with the motion. This synchronization allows you to power the laser off manually during the move sequence.

Additional Notes

  • In order for GalvoLaser.On or GalvoLaser.Off to synchronize to the accurate start or end of a move, Aerotech recommends that you set the MotionUpdateRate Parameter to 100 kHz.
  • Laser delays behave differently in automatic and manual laser mode. Refer to GalvoConfigureLaserDelays() for more information.

Configure Galvo Calibration

To compensate for optical effects of the galvo head and lens, you must configure Galvo 2D Axis Calibration for your marking patterns to be correct. You can edit the Galvo 2D Axis Calibration configuration in the Configure workspace on the Calibration tab in the Controller category.

Optimize Laser Power

If you want the controller to change the power of the laser based on the position of the two galvo axes, use Galvo Power Correction. You can edit the Galvo Power Correction configuration in the Configure workspace on the Calibration tab in the Controller category.

Advanced Features

The functions that follow provide additional advanced configuration functionality for the GI4 or GL4.

function GalvoEncoderScaleFactorSet($axis as axis, $encoderScaleFactor as real)

Enables "marking on the fly" functionality.

Arguments

$axis  The axis on which to configure the encoder scale factor.

$encoderScaleFactor  The ratio of scanner counts to encoder counts. This value must be greater than -32,768 and less than 32,767.

Use GalvoEncoderScaleFactorSet() to enable "marking on the fly" functionality on the specified axis of the GI4 or GL4. This feature lets the drive monitor the position of an external encoder. The drive adjusts the position of the scanner to compensate for changes in the external position.

You can use "marking on the fly" functionality in many applications. For example, you might want to draw a pattern on a part that is continuously moving through the field of view of the scanner during the marking process (the part might be on a conveyor belt).

For the GI4 or GL4 to correctly adjust the position of the scanner, you must specify the ratio of scanner counts to encoder counts. Specify this ratio to the $encoderScaleFactor argument. If encoder adjustment is being applied to two GI4 or GL4 axes, then you must issue this function twice (one time for each axis). If you need to change the $encoderScaleFactor argument after this function was issued, you must first issue GalvoEncoderScaleFactorSet() with a value of 0.0. If you do not zero the scale factor first, the controller step changes the position command, which causes a large current increase in the motor. You can use a different scale factor in each function. Specify a value greater than -32,768 and less than 32,767 for $encoderScaleFactor.

When the GalvoEncoderScaleFactorSet() function executes, the external position counter for the specified axis clears and encoder adjustment starts at the current position of the scanner.

To deactivate "marking on the fly" on an axis, issue this function with $encoderScaleFactor set to 0.0. If encoder adjustment is being applied to two GI4 or GL4 axes, then you must issue this function two times, in order to deactivate the feature on both axes.

function GalvoProjectionSetCoefficients($axis as axis, $coefficients[9] as real)

Specifies the projective transformation coefficients that are applied to galvo axes.

Arguments

$axis  The galvo axis on which the projection is to be applied.

$coefficients  The coefficients to use.

Use the GalvoProjectionSetCoefficients() function to set the projective transformation coefficients that are applied on the GL4. After you specify the coefficients, use the GalvoProjectionOn() and GalvoProjectionOff() functions to enable and disable the transformation.

function GalvoProjectionOn($axis as axis)

Enables the projective transformation on galvo axes.

Arguments

$axis  The galvo axis on which to apply the projection.

Use the GalvoProjectionOn() function to enable the projective transformation on the GL4.

function GalvoProjectionOff($axis as axis)

Disables the projective transformation on galvo axes.

Arguments

$axis  The galvo axis on which to disable the projection.

Use the GalvoProjectionOff() function to disable the projective transformation on the GL4.

function GalvoRotationSet($axis as axis, $angle as real)

Specifies an angle of rotation that is applied to galvo axes.

Arguments

$axis  The galvo axis on which the rotation is to be applied.

$angle  The angle in degrees.

Use the GalvoRotationSet() function to specify a rotation that is applied to the first two axes of the GI4 or GL4. When you operate the controller in Infinite Field of View mode, you can use this function to correct mechanical alignment errors that occur between the galvo and servo axes. Use this function only to correct misalignment errors that occur between these axes. If you want to rotate the programmed part, refer to Transformation Functions instead.

The GalvoRotationSet() rotation is applied relative to the center of travel of the galvo axes. If you specify x as the first axis of the GI4 or GL4 and y as the second axis, use the equation that follows to calculate the rotation.

xrotated = xcos(ϴ) - ysin(ϴ)

yrotated = xsin(ϴ) - ycos(ϴ)

function GalvoWobbleSetConfiguration($axis as axis, $amplitudeParallel as real, $amplitudePerpendicular as real, $frequency as real, $wobbleMode as GalvoWobbleMode, $wobbleType as GalvoWobbleType)

Configures the wobble feature, which generates a wobble pattern that is added to the motion command of a galvo axis.

Arguments

$axis  The galvo axis on which the galvo wobble is to be applied.

$amplitudeParallel  The amplitude of the wobble shape parallel to the vector path.

$amplitudePerpendicular  The amplitude of the wobble shape perpendicular to the vector path.

$frequency  The frequency of the wobble oscillation. Specified in hertz for time-based mode or user units for distance-based mode.

$wobbleMode  Specifies whether the wobble is repeated based on a fixed time or a fixed vector distance.

$wobbleType  The type of figure that is generated by the wobble.

Use the GalvoWobbleSetConfiguration() function to configure the galvo wobble feature. When the GI4 or GL4 does marking motion, the galvo wobble feature generates an oscillatory pattern and the controller combines that pattern with the position command of the drive. The oscillatory pattern increases the width of the marking line.

Set the $amplitudePerpendicular argument to control the width of the marking line. Set the $amplitudeParallel argument with the $frequency argument to control the overlap that occurs between each wobble oscillation.

Wobble Mode

Set the $wobbleMode argument to control if the $frequency of the repeated wobble pattern is time-based or distance-based. When you use time-based mode, the controller repeats the wobble pattern at a fixed time interval. When you use distance-based mode, the controller repeats the wobble pattern at a fixed distance. In distance-based mode, the speed of the marking vector controls the time at which the controller repeats the wobble pattern. To create a uniform overlap of the wobble pattern during acceleration and deceleration, Aerotech recommends that you use the distance-based mode.

Table: Galvo Wobble Mode Values

Value

Name

Description

GalvoWobbleMode.TimeBased

TimeBased

Wobble is repeated at a fixed time interval

GalvoWobbleMode.DistanceBased

DistanceBased

Wobble is repeated at a fixed vector

Wobble Type

Set the $wobbleType argument to control the type of wobble pattern that the controller generates.

Table: Galvo Wobble Type Values

Value

Name

Description

GalvoWobbleType.Ellipse

Ellipse

An ellipse shape

GalvoWobbleType.Figure8Parallel

Figure8Parallel

A figure 8 shape parallel to the vector path

GalvoWobbleType.Figure8Perpendicular

Figure8Perpendicular

A figure 8 shape perpendicular to the vector path

Refer to the figures that follow for the different WobbleType patterns.

function GalvoWobbleOn($axis as axis)

Enables the galvo wobble feature.

Arguments

$axis  The galvo axis on which the galvo wobble is to be applied.

Use the GalvoWobbleOn() function to enable the galvo wobble feature that was previously configured with GalvoWobbleSetConfiguration(). When you enable the galvo wobble feature, the controller combines the wobble motion with the marking motion.

function GalvoWobbleOff($axis as axis)

Disables the galvo wobble feature.

Arguments

$axis  The galvo axis on which the galvo wobble is to be disabled.

Use this function to disable the galvo wobble feature.

Infinite Field of View (IFOV)

Infinite Field of View (IFOV) supplies seamless marking over a field of view that is larger than the field of view of the galvo scan head. Automation1 combines the motion of the galvo scan head of the GI4 or GL4 with the motion of traditional servo axes to extend the field of view of the galvo scan head.

When you program motion to the galvo scan head over an extended field of view, the controller automatically commands motion to the servo and galvo axes. The controller maintains the high throughput of the galvo axes and the extended travel of the servo axes.

Examples, procedures, and some information in the IFOV topics use these axis configurations:

  • X and Y are servo axes.
  • A and B are galvo axes.
  • X and A move in the same direction.
  • Y and B move in the same direction.

function IfovSetAxisPairs($axisPairH[] as axis, $axisPairV[] as axis)

Configures axes to command in Infinite Field of View (IFOV).

Arguments

$axisPairH  The horizontal axis pair. This pair consists of a galvo axis and its corresponding servo axis.

$axisPairV  The vertical axis pair. This pair consists of a galvo axis and its corresponding servo axis.

function IfovSetAxisPairs($axisPairH[] as axis, $axisPairV[] as axis, $scaleFactorH as real, $scaleFactorV as real)

Configures axes to command in Infinite Field of View (IFOV).

Arguments

$axisPairH  The horizontal axis pair. This pair consists of a galvo axis and its corresponding servo axis.

$axisPairV  The vertical axis pair. This pair consists of a galvo axis and its corresponding servo axis.

$scaleFactorH  Specifies the scaling from the servo axis to the galvo axis in the horizontal axis pair.

$scaleFactorV  Specifies the scaling from the servo axis to the galvo axis in the vertical axis pair.

Use this function to specify the galvo and servo axes for Infinite Field of View (IFOV) to use. This function maps the two galvo axes to the two servo axes.

The motion of the specified galvo axis and the motion of the specified servo axis combine to create a single direction of motion. This function specifies both the horizontal and vertical axis pairs used in IFOV.

  1. $axisPairH[] consists of a galvo axis and its corresponding servo axis in the horizontal direction.
  2. $axisPairV[] consists of a galvo axis and its corresponding servo axis in the vertical direction.

You can specify an optional $scaleFactorH and $scaleFactorV argument to set the scaling from the servo axis to the galvo axis. The value must be greater than -32,768 and less than 32,787. If you do not specify this argument, the controller automatically calculates the scale factor by using the equation that follows.

Default Scale Factor = (CountsPerUnit of the galvo axis / CountsPerUnit of the servo axis)

function IfovSetSize($size as real)

Configures the field of view size of the galvo head in Infinite Field of View (IFOV).

Arguments

$size  The field of view size, in user units, of the galvo head.

Use the IfovSetSize() function to specify the field of view size, in user units, of the galvo head. The field of view of the galvo head is a square. This function specifies the dimension of one of the sides of this square. The value that you specify for this function must be greater than zero.

Because the controller tries to operate at the full programmed speed, the controller commands more of the motion to the galvo head. The controller makes sure that the galvo head does not exit the field of view while in IFOV. If you do not want to use the entire field of view of the galvo head, specify a smaller value for this function.

function IfovSetSyncAxes($axes[] as axis)

Configures more axes to command in Infinite Field of View (IFOV).

Arguments

$axes  A list of axes to synchronize in Infinite Field of View in addition to those specified in IfovSetAxisPairs().

Use the IfovSetSyncAxes() function to specify more axes to command in IFOV. These axes are added to the axes that you specify for the IfovSetAxisPairs() function. The controller synchronizes all motion functions, I/O functions, and PSO-related functions for all axes in the IFOV configuration. You can specify a maximum of two axes for the IfovSetSyncAxes() function. If you do not want to synchronize more axes, specify an empty array to IfovSetSyncAxes() function.

If you specify axes for this function, the controller synchronizes the following AeroScript functions with Infinite Field of View (IFOV).

  • All MoveRapid(), MoveLinear(), MoveCcw(), MoveCw(), and MoveDelay() motion
  • AnalogOutputSet() (setting analog outputs)
  • DigitalOutputSet() (setting digital outputs)
  • PSO functions
  • DriveArrayWrite() function

function IfovSetTime($time as integer)

Configures the maximum search time that the controller looks ahead in Infinite Field of View (IFOV).

Arguments

$time  The time, in milliseconds, that the controller looks ahead.

Use the IfovSetTime() function to specify the maximum search time, in milliseconds, that the controller looks ahead into your AeroScript program to generate servo motion in Infinite Field of View (IFOV).

Aerotech recommends that you start with a value of 200 milliseconds for $time.

  • The value that you use must be an integer that is divisible by 5 milliseconds.
  • The value that you use for $time cannot exceed the value that you specify for the IfovMaximumTime parameter.

The value that you set for $time controls the quantity of servo motion that the controller generates. The quantity of servo motion can have an effect on the overall cycle time of your motion program. For more information, refer to the table that follows.

Table: $time Argument Values

<SearchTime>

Motion Effect

Latency Effect

Smaller values

More servo motion

Lower initial latency, higher overall cycle time

Larger values

Less servo motion

Higher initial latency, lower overall cycle time

The search time that the controller uses might be less than the value that you specify. This can occur if the programmed laser motion exits the field of view before the servo axes reach the end of the search time. If you specify a larger value for $time, you usually get a lower overall cycle time.

function IfovSetTrackingAcceleration($acceleration as real)

Configures the maximum acceleration of the servo axes while in Infinite Field of View (IFOV).

Arguments

$acceleration  The maximum acceleration, in user units/second squared, of the servo axes.

Use the IfovSetTrackingAcceleration() function to specify the maximum acceleration of the servo axes while in Infinite Field of View (IFOV). You must specify an acceleration that is greater than zero.

When you enable IFOV, the controller automatically limits the speed and acceleration of the servo axes to keep the galvo head in the field of view.

function IfovSetTrackingSpeed($speed as real)

Configures the maximum speed of the servo axes while in Infinite Field of View (IFOV).

Arguments

$speed  The maximum speed, in user units/time base, of the servo axes.

Use the IfovSetTrackingSpeed() function to specify the maximum speed of the servo axes while in Infinite Field of View (IFOV). You must specify a speed that is greater than zero.

When you enable IFOV, the controller automatically limits the speed and acceleration of the servo axes to keep the galvo head in the field of view.

function IfovOn()

Enables Infinite Field of View (IFOV).

IMPORTANT: Before you enable Infinite Field of View (IFOV), you must home the galvo axes and the servo axes. Make sure that these axes are in position.

Use IfovOn() to enable IFOV. You must configure IFOV before you issue IfovOn().

While IFOV is enabled, your AeroScript program must command the laser motion to the galvo axes. The controller automatically moves the galvo axes and the servo axes to make the laser motion path that you programmed.

To get the enabled or disabled state of IFOV, retrieve the Ifov Enabled bit of the Axis Status item.

function IfovOff()

Disables Infinite Field of View (IFOV).

Use the IfovOff() function to disable IFOV. If the controller is generating motion while you issue IfovOff(), the controller waits for the motion to complete before it disables IFOV. When IFOV is disabled, the controller clears the position registers so that the galvo axes report the position of the galvo head.