Classification of the zero offsets

Different zero offset groups can be preset and selected in the NC-program with the G-commands "G53" to "G59" and "G159" . In each of these groups, for every axis a zero offset has to be stated. The field index to be stated for the offset corresponds to the channel internal axis indication (Fig.1.1). The initial axis configuration of the NC-channel is fixed in the channel parameters [CHAN].

Fig. 1.1: Assignment of zero offsets and tool data to the logical axes

In the moment only axis configurations with one axis group are possible [CHAN]. Therefore "dec_achs_nr" = "achsen_idx".

Value ranges of parameters, if necessary, are also defined by stating a limit that is obtained on the basis of the data format, e.g. MAX(UNS32), etc.


Syntax and interpretation of zero offsets ASCII files

The zero offsets are defined in an ASCII-file and interpreted by an ASCII interpreter and stored in the appropriate structures.

After that plausibility tests are carried out for the zero offsets.

This document defines the content and the syntax of the ASCII-Files (for example " werkz_d*.lis") as well as the elements of the zero offsets.

For zero offsets of data type BOOLEAN, the following agreement is used:

Value | Significance
0 | Definition of FALSE
1 | Definition of TRUE


Comments in the ASCII file

Comments can be whole-lined or can be added at the end of a line.

In the case of whole-lined comments, at the beginning of the line the comment character # must be added followed by a space character.

If at the end of a line a comment is to be added, then in front of the comment, at least one space character must be there. If, however, in the line a string is defined, then the comment character ( must precede the comment.

Blank lines are also possible.

Example:

# ************************************************************************

# Data

# ************************************************************************

#

# Listing

dummy[1] 1 Comment

dummy[2] 1 # Comment

dummy[3] 1 ( Comment

dummy[4] 1 /* Comment

...

...

example[0].name STRING_2 (Comment, here comment brackets necessary !)


Deselection of zero offsets (P-ZERO-00001)

Variable Name | Type | Permissible range | Dimension
g53_verfuegbar | BOOLEAN | 0 / 1 | ----

This data controls the significance of zero offsets with the zero offsets group indices "0" that are chosen with G53 or G159 = 0 in the NC-program. If g53_verfuegbar is not allocated or allocated with zero, then, with the programming of G53 or  G159 = 0 in the NC-program, all zero offsets are calculated out of the traverse movements (deselection). **

On the otherhand, for g53_verfuegbar = TRUE, the zero-set data block can also be used as a zero offsets data block, i.e. can be allocated with offset values not equal to ZERO. See also [3].

**: G53 is automatically active only when the default_index is not or is allocated with zero.


Default setting of zero offsets (P-ZERO-00002)

Through this data one can determine which zero offsets should be automatically active after the program start.

Variable Name | Type | Permissible range | Dimension
default_index | UNS 16 | 0...[DEC_NULLP_DAT_ANZ-1] | ----

Value DEC_NULLP_DATA_ANZ | Significance
application dependent | Number of zero offsets


Zero offsets group (np_grp[i].*)

In a zero offsets group "np_grp[i]" all those zero offsets are summarized that are selected with the programming of the G-functions "G53" to "G59" or "G159".

Variable name | Type | Index | Dimension
np_grp[i] | NULLP_GRUPPE | i = 0 ... [DEC_NULLP_DATA_ANZ-1] | ----

Value DEC_NULLP_DATA_ANZ | Significance
application-dependent | No. of zero offsets groups

The following relationship exists between the G-function and the zero offsets group index "i":

G function | Selection through G159 | Zero offsets group index "i"
G53 or | G159 = 0 | 0
G54 or | G159 = 1 | 1
G55 or | G159 = 2 | 2
G56 or | G159 = 3 | 3
G57 or | G159 = 4 | 4
G58 or | G159 = 5 | 5
G59 or | G159 = 6 | 6
 | G159 = 7 | 7
 | G159 = 8 | 8
 | G159 = 9 | 9
 | G159 = 10 | 10
 | : | :

More:

button Axis assignment of data (np_grp[i].achse[j].*)


Axis assignment of data (np_grp[i].achse[j].*)

The assignment of zero offsets to the path axes is done via the channel internal axis indexing (Fig. 1.1).

Variable name | Type | Index | Dimension
achse[j] | NULLP_STRUCT | j = 0 ... [ SDA_GRPMAX * SDA_AXMAX - 1] | ----

Constant | Value | Significance
SDA_AXMAX | application-dependent | Maximum no. of axes per group
SDA_GRPMAX | 1 | Maximum no. of groups, at the moment only the value 1 is permitted.

More:

button Zero offset (P-ZERO-00003)

button Axis specific activation of a zero offset (P-ZERO-00004)


Zero offset (P-ZERO-00003)

For each zero offsets group "i" every axis "j" has an offset parameter "np_grp[i].achse[j]. versch".

Variable name | Type | Permissible range | Dimension
versch | SGN32 | MIN(SGN32) < versch < MAX(SGN32) | 0.1µm or 0.0001°

The zero offsets are expected in the unit [0,1m] in translatory axes or [0.0001] for rotatory axes.


Axis specific activation of a zero offset (P-ZERO-00004)

For every zero offset data block, by setting the inactive-ident.code one can determine for which axes the offset is to be used or not. Because of this, individual offsets of certain zero offsets groups can be deleted.

If the inactive-ident. code is not allocated or allocated with zero, then the axis offset continues to be valid. For values = TRUE they are inactive [PROG].

Variable name | Type | Permissible range | Dimension
inactive | BOOLEAN | 0 / 1 | ----


Example of a zero offsets ASCII file for a configuration with 3 axes

# **************************************************************************

# Zero offsets-data

# **************************************************************************

# Imp.hint: Behind the comments character ´#´ a space character must

# be implicitly added.

# CAUTION : The zero offsets are expected in

# units 0,1 m for linear axes or 0,0001 for rotary axes

# **************************************************************************

#

g53_verfuegbar 1 (Zero offsets not equal to zero are evaluated)

default index 2 (G55 is automatically active after start up)

#

# ==========================================================================

# Zero offsets, which become active with "G53" or "G159 = 0"

# ==========================================================================

np_grp[0].achse[0].versch 80000 # offset 8 mm

np_grp[0].achse[0].inaktiv 0 # offset is valid

np_grp[0].achse[1].versch 81000 # offset 8.1 mm

np_grp[0].achse[1].inaktiv 0 # offset is valid

np_grp[0].achse[2].versch 82000 # offset 8.2 mm

np_grp[0].achse[2].inaktiv 0 # offset is valid

# ==========================================================================

# Zero offsets, which become active with "G54" or "G159 =1"

# ==========================================================================

np_grp[1].achse [0].versch 100000 # offset 10 mm

np_grp[1].achse[0].inaktiv 0 # offset is valid

np_grp[1].achse[1].versch 200000 # offset 20 mm

np_grp[1].achse[1].inaktiv 1 # offset is not valid

np_grp[1].axis e[2].versch 300000 # offset30 mm

np_grp[1].achse[2].inaktiv 1 # offset is not valid

# ==========================================================================

# Zero offset, which become active with "G55" or "G159 = 2

# ==========================================================================

np_grp[2].achse[0].versch -110000

np_grp[2].achse[0].inaktiv 0 # offset is valid

np_grp[2].achse[1].versch 210000

np_grp[2].achse[1].inaktiv 0 # offset is valid

np_grp[2].achse[2].versch 310000

np_grp[2].achse[2].inaktiv 0 # offset is valid

# ==========================================================================

# Zero offsets, which become active with "G56" or "G159 = 3"

# ==========================================================================

np_grp[3].axis e[0].versch 120000

np_grp[3].achse[0].inaktiv 0 # offset is valid

np_grp[3].axis e[1].versch 220000

np_grp[3].achse[1].inaktiv 0 # offset is valid

np_grp[3].axis e[2].versch 320000

np_grp[3].achse[2].inaktiv 0 # offset is valid

# ==========================================================================

#Zero offsets, which become active "G57" or "G159 = 4"

# ==========================================================================

np_grp[4].axis e[0].versch 120000

np_grp[4].achse[0].inaktiv 0 # offset is valid

np_grp[4].axis e[1].versch 220000

np_grp[4].achse[1].inaktiv 1 # offset is valid

np_grp[4].axis e[2].versch 320000

np_grp[4].achse[2].inaktiv 0 # offset is valid

# ==========================================================================

# Zero offsets, which become active with "G58" or "G159 = 5"

# ==========================================================================

np_grp[5].axis e[0].versch 130000

np_grp[5].achse[0].inaktiv 0 # offset is valid

np_grp[5].axis e[1].versc 230000

np_grp[5].achse[1].inaktiv 0 # offset is valid

np_grp[5].axis e[2].versch - 330000

np_grp[5].achse[2].inaktiv 0 # offset is valid

# ==========================================================================

# Zero offsets, which become active with G59 or "G159 = 6"

# ==========================================================================

np_grp[6].achse[0].versch 400000

np_grp[6].achse[0].inaktiv 0 # offset is valid

np_grp[6].achse[1].versch 50000

np_grp[6].achse[1].inaktiv 0 # offset is valid

np_grp[6].achse[2].versch - 60000

np_grp[6].achse[2].inaktiv 0 # offset is valid

# ==========================================================================

# Zero offsets, which become active with "G159=7"

# ==========================================================================

np_grp[7].achse[0].versch - 450000

np_grp[7].achse[0].inaktiv 0 # offset is valid

np_grp[7].achse[1].versch 340000

np_grp[7].achse[1].inaktiv 1 # offset is valid

np_grp[7].achse [2].versch 670000

np_grp[7].achse[2].inaktiv 1 # offset is valid

============================================================================

# Zero offsets, which become active with "G159 = 8"

============================================================================

np_grp[8].achse[0].versch -110000

np_grp[8].achse[0].inaktiv 0 # offset is valid

np_grp[8].achse[1].versch 220000

np_grp[8].achse[1].inaktiv 0 # offset is valid

np_grp[8].achse[2].versch 344500

np_grp[8].achse[2].inaktiv 0 # offset is valid