ZottelMD
Level-2
- Beiträge
- 87
- Reaktionspunkte
- 1
-> Hier kostenlos registrieren
Hi Leute,
ich hab 'mal eine Frage. Ich sitze immernoch an meiner Masterarbeit ( "Automobil"-Prüfstand für kleine Fahrzeuge wie Gokarts). Es ist kaum noch Zeit und so richtig krieg ich es immernoch nicht hin, alles umzusetzen, was mindestens laufen muss.
Aktuelles Problem:Im Rahmen von Analysen und Testmessungen bin ich gerade dabei die Motorkennlinie vom GX200 Honda Kleinmotor zu "ermitteln". Dazu nutze ich folgenden Aufbau:
(ACHTUNG: breites Bild -> nach rechts scrollen (mittlere Maustaste))
Abb. 1: Aufbau zum Vermessen des Gokartmotors (Honda GX200)
- Ihr seht auf der linken Seite den 1FT7..-Siemens Servo, dann zwei Metallbalgkupplungen, die die bläuliche Drehmomentmesswelle einrahmen, ein Stehlager und zwei Flansche, die zusammen in den Motor ragen und dort Drehungen ausführen oder dort gedreht werden -
An der Stelle, wo mein E-Strang in den GX200 reinragt, sitz normalerweise das Anzugsseil (stino Wald- und Wiesen-Rasenmähermotor). Um das Problem zu lösen, habe ich eine Rampe für den Servo programmiert, die in einer Sekunde auf Leerlaufdrehzahl des GX200 mit 10 Nm TorqueLimit dreht (ca. 1500 rpm) und dann spingt das Torquelimit im Servo von 10 auf 0 Nm. Ist die GX200 Zündung eingeschaltet, so ist das im Grunde eine Starthilfe und ab da hält der Motor sich selbst in Leerlaufdrehzahl, und treibt die ganzen Servo-Motorkomponenten.
Durch Trapezrampen habe ich im Vorfeld so leidlich die Trägheitsmomente vom GX200, vom Servo (1FT7-...) und die ganzen Amaturen (wie z.B. Drehmomentmesswelle, Stehlager, Radnabenflansch, etc.) bestimmt. Heißt durch die Trapezmethode habe ich so ungefähre Trägheitmomente der sich drehenden Teile ermittelt (Warum ungefähr?, weil das Trägheitsmoment bei den Messungen nie über den gesamten Drehzahlbereich konstant ist > ergo Mittelwert). Bei den meisten Werten helfen aber auch die Datenblätter. Das deckt sich einigermaßen gut mit den gemittelten Messergebnissen für die Trägheiten. Nur der GX200 hat eben keine dokumentierte Trägheit... nun weiter..
Zunächst habe ich nun Vollgasmessungen vom GX200 mit anschließendem Ausrollversuch gemacht. Durch die "Kenntnis" von J, also dem Trägheitsmoment der oben abgebildeten Teile, kann man das Beschleunigungsmoment M_B ermitteln (positive Drehzahlrampe) und das Widerstandsmoment M_W beim Ausrollen ermitteln (negative Drehzahlrampe).
Hat man dies beides, kann man mit M[SUB]A[/SUB] = M[SUB]B[/SUB] + M[SUB]W[/SUB] auf das Antriebsmoment schließen, also jenes Moment, was an der Kurbelwelle des GX200 ansteht und die rotierenden Teile beschleunigt (Servo, Amaturen).
Nach ganz viel MATLAB Datenverarbeitung, fittings, etc. erhalte ich beispielsweise so eine Motorkennlinie:
Abb. 2: ermittelte Motorkennlinie des HONDA GX200
Sieht erst einmal nicht schlecht aus, würde man meinen, aber zum Vergleich, will ich den einzigen Schnipsel anhängen, der offiziell über den GX200 bekannt ist:
Abb. 3: SOLL-Motorkennlinie des GX200
Man erkennt, dass ich die Leistung und das Moment zu hoch ermittelt habe. Im HONDA Datenblatt wird bei dem Schnipsel auf SAE J1349 Bedingungen verwiesen... ja keine Ahnung. Ich denke mir nur jetzt, dass die "Last", unter der ich meine Messung gemacht habe, möglicherweise zu gering ist. Denn letztendlich hat mein GX200 bei meiner Messung nur ein bisschen rotierende Masse gesehen, deren Trägheitsmoment jetzt nicht die Welt ist. Die positive Drehzahlrampe wird in meiner Messung demnach z.B. in ca. 1.2 s durchfahren (von ca. 1500 rpm auf 4950 rpm] und die Ausrollrampe dauert ca. 3 s. Das sind natürlich keine Zeiten wie bei Vollastbedingungen auf der Straße. Dort dauert die Beschleunigung ca. 8 Sek und das Ausrollen mehr als 25 s. Logisch - schwerere Last schiebt oder bremst.
Per Definition müsste es eigentlich egal sein, in einem idealen System. Der Motor hat ein gewisses Repertoire an Moment über Drehzahl. Ist die angeschlossene Last gering, so schafft er es die geringe Last zügig zu beschleunigen, die Kennlinie also schnell zu durchlaufen (wie bei mir z. B. nur wenig rotatorische Masse, die beschleunigt werden muss (J ist klein also ist α groß ( aus M = J*α )). ist die Last größer, so verrichtet er die gleiche Arbeit, aber braucht für die gleiche Rampe länger (J ist groß also ist α klein ( aus M = J*α )).
Nun wollte ich ausporbieren, dass der Servo im Moment der "Energieabgabe" - Sprung von Antreibenden +10 Nm auf 0 Nm TorqueLimit - ab da drehzahlabhängig ein Gegenmoment erzeugt. So könnte ich z. B. auf dem Prüfstand, unter diesem Aufbau simulieren, dass das Kart fährt (z.B.). Generell muss ich ja "nur" sagen: "Servo fahre im generatorischen Betrieb bitte die ZIEL-Drehzahl 0 rpm an und du darfst dazu XYZ Nm aus dem Baustein TorqueLimit benutzen." (Hinweis: ein Baustein, der das zur Verfügung stehende Drehmoment des Servos zum Erreichen seines SOLL-Wertes begrenzt (in dem Fall: SOLL-Drehzahl 0 rpm & Drehmoment eben drehzahlabhängig wie in M[SUB]B[/SUB] = J*α))
Ich hole mir durch einen zyklischen Baustein (OB) alle 50 ms die momentane Drehzahl und den Zeitstempel. Dann berechne delta n durch delta t und erhalte eine "ruhigere" Beschleunigung, als wenn ich Sie dire aus dem Antrieb entnehme (Technologieobjekt TO) - sprich vom Servo (Positionierachse) auslese.
Dennoch zitert die Beschleunigung stark um ihren Mittelwert. Das führt dazu, dass der Servo das Gegenmoment "schön unkontinuierlich" anlegt und es immer zu "Schlägen" auf der Welle kommt.
Das Problem:
- berechne ich aus dem alpha noch den gleitenden Mittelwert, so verzögere ich mein Signal um die Fensterbreite, heißt ich berechne ein Alpha und daraus ein M_Gegen, was dann zu spät angelegt wird, da ist die Drehzahl schon wieder höher. Moment und Drehzahl passen dann nicht mehr zueinander.
Ich würde gern sagen, wenn die translatorische Masse des Karts (80+95) kg beträgt, dann soll in den Beschleunigungsphasen des GX200 (positive Drehzahlrampe) der Servo ein Gegenmoment von z. B. J*α aufbringen. Dabei sei J jetzt eben nicht mehr so klein, wie bei der eingangs beschriebenen Messung, sondern es wird um die äquivalente translatroischen Masse draußen auf der Straße erhöht
( M[SUB]B,trans[/SUB] sei dazu M[SUB]B,rot[/SUB] -> m[SUB]T[/SUB]*α*r² = J*α -> J = m[SUB]T[/SUB]*r² = 175 kg * 0.131² m²= 3 kgm² ). Wenn ich also den Servo, gesteuert durch das momentane Beschleunigung α (alpha) und einem Trägheitsmoment von J = 3 kgm², ein Gegenmoment erzeugen lasse, dann würde ich damit simulieren, dass der Motor die Kartmasse vor sich herschiebt.
Derzeit versuche ich es mit .. umzusetzen:
[/INDENT]
Im Case 3 wird das momentane Gegenmoment, was abhängig von der GX200 verursachten Drehzahl wirken soll, berechnet und soll im Idealfall wirksam werden. Ich habe versucht, das Schlagen / Rucken bei schwankenden Beschleunigungswerten abzufangen, indem ich für diesen Abschnitt die TO-Beschleunigung herunter setze, aber das bewirkt nicht sehr viel. Spätestens bei der negativen Drehzahlrampe (Ausrollprozess, wenn ich das GX200-Gas loslasse) knallt mir ein Moment rein, was den Motor sofort absterben lässt, weil im Loslassmoment die Beschleunigung - bzw. Verzögerung - so hoch zu sein scheint, dass daraus ein kurzzig sehr hohes Moment aus der Berechnung resultiert.
Auch ein Herausschrauben der Zündkerze (sodass die Kompression vom GX wegfällt) und ein Ausführen vom OBT-Tuning (einfache Methode zum Optimieren einer Siemens Motorregelung) passt die Reglerparameter dahingehend nicht so an, dass das Gegenmoment schön sanft und kontinuierlich anliegt. Alternativ bin ich aber aus know how- und zeittechnischen Gründen auch nicht mehr in der Lage, irgendwelche Systeme zu analysieren und irgendwelche Konstanten zu berechnen. Ich finde die SIEMENS-Technik dazu viel zu komplex in TIA, wenn gleich man durch die BICO-Oberfläche bestimmt auch gute Möglichkeiten hätte, genau da einzugreifen. Aber kein Plan.
Hat jemand eine Idee oder kann jemand teilen, wie er solche drehzahlabhängigen Momente / Widerstände realisiert? Mir drückt zeitlich wirklich der Schuh. Im März ist Abgabe und mein Prüfstand kann einfach noch nicht das, was er soll. Finden wir hier eine gute Lösung, so kann ich die dann auch für den Hauptbetriebsfall nutzen:
Kart auf den Prüfstand aufspannen und Gasgeben. Den Prüfstand ( 2 Servos ) dabei genau die Widerstände erzeugen lassen, die bei der indoor-Messung fehlen ( Wind, Steigung, Roll, und Beschleunigung der abmontierten Reifen, also M[SUB]B,Räder[/SUB] )
Vielen Dank fürs Lesen und viele Grüße
ich hab 'mal eine Frage. Ich sitze immernoch an meiner Masterarbeit ( "Automobil"-Prüfstand für kleine Fahrzeuge wie Gokarts). Es ist kaum noch Zeit und so richtig krieg ich es immernoch nicht hin, alles umzusetzen, was mindestens laufen muss.
Aktuelles Problem:Im Rahmen von Analysen und Testmessungen bin ich gerade dabei die Motorkennlinie vom GX200 Honda Kleinmotor zu "ermitteln". Dazu nutze ich folgenden Aufbau:
(ACHTUNG: breites Bild -> nach rechts scrollen (mittlere Maustaste))
Abb. 1: Aufbau zum Vermessen des Gokartmotors (Honda GX200)
- Ihr seht auf der linken Seite den 1FT7..-Siemens Servo, dann zwei Metallbalgkupplungen, die die bläuliche Drehmomentmesswelle einrahmen, ein Stehlager und zwei Flansche, die zusammen in den Motor ragen und dort Drehungen ausführen oder dort gedreht werden -
An der Stelle, wo mein E-Strang in den GX200 reinragt, sitz normalerweise das Anzugsseil (stino Wald- und Wiesen-Rasenmähermotor). Um das Problem zu lösen, habe ich eine Rampe für den Servo programmiert, die in einer Sekunde auf Leerlaufdrehzahl des GX200 mit 10 Nm TorqueLimit dreht (ca. 1500 rpm) und dann spingt das Torquelimit im Servo von 10 auf 0 Nm. Ist die GX200 Zündung eingeschaltet, so ist das im Grunde eine Starthilfe und ab da hält der Motor sich selbst in Leerlaufdrehzahl, und treibt die ganzen Servo-Motorkomponenten.
Durch Trapezrampen habe ich im Vorfeld so leidlich die Trägheitsmomente vom GX200, vom Servo (1FT7-...) und die ganzen Amaturen (wie z.B. Drehmomentmesswelle, Stehlager, Radnabenflansch, etc.) bestimmt. Heißt durch die Trapezmethode habe ich so ungefähre Trägheitmomente der sich drehenden Teile ermittelt (Warum ungefähr?, weil das Trägheitsmoment bei den Messungen nie über den gesamten Drehzahlbereich konstant ist > ergo Mittelwert). Bei den meisten Werten helfen aber auch die Datenblätter. Das deckt sich einigermaßen gut mit den gemittelten Messergebnissen für die Trägheiten. Nur der GX200 hat eben keine dokumentierte Trägheit... nun weiter..
Zunächst habe ich nun Vollgasmessungen vom GX200 mit anschließendem Ausrollversuch gemacht. Durch die "Kenntnis" von J, also dem Trägheitsmoment der oben abgebildeten Teile, kann man das Beschleunigungsmoment M_B ermitteln (positive Drehzahlrampe) und das Widerstandsmoment M_W beim Ausrollen ermitteln (negative Drehzahlrampe).
Hat man dies beides, kann man mit M[SUB]A[/SUB] = M[SUB]B[/SUB] + M[SUB]W[/SUB] auf das Antriebsmoment schließen, also jenes Moment, was an der Kurbelwelle des GX200 ansteht und die rotierenden Teile beschleunigt (Servo, Amaturen).
Nach ganz viel MATLAB Datenverarbeitung, fittings, etc. erhalte ich beispielsweise so eine Motorkennlinie:
Abb. 2: ermittelte Motorkennlinie des HONDA GX200
Sieht erst einmal nicht schlecht aus, würde man meinen, aber zum Vergleich, will ich den einzigen Schnipsel anhängen, der offiziell über den GX200 bekannt ist:
Abb. 3: SOLL-Motorkennlinie des GX200
Man erkennt, dass ich die Leistung und das Moment zu hoch ermittelt habe. Im HONDA Datenblatt wird bei dem Schnipsel auf SAE J1349 Bedingungen verwiesen... ja keine Ahnung. Ich denke mir nur jetzt, dass die "Last", unter der ich meine Messung gemacht habe, möglicherweise zu gering ist. Denn letztendlich hat mein GX200 bei meiner Messung nur ein bisschen rotierende Masse gesehen, deren Trägheitsmoment jetzt nicht die Welt ist. Die positive Drehzahlrampe wird in meiner Messung demnach z.B. in ca. 1.2 s durchfahren (von ca. 1500 rpm auf 4950 rpm] und die Ausrollrampe dauert ca. 3 s. Das sind natürlich keine Zeiten wie bei Vollastbedingungen auf der Straße. Dort dauert die Beschleunigung ca. 8 Sek und das Ausrollen mehr als 25 s. Logisch - schwerere Last schiebt oder bremst.
Per Definition müsste es eigentlich egal sein, in einem idealen System. Der Motor hat ein gewisses Repertoire an Moment über Drehzahl. Ist die angeschlossene Last gering, so schafft er es die geringe Last zügig zu beschleunigen, die Kennlinie also schnell zu durchlaufen (wie bei mir z. B. nur wenig rotatorische Masse, die beschleunigt werden muss (J ist klein also ist α groß ( aus M = J*α )). ist die Last größer, so verrichtet er die gleiche Arbeit, aber braucht für die gleiche Rampe länger (J ist groß also ist α klein ( aus M = J*α )).
Nun wollte ich ausporbieren, dass der Servo im Moment der "Energieabgabe" - Sprung von Antreibenden +10 Nm auf 0 Nm TorqueLimit - ab da drehzahlabhängig ein Gegenmoment erzeugt. So könnte ich z. B. auf dem Prüfstand, unter diesem Aufbau simulieren, dass das Kart fährt (z.B.). Generell muss ich ja "nur" sagen: "Servo fahre im generatorischen Betrieb bitte die ZIEL-Drehzahl 0 rpm an und du darfst dazu XYZ Nm aus dem Baustein TorqueLimit benutzen." (Hinweis: ein Baustein, der das zur Verfügung stehende Drehmoment des Servos zum Erreichen seines SOLL-Wertes begrenzt (in dem Fall: SOLL-Drehzahl 0 rpm & Drehmoment eben drehzahlabhängig wie in M[SUB]B[/SUB] = J*α))
Ich hole mir durch einen zyklischen Baustein (OB) alle 50 ms die momentane Drehzahl und den Zeitstempel. Dann berechne delta n durch delta t und erhalte eine "ruhigere" Beschleunigung, als wenn ich Sie dire aus dem Antrieb entnehme (Technologieobjekt TO) - sprich vom Servo (Positionierachse) auslese.
Dennoch zitert die Beschleunigung stark um ihren Mittelwert. Das führt dazu, dass der Servo das Gegenmoment "schön unkontinuierlich" anlegt und es immer zu "Schlägen" auf der Welle kommt.
Das Problem:
- berechne ich aus dem alpha noch den gleitenden Mittelwert, so verzögere ich mein Signal um die Fensterbreite, heißt ich berechne ein Alpha und daraus ein M_Gegen, was dann zu spät angelegt wird, da ist die Drehzahl schon wieder höher. Moment und Drehzahl passen dann nicht mehr zueinander.
Ich würde gern sagen, wenn die translatorische Masse des Karts (80+95) kg beträgt, dann soll in den Beschleunigungsphasen des GX200 (positive Drehzahlrampe) der Servo ein Gegenmoment von z. B. J*α aufbringen. Dabei sei J jetzt eben nicht mehr so klein, wie bei der eingangs beschriebenen Messung, sondern es wird um die äquivalente translatroischen Masse draußen auf der Straße erhöht
( M[SUB]B,trans[/SUB] sei dazu M[SUB]B,rot[/SUB] -> m[SUB]T[/SUB]*α*r² = J*α -> J = m[SUB]T[/SUB]*r² = 175 kg * 0.131² m²= 3 kgm² ). Wenn ich also den Servo, gesteuert durch das momentane Beschleunigung α (alpha) und einem Trägheitsmoment von J = 3 kgm², ein Gegenmoment erzeugen lasse, dann würde ich damit simulieren, dass der Motor die Kartmasse vor sich herschiebt.
Derzeit versuche ich es mit .. umzusetzen:
Code:
...
2:
[INDENT]#PT := T#20S; // Timerlaufzeit für case 3
"physSignals_DB".TLim_Nm_Ax1 := 10.0; // M zum Anlassen des GX200
"physSignals_DB".nSOLL_dps_Ax1 := // linear Drehzahlrampe
( 1500.0 * DINT_TO_REAL("IEC_Timer_0_DB_4".ET)/1000 + 0.0 ) * 6.0;
IF #nFlag THEN // wenn case 2 und Timer- Runde 2 fertig, dann ..
[/INDENT]
[INDENT=2]"Bewegungssteuerung_DB".MCJog_fwd_Ax1 := TRUE; // schalte Jog wieder aus[/INDENT]
[INDENT=2]#TTrig := TRUE; // starte Timer Runde 3
#state += 1; // erhöhe Case-Var
[/INDENT]
[INDENT] ELSE // sonst
[/INDENT]
[INDENT=2]"Bewegungssteuerung_DB".MCJog_fwd_Ax1 := FALSE; // Reset Jog
#TTrig := FALSE; // reset Timer Trigger[/INDENT]
[INDENT] END_IF;
[/INDENT]
3:
[INDENT] #PT := T#4S; // Timerlaufzeit für case 4
"RollenPST_DB".alpha := // berechne alpha
("RollenPST_DB".n2 - "RollenPST_DB".n1) /
("RollenPST_DB".dt) * 2.0 * #pi / 60.0;
IF #JzON AND ABS("RollenPST_DB".n2) > 1700 THEN // wenn GX200 schneller
[/INDENT]
[INDENT=9]// als 1700 rpm dreht, dann aktiviere
// dynamisches Gegenmoment[/INDENT]
[INDENT=2]"physSignals_DB".TLim_Nm_Ax1 :=
#Jtrans * "RollenPST_DB".alpha; // dyn. Gegenmoment
"physSignals_DB"."aSOLL_rpm/s_Ax1" := 500.0; // Beschleunigungen während
"physSignals_DB"."-aSOLL_rpm/s_Ax1" := 500.0; // der dyn. Last
[/INDENT]
[INDENT] ELSE
[/INDENT]
[INDENT=2]"physSignals_DB".TLim_Nm_Ax1 := 0.0; // sonst kein Servo-Moment[/INDENT]
[INDENT] END_IF;
"physSignals_DB".nSOLL_dps_Ax1 := 0.0; // generell nSOLL = 0
IF #nFlag THEN // wenn case 3 und Timer- Runde 3 fertig, dann ..
[/INDENT]
[INDENT=2]#state := 0; // zurück auf Start[/INDENT]
[INDENT] ELSE
[/INDENT]
[INDENT=2]#TTrig := FALSE; // reset Timer-Trigger[/INDENT]
[INDENT] END_IF;
ELSE
#state := 0; // sonst Schritt 0
END_CASE;
...
Im Case 3 wird das momentane Gegenmoment, was abhängig von der GX200 verursachten Drehzahl wirken soll, berechnet und soll im Idealfall wirksam werden. Ich habe versucht, das Schlagen / Rucken bei schwankenden Beschleunigungswerten abzufangen, indem ich für diesen Abschnitt die TO-Beschleunigung herunter setze, aber das bewirkt nicht sehr viel. Spätestens bei der negativen Drehzahlrampe (Ausrollprozess, wenn ich das GX200-Gas loslasse) knallt mir ein Moment rein, was den Motor sofort absterben lässt, weil im Loslassmoment die Beschleunigung - bzw. Verzögerung - so hoch zu sein scheint, dass daraus ein kurzzig sehr hohes Moment aus der Berechnung resultiert.
Auch ein Herausschrauben der Zündkerze (sodass die Kompression vom GX wegfällt) und ein Ausführen vom OBT-Tuning (einfache Methode zum Optimieren einer Siemens Motorregelung) passt die Reglerparameter dahingehend nicht so an, dass das Gegenmoment schön sanft und kontinuierlich anliegt. Alternativ bin ich aber aus know how- und zeittechnischen Gründen auch nicht mehr in der Lage, irgendwelche Systeme zu analysieren und irgendwelche Konstanten zu berechnen. Ich finde die SIEMENS-Technik dazu viel zu komplex in TIA, wenn gleich man durch die BICO-Oberfläche bestimmt auch gute Möglichkeiten hätte, genau da einzugreifen. Aber kein Plan.
Hat jemand eine Idee oder kann jemand teilen, wie er solche drehzahlabhängigen Momente / Widerstände realisiert? Mir drückt zeitlich wirklich der Schuh. Im März ist Abgabe und mein Prüfstand kann einfach noch nicht das, was er soll. Finden wir hier eine gute Lösung, so kann ich die dann auch für den Hauptbetriebsfall nutzen:
Kart auf den Prüfstand aufspannen und Gasgeben. Den Prüfstand ( 2 Servos ) dabei genau die Widerstände erzeugen lassen, die bei der indoor-Messung fehlen ( Wind, Steigung, Roll, und Beschleunigung der abmontierten Reifen, also M[SUB]B,Räder[/SUB] )
Vielen Dank fürs Lesen und viele Grüße