Tipps und Tricks
B.3 Tipps zur CHANGE-Methode
B.3
Tipps zur CHANGE-Methode
● CHANGE-Methoden immer nur sehr kurz und klein halten, insbesondere bei solchen, deren
Variablen an eine System- oder Anwendervariable angebunden sind und sich hochfrequent
ändert.
Grund:
Steigerung der Performance des Maske.
● Nach Möglichkeit keine RNP()-Funktionen in CHANGE-Methoden projektieren.
Stattdessen besser parallel eine unsichtbare Variable mit der zu lesenden System- oder
Anwendervariable anlegen und diese dann verwenden.
Grund:
Mit jedem Aufruf würde zwangsweise eine RNP()-Funktion abgesetzt werden. Im anderen
Fall würde einfach nur auf den ohnehin schon vorhandenen aktuellen Wert zugegriffen
werden.
Beispiel:
Hier wird mit jeder Änderung der Achsbewegung per RNP() eine Namensauflösung ge‐
macht, um ein kanalspezifisches Maschinendatum zu lesen:
DEF AXIS_POSITION_X =
CHANGE(AXIS_POSITION_X)
has moved: "
<< AXIS_POSITION_X)
END_CHANGE
Mit Hilfe einer unsichtbaren Variable das kanalspezifische Maschinendatum aktuell halten,
jede Wertänderung in eine temporäre Variable z. B. Register umkopieren.
Diese temporäre Variable kann dann in der CHANGE-Methode der Wertänderung der Achs‐
position verwendet werden, ohne jedes Mal eine Namensauflösung des Maschinendatums
und den anschließenden Lesezugriff zu machen:
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
322
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]")
Programmierhandbuch, 08/2018, 6FC5397-1DP40-6AA2
SINUMERIK Integrate Run MyScreens (BE2)