Fehlerquellen und effizientes Programmieren
11.2 Effizient programmieren
11.2.2.4
Variablen optimal deklarieren
Ordnen Sie die Variablen innerhalb eines Deklarationsblocks (z. B. VAR/END_VAR) in
aufsteigender Größe an. Dadurch nutzen Sie den Speicherplatz optimal aus.
Initialisieren Sie Variablen mit Werten ungleich 0 nur, wenn es nötig ist. Die Initialisierung
beim Start einer Task oder einer POE benötigt Zeit. Dies wirkt sich besonders aus bei
temporären Variablen sowie bei Variablen von Programmen, die sequentiellen Tasks
zugeordnet sind.
11.2.2.5
Zugriff auf Parameter der Funktionsbausteine optimieren
Wenn Sie Funktionsbausteine (FB) erstellen, die Werte bearbeiten sollen, können Sie dies
auf zweierlei Weise tun. Sie können die entsprechenden Variablen im FB mit
Eingangsparametern mittels VAR_INPUT besetzen, dort bearbeiten und mit
Ausgangsparametern mittels VAR_OUTPUT für die Weitergabe kennzeichnen.
Wenn ein großes Datenvolumen an den FB zu übergeben ist, kann das Verwenden von
Durchgangsparametern (VAR_IN_OUT) schneller sein als das Verwenden von Ein- und
Ausgangsparametern (VAR_INPUT und VAR_OUTPUT). Die Übergabe der Parameter
erfolgt schneller, da Kopiervorgänge entfallen, jedoch ist der Zugriff auf die Variable vom FB
aus unter Umständen langsamer.
ACHTUNG
Beachten Sie, wenn Sie mit Durchgangsparametern auf Unit-Variablen oder geräteglobale
Variablen zugreifen: Andere Tasks können gleichzeitig auf diese Variablen zugreifen
11.2.2.6
Aufruf von Funktionsbausteinen optimieren
Nur bei Versionen des SIMOTION Kernels bis V3.0:
Beim Aufruf der Instanz eines Funktionsbausteins (FB) werden die Instanzdaten auf den
Stack kopiert (siehe ); beim Verlassen der Instanz werden sie vom Stack zurück in die
Instanz kopiert. Vermeiden Sie wegen der damit verbundenen Laufzeiten FB mit
umfangreichen Instanzdaten.
11.2.2.7
Programmstruktur optimieren
Achten Sie auf eine übersichtliche Gliederung ihrer ST-Quellen und der darin enthaltenen
POE. Modularisieren Sie die Quellen jedoch nicht zu stark, da der Zugriff auf Funktionen und
Variablen importierter Units etwas mehr Zeit benötigt als inner halb einer Unit.
11.2.2.8
Ablaufsystem optimieren
Ordnen Sie der IPOsynchronousTask nur ein einziges Programm zu. Sie mindern dadurch
die Gefahr einer Laufzeitüberschreitung.
Verwenden Sie Funktionen, die synchron abgearbeitet werden, nur in MotionTasks. (Bei der
synchronen Bearbeitung wird der nächste Befehl erst ausgeführt, wenn die Bearbeitung des
anstehenden Befehls eine Bedingung erfüllt, z. B. beendet ist.)
482
Basisfunktionen
Funktionshandbuch, 05/2009