Teach

Teach 1:

Diese Corefunction wird für das Referenzieren von analogen Gebersystemen verwendet.

Syntax:

FUNCTION_BLOCK FB_Teach EXTENDS FB_CorefunctionFeedback

Teach 2: Eigenschaften

Name

Typ

Zugriff

Beschreibung

InitState

BOOL

Get, Set

Die Corefunction ist nicht vollständig und erfolgreich initialisiert.

FB_Teach

AllowAxisDisable

BOOL

Get, Set

Wenn TRUE, wird die Achse automatisch beim Aufruf von DoUpdate() ausgeschaltet, sodass die ermittelten Skalierungen angewendet werden können.

WARNUNG Nutzen Sie diese Option nur, wenn das spontane Ausschalten der Achse gefahrlos möglich ist.

IncrNeg

DINT

Get, (Set)

Der aufgenommene Wert bei Ausführung von TeachNeg() in Analog-Inkrementen.

IncrPos

DINT

Get, (Set)

Der aufgenommene Wert bei Ausführung von TeachPos() in Analog-Inkrementen.

MinResolution

UDINT

Get, Set

Die minimale Auflösung (zwischen IncrNeg und IncrPos) die benötigt wird, um ein nutzbares Ergebnis zu erzielen

MinStroke

LREAL

Get, Set

Der minimale Hub, der für ein sinnvolles Ergebnis notwendig ist.

Position

LREAL

Get, Set

Der Positionssollwert, der an der gelehrten (teach) Position gesetzt werden soll. Sollte SetUpperPosition gesetzt sein, wird diese Position am oberen Ende berücksichtigt.

SetUpperPosition

BOOL

Get, Set

Wenn TRUE, wird die unter Position festgelegte Sollposition am oberen Ende der gemessenen Skala gesetzt.

Stroke

LREAL

Get, Set

Der Weg (bzw. Hub), der zwischen IncrNeg und IncrPos durch die Achse aufgespannt wird.

Valid

BOOL

Get

Es wurden zwei gültige Werte aufgezeichnet.

FB_CorefunctionFeedback

AbortedState

BOOL

Get, Set

Signalisiert den Abbruch eines Kommandos durch eine andere Corefunction.

BusyState

BOOL

Get, Set

Signalisiert die aktive Ausführung eines Kommandos.

DoneState

BOOL

Get, Set

Signalisiert die erfolgreiche Ausführung eines Kommandos.

IdleState

BOOL

Get, Set

Die Corefunction ist betriebsbereit und kommandierbar.

IsCommanded

BOOL

Get

Signalisiert das Anstehen eines Kommandos.

FB_Corefunction

FailedState

BOOL

Get, Set

Wenn gleichzeitig IsActivated TRUE ist: Signalisiert das Fehlschlagen eines akzeptierten Kommandos.

Wenn gleichzeitig IsActivated FALSE ist: Signalisiert die Ablehnung eines Kommandos.

HasFeedback

BOOL

Get

Die Corefunction hat auf ein anstehendes Kommando reagiert.

IsActivated

BOOL

Get

Die Corefunction hat ein akzeptiertes Kommando anstehen.

IsLocalCmd

BOOL

Get

Signalisiert, dass die Achse mit einem Kommando dieser Corefunction belegt ist.

ReadyState

BOOL

Get, Set

Die Corefunction ist betriebsbereit, aber zu diesem Zeitpunkt nicht kommandierbar.

Mögliche Gründe sind:
- Die Achse ist nicht freigegeben.
- Eine andere Corefunction ist aktiv.
- Die Corefunction unterstützt keine Kommandos.

Teach 3: Methoden

Name

Beschreibung

[INTERN] Cyclic()

Diese Methode wird zyklisch von der Achse aufgerufen.

FB_Teach

DoTeach(bExecute)

Versetzt die Achse in den Teaching-Modus. Bei fallender Flanke wird der Teaching-Modus vorzeitig beendet.

DoUpdate(bExecute)

Löst die finale Berechnung der Geber-Parameter aus.

TeachNeg(bExecute)

Löst das Aufzeichnen der unteren Position aus.

TeachPos (bExecute)

Löst das Aufzeichnen der oberen Position aus.

Teach 4: Schnittstellen

Typ

Beschreibung

I_Corefunction

Standardschnittstelle auf FB_Corefunction.

FB_Teach

I_Teach

Standardschnittstelle auf FB_Teach.

I_TeachDev

Erweiterte Schnittstelle mit Zugriff auf die nicht zugänglichen Eigenschaften.

I_TeachPosition

Kompatibilitätsschnittstelle zur veralteten Funktion FB_TeachPosition.

I_TeachUpdate

Kompatibilitätsschnittstelle zur veralteten Funktion FB_TeachUpdate.

I_CorefunctionFeedback

Standardschnittstelle auf FB_CorefunctionFeedback.

Beispiel:

CASE nState OF
    
0:  // activate the teach mode
    IF bStartTeaching AND iAxisBase.Teach.IdleState THEN
        iAxisBase.Teach.DoTeach(TRUE);
        
    ELSIF iAxisBase.Teach.BusyState THEN
        nState := nState + 1;
    ELSIF iAxisBase.Teach.FailedState THEN
        nState := -1;
    END_IF

1:  // move to the first teach position

    // approaching the upper position by a jog command 
    // e.g. by pressing a push button
    iAxisBase.Jog.DoJogP(bButtonFwd);
    
    // on reaching final position, use a second button to teach the value
    iAxisBase.Teach.TeachPos(bTeach);
    
    IF bTeach THEN
        iAxisBase.Jog.DoJogP(FALSE);
        nState := nState + 1;
    END_IF
    
2:  // wait for teach button release
    IF NOT bTeach THEN
        nState := nState + 1;
    END_IF
    
3:  // move in the opposite direction for the second teach position

    // approaching the lower position by a jog command 
    // e.g. by pressing a push button
    iAxisBase.Jog.DoJogM(bButtonBwd);
    
    // on reaching final position, use the second button again to teach the value
    iAxisBase.Teach.TeachNeg(bTeach);
    
    IF bTeach THEN
        iAxisBase.Jog.DoJogM(FALSE);
        nState := nState + 1;
    END_IF
    
4:  // configure teach parameters and update the axis by the taught positions

    iAxisBase.Teach.AllowAxisDisable := TRUE;
    iAxisBase.Teach.Position := 0.0;    // mm
    iAxisBase.Teach.Stroke := 200.0;    // mm
    
    IF iAxisBase.Teach.Valid THEN
        iAxisBase.Teach.DoUpdate(TRUE);
        nState := nState + 1;
    ELSE 
        nState := -1;
    END_IF

5:  // wait for the update procedure getting done

    IF iAxisBase.Teach.DoneState THEN
        nState := nState + 1;
    ELSIF iAxisBase.Teach.FailedState THEN
        nState := -1;
    END_IF
    
6,  // teaching done
-1: // error

    iAxisBase.Teach.DoTeach(FALSE);
    iAxisBase.Teach.DoUpdate(FALSE);
    
END_CASE

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.1.4024.71

PC oder CX (x64, x86)

Tc3_PlasticFunctions (>= v12.12.0.0)