TIA Problem beim Wechsel von lagegeregelt und nicht lagegeregelt

ZottelMD

Well-known member
Beiträge
65
Punkte Reaktionen
1
Zuviel Werbung?
->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.


  1. 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.

    ljfnit57.png

    Dann der nächste stationäre Betriebspunkt usw. (z. B. n_Soll € [100, 200, 300 ... 950] rpm
  2. 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

    nd72emex.png

    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
    .
  3. 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

    u9a57cjy.png
Das Problem ist jetzt, dass ich die Lageregelung absolut nicht gescheit genutzt bekomme.

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 !

yv7dp8di.png

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]
 

TP-Inc

Well-known member
Beiträge
525
Punkte Reaktionen
101
Hi. Wir holen bei sowas immer einen Spezialisten vom Antriebshersteller. Das zahlt sich immer aus.
 

zako

Well-known member
Beiträge
1.472
Punkte Reaktionen
377
Zuviel Werbung?
->Hier kostenlos registrieren
... eine Drehrichtungsinvertierung mache ich einfach im Antrieb per p1821, dann wird das schon mal leichter für Dich
Ansonsten kannst Du per TO fliegend zwischen Drehzahl- und Lageregelung hin- und herschalten. Ob in Fall 1) überhaupt beide lagegeregelt laufen müssen, solltest Du mal überlegen. Man kann ja per Befehl die Drehmomentgrenzen beeinflussen.
 

NBerger

Well-known member
Beiträge
636
Punkte Reaktionen
153
Die Lageabweichung (Schleppfehler) wird abgelöscht wenn der Antrieb kurz abgeschaltet wird. Wäre das in deinem Fall möglich?
 
OP
Z

ZottelMD

Well-known member
Beiträge
65
Punkte Reaktionen
1
huhu, vielen Dank für die ersten Impulse!

@TP-Inc: Da hast auch recht mit. Probiere ich parallel auf jeden Fall. Im SIEMENS Forum habe ich die gleiche Anfrage und jetzt gleich werde ich eine Support Request bei SIEMENS erstellen, die das Gleiche abbekommen wird. Wenn du sagst, bei sowas holt ihr euch immer offizielle Hersteller Hilfe, dann besteht ja vielleicht wirklich die Möglichkeit, dass mir ein SIEMENS Antriebstechniker antwortet.

@zako: Da geb ich dir nur teilweise recht, wobei für mich jetzt nicht so entscheidend ist, ob ich eine Drehrichtungsinvertierung durch das Setzen eines Häckchens in der TOConfig oder durch Schubsen eines Parameters erhalte. Zumal ich die Drehrichtung ja genau nur einmal ändere, nämlich beim Einrichten der Anlage. Hier existiert diesbezüglich eigentlich kein Gruebel-Bedarf.

Ansonsten kannst Du per TO fliegend zwischen Drehzahl- und Lageregelung hin- und herschalten
Genau, sowas ähnliches hab ich im Eröffnungspost ja auch geschrieben. Stimme ich dir voll zu. Nur, auch das löst nicht das Problem. Selbst wenn ich zur Laufzeit via Programmcode den Modus von Lageregelung AN zu Lageregelung AUS wechsele und vice versa, anstatt das über einen HMI-Taster zu machen, habe ich erst einmal keinen Vorteil der mein Problem löst.

Ob in Fall 1) überhaupt beide lagegeregelt laufen müssen, solltest Du mal überlegen. Man kann ja per Befehl die Drehmomentgrenzen beeinflussen.
Ich denke da anders. Gerade im ersten Anwendungsfall, also die erwähnte "stationäre Betriebspunkte anfahren, halten, mittel"-Messung sollten die Servos das volle Moment ausschöpfen dürfen. Ziel ist es ja den Servos zu sagen: "Hört mal Jungs, ihr sollt die Drehzahl [100, 200, ...] rpm anfahren, jeweils 5 Sek trotz aufgeschlagener Störgröße - verursacht durch das DUT - halten, sodass gemittelt werden kann und ihr dürft dafür, um das Ausregeln zu schaffen, alles Moment nutzen, was ihr habt." Ich denke nur so kann man den Betriebspunkt während erheblich schwankender Störgröße des DUTs auch erreichen.
Abseits von Einsatzfall 2 mit konstantem Lastmoment, macht die Begrenzung des Drehmomentes und somit der Einsatz des von dir erwähnten "Man kann ja per Befehl die Drehmomentgrenzen beeinflussen" für mich keinen Sinn und auch dieser Ansatz sollte nicht zur Lösung des Problems beitragen.

Theoretisch fiel mir beim Zubettgehen ein, dass ich alle 3 Modis mit aktiver Lageregelung fahren könnte. In Fall 1 und 3 brauchte ich sie sowieso, weil beide Servos in den Fällen jeweils aktiv die gleichen positiven Drehzahlen anfahren sollen. Theoretisch kann ich das ja aber auch bei Fall 2 angeschaltet lassen, wenn man das "aktive Zurückdrehen" auf werweißwohin verhindern könnte. Es darf nicht so sein, dass ich Messung 2 durchführe, beide lageregelt bleiben, aber eben zwangsweise über den Winkel der Solldrehzahl 0 rpm hinweggedreht werden (auch wieder durch das DUT) und wenn ich dann Messung 2 beendet habe und bei Messung 3 auf start drücke, BAM automatisches ausgleichen, knartsch, knirsch

@NBerger:
Die Lageabweichung (Schleppfehler) wird abgelöscht wenn der Antrieb kurz abgeschaltet wird. Wäre das in deinem Fall möglich?
Das ist doch mal ein guter Ansatz. Wenn du mit Antrieb abschalten das Ablösen von MCPower meinst, das sollte kein Problem darstellen.
Die Hinterachse, an der die beiden Servos dranhängen ist bei DUT-Motor-Leerlaufdrehzahl entkoppelt. Heißt ich kann, wenn ich kein Gas am DUT gebe, die Hinterachse mit den Servos erst einmal beliebig bewegen und irgendwann lasse ich dann die Störgröße wirken.
btw.: Falls ich es noch nicht erwähnt habe, das DUT ist immer ein Bambini-Gokart mit 1-Zylinder HONDA GX200 Verbrennungsmotor (max 6,5 PS/4,8 kW, vmax = 49 km/h/950 rpm an der Hinterachse).
Ich könnte also sowohl zwischen jeden einzelnen Betriebspunkt/Messpunkt der Messung 1 (M1) als auch zwischen M1, M2 und M3 meinetwegen die Antriebe abschalten, falls das hilft. Sowas ist möglich. ich werde das in ein paar Minuten auf jeden Fall mal explizit versuchen, ABER...
...was mich zweifeln lässt ist, dass ein zwischenzeitiges Abschalten Abhilfe schafft, ist die Tatsache, dass der Prüfstand jeden Tag abgeschaltet wird. Gerade gestern zum Beispiel habe ich vor dem Feststellen der automatisch ablaufenden Ausgleichsbewegung keinerlei Verfahren der Achsen betrieben. Es hätte also mit der Logik gar kein Schleppfehler vorhanden sein dürfen, der dann offensichtlich selbst in ~15 min nicht abgebaut wurde (Beschreibung der störenden Erscheinung oben im Text). Also ich versuche da gleich noch einmal explizit drauf zu achten, aber speziell das Abwählen der Antriebe/das Abschalten (MCPower), die Energiewegnahme durch die Rückspeiseeinheit (SINA_Infeed) und das Ausschalten des gesamten Antriebsverbundes samt CU (Hardware Taster oder NOT-Aus-Betätigung) werden quasi mehrmals täglich gemacht, mindestens 1x zum Ausschalten der Anlage durchgeführt.
Lange Rede, gar kein Sinn: Ja das Abschalten ist jederzeit möglich, aber wenn du unter Abschalten irgendwas anderes meinst, als ich hier gerade geschrieben habe, dann müsstest du noch mal kurz deine Gedanen ausführen =) Ansonsten stehen die Karten schlecht, weil ich gestern nach dem Einschalten der Antriebe - dem ja ein Abschalten der Antriebe vorrausgeht - keinerlei Drehbewegung ausgeführt habe, die hätte das rechtfertigen können, was an Ausgleichsbewegung statt fand.
VG
 
OP
Z

ZottelMD

Well-known member
Beiträge
65
Punkte Reaktionen
1
Zuviel Werbung?
->Hier kostenlos registrieren
Update:
Habe jetzt nochmal explizit versucht, solche Abweichungen durch Ein- und Ausschalten zu entfernen, also den Tipp zu verfolgen. Aber bis jetzt kann ich nur genau das feststellen, was ich zuletzt vermutet habe.
Link zum Video, wo das mal exemplarisch gezeigt ist:
https://www.dropbox.com/s/h04mwv93xr3lbuj/Lageregelung.mp4?dl=0

Ich habe immer das Problem, sobald ich die Positionierachse/Leitachse mit einem Drehzahlbefehl (MoveJog, MoveVelo) verfahre, baut sich ein Schleppfehler in der Lage auf. Egal wann ich dann die lageregelung einschalte, springt der Antrieb auf max-Drehzahl.
Nehmen wir an, ich rotiere die Achse vorwärts:
- dann baut sich in den folgenden Sekunden, ohne Lageregelung [0, 2Pi, 3Pi, 4Pi.....] Lagedifferenz auf. Die Rotationsgeschwindigkeit ist aber die von mir gewählte.
- aktiviere ich dann die Lageregelung, egal ob ich vorher MC_Power noh einmal ausgeschaltet habe oder nicht, dann dreht die Achse immer sofort mit Maxspeed in gleiche Rotationsrichtung.

Eigentlich würde man erwarten, wenn so ein autmatischer Schleppfehler automatisch ausgeglichen werden soll, dass die Achse dann automatisch mit Maxspeed rückwärts dreht, aber das pasdsiert nicht. In jedem Fall krieg ich das Problem nicht beseitigt. Ich kann nicht verhindern, dass sich kein Lagefehler aufbaut und die Lageregelung keine automatischen Bewegungen ausführt.
 
OP
Z

ZottelMD

Well-known member
Beiträge
65
Punkte Reaktionen
1
Update 2:

in den letzten zwei Tagen konnte ich mich wieder um dieses hier erwähnte Problem kümmern. Ich kann erfreulich verkünden, dass ich das Problem beseitigen konnte, allerdings kann ich nicht die Ursache ausmachen.

Ich hatte in den vergangenen Tagen bei der HMI Programmierung das Phänomen, dass plötzlich die Änderung bei einem Bedienelement bug-weise die gleiche Änderung auf alle anderen Bedienelemente projektierte, ob wohl nichts zusammenhängendes ausgewählt war. Nach einem Neustart des PCs und von TIA war diese Erscheinung beseitigt. Und das war dann auch mein Lösungsansatz bei den Antrieben.

Zum einen habe ich das projektierte Antriebgerät auf Werkseinstellung zurückgesetzt und zu anderen habe ich die beiden TOs der Antriebsachsen gelöscht und durch zwei neue TOs ersetzt. Alles nach dem Motto "Reboot tut immer gut"

Gleichzeitig hatte ich in dem MC-Manual gelesen, dass Gleichlauf auch auf zwei Gleichlaufachsen angewendet werden kann, also eine Synchronachse einer anderen Synchronache folgen kann. Ich habe also statt die TO-Kombination Positionierachse + Synchronachse einfach zwei Synchronachsen angelegt, weil ich keinerlei Positionieraufgaben fahren will. Ich benötige ja nur den Gleichlauf.

Alles in allem führte dazu, dass ich nun genau wie erwartet die Achsen mit den entsprechenden MC-Befehlen ansteuern kann und auch sauber beliebig in den Gleichlauf und aus dem Gleichlauf heraus schalten kann (zur Laufzeit).

Bis das nächste Problem auftritt, kann ich dieses Thema hier als geschlossen/"gelöst" betrachten.

Vielen Dank für eure Impulse

VG
 
Oben