Skip to main content

Achsposition persistieren

Eine Achse, die über einen Absolutgeber verfügt, kann eine Position speichern, so dass sie nach einem Neustart der Steuerung ihre vorige Position behält. Eine Referenzfahrt wird unnötig. Die Funktionsbausteine SMC3_PersistPosition und SMC3_PersistPositionLogical bieten die Funktionalität zur Speicherung. Die nötigen Daten werden in SMC3_PersistPosition_Data und SMC3_PersistPositionLogical_Data gespeichert.

Der Ausgang bPositionStored zeigt an, ob sich der Inhalt von PersistentData geändert hat. Je nach Art des Persistierens geschieht dies unterschiedlich häufig.

Der vom Encoder persistierte Wertebereich muss am Eingang SMC_PersistPosition.maxPersistedValue konfiguriert werden. Für Multi-Turn-Encoder wird der Wert auf 16#FFFFFFFF gesetzt, für einen 12-Bit-Single-Turn-Encoder beispielsweise auf den Wert 2^12 = 4096.

Für weitere Informationen siehe: Datenpersistenz

Tipp

Die Persistierung der Instanz erfolgt über eine Deklaration als VAR_PERSISTENT oder über den Persistence Managers des Application Composers.

Achsposition eines Multiturn-Absolutgebers mit realer Achse persistieren

Voraussetzung: Die Achse verfügt über einen Multiturn-Absolutgeber.

Verwenden Sie den Baustein SMC3_PersistPosition um die Position der realen Achse zu persistieren. Das zugehörige Programm läuft in der Motion-Task.

  1. Legen Sie eine Instanz des Funktionsbausteins SMC3_PersistPosition für die Achse an.

    pp: SM3_BASIC.SMC3_PersistPosition;

  2. Instanzieren Sie eine persistente Datenstruktur des Typs SMC3_PersistPosition_Data.

    pp_Data: SM3_BASIC.SMC3_PersistPosition_Data1;

  3. Erweitern Sie das Programm der Motion-Task so, dass dort ein Aufruf der SMC3_PersistPosition-Instanz implementiert ist.

    Aufruf implementiert in CFC:

    _sm_img_call_of_SMC3_PersistPosition.png

    Der Funktionsbaustein wird zyklisch mit der Motion-Task aufgerufen. Die SMC3_PersistPosition-Instanz führt während des Start-up-Vorgangs das Wiederherstellen der gespeicherten Position durch. Der Baustein speichert im Normalbetrieb die Istposition in die zugehörige Datenstruktur ab.

Achsposition eines Singleturn-Absolutgebers mit realen Achse persistieren

Voraussetzung: Die reale Achse verfügt über einen Singleturn-Absolutgeber.

Verwenden Sie den Funktionsbaustein SMC3_PersistPosition um die Position der Achse zu persistieren. Das zugehörige Programm läuft in der Motion-Task. Die Position wird nur dann korrekt angezeigt, wenn die Achse zwischen Aus- und Einschalten der Steuerung keine oder nur eine kleine Distanz zurückgelegt hat (maximal die Hälfte der Singleturn-Distanz). Um das erreichen, können Sie beispielsweise eine mechanische Bremse verwenden. Wenn die Achse bei ausgeschalteter Steuerung eine größere Bewegung macht, erhält sie eine falsche Position. Eine Überprüfung durch den Baustein ist nicht möglich.

  1. Legen Sie eine Instanz des Funktionsbausteins SMC3_PersistPosition für die Achse an.

    ppst_X: SM3_BASIC.SMC3_PersistPositionSinglturn;

  2. Instanzieren Sie eine persistente Datenstruktur des Typs SMC3_PersistPosition_Data.

    ppst_Data_X: SMC3_PersistPositionSingleturn_Data;

  3. Erweitern Sie das Programm der Motion-Task so, dass dort ein Aufruf der SMC3_PersistPosition-Instanz implementiert ist und ihr die persistente Datenstruktur vom Typ SMC_PersistPosition_Data übergeben wird.

Achsposition einer logischer Achse persistieren

Voraussetzung: Die Achse ist logisch.

Verwenden Sie den Funktionsbaustein SMC3_PersistPositionLogical um die Position der logischen Achse zu persistieren. Das funktioniert nur, wenn die Position der übergeordneten realen Achse persistiert wurde. Die Position einer virtuellen Achse kann mit diesem Bausteinen nicht persistiert werden.

  1. Legen Sie eine Instanz des Funktionsbausteins SMC3_PersistPositionLogical für die Achse an.

    ppl: SM3_BASIC.SMC3_PersistPositionLogical;

  2. Instanzieren Sie eine persistente Datenstruktur des Typs SMC3_PersistPositionLogical_Data.

    ppl_Data: SMC3_PersistPositionLogical_Data;

  3. Erweitern Sie das Programm der Motion-Task so, dass dort ein Aufruf der SMC3_PersistPositionLogical-Instanz implementiert ist und ihr die persistenten Daten vom Typ SMC3_PersistPositionLogical_Data übergeben werden.