FC_OverloadDetectionSetLinear - Allgemeine Informationen
Typ |
Funktion |
Verfügbar ab |
SystemInterface_1.36.2.1 |
Versionen: |
Aktuelle Version |
Überlaststopp der Achse durchführen, nachdem die erwartete Kraft für eine gewisse Zeit überschritten wurde.
Die Funktion aktiviert in der Achse i_stAxisId eine Überlastüberwachung.
Die Überlasterkennung dient dazu, die Abweichung der tatsächlichen Kraft von der erwarteten Kraft (Vorsteuerung) zu überwachen. Beim Aktivieren der Überlasterkennung wird der Antrieb gestoppt. Die Achse muss parametriert sein, damit die erwartete Massenträgheitswert berechnet wird.
Mit i_lrForce wird die Schwelle der Abweichung von der erwarteten Kraft angegeben. Die Abweichung kann über den FeedbackCurrent erkannt werden. Der FeedbackCurrent kann mit der Drehmomentkonstante ForceConstant in die Abweichung von der erwarteten Kraft konvertiert werden.
Abweichungen bei der Kraft haben beispielsweise folgende Ursachen:
oReibung (sofern in den Parametern StaticFrictionLinear und ViscousFrictionLinear nicht berücksichtigt)
oExterne Massenträgheit (z. B. Fahren gegen Anschlag)
oVeränderliche Massenträgheit
oÜberschwinger im System (z. B. mechanische Resonanzen)
oEinschwingverhalten des Reglers (vor allem bei hohem Ruck)
HINWEIS: LoadInertiaLinear muss in der SPS-Konfiguration korrekt angegeben werden. Weiter wird davon ausgegangen, dass die Massenträgheit konstant ist.
Die Überwachung ist nur in einem bestimmten Positionsbereich aktiv. Dieser Positionsbereich wird mit i_lrLowLimit (untere Positionsgrenze) und i_lrHighLimit (obere Positionsgrenze) festgelegt.
Wird innerhalb des Positionsbereichs die Schwelle i_lrForce überschritten, wird ein interner Timer inkrementiert. Wird die Schwelle während der Zeit i_uiOverloadTime unterschritten, wird der interne Timer dekrementiert. Erreicht der interne Timer den Wert i_uiOverloadTime, wird die Überwachung ausgelöst. Das Verhalten soll mit der folgenden Grafik verdeutlicht werden.
Tritt ein Überlastfall ein, wird nach Ablauf der Zeit i_stAxisId die Position der Achse i_uiOverloadTime in einem internen Parameter gehalten. Diese Position wird als Sollposition verwendet. Der Antrieb bleibt in Lageregelung.
Der Zustand der Überlastüberwachung kann mit der Funktion FC_OverloadDetectionGetState ausgelesen werden.
Die Schwelle i_lrForce ist überschritten, wenn die Gesamtkraft größer ist als die erwartete Kraft plus die parametrierte Schwelle der Abweichung.
Überschwinger im Strom und ein hohes Rauschen im Stromsignal (FeedbackCurrent) können zu Fehlauslösungen führen. Diese können Sie vermeiden, indem Sie ruckarme Bewegungen verwenden.
HINWEIS: Die Verarbeitung dieser Funktion dauert üblicherweise 10 ms, während die Parameter über den Servicekanal Sercos an die Achsen übertragen werden. Deshalb sollten die Zeiten für die Zyklusüberwachung der Task, in der diese Funktion ausgeführt wird, einmalig erhöht werden. Beispiel: FC_CycleCheckTimeSet(500, 2).
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_stAxisId |
ST_LogicalAddress |
Logische Adresse der Achse |
i_lrForce |
LREAL |
Maximal zulässige Abweichung von der erwarteten Massenträgheit (in N) |
i_lrLowLimit |
LREAL |
Untere Positionsgrenze (in benutzerdefinierten Einheiten) |
i_lrHighLimit |
LREAL |
Obere Positionsgrenze (in benutzerdefinierten Einheiten) |
i_uiOverloadTime |
UINT |
Zeit, nach der im Überlastfall die Achse gestoppt wird (in ms) |
Datentyp |
Beschreibung |
---|---|
DINT |
0: OK. -1: Logische Adresse des Servoverstärkers oder Motor ungültig. -2: Massenträgheit über max. Massenträgheit. -3: LowLimit ist größer als oder gleich HighLimit. -4: Wert von FC_OverloadTime ist außerhalb der Grenzen. -5: Firmwareversion des Servoverstärkers wird nicht unterstützt. |
Im folgenden Programmbeispiel wird eine Achse mit zwei Positionieranweisungen verfahren. Während des Verfahrens ist eine Kraftüberwachung (FC_OverloadDetectionSetLinear) aktiv.
PROGRAM PLC_PRG
VAR
lState: DINT:=1;
lResult: DINT;
END_VAR
CASE lState OF
1:
FC_CycleCheckTimeSet(100, 200);
FC_ControllerEnableSet(Axis.stLogicalAddress);
lResult:=FC_OverloadDetectionSetLinear(i_stAxisId:= Axis.stLogicalAddress, i_lrForce:=0.08, i_lrLowLimit:=10, i_lrHighLimit:=350, i_uiOverloadTime:=500);
lState:=lState+1;
2:
IF Axis.AxisState = 3 THEN
FC_PosStartSmooth(Axis.stLogicalAddress,0, 250, 0, 1000, 1000, 0, 0, ET_PosMode.Absolute, 0);
lState:=lState+1;
END_IF;
3:
IF Axis.AxisState = 3 THEN
FC_PosStartSmooth(Axis.stLogicalAddress,360, 250, 0, 1000, 1000, 0, 0, ET_PosMode.Absolute, 0);
lState:=2;
END_IF;
END_CASE;
Die Abbildung zeigt den Stromanstieg (bzw. Kraftanstieg) und das Auslösen der Diagnosemeldung (senkrechte gestrichtelte Linie), wenn ein Anstrieg des Stroms und eine Erhöhung der Kraft vorliegt.