Velocity Profiling

This AeroScript program configures wait mode and velocity blending to show velocity-profiled motion.

// Velocity Profiling Example:
// Demonstrates coordinated motion with acceleration limiting on two axes.

program

	// Setup program flow to not continue until the axes are in position.
	// Setup the move distances to be in incremental (not absolute) coordinates.
	SetupTaskWaitMode(WaitMode.InPosition)
	SetupTaskTargetMode(TargetMode.Incremental)

	// Setup coordinated acceleration/deceleration ramping to use a linear ramp shape
	// at a ramp rate of 2000 units/s/s.
	SetupCoordinatedRampType(RampType.Linear)
	SetupCoordinatedRampValue(RampMode.Rate, 2000)

	// Limit the per-axis acceleration at non-tangent intersections and around
	// circular portions of the move profile to 2000 units/s/s.
	SetupCoordinatedAccelLimit(2000, 2000)

	// Create an array variable that specifies 2 axes by axis index.
	var $axes[] as axis = [@0, @1]

	// Enable and home the axes.
	Enable($axes)
	Home($axes)

	// Enable velocity blending so that the controller does not decelerate to zero
	// velocity between each individual move.
	VelocityBlendingOn()

	// Perform coordinated motion on the 1st axis to incremental distances
	// 20, 20, -20, 20 at different vector speeds.
	MoveLinear($axes[0], 20, 5)
	MoveLinear($axes[0], 20, 15)
	MoveLinear($axes[0], -20, 8.6)
	MoveLinear($axes[0], 20, 10)

	// Force the previous move to zero velocity and wait for 100ms.
	Dwell(0.1)

	// Perform coordinated motion on 2 axes to different incremental distances
	// and at different vector speeds.
	MoveLinear($axes, [10, 20], 5)
	MoveLinear($axes, [0, -25], 15)
	MoveLinear($axes, [15, 4], 10)
	MoveLinear($axes, [-10, -20], 15)

	// Disable velocity blending after the last move.
	VelocityBlendingOff()

	// Disable the axes.
	Disable($axes)

end