Tips zur Erhöhung der Programmlesbarkeit
• Verwenden Sie Groß- und Kleinschreibung,
z.B. alle Befehle groß, Variablen klein.
• Fügen Sie Leerzeichen zwischen den Befehls-
teilen ein.
• Kommentieren Sie Ihr Programm. Die Kom-
mentare stehen zwischen
/* Kommentar */ oder nach //Kommentar
Unzulässig ist die aber Schachtelung von
Kommentaren (/* ... /*...*/ ... */).
/* Beginn KOMMENTAR Ende */
// Beginn KOMMENTAR Ende
• Verwenden Sie Zeileneinzüge innerhalb von
Schleifen.
Werteeingaben
Wie in anderen Programmiersprachen auch werden
Werteeingaben nicht geprüft. Es liegt also in der
Verantwortung des Programmierers, dass zu extre-
me Werte zu Problemen führen. Bei der Suche
nach solchen Problemen können Sie den #DEBUG
Befehl einsetzen.
Interrupt
Generell gibt es drei Sorten von Interrupts
ON INT
Interrupt bei Flanken eines Eingangs
ON PERIOD / ON TIME
Interrupt nach Ablauf einer Zeit-
spanne
ON COMBIT / ON STATBIT
Interrupt wenn Bit n gesetzt wird
ON PARAM
Interrupt wenn sich ein Benutzer-
Parameter n ändert
Generelle Abarbeitung von Interrupt Prozeduren
Nach jedem internen SyncPos-Befehl wird abge-
fragt, ob ein Interrupt-Ereignis vorliegt. Dabei ist zu
beachten, dass mit jedem internen SyncPos-Befehl
der Compiler eine Anweisung im SyncPos-Maschi-
nencode erzeugt.
So wird zum Beispiel eine einfache Anweisung wie:
POSA (ziel + 1000)
in folgenden SyncPos-Maschinencode zerlegt:
MOVE ziel nach Register 101
MOVE Immediate 1000 nach Register 102
ADDREG Register 102 plus Register 101 nach
Register 101
POSA Achse nach Register 101
Außerdem wird bei länger dauernden Befehlen
(wie DELAY oder WAITAX) ständig geprüft, ob ein
Interrupt-Ereignis aufgetreten ist. In diesem Fall
wird der Befehl unterbrochen und nach Abarbei-
tung des Interrupts wieder fortgesetzt.
64
VLT
5000 SyncPos-Option
Achtung!
Verwenden Sie nicht WAITT in Verbindung
mit Interrupts, da dabei der Wartevorgang
nach der Unterbrechung erneut von vorn beginnt.
Benutzung von Variablen innerhalb von Interrupt
Prozeduren
Das obige Beispiel mit dem "SyncPos-Maschinen-
code" zeigt auch deutlich, dass bei der Zuweisung
von Variablen innerhalb von Interrupt Prozeduren
mit größter Sorgfalt vorgegangen werden muss.
Wird zum Beispiel im Hauptprogramm eine Zuwei-
sung der Art
ziel = ziel + wert – 1000
vorgenommen, wird diese in eine Folge von
SyncPos-Maschinencode-Befehlen zerlegt, wobei
die Zwischenergebnisse in temporären Registern
gespeichert werden. Erst am Ende der Folge wird
das Ergebnis nach ziel zurückgespeichert.
Wird nun während der Ausführung dieser Befehle
ein Interrupt ausgelöst und in der entsprechenden
Prozedur ein Befehl
ziel = 0
ausgeführt, wird es in diesem Fall Probleme geben.
Denn nach der Abarbeitung der Interruptprozedur
wird in das Hauptprogramm zurückgesprungen
und dann das immer noch vorhandene Zwischen-
ergebnis nach ziel gespeichert: Somit wird die 0 in
ziel wieder überschrieben.
ON PERIOD
Bei ON PERIOD Funktionen wird dagegen beim
Start einer solchen Funktion die Zeit berechnet,
wann der nächste Aufruf erfolgen soll, also
START_TIME = TIME + PERIOD.
Sobald diese Zeit erreicht ist, wird die Funktion
ausgeführt und anschließend die nächste Startzeit
berechnet mit der Formel
START_TIME = START_TIME + PERIOD.
Dies sorgt dafür, dass die Abstände des Aufrufens
wirklich gleich sind, da die Ausführungszeit die Be-
rechnung nicht beeinflusst. Dies bedeutet aber
auch, dass der Anwender darauf achten muss,
dass die Periode wirklich länger als die Ausfüh-
rungszeit ist, da sonst ein "Stau" entsteht, das
heißt es würde eigentlich nur noch die ON
PERIOD Funktion ausgeführt.
MG.10.J4.03 – VLT ist ein eingetragenes Warenzeichen von Danfoss