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

Page 3 of 3 FirstFirst 123
Results 21 to 29 of 29

Thread: SFC15-Problem

  1. #21
    Join Date
    08.04.2008
    Location
    Köln
    Posts
    846
    Danke
    39
    Erhielt 245 Danke für 200 Beiträge

    Default


    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
    Join Date
    22.12.2006
    Posts
    43
    Danke
    0
    Erhielt 6 Danke für 6 Beiträge

    Default

    Hallo Gebs,


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

    Nicht mehr, nicht weniger.

    Bis demnächst.


    Gruß Timbo
    Reply With Quote Reply With Quote 12Oder6Worte  

  3. #23
    Reto's Avatar
    Reto is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    07.10.2006
    Posts
    158
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Default

    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
    Join Date
    08.04.2008
    Location
    Köln
    Posts
    846
    Danke
    39
    Erhielt 245 Danke für 200 Beiträge

    Default

    Hallo Reto,

    sieht gut aus!

    Grüße
    Gebs

  5. #25
    Reto's Avatar
    Reto is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    07.10.2006
    Posts
    158
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Default

    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
    Join Date
    03.04.2008
    Posts
    6,464
    Danke
    238
    Erhielt 825 Danke für 698 Beiträge

    Default

    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
    Reto's Avatar
    Reto is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    07.10.2006
    Posts
    158
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Default

    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
    Join Date
    03.04.2008
    Posts
    6,464
    Danke
    238
    Erhielt 825 Danke für 698 Beiträge

    Default

    Nochmal die Frage:

    Hat jeder Regler einen eigenen Profibusanschluss?


    bike

  9. #29
    Reto's Avatar
    Reto is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    07.10.2006
    Posts
    158
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Default


    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

Similar Threads

  1. Probleme mit SFC15
    By GSOhm in forum Simatic
    Replies: 1
    Last Post: 13.09.2012, 09:54
  2. Sfc15
    By blume_mercan in forum Simatic
    Replies: 1
    Last Post: 17.01.2008, 14:28
  3. SfC14 / SfC15
    By Mujo in forum Simatic
    Replies: 9
    Last Post: 14.08.2007, 14:20
  4. SFC15 Probleme
    By tomatensaft in forum Feldbusse
    Replies: 0
    Last Post: 19.05.2007, 18:06
  5. SFC14/SFC15
    By Anonymous in forum Feldbusse
    Replies: 10
    Last Post: 19.07.2004, 20:17

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •