# Time-related block ahead limiting

## Definition of limiting

In the case of time-related block ahead limiting, the maximum permissible decoding lead is defined by specifying a time in seconds, i.e. The limit defines by how many seconds the decoding of program execution (interpolation) may be ahead.

In this case, only the motion time of motion blocks (such as G00, G01, G02, G03) is considered as well as the dwell time (G04, #TIME). Other time-consuming NC functions such as M functions, etc. are not considered.

The decoder block ahead limiting function is based on the ideal programmed command velocity and the current block length. This results in particular in deviations in functions which influence contours and dynamics, such as:

- Real-time influences of velocity via FEEDHOLD, Override
- Velocity weightings, e.g. via #VECTOR LIMIT
- Deviation if the programmed velocity cannot be reached, for example due to the geometry path
- Contour influences by polynomial smoothing or spline interpolation

In order to estimate the motion time for block ahead limiting realistically, the interpolation supplies a mean feed velocity (average velocity) of the next motion blocks to be executed.

The average velocity includes curvature-dependent dynamic limits and real-time influences such as override and feedhold. The calculated motion time is then based on the minimum average velocity and the feed valid in the block at the time of decoding (F word, rapid traverse)-

The following conditions apply to calculation of the motion time:

- Linear and circular blocks are considered.
- When motion time on the path is determined, only feed axes are considered (#FGROUP)
- If only slave axes are programmed in the block, the slowest axis is used to calculate motion time.

Restrictions:

- Independent axis motions (INDP_SYN. INDP_ASYN) and the "Z" amount of helical motions are not considered.
- No consideration given to M/H functions, tool changes, etc.

Selecting and deselecting time-related block ahead limiting is executed analogous to block-related block ahead limiting either

- in the NC program by the special V.G variable V.G.MAX_TIME_AHEAD = <value in [sec]> or
- generally by the channel parameter P-CHAN-00269: max_time_ahead <value in [10-6 sec]>

## Status display

When decoding reaches the block ahead limit, the decoder waiting state is indicated by the following status bit. The status bit is cancelled when decoding is continued.

0x00200000 TIME_AHEAD_LOCK_ACTIVE

The display datum can be indicated in the diagnostic data.

## Internal sequence

Calculating the relevant motion times takes place completely in the decoder.

As a result, the decoder estimates a minimum execution time = path length/velocity for each (motion) block.

The decoder stores the block count and the time required in a table for each motion block that is output. Together with the block count indicated by the interpolator, the time lead relative to the motion block last processed is then determined via the table.

If this delta is greater than the defined permissible limit, the decoder interrupts its execution and waits before continuing decoding until the interpolator again falls below the defined limit, i.e. has in fact "caught up" again.

## Effectiveness

Block ahead limiting is only active when the interpolator block supply (Monitored operating mode, section “Time-related block ahead limiting”) is ensured.

## Programing Example

Time-related block ahead limiting

Time-related block ahead limiting by definition in the NC program

%MAIN

N190 #HSC[ MODE 1 CONTERROR 0.01]

N270 G54 G90

N280 V.G.MAX_TIME_AHEAD = 2 ;Select block ahead limiting 2 seconds

…

N320 #HSC ON

N47200: G1 F4000 Y597.771 Z-5.596

N47210 Y597.343 Z-5.205

N47220 Y596.911 Z-4.861

N47230 Y596.475 Z-4.561

N47240 Y596.067 Z-4.321

N47250 Y595.643 Z-4.112

N47260 Y595.278 Z-3.965

N47270 Y594.905 Z-3.841

N47280 Y594.524 Z-3.747

N47290 Y594.136 Z-3.683

…

N47440 Y589.152 Z-5.735

N47450 Y588.76 Z-6.156

N47460 Y588.235 Z-6.767

N47470 Y587.299 Z-7.889

N47480 Y587.034 Z-8.198

N47490 Y586.768 Z-8.463

N47500 Y586.492 Z-8.686

N47510 Y586.235 Z-8.853

N47520 Y585.994 Z-8.971

N47530 Y585.791 Z-9.039

N475403 V.G.MAX_TIME_AHEAD = 0 ;Deselect block ahead limiting

…

N999999 M30

## Additional information

- Programming examples