Frage:
Auf welche Art lassen sich Positionswerte zwischen Anwendereinheiten und inkrementellen Größen umrechnen?
Antwort:
Für den 9400 Servo Drive HighLine stehen im Engineer zwei unterschiedliche Verfahren zur Positionskonvertierung zur Verfügung:
Schnelle Konvertierung von Prozessgrößen:
Bei dieser Konvertierungsmethode gehen die Größen in Anwendereinheiten als Prozesssignale in die Konvertierungsbausteine ein. Der Positionswert in Anwendereinheiten wird dabei im so genannten E4-Format (Ganzzahlformat, bei dem die letzten vier Stellen als Nachkommastellen gewertet werden, identisch mit dem FIX32-Format bei 9300) skaliert. Die Konvertierungsroutine ist Bestandteil der aufrufenden Task selbst und wird deswegen
in jedem Taskaufruf neu abgearbeitet:
- Funktionsblock L_SdUnitToPos: Dieser erhält als den Positionswert in Anwendereinheiten als Eingangssignal (Prozesssignal) und führt eine Konvertierung in einen inkrementellen Positionswert durch. Damit die Konvertierung erfolgen kann, muss zusätzlich das für die Konvertierung benötigte Maßsystem am Eingang AxisData vorgegeben werden.
- Funktionsblock L_SdPosToUnit: Führt eine Umrechnung von inkrementellen Werten in Positionen in Anwendereinheiten durch und gibt den Wert im E4-Format als Prozesssignal aus. Der Ausgabewert kann weiter in der Funktionsblockverschaltung verwendet werden. Damit die Konvertierung erfolgen kann, muss zusätzlich das für die Konvertierung benötigte Maßsystem am Eingang AxisData vorgegeben werden.
Einsatz finden diese Funktionsblöcke zum Beispiel, wenn die Positionswerte in Anwendereinheiten über Prozessdatensignale eines Datenbussystems vorgegeben bzw. zurückgemeldet werden oder eine interne Weiterverarbeitung in der FB-Verschaltung in Anwendereinheiten benötigt wird.
Langsame Konvertierung von Codestellenwerten:
Wenn die Positionswerte in Anwendereinheiten über Codestellen vorgegeben bzw. aus Codestellen gelesen werden sollen, brauchen die Konvertierungsroutinen nicht in jedem Aufrufintervall der Task abgearbeitet werden. Die Umrechnung erfolgt dann
nur bei Zugriff auf die zugeordnete Schreib-/Lese-Codestelle im Rahmen der Skalierroutine. Folgende Funktionsblöcke stehen für diese Zwecke zur Verfügung:
- Funktionsblock L_SdSetPosition: Der FB rechnet eine Position in Anwendereinheiten in einen inkrementellen DINT-Wert um. Die Positionsvorgabe erfolgt dabei über eine Schreib-/Lese-Codestelle im FB selber. Die Umrechnung der Anwenderposition erfolgt nur bei Werteänderung im Rahmen der Skalierroutine füre diese Codestelle. Der inkrementelle Positionswert steht über einen Funktionsblockausgang im weiteren Signalfluss der FB-Verschaltung zur Verfügung. Damit die Konvertierung erfolgen kann, muss zusätzlich das für die Konvertierung benötigte Maßsystem am Eingang AxisData vorgegeben werden.
- Funktionsblock L_SdGetPosition: Ein inkrementeller Positionswert wird über den Positionseingang des FBs eingelesen. Ein Konvertierung erfolgt jedoch nur bei einem Lesevorgang der FB-internen Lesecodestelle im Rahmen der Skalierroutine. Damit die Konvertierung erfolgen kann, muss zusätzlich das für die Konvertierung benötigte Maßsystem am Eingang AxisData vorgegeben werden.