Annäherung an besten Startzeitpunkt einer Achse

Vogei

Level-1
Beiträge
38
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Hat jemand eine Idee wie man eine Regelung zum starten eines Frequenzumrichters baut, wenn ich diesen ca. 100ms vor dem erreichen des Endpunkts eines Servomotors los laufen lassen möchte!

Also nochmal genauer:

Ich habe eine Servo Achse, die eine Bestimmte Position anfährt!
Da nun ein Frequenzumrichter einen Motor antreiben soll, der genau dann wenn der Servo in Position ist schon 1/4 seines weges Weges gefahren sein soll, bräuchte ich eine Routine, die den Startzeitpunkt des Frequenzumrichters immer mehr an den ideal Punkt annähert. Er sollte aber nicht zu früh starten! Ist so was möglich?

Kann ich vielleicht beim ersten durchlauf den FU starten wenn die Servoachse in Position ist, damit ich weiß wielange es dauert und mich dann immer mehr näher um Zeit zusparen?

Ich hoffe ihr versteht mein Anliegen!
Viele Grüße Vogei!:)
 
Hmmm,

Frequenzumrichter einen Motor antreiben soll, der genau dann wenn der Servo in Position ist schon 1/4 seines weges Weges gefahren sein soll,

Den Startpunkt des FU-Motors durch die Position der Servoachse ansteuern.

Servo start |---------------------|(FU-Start)-------|PosErreicht
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Hat jemand eine Idee wie man eine Regelung zum starten eines Frequenzumrichters baut, wenn ich diesen ca. 100ms vor dem erreichen des Endpunkts eines Servomotors los laufen lassen möchte!

Also nochmal genauer:

Ich habe eine Servo Achse, die eine Bestimmte Position anfährt!
Da nun ein Frequenzumrichter einen Motor antreiben soll, der genau dann wenn der Servo in Position ist schon 1/4 seines weges Weges gefahren sein soll, bräuchte ich eine Routine, die den Startzeitpunkt des Frequenzumrichters immer mehr an den ideal Punkt annähert. Er sollte aber nicht zu früh starten! Ist so was möglich?

Kann ich vielleicht beim ersten durchlauf den FU starten wenn die Servoachse in Position ist, damit ich weiß wielange es dauert und mich dann immer mehr näher um Zeit zusparen?

Ich hoffe ihr versteht mein Anliegen!
Viele Grüße Vogei!:)

Hallo Vogei,
bei deiner Anwendung macht weder die Einschaltverzögerung (TON), noch die Ausschaltverzögerung (TOF) Sinn.


Erkundige dich, ob deine Steuerung neben einer Fließpunktaritmetik auch über einen Fluxkompensator verfügt. Dann kannst du mit dem voreilenden Timer (TBEF) den FU genau um die gewünschte Zeit starten, bevor das Ereignis eintritt. Von Fall zu Fall ist das sehr elegant.

Code:
 [COLOR=Black]VAR[/COLOR]
 [COLOR=Black]    T_before: TBEF;        (* dem Ereignis vorauseilender Timer *)[/COLOR]
 [COLOR=Black]    FU_Start: BOOL;[/COLOR]
 [COLOR=Black]    AXIS_Arrived: BOOL;[/COLOR]
 [COLOR=Black]END_VAR[/COLOR]
  
[COLOR=Black]T_before(IN:=AXIS_Arrived , PT:=t#100ms , Q=> , ET=> );[/COLOR]
  
 [COLOR=Black]IF T_before.Q THEN[/COLOR]
 [COLOR=Black]    FU_Start := TRUE;[/COLOR]
 [COLOR=Black]END_IF[/COLOR]
Aber Achtung :!:
Man muss Rückkopplungen sicher vermeiden, sonst kann es zu Singularitätsverletzungen kommen. Die Hersteller übernehmen üblicherweise keine Garantie für daraus resultierende Folgeschäden. Das ist auch der Grund, warum der Timer in der Standard.lib nicht aufgeführt wird...

LG Cassandra
 
Zuletzt bearbeitet:
Dann must du den Zeitpunkt 100ms vor dem Endpunkt erst mal bestimmen (weg, . . .) und dann startest du einfach deinen FU.

Ausrechnen des gesamten Weges, . . .

Du musst mal dein Problem / Anlage genauer beschreiben, sonst wird dir keiner helfen können.

Ansonsten bin ich voll bei Cassandra :) bau dir nen Flux Kompensator als SW nach :)
 
Aus den bekannten Werten von Geschwindigkeit, Verzögerung und Endposition sollte es doch möglich sein die exakte Position die der Servo 100ms vor dem Endpunkt hat zu berechnen.

MfG
 
Zuviel Werbung?
-> Hier kostenlos registrieren

Hallo Vogei,
bei deiner Anwendung macht weder die Einschaltverzögerung (TON), noch die Ausschaltverzögerung (TOF) Sinn.


Erkundige dich, ob deine Steuerung neben einer Fließpunktaritmetik auch über einen Fluxkompensator verfügt. Dann kannst du mit dem voreilenden Timer (TBEF) den FU genau um die gewünschte Zeit starten, bevor das Ereignis eintritt. Von Fall zu Fall ist das sehr elegant.

Code:
 [COLOR=Black]VAR[/COLOR]
 [COLOR=Black]    T_before: TBEF;        (* dem Ereignis vorauseilender Timer *)[/COLOR]
 [COLOR=Black]    FU_Start: BOOL;[/COLOR]
 [COLOR=Black]    AXIS_Arrived: BOOL;[/COLOR]
 [COLOR=Black]END_VAR[/COLOR]
  
[COLOR=Black]T_before(IN:=AXIS_Arrived , PT:=t#100ms , Q=> , ET=> );[/COLOR]
  
 [COLOR=Black]IF T_before.Q THEN[/COLOR]
 [COLOR=Black]    FU_Start := TRUE;[/COLOR]
 [COLOR=Black]END_IF[/COLOR]
Aber Achtung :!:
Man muss Rückkopplungen sicher vermeiden, sonst kann es zu Singularitätsverletzungen kommen. Die Hersteller übernehmen üblicherweise keine Garantie für daraus resultierende Folgeschäden. Das ist auch der Grund, warum der Timer in der Standard.lib nicht aufgeführt wird...

LG Cassandra



Ich habe das über den "Nostradamus-Algorhytmus" gelöst und mal als voreilenden Not-Aus benutzt... *g*


lg Bernd
 
Zurück
Oben