Fehlerverhalten
Fehlertyp
Die TwinCAT MC3 unterscheidet zwischen Execution Error und Control Error.
Bei einem Execution Error hat die MC3 weiterhin die Kontrolle über die Achse. Die Kommunikation zur Hardware sowie der Antrieb selbst sind fehlerfrei. Die Sollwertgenerierung ist weiterhin möglich. In diesem Fall ist die Standardreaktion im Fehlerfall eine kontrollierte Stopprampe, mit der für die Achse konfigurierten maximalen Dynamik. Dieser Stopp kann mit MC_Reset abgebrochen werden. Nach dem Reset kann im selben Zyklus ein neuer Befehl angestoßen werden.
Bei einem Control Error hat die MC3 keine Kontrolle mehr über die Achse, typischerweise aufgrund eines Hardware- oder antriebsseitigen Fehlers. In diesem Zustand wird die Reaktion durch die Parameter der Achse definiert. Derzeit ist ein konsequenter Stopp mit Null-Dynamik möglich (HardStop).
Fehlerfortpflanzung
Die Funktionsbausteine für Kopplungen bieten spezielle Einstellungen zur Steuerung der Fehlerbehandlung zwischen den Achsen. Der Mechanismus ist für MC_GearIn, MC_GearInPos und MC_CamIn identisch.
ReactionToMasterError definiert das Verhalten der Slave-Achse, wenn die Master-Achse in einen Fehlerzustand übergeht. Bei der Einstellung TriggerSlaveError löst jeder Master-Fehler sofort auch einen Fehler in der Slave-Achse aus. Zudem wird die Kopplung aufgelöst. Die Slave-Achse folgt dann der Standard-MC3-Reaktion für den spezifischen Fehlertyp (s. o.). Bei der Einstellung KeepCouplingWithSetValues bleibt die Kopplung auch dann aktiv, wenn die Master-Achse einen Fehler aufweist. Die Slave-Achse generiert weiterhin Sollwerte aus den Sollwerten der Master-Achse. Dieser Modus ermöglicht ein koordiniertes Anhalten unter Beibehaltung der synchronen Beziehung.
Die umgekehrte Richtung der Propagation wird mit ReactionToSlaveError konfiguriert. Bei der Einstellung TriggerMasterError leitet die Slave-Achse ihren Fehler an ihre Master-Achse weiter. So geht auch die Master-Achse in ihre Fehlerreaktion über. Bei der Einstellung NoReaction bleibt die Master-Achse unbeeinträchtigt. Die Slave-Achse und der Kopplungs-Baustein signalisieren den Fehlerzustand. In beiden Fällen wird die Kopplung für diese Slave-Achse aufgehoben.
Mit Ausnahme des oben beschriebenen expliziten Falls KeepCouplingWithSetValues werden die Master- und Slave-Achsen automatisch entkoppelt, wenn auf einer der beiden Seiten ein Fehler auftritt. Nachdem der zugrunde liegende Fehler mit MC_Reset quittiert wurde, muss die Anwendung den gewünschten Kopplungsbefehl erneut ausführen, um den gekoppelten Betrieb fortzusetzen. Anhand der Diagnoseinformationen an dem Funktionsbaustein (Error und ErrorID sowie MasterHasError) kann festgestellt werden, ob der Fehler in der Master- oder der Slave-Achse entstanden ist.
Ein propagierter Fehler ist auf der Empfängerseite immer ein Execution Error.
Fehlerfortpflanzung – Beispiele
Grundsätzlich gilt bei einem Fehler der Slave-Achse:
- Slave-Achse: Die Kopplung wird aufgelöst und die Reaktion ist abhängig vom Fehlertypen.
- Master-Achse: Die Master-Achse meldet einen Fehler und folgt einer Stopprampe der MC oder führt ihre laufende Bewegung ohne Beeinflussung fort.
Bei einem Fehler der Master-Achse gilt:
- Master-Achse: Reaktion ist abhängig vom Fehlertypen.
- Slave-Achse: Die Slave-Achse meldet einen Fehler und folgt einer Stopprampe der MC oder den Sollwerten der Master-Achse.
Szenario 1
Einstellungen am Funktionsbaustein und vorliegende Fehlerart:
ReactionToMasterError | ReactionToSlaveError | Error Type |
|---|---|---|
TriggerSlaveError | TriggerMasterError | Control Error |
Reaktion auf Fehler:
Master Fehler | Slave Fehler |
|---|---|
|
|
Szenario 2
Einstellungen am Funktionsbaustein und vorliegende Fehlerart:
ReactionToMasterError | ReactionToSlaveError | Error Type |
|---|---|---|
TriggerSlaveError | NoReaction | Control Error |
Reaktion auf Fehler:
Master Fehler | Slave Fehler |
|---|---|
|
|
Szenario 3
Einstellungen am Funktionsbaustein und vorliegende Fehlerart:
ReactionToMasterError | ReactionToSlaveError | Error Type |
|---|---|---|
KeepCouplingWithSetValues | TriggerMasterError | Control Error |
Reaktion auf Fehler:
Master Fehler | Slave Fehler |
|---|---|
|
|
Szenario 4
Einstellungen am Funktionsbaustein und vorliegende Fehlerart:
ReactionToMasterError | ReactionToSlaveError | Error Type |
|---|---|---|
KeepCouplingWithSetValues | NoReaction | Control Error |
Reaktion auf Fehler:
Master Fehler | Slave Fehler |
|---|---|
|
|
Szenario 5
Einstellungen am Funktionsbaustein und vorliegende Fehlerart:
ReactionToMasterError | ReactionToSlaveError | Error Type |
|---|---|---|
TriggerSlaveError | TriggerMasterError | Execution Error |
Reaktion auf Fehler:
Master Fehler | Slave Fehler |
|---|---|
|
|
Szenario 6
Einstellungen am Funktionsbaustein und vorliegende Fehlerart:
ReactionToMasterError | ReactionToSlaveError | Error Type |
|---|---|---|
TriggerSlaveError | NoReaction | Execution Error |
Reaktion auf Fehler:
Master Fehler | Slave Fehler |
|---|---|
|
|
Szenario 7
Einstellungen am Funktionsbaustein und vorliegende Fehlerart:
ReactionToMasterError | ReactionToSlaveError | Error Type |
|---|---|---|
KeepCouplingWithSetValues | TriggerMasterError | Execution Error |
Reaktion auf Fehler:
Master Fehler | Slave Fehler |
|---|---|
|
|
Szenario 8
Einstellungen am Funktionsbaustein und vorliegende Fehlerart:
ReactionToMasterError | ReactionToSlaveError | Error Type |
|---|---|---|
KeepCouplingWithSetValues | NoReaction | Execution Error |
Reaktion auf Fehler:
Master Fehler | Slave Fehler |
|---|---|
|
|