Simulation einer EtherCAT-basierten Servoachse

TwinCAT 3 Technology Functions bietet zwei Arten von EtherCAT-basierten Servoverstärkern: SoE- und CoE-Geräte. Beide Protokolle können in realen Maschinen eingesetzt werden, jedoch ist die Simulation des realen Verhaltens eine zusätzliche Herausforderung. In CoE-Antrieben wird ein Geräte-Reset-Kommando über einen ControlWord/StatusWord-Mechanismus ausgelöst, während SoE-Antriebe azyklische ADS über EtherCAT-Kommunikation verwenden. Da die Simulation des SoE-Mechanismus sehr viel komplizierter ist, wird nur eine CoE-basierte Simulation bereitgestellt.

Implementieren einer simulierten Servoachse

Eine Simulation erfordert eine Implementierung, die an einem von zwei Orten ablaufen kann:

Instanziierung im gleichen Kontext:

Bezeichnung

Typ

Beschreibung

{attribute 'TcContextName':='FastTask'}

Weist TwinCAT an, die I/O der FB_SimCoE402_Servo Klasse in einer festgelegten Task zu aktualisieren. Die Task sollte identisch zum Aufruf der Cyclic() Methode des Simulationsbausteins sein.

fbNcAxisSim

FB_SimCoE402_Servo

Erzeugt eine Instanz des Simulationsbausteins.

bNcAxisSimGoError

BOOL

Legt ein Signal an, mit dem die Simulation einen Fehlerzustand auslöst und eine Reset-Prozedur fordert.

fbNcAxisSimLimiter

FB_SimTorqueLimitingCoE402_Servo

Legt eine Instanz eines FBs an, der benötigt wird, um die Simulation mit der Fähigkeit der Drehmomentbegrenzung auszustatten. Dieser FB wird über einen Schnittstellenzugriff Daten mit der Steuerfunktionalität austauschen.

Instanziierung in separatem Kontext:

Bezeichnung

Typ

Beschreibung

{attribute 'TcContextName':='FastTask'}

Weist TwinCAT an, die I/O der FB_SimCoE402_Servo Klasse in einer festgelegten Task zu aktualisieren. Die Task sollte identisch zum Aufruf der Cyclic() Methode des Simulationsbausteins sein.

fbNcAxisSim

FB_SimCoE402_Servo

Erzeugt eine Instanz des Simulationsbausteins.

bNcAxisSimGoError

BOOL

Legt ein Signal an, mit dem die Simulation einen Fehlerzustand auslöst und eine Reset-Prozedur fordert.

{attribute 'TcContextName':='FastTask'}

Weist die folgende Instanz an, in einer festgelegten Task aktualisiert zu werden. Die Task sollte identisch zum Aufruf der Cyclic() Methode des Simulationsbausteins sein.

fbNcAxisSimLimiter

FB_SimTorqueLimitingCoE402_Mapped

Legt eine Instanz eines FBs an, der benötigt wird, um die Simulation mit der Fähigkeit der Drehmomentbegrenzung auszustatten. Dieser FB tauscht über Mapping Daten mit der Steuerfunktionalität aus.

Initialisierung einer simulierten Servoachse

In der Startphase ist es erforderlich, eine Initialisierung durchzuführen. Dafür kann die folgende Auflistung als Beispiel verwendet werden.

IF NOT bInitialised AND bSimulation THEN
    fbNcAxisSim.EncoderWeighting:=5.0;
    fbNcAxisSim.EncoderZeroShift:=100.0;
    fbNcAxisSim.EncoderNoiseLevel:=0.001;
    fbNcAxisSim.HighSideBlock:=700.0;
    fbNcAxisSim.HighSideSpringLength:=1.0;
    fbNcAxisSim.LowSideBlock:=100.0;
    fbNcAxisSim.LowSideSpringLength:=1.0;
    fbNcAxisSim.PositionLagKp:=1.0;
    fbNcAxisSim.HighSideEndswitch:=699.0;
    fbNcAxisSim.LowSideEndswitch:=101.0;
    fbNcAxisSim.AbsSwitchHighEnd:=679.0;
    fbNcAxisSim.AbsSwitchLowEnd:=21.0;
    // the next line must be used if the simulation
    // is implemented in a separate context
    fbNcAxisSimLimiterMapped.ConnectToSim(ipSim:=fbNcAxis2Sim);
    // the next two lines must be used if the simulation
    // is implemented in the same context
    fbNcAxisSimLimiter.ConnectToSim(ipSim:=fbNcAxis2Sim);
    iNcAxis.SetTorqueLimiting(fbNcAxisSimLimiter);
END_IF

Die letzte Zeile definiert die Klasse, welche von der Achse für die Drehmomentbegrenzung verwendet wird, wenn die Simulation im gleichen Kontext durchgeführt wird. In diesem Fall ist die vorletzte Zeile erforderlich, um diese Klasse mit der Antriebssimulation zu verbinden.

Oberhalb dieser Zeilen befindet sich ein Beispiel für die Implementierung in einem separaten Kontext.

Mapping einer simulierten Servoachse

Der Simulations-FB liefert eine lokale Instanz einer Mapping-Schnittstelle, die wie folgt definiert ist:

NcAdapt : FB_SimCoE402_ServoNcAdapt;

Die mitgelieferten Mapping-Strukturen für Encoder- und Antriebsein- und -ausgänge sind kompatibel zu den Schnittstellen der TwinCAT NC und können so verwendet werden.

Funktionsumfang der CoE402-Simulation

Alle Mechanismen, die gemappte Schnittstellen verwenden, werden in einer Art und Weise unterstützt, die von TwinCAT NC erwartet wird. Dazu gehört auch die Drehmomentbegrenzung.

Da es keine Möglichkeit gibt, die ADS-Kommunikation zu emulieren, können einige Mechanismen nicht unterstützt werden.