ZottelMD
Level-2
- Beiträge
- 87
- Reaktionspunkte
- 1
-> Hier kostenlos registrieren
Hi Leute,
ich habe eine CPU1516, eine CU320 mit Rückspeiseeinheit, 2xSiMotMod und 2x!FT7-Servos.Ich steuer die ganzen Bewegungen, die ich so vorhabe nur mit MC-Befehlen aus den Bereich " Anweisungen > Technologie > ... "
Generell geht es um einen Prüfstand, bei dem die beiden Servos die Lastmaschinen für das DUT darstellen. Das DUT hat eine starre Hinterachse, somit stehen sich beide Servos Nase an Nase gegenüber und ich muss bei einem die Drehrichtung invertieren.
Ich möchte mit dem Aufbau nun 3 Funktionen realisieren.
Ihr müsst davon ausgehen, dass ich die Achsen ohne Lageregelung schon monatelang verfahre oder sie bei Sollwert 0 verfahren werden (durch die Kraft des DUT). Angenommen ein Schleppfehler wird bis zur Zahl Drölf-Trillionen gezählt, werde ich das sicherlich schon erreicht haben ^^ (nur prinzipiell gesagt)
Wenn ich jetzt z. B. ganz behutsam vorgehe und erst einmal nichts kaputt machen will, stelle ich die Maximaldrehzahl in den beiden Servos mit p1082 auf 100 rpm. Dann aktiviere in meiner WINCC Runtime auf dem IPC377 die Lageregelung der Leitachse, weil man sonst keinen MCGearIn testen kann.
Möchte ich dann testweise die Leitachse ganz vorsichtig mit MCMoveJog sagen wir mit 10 rpm verfahren, ..., schwuuups beschleunigt die Achseentsprechend der Hinweise im Funktionhandbuch auf maximale Drehzahl und lässt sich auch durch Abwahl von MCMoveJog oder Anwahl von MCHalt nicht stoppen.
Der Antrieb versucht erst irgendeine Lagediffrenz zu beseitigen um dann irgendwann möglicherweise zum Stehen zu kommen. Das ist so für mich nicht tragbar. Da ich beliebig zwischen lagegeregelt und nicht lagegeregelt hin und herschalten muss und zu keiner Zeit solche automatischen Bewegungen ausgeführt werden dürfen, würde ich mir wünschen, dass ..- wenn von nicht lagegeregelt auf lagegeregelt umgeschaltet wird, irgendeine eventuell vorhandene Lagedifferenz zu 0 gesetzt wird und nicht automatisch irgendwas abgebaut wird und Bewegungen erzeugt werden, die nicht meiner Eingabe bei MCMoveJog oder MCVelo entsprechen..
Aus Spaß habe ich vorhin den Ausgleichsvorgang mal eine Viertelstunde einfach laufen lassen, in der Hoffnung, dass er irgendwan automatisch anhält. Dabei stand MCMoveJog auf forward mit 1 rpm und gedreht hat er dann mit max speed, also 100 rpm, bis zum Gehtnichtmehr.Achtung breiter Screenshot, scrollbar nutzen !

Oben bei der Lageabweichung stand dann keine Null, so wie jetzt , sondern z. B. ein hoher Wert mit 4 Mrd. Irgendwann ist der dann dauerhaft zu 80 000 000 H gesprungen, hat aber nicht aufgehört mit maxDrehzahl zu drehen. 80 000 000 H müsste Dezimal sowas wie -2,147 Mrd bedeuten.Der zugehörige Lagewert XIST1 vom einzigen Geber am Servo1 ist dabei von 4 Mrd-irgendwas herunter inkrementiert und hat nach der 0 wieder bei 4 Mrd angefangen.Scheinbar hätte dieser Prozess nie aufgehört.
Kann man mir da irgendwie helfen?VG
[Edit 1: ein paar Schreibfehler beseitigt]
ich habe eine CPU1516, eine CU320 mit Rückspeiseeinheit, 2xSiMotMod und 2x!FT7-Servos.Ich steuer die ganzen Bewegungen, die ich so vorhabe nur mit MC-Befehlen aus den Bereich " Anweisungen > Technologie > ... "
Generell geht es um einen Prüfstand, bei dem die beiden Servos die Lastmaschinen für das DUT darstellen. Das DUT hat eine starre Hinterachse, somit stehen sich beide Servos Nase an Nase gegenüber und ich muss bei einem die Drehrichtung invertieren.
Ich möchte mit dem Aufbau nun 3 Funktionen realisieren.
- stationäre Betriebspunkte Anfahren für iterative Aufnahme der Hinterachsleistung durch das DUT
In diesem Modus müsste ich die sich gegenüber stehenden Servos im lagegeregelten Betrieb betreiben und gebe z. B. durch MCMoveVelo oder MCMoveJog eine konstante SOLL-Drehzahl in der Leitachse vor. Mit dem Aktiven Befehl MCGearIn wird die Folgeachse der Drehzahl folgen.
Wenn jetzt eine SOLL-Drehzahl von beiden Servos gehalten wird, gebe ich mit dem DUT z. B. Vollgas, was somit versuchen wird, die Drehzahl an der Hinterachse - entgegen des Sollwertes in den Servos - zu erhöhen. Die Servos müssen Drehmoment aufbringen, um dieser Störgröße entgegen zu wirken. Das will ich dann über 5 s mitteln.
Dann der nächste stationäre Betriebspunkt usw. (z. B. n_Soll € [100, 200, 300 ... 950] rpm - konstante Last durch Servos
In diesem Modus will ich beiden Servos die Solldrehzahl 0 rpm geben und das dafür nutzbare Drehmoment mit MC-TorqueLimitting z. B. auf 20 Nm begrenzen.
Das Führt dazu, dass das DUT entsprechend seiner Motorkennlinie mal mehr oder weniger Überschussmoment zu dieser konstanten Last hat und somit die Hinterachsse mal mehr oder weniger schnell beschleunigt. In der nachstehenden Abbildung wird der rot-schraffierte Bereich ja genutzt, um die anwesenden Trägheitsmomente zu beschleunigen. Die Differenz zur konstanten Last ist mal höher und mal niedriger, also gibt es mal mehr und mal weniger Beschleunigung
Das bedeutet in diesem Modus benötigt man keine Lageregelung und hier wird sozusagen massiv ein Schleppfehler verursacht, weil die Achsen theoretisch auf fester, konstanter Position XYZ stehen bleiben wollen, aber durch äußere Kraft diverse Umdrehungen gedreht werden
. - konstante Beschleunigung
in diesem Modus muss ich wieder den lagegeregelten Betrieb einschalten.
Die Idee: Der Leitachse wird eine lineare Drehzahlrampe vorgegeben, bei der naturgemäß die Beschleunigung konstant ist.
Wirkt jetzt die Störgröße durch das DUT ein und will es die Achse daräuber hinaus beschleunigen, müssen die Servos wieder ein variables Drehmoment nutzen, um dagegen anzukämpfen.
Somit lässt sich auch in diesem Modus die Radleistung messen, weil das Drehmoment der Servos qualitativ dem Drehmoment entsprechend der Motorkennlinie des DUTs folgen muss, um die lineare Rampe zu halten
Ihr müsst davon ausgehen, dass ich die Achsen ohne Lageregelung schon monatelang verfahre oder sie bei Sollwert 0 verfahren werden (durch die Kraft des DUT). Angenommen ein Schleppfehler wird bis zur Zahl Drölf-Trillionen gezählt, werde ich das sicherlich schon erreicht haben ^^ (nur prinzipiell gesagt)
Wenn ich jetzt z. B. ganz behutsam vorgehe und erst einmal nichts kaputt machen will, stelle ich die Maximaldrehzahl in den beiden Servos mit p1082 auf 100 rpm. Dann aktiviere in meiner WINCC Runtime auf dem IPC377 die Lageregelung der Leitachse, weil man sonst keinen MCGearIn testen kann.
Möchte ich dann testweise die Leitachse ganz vorsichtig mit MCMoveJog sagen wir mit 10 rpm verfahren, ..., schwuuups beschleunigt die Achseentsprechend der Hinweise im Funktionhandbuch auf maximale Drehzahl und lässt sich auch durch Abwahl von MCMoveJog oder Anwahl von MCHalt nicht stoppen.
Der Antrieb versucht erst irgendeine Lagediffrenz zu beseitigen um dann irgendwann möglicherweise zum Stehen zu kommen. Das ist so für mich nicht tragbar. Da ich beliebig zwischen lagegeregelt und nicht lagegeregelt hin und herschalten muss und zu keiner Zeit solche automatischen Bewegungen ausgeführt werden dürfen, würde ich mir wünschen, dass ..- wenn von nicht lagegeregelt auf lagegeregelt umgeschaltet wird, irgendeine eventuell vorhandene Lagedifferenz zu 0 gesetzt wird und nicht automatisch irgendwas abgebaut wird und Bewegungen erzeugt werden, die nicht meiner Eingabe bei MCMoveJog oder MCVelo entsprechen..
Aus Spaß habe ich vorhin den Ausgleichsvorgang mal eine Viertelstunde einfach laufen lassen, in der Hoffnung, dass er irgendwan automatisch anhält. Dabei stand MCMoveJog auf forward mit 1 rpm und gedreht hat er dann mit max speed, also 100 rpm, bis zum Gehtnichtmehr.Achtung breiter Screenshot, scrollbar nutzen !

Oben bei der Lageabweichung stand dann keine Null, so wie jetzt , sondern z. B. ein hoher Wert mit 4 Mrd. Irgendwann ist der dann dauerhaft zu 80 000 000 H gesprungen, hat aber nicht aufgehört mit maxDrehzahl zu drehen. 80 000 000 H müsste Dezimal sowas wie -2,147 Mrd bedeuten.Der zugehörige Lagewert XIST1 vom einzigen Geber am Servo1 ist dabei von 4 Mrd-irgendwas herunter inkrementiert und hat nach der 0 wieder bei 4 Mrd angefangen.Scheinbar hätte dieser Prozess nie aufgehört.
Kann man mir da irgendwie helfen?VG
[Edit 1: ein paar Schreibfehler beseitigt]