-> Hier kostenlos registrieren
Hallo,
ich möchte folgende Funktion von Schneider eigenständig umsetzen:
Hierbei geht es mir nur um die Totzeitkompensation.
Ich habe die ist-Geschwindigkeit und die ist-Position eines Antriebes.
Nun wird eine Zeit vorgegeben. Der Antrieb soll vor erreichen der Position (um diese Zeit) ein Ventil schalten.
Z.B.
Soll-Position des Antriebes ist 1000mm
Totzeit 50ms
Hier soll der Antrieb also 50ms bevor er seine Soll-Position erreicht hat, ein Ventil geschaltet werden.
Wie kann ich nun die Position berechnen die der Antrieb in diesem Moment haben wird?
Ich hatte an das gedacht:
PositionVentil = Sollposition - (IstGeschwindigkeit x Totzeit)
Pro Zyklus und je weiter der Antrieb fährt würde dies sich ja Kurvenartig der richtigen Position nähern.
IF IstPosition >= PositionVentil Then
Bremse := TRUE;
END_IF
Würde dann die Bremse frühzeitig einfallen lassen.
Liege ich hiermit korrekt?
ich möchte folgende Funktion von Schneider eigenständig umsetzen:
Hierbei geht es mir nur um die Totzeitkompensation.
Ich habe die ist-Geschwindigkeit und die ist-Position eines Antriebes.
Nun wird eine Zeit vorgegeben. Der Antrieb soll vor erreichen der Position (um diese Zeit) ein Ventil schalten.
Z.B.
Soll-Position des Antriebes ist 1000mm
Totzeit 50ms
Hier soll der Antrieb also 50ms bevor er seine Soll-Position erreicht hat, ein Ventil geschaltet werden.
Wie kann ich nun die Position berechnen die der Antrieb in diesem Moment haben wird?
Ich hatte an das gedacht:
PositionVentil = Sollposition - (IstGeschwindigkeit x Totzeit)
Pro Zyklus und je weiter der Antrieb fährt würde dies sich ja Kurvenartig der richtigen Position nähern.
IF IstPosition >= PositionVentil Then
Bremse := TRUE;
END_IF
Würde dann die Bremse frühzeitig einfallen lassen.
Liege ich hiermit korrekt?
Zuletzt bearbeitet: