Example:
A name resolution is performed via RNP() for each change of the axis motion in order to
read channel-specific machine data:
DEF AXIS_POSITION_X =
CHANGE(AXIS_POSITION_X)
has moved: "
<< AXIS_POSITION_X)
END_CHANGE
Keep the channel-specific machine data up-to-date with the aid of an invisible variable, copy
each value change to a temporary variable, e.g. register.
This temporary variable can then be used in the CHANGE method of the value change for
the axis position without making a name resolution of the machine data each time and the
subsequent read access:
DEF AXIS_POSITION_X =
DEF AXIS_NAME_X = (S///,""/WR0//"$MC_AXCONF_GEOAX_NAME_TAB[0]")
CHANGE(AXIS_NAME_X)
END_CHANGE
CHANGE(AXIS_POSITION_X1)
END_CHANGE
● The update rate and therefore the execution of the associated CHANGE method of
variables that are connected to system or user variables with very frequent value changes,
can be reduced by using the UR variable property, e.g. variable that is coupled to the actual
axis values.
Reason:
In this way, the associated CHANGE method is executed in a fixed specified grid for a value
change.
B.4
Tips for DO LOOP loops
As loops can impair the performance of SINUMERIK Operate, depending on the configuration,
they should be used carefully and if possible without time-intensive actions.
A register (REG[]) should also be used as run variable, because normal display variables
(particularly those with OPI connection) also impair the system performance due to the frequent
updates or write operations.
SINUMERIK Integrate Run MyScreens
Programming Manual, 10/2015, 6FC5397-3DP40-5BA3
DLGL("Axis """ << RNP("$MC_AXCONF_GEOAX_NAME_TAB[0]") << """
REG[0] = AXIS_NAME_X
DLGL("Axis """ << REG[0] << """ has moved " << AXIS_POSITION_X)
(R///,""///"$AA_IM[X]")
(R///,""///"$AA_IM[X]")
Tips and tricks
B.4 Tips for DO LOOP loops
209