Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Knoten im Gehirn - 6FX2001-5QN25

  1. #11
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    743
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    OK. AWs verstanden. Wegen Handshake steht in der Betriebsanleitung folgendes (Seite 25):
    Hinweis
    Wenn der MC-ENCODER einen Fehler im Lebenszeichen der Steuerung erkennt, stoppt er
    die Übertragung des Lebenszeichens an die Steuerung. Das bedeutet, dass ein fehlendes
    Lebenszeichen (=0) vom MC-ENCODER an die Steuerung auch die Folge eines Fehlers im
    Lebenszeichen der Steuerung an den MC-ENCODER. sein kann.
    Ich weiß nicht, ob der Sensor wegen fehlendem Zählwert auch sonst nocht irgendwelche Fehler melden wird ?
    Bei Dir hat er das nicht getan, sagste ? Was meinst Du dann mit Lebensmerker ?

  2. #12
    Registriert seit
    06.10.2003
    Beiträge
    3.412
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard

    Im Statuswort "G1_XIST2" werden Fehler gemeldet. Ob diese Fehlercodierung auch standardisiert ist, weiß ich nicht. Ich hatte damals Geräte von Leine & Linde.

    Code:
    //*** Sensorgruppenfehler
          L     "DB_ENCODER_1".TELEGRAMM_81.STANDARD_TELEGRAMM_81.IN.G1_XIST2
          L     W#16#1
          ==I   
          =     #FEHLER_ALLGEMEIN
    
    //*** Der Befehl wird nicht unterstützt
          TAK   
          L     W#16#F01
          ==I   
          =     #FEHLER_BEFEHL
    
    //*** Master-Lebenszeichenfehler
          TAK   
          L     W#16#F02
          ==I   
          =     #FEHLER_MLS
    
    //*** Synchronisationsfehler
          TAK   
          L     W#16#F04
          ==I   
          =     #FEHLER_SYSNCHRONISATION
    
    //*** Slave-Lebenszeichenfehler
          U     #TAKTSYNCHRON
          =     #TEMP
          CALL  #WATCHDOG
           WATCHDOG         :="DB_ENCODER_1".TELEGRAMM_81.STANDARD_TELEGRAMM_81.IN.ZSW2.WATCHDOG_15
           FREIGABE         :=#TEMP
           UEBERWACHUNGSZEIT:=T#1S
           TIME_OVER        :=#FEHLER_SLS
    
    //*** Fehler quittieren
          U     #QUITT
          =     "DB_ENCODER_1".TELEGRAMM_81.STANDARD_TELEGRAMM_81.OUT.G1_STW1.QUITT

    "#TAKTSYNCHRON" ist bei mir ein Bausteineingang, der auf false gesetzt ist. Frage mich jetzt nicht warum. Ich glaube, das hatte ich nur bei der Inbetriebnahme genutzt.
    Es gibt jeweils vier Bit als Watchdog, die zusammen einen Zähler von 0..15 darstellen. Wenn ich mich recht entsinne, bekommt man einen laufenden Zähler zurück,
    wenn man auch einen Zählerwert hinschickt.

    Code:
          L     2#0
          U     #TAKTSYNCHRON
          SPBN  M002
          L     DB10.DBB    1
          SRW   4
          L     15
          MOD   
          +     1
          SLW   4
    M002: T     DB10.DBB    1
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  3. Folgender Benutzer sagt Danke zu Onkel Dagobert für den nützlichen Beitrag:

    Draco Malfoy (16.11.2014)

  4. #13
    Registriert seit
    05.04.2012
    Beiträge
    951
    Danke
    94
    Erhielt 216 Danke für 191 Beiträge

    Standard

    ... für alle Standardtelegramme zu SINAMICS- Umrichtern, gibt es UDT`s im TIAP (im SINAMICS S gibt es dann auch die Geber- Telegramme):
    http://support.automation.siemens.co...ew/de/82841762

  5. #14
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    743
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard

    Zitat Zitat von zako Beitrag anzeigen
    ... für alle Standardtelegramme zu SINAMICS- Umrichtern, gibt es UDT`s im TIAP (im SINAMICS S gibt es dann auch die Geber- Telegramme):
    http://support.automation.siemens.co...ew/de/82841762
    Ich hätte schwören können, daß es das irgendwo gibt, und siehe - es gibt es. Vielen Dank für den Hinweis.
    Die Symbolisierung ist allerdings ziemlich lustig - ich weiß nicht, ob es Geber gibt, die etwa eine Haltebremse mitbringen ??

    Siehe Screenshot:SINAMICS_TIAP.jpg

  6. #15
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    743
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich poste mal meinen Baustein hierher. Gibt ja bestimmt mehr Leute, die womöglich diese Geber anbinden wollen.
    Code:
    FUNCTION_BLOCK "FB 2_ABSOLUTWERTGEBER"
    TITLE = FB 8_6FX2001-5QN25
    { S7_Optimized_Access := 'FALSE' }
    AUTHOR : Malfoy
    FAMILY : DRIVES
    NAME : '0102'
    VERSION : 0.1
    //Baustein zur Kommunikation mit einem Profinet Absolutwert-Drehgeber 6FX2001-5QE25;
    //Unterstützt: - Lageistwert, Istgeschwindigkeit, Skalierung des Lageistwertes;
    //Ausgabe: Inkrements gemäß der Einstellung des Gebers in HW-Config;
       VAR_INPUT 
          G1_XIST_PRESET_A : DInt;   // Offset-Vorabwert zur Geberjustage (Geberoffset)
          SKALIERUNGSFAKTOR : DInt;   // INK pro Umdrehung
          QUIT_IMP : Bool;   // Anforderung, einen Sensorfehler zu quittieren / zurückzusetzen.
          HOMING : Bool;   // Preset (bzw. Verschiebung) wird gesetzt, wenn dieses Bit auf „1“ geändert wird (steigende Flanke). Standard-Preset-Wert (Verschiebung): 0
          DB_NR : DInt;   // Nummer des zugehörigen Instanzdatenbausteins
          LADDR : HW_IO;   // Hardware_ID
       END_VAR
    
       VAR_OUTPUT 
          G1_XIST1 : DInt;   // Aktueller Lageistwert des Absolutwertgebers
          NIST_B : DInt;   // Aktuelle Istgeschwindigkeit des Absolutwertgebers in %% von dem Sollwert
          "Steuerung angefordert" : Bool;   // Das Automatisierungssystem wird aufgefordert, die Steuerung zu übernehmen, die Daten sind gültig.
          "Quittierung läuft" : Bool;   // Wird gesetzt, während die angeforderte Fehlerquittierung verarbeitet wird. Handshake-Signal zu G1_STW Bit 15.
          "Geberjustage erfolgreich" : Bool;
          "Geber betriebsbereit" : Bool;   // Geber ist nach dem Start betriebsbereit und liefert einen gültigen Lageistwert
          Fehlercode : Int;   // Geberfehlerkodierung
          FEHLER_ALLGEMEIN : Bool;   // Sensorgruppenfehler
          FEHLER_BEFEHL : Bool;   // Der Befehl wird nicht unterstützt
          FEHLER_MLS : Bool;   // Master-Lebenszeichenfehler
          FEHLER_SYSNCHRONISATION : Bool;   // Synchronisationsfehler
          EHLER_SLS : Bool;   // Slave-Lebenszeichenfehler
       END_VAR
    
       VAR_IN_OUT 
          "BLOCK_DB" : DB_ANY;   // Zeiger auf den Ablageort der Lagedaten
       END_VAR
    
       VAR 
          G1_XIST1_INT : DInt;   // Sensor-Lageistwert 1
          G1_XIST2_INT : DInt;   // Sensor-Lageistwert 2
          G1_XIST3_INT : DInt;   // Sensor-Lageistwert 3
          G1_XIST_PRESET_A_INT : UDInt;   // Sensorlage Preset-Steuerwort 32 Bit
          NIST_A_INT : Int;   // Geschwindigkeitswert A
          NIST_B_INT : DInt;   // Geschwindigkeitswert B
          RET_VAL : Int;
          Lebenszeichenzähler { S7_HMI_Accessible := 'False'; S7_HMI_Visible := 'False'} : Int;
          TELEGRAMM_81 : "TELEGRAMM_81";
          TELEGRAMM_82 : "TELEGRAMM_82";
          TELEGRAMM_83 : "TELEGRAMM_83";
          TELEGRAMM_84 : "TELEGRAMM_84";
          TELEGRAMM_860 : "TELEGRAMM_860";
          EINGANGS_PDZ : Array[1..2] of Word;
          AUSGANGS_PDZ : Array[1..7] of Word;
       END_VAR
    
    
    BEGIN
        //Konsistente Daten eines DP-Normslaves lesen:
        #RET_VAL := DPRD_DAT(LADDR := #LADDR, RECORD=> #TELEGRAMM_82."Eingabedaten (PZD/Wort)");
        //Berechnung des Zählwertes für Lebenszeichenzähler
        IF #Lebenszeichenzähler < 15 THEN
            #Lebenszeichenzähler := #Lebenszeichenzähler + 1;
        ELSE
            #Lebenszeichenzähler := 1;
        END_IF;
        // Übertragung des Zählwertes in das Geber-Steuerwort
        POKE_BLK(area_src:= 16#84 ,
                 dbNumber_src:= #DB_NR,
                 byteOffset_src:= 56,
                 area_dest:= 16#84,
                 dbNumber_dest:= #DB_NR,
                 byteOffset_dest:= 74,
                 count:= 2);
        // Setzen der restlichen Bits im "Steuerwort des Gebers"
        #TELEGRAMM_82."Ausgabedaten (PZD/Wort)".G1_STW.G1_STW.Bit11 := false;
        #TELEGRAMM_82."Ausgabedaten (PZD/Wort)".G1_STW.G1_STW.Bit12 := #HOMING;
        #TELEGRAMM_82."Ausgabedaten (PZD/Wort)".G1_STW.G1_STW.Bit13 := true;
        #TELEGRAMM_82."Ausgabedaten (PZD/Wort)".G1_STW.G1_STW.Bit14 := false;
        #TELEGRAMM_82."Ausgabedaten (PZD/Wort)".G1_STW.G1_STW.Bit15 := #QUIT_IMP;
        // Setzen der restlichen Bits im "Steuerwort des Encoders"
        #TELEGRAMM_82."Ausgabedaten (PZD/Wort)".STW2_ENC.STW2_ENC.Bit10 := true;
        // Überprüfung der Fehlerzustände
        IF #TELEGRAMM_82."Eingabedaten (PZD/Wort)".G1_ZSW.G1_ZSW.Bit15 THEN
            #Fehlercode := UDINT_TO_INT(#TELEGRAMM_82."Eingabedaten (PZD/Wort)".G1_XIST2);
        ELSE
            #Fehlercode := 0;
        END_IF;
        // Auswertung der Fehlerzustände
        CASE UDINT_TO_INT(#TELEGRAMM_82."Eingabedaten (PZD/Wort)".G1_XIST2) OF
            16#1 :
                #FEHLER_ALLGEMEIN := true; //*** Sensorgruppenfehler      
            16#F01 :
                #FEHLER_BEFEHL := true;
            16#F02 :
                #FEHLER_MLS := true;
            16#F04 :
                #FEHLER_SYSNCHRONISATION := true;
        END_CASE;
        // Meldung "Betriebsbereit"
        IF #TELEGRAMM_82."Eingabedaten (PZD/Wort)".ZSW2_ENC.ZSW_ENC.Bit9 AND NOT #TELEGRAMM_82."Eingabedaten (PZD/Wort)".G1_ZSW.G1_ZSW.Bit15 THEN
            #"Geber betriebsbereit" := #TELEGRAMM_82."Eingabedaten (PZD/Wort)".ZSW2_ENC.ZSW_ENC.Bit9;
        ELSE
            #"Geber betriebsbereit" := false;
        END_IF;
        // Meldung "Geberjustage erfolgreich"
        #"Geberjustage erfolgreich" := #TELEGRAMM_82."Eingabedaten (PZD/Wort)".G1_ZSW.G1_ZSW.Bit12;
        // Meldung "Steuerung angefordert"
        #"Steuerung angefordert" := #TELEGRAMM_82."Eingabedaten (PZD/Wort)".ZSW2_ENC.ZSW_ENC.Bit9;
        // Übertragung des Istwertes
        #G1_XIST1 := UDINT_TO_DINT(#TELEGRAMM_82."Eingabedaten (PZD/Wort)".G1_XIST1);
        // Übertragung der Ist-Geschwindigkeit
        #NIST_B := SCALE_X(MIN := 0, VALUE := #TELEGRAMM_82."Eingabedaten (PZD/Wort)".NIST_A, MAX := 16#4000);
        // Konsistente Daten eines DP-Normslaves schreiben
        #RET_VAL := DPWR_DAT(LADDR := #LADDR, RECORD := #TELEGRAMM_82."Ausgabedaten (PZD/Wort)");
        
    END_FUNCTION_BLOCK

Ähnliche Themen

  1. Inkrementalgeber 6FX2001 Signale und Frequenzumrichter
    Von mwissen im Forum Antriebstechnik
    Antworten: 3
    Letzter Beitrag: 02.10.2013, 13:18
  2. Anschlussbelegung 6FX2001-2CA50 Drehgeber
    Von Rockwell im Forum Antriebstechnik
    Antworten: 4
    Letzter Beitrag: 03.02.2011, 23:11
  3. Knoten im Kopf PEW -> Real
    Von Johannes F im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 07.01.2011, 12:56
  4. Siemens Winkeldecodierer 6FX2001-5QP24 Profibus DP
    Von Lars123 im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 08.08.2009, 12:33
  5. NetPro: MPI Knoten an MP anbringen.
    Von Anonymous im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 18.06.2004, 13:11

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •