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

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 29 von 29

Thema: SFC15-Problem

  1. #21
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Tim,

    so, wie Du es geschrieben hast, braucht man 12 Worte, die MoviDrive haben aber nur 6.
    Guck mal in meinen Beitrag oben (#22) da ist es schon geändert.

    Grüße
    Gebs

  2. #22
    Registriert seit
    22.12.2006
    Beiträge
    43
    Danke
    0
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Hallo Gebs,


    ich wollte bloß auf die Überschneidung der Adressbereiche aufmerksam machen.

    Nicht mehr, nicht weniger.

    Bis demnächst.


    Gruß Timbo
    Zitieren Zitieren 12Oder6Worte  

  3. #23
    Avatar von Reto
    Reto ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.10.2006
    Beiträge
    158
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich hab's mal als AWL-Quelle exportiert. Interessant ist das oberste und das unterste Netzwerk.

    Das mit den 12 Worten war ein Fehler ... da waren alles Doppelworte, was aber in Tat und Wahrheit nicht so ist.

    Code:
    FUNCTION FC 80 : VOID
    TITLE =Ansteuerung SEW-MoviDrive via DP (Erweiterte Buspositionierung)
    AUTHOR : 'IT/RSt'
    VERSION : 1.1
    
    
    VAR_INPUT
      Geraete_Adresse : INT ;    
      Freigabe : BOOL ;    
      Reset : BOOL ;    
      Mode_Auto : BOOL ;    //1 = Auto, 0 = Hand
      Start_Ref : BOOL ;    //Mode_Auto muss aktiv sein
      Tippen_Plus : BOOL ;    //Mode_Auto muss 0 sein
      Tippen_Minus : BOOL ;    //Mode_Auto muss 0 sein
      Pos_Anfahren : BOOL ;    //Mode_Auto muss aktiv sein
      Pos : DINT ;    
      Speed : INT ;    
      Rampe : INT ;    
    END_VAR
    VAR_OUTPUT
      Stoerung : BOOL ;    
      InAutomatik : BOOL ;    
      InPosition : BOOL ;    
      Err : INT ;    
      Akt_Pos : DINT ;    
      Akt_Speed : INT ;    
    END_VAR
    VAR_TEMP
      PE : STRUCT     
       Status_Code : BYTE ;    
       Endstufe_Freigegeben : BOOL ;    
       Umrichter_Bereit : BOOL ;    
       Referenziert : BOOL ;    
       InPos : BOOL ;    
       Bremse_offen : BOOL ;    
       Stoerung : BOOL ;    
       ES_Rechts : BOOL ;    
       ES_Links : BOOL ;    
       Akt_Pos : DINT ;    
       Akt_Speed : INT ;    
       Akt_Current : INT ;    
       Akt_Auslastung : INT ;    
      END_STRUCT ;    
      PA : STRUCT     
       Start : BOOL ;    
       Tippen_Plus : BOOL ;    
       Tippen_Minus : BOOL ;    
       Mode_Low : BOOL ;    
       Mode_High : BOOL ;    
       CTW_Bit_13 : BOOL ;    
       CTW_Bit_14 : BOOL ;    
       CTW_Bit_15 : BOOL ;    
       Reglersperre : BOOL ;    
       Freigabe_Schnellstop : BOOL ;    
       Freigabe_Halt : BOOL ;    
       CTW_Bit_3 : BOOL ;    
       CTW_Bit_4 : BOOL ;    
       CTW_Bit_5 : BOOL ;    
       Reset : BOOL ;    
       CTW_Bit_7 : BOOL ;    
       Pos : DINT ;    
       Speed : INT ;    
       Start_Rampe : INT ;    
       Stop_Rampe : INT ;    
      END_STRUCT ;    
      Addr : WORD ;    
      Returncode_SFC14 : INT ;    
      Returncode_SFC15 : INT ;    
      ModAuto : BOOL ;    
      ModRef : BOOL ;    
      ModTip : BOOL ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =Prozeßeingangsdaten aufbereiten
    
          L     #Geraete_Adresse; // Int 536
          SLD   3; // Pointer bilden (letzte 3 Stellen sind Bit-Adresse)
          LAR1  ; // Im Adressregister 1 ablegen
    
          L     PEW [AR1,P#0.0]; 
          T     LW     0; 
    
          L     PED [AR1,P#2.0]; 
          T     #PE.Akt_Pos; 
    
          L     PEW [AR1,P#6.0]; 
          T     #PE.Akt_Speed; 
    
          L     PEW [AR1,P#8.0]; 
          T     #PE.Akt_Current; 
    
          L     PEW [AR1,P#10.0]; 
          T     #PE.Akt_Auslastung; 
    
    
    
    NETWORK
    TITLE =Modenanwahl
    
          SET   ; 
          R     #PA.Reglersperre; 
    
          U     #Mode_Auto; 
          U     #PE.Referenziert; 
          =     #ModAuto; 
          S     #PA.Mode_Low; 
          S     #PA.Mode_High; 
    
    
          U     #Mode_Auto; 
          UN    #PE.Referenziert; 
          =     #ModRef; 
          R     #PA.Mode_Low; 
          S     #PA.Mode_High; 
    
          UN    #Mode_Auto; 
          =     #ModTip; 
          S     #PA.Mode_Low; 
          R     #PA.Mode_High; 
    
    NETWORK
    TITLE =Mode: Tippen
    
          U     #ModTip; 
          U     #Tippen_Plus; 
          =     #PA.Tippen_Plus; 
    
          U     #ModTip; 
          U     #Tippen_Minus; 
          =     #PA.Tippen_Minus; 
    
    NETWORK
    TITLE =Mode: Referenzieren
    
          U     #ModRef; 
          U     #Start_Ref; 
          =     #PA.Start; 
    NETWORK
    TITLE =Mode: Automatik
    
    // Springe nach No Auto, wenn nicht im Automatik-Modus.   
          UN    #ModAuto; 
          SPB   M002; 
    
          U     #ModAuto; 
          U     #Pos_Anfahren; 
          =     #PA.Start; 
    
    NETWORK
    TITLE =Prozeßausgangsdaten: Sollwerte aufbereiten
    
    M002: U     #Freigabe; //Daten konsistent auf einen DP-Normslave schreiben
          =     #PA.Freigabe_Schnellstop; //Peripherieadresse => Hardwarekonfig.
          =     #PA.Freigabe_Halt; //Quellbereich für die zu schreibenden Nutzdaten
    
          SET   ; 
          R     #PA.Reglersperre; 
          R     #PA.CTW_Bit_3; 
          R     #PA.CTW_Bit_4; 
          R     #PA.CTW_Bit_5; 
          R     #PA.CTW_Bit_13; 
          R     #PA.CTW_Bit_14; 
          R     #PA.CTW_Bit_15; 
    
          U     #Reset; 
          =     #PA.Reset; 
    
          U     #PE.Stoerung; 
          =     #Stoerung; 
          L     #PE.Status_Code; 
          T     #Err; 
    
          U     #PE.Referenziert; 
          U     #ModAuto; 
          =     #InAutomatik; 
    
          U     #PE.Referenziert; 
          U     #ModAuto; 
          U     #PE.InPos; 
          =     #InPosition; 
    
          L     #PE.Akt_Pos; 
          T     #Akt_Pos; 
          L     #PE.Akt_Speed; 
          T     #Akt_Speed; 
    
    
          L     #Pos; 
          T     #PA.Pos; 
          L     #Speed; 
          T     #PA.Speed; 
          L     #Rampe; 
          T     #PA.Start_Rampe; 
          T     #PA.Stop_Rampe; 
    
    NETWORK
    TITLE =Kommunikationsfehler auswerten
    //Ist die Abarbeitung der SFCs fehlerhaft, so werden alle Ausgänge der Funktion 
    //abgelöscht
          L     #Geraete_Adresse; // Int 536
          SLD   3; // Pointer bilden (letzte 3 Stellen sind Bit-Adresse)
          LAR1  ; // Im Adressregister 1 ablegen
    
          L     LW    12; // Steuerwort2
          T     PAW [AR1,P#0.0]; 
    
          L     #PA.Pos; // Zielposition
          T     PAD [AR1,P#2.0]; 
    
          L     #PA.Speed; // Speed
          T     PAW [AR1,P#6.0]; 
    
          L     #PA.Start_Rampe; // Startrampe
          T     PAW [AR1,P#8.0]; 
    
          L     #PA.Stop_Rampe; // Stoprampe
          T     PAW [AR1,P#10.0]; 
    END_FUNCTION

  4. #24
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo Reto,

    sieht gut aus!

    Grüße
    Gebs

  5. #25
    Avatar von Reto
    Reto ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.10.2006
    Beiträge
    158
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Funktioniert nur leider immer noch nicht ... ich sitz hier nun gerade wieder daran,

    PD1 - 3 werden geschrieben, 4-6 nicht :/

    Ich hab nun nen ganz anderen Bereich genommen ... andere DP-Adresse ... geht alles nicht. PD1-3 werden geschrieben (jedes mal) ... die andern gehen nicht.

    Selbst wenn ich's auf's Prozessabbild lege, dann seh ich in den Variabeln die richtigen Werte, und der Regler bekommt die hinteren 3 Doppelworte nicht.

    Irgend jemand noch ne Idee ?

  6. #26
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Wenn ich richtig sehe ist in NW 7

    L LW 12; // Steuerwort2 1. Wort
    T PAW [AR1,P#0.0];

    L #PA.Pos; // Zielposition DINT also Wort 2+ 3
    T PAD [AR1,P#2.0];

    L #PA.Speed; // Speed 4. Word INT
    T PAW [AR1,P#6.0];

    L #PA.Start_Rampe; // Startrampe 5. Wort.
    T PAW [AR1,P#8.0];

    L #PA.Stop_Rampe; // Stoprampe 6. Wort
    T PAW [AR1,P#10.0];

    Welche 6 Dopelworte meist du?
    Ist dein Zeilbereich richtig angelegt? Also 6 Worte?
    Gibt dir der SFC einen Fehler bei RET_VAL aus?

    Eine andere Frage ist noch:
    Hat jeder Regler einen eigenen Profibusanschluss?
    "Denn in der Beschreibung vom SFC15 steht:
    Bei einem DB-Normslave mit modularem Aufbau können sie nur auf eine Baugruppe des DB-Slaves zugreifen."

    bike

  7. #27
    Avatar von Reto
    Reto ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.10.2006
    Beiträge
    158
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard

    SFC15 wird bei dieser Variante nun ja nicht mehr benutzt.

    Wenn du die PAW und PAD zusammenzählst, kommst du auf 6 Worte (nicht Doppelworte, sorry)

  8. #28
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Nochmal die Frage:

    Hat jeder Regler einen eigenen Profibusanschluss?


    bike

  9. #29
    Avatar von Reto
    Reto ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.10.2006
    Beiträge
    158
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja, jeder Regler hat eine eigene Profibus-Karte.



    --> Problem gelöst!

    Das Problem war nicht, dass die Datenworte nicht gesendet wurden, sondern, dass der Regler nur die ersten drei Datenworte dauernd aktuallisiert.

    PD4-6 wird nur "gelesen", wenn der Regler freigegeben wird und sich der Motor schon fast dreht ... ansonsten bleiben die alten Werte angezeigt, egal, was die Steuerung über Profibus schickt.

    Danke euch allen für die helfenden Informationen. Manchmal liegt's aber doch an unbegreifflichen Funktionen von sog. "Bus-Monitoren", welche nicht überall die aktualwerte darstellen *grml*.

    Weiterhin ein schönes Weekend
    Reto

Ähnliche Themen

  1. OB35 und Sfc15
    Von simon.s im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 11.03.2011, 16:42
  2. Probleme mit SFC15
    Von breno im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 25.05.2009, 19:29
  3. Sfc15
    Von blume_mercan im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 17.01.2008, 14:28
  4. SfC14 / SfC15
    Von Mujo im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 14.08.2007, 14:20
  5. SFC14/SFC15
    Von Anonymous im Forum Feldbusse
    Antworten: 10
    Letzter Beitrag: 19.07.2004, 20:17

Lesezeichen

Berechtigungen

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