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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Probleme Parametrierbarer Baustein FC

  1. #1
    Registriert seit
    09.04.2009
    Beiträge
    52
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo


    Ich habe mir den FC130 als Parametrierbaren Baustein angelegt.
    Er soll in meheren Maschinen kontrollieren ob ein Nagel fehlt, sobald 10 Stk magaziniert werden.

    Dieser Funktioniert allein in der CPU (OB1,FC130 und DB80) einwandfrei.

    Wenn ich den doppelt aufrufe und auch als Kopie (FC131)
    kommen nur noch Fehlfunktionen zustande.

    Habe ich die Bits aus den TEMP Variablen richtig geschrieben?
    Die Sprünge (Sprungmarken) habe ich auch schon umbenannt genauso wie die Flankenmerker als IN Variable angelegt.


    Woran könnte das liegen? Was habe ich falsch gemacht?
    Bin schon 2 Tage daran und schon fast am verzweifeln...


    Hier mal das Step7 V5.5 Programm zum Dearchivieren aus Step7

    Nagelfallkontrolle.zip


    Gruss Stefan
    Zitieren Zitieren Probleme Parametrierbarer Baustein FC  

  2. #2
    Registriert seit
    12.12.2013
    Ort
    Kaiserslautern
    Beiträge
    1.337
    Danke
    385
    Erhielt 218 Danke für 173 Beiträge

    Standard

    Hallo Stefan,

    Ja, das ist eine ganze menge an Tempvariabelen die du da benutzt.
    Es prinzip ist erst die Temp. Schreiben und dann lesen
    Ohne es ins Detail an zu schauen kann du es folgende mal versuchen :
    Die temp. Variabelen am Anfang des Bausteines auf Null schreiben.

    persönlich würde ich hier einen FB mit statische Variabelen bevorzugen.

    Bram
    Wenn es nicht auf STRAVA ist, ist es nicht passiert !!

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

    Standard

    Also ich weiß nicht wie in einem FC eine Temp Variable gespeichert werden kann.
    Dein Start kann so wie es überblicke so nicht funktionieren.
    Mache es wie Bram geschrieben hat einen FB daraus und dann einen IDB und dann kannst du auch den Status besser beobachten.

    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  4. #4
    Registriert seit
    09.04.2009
    Beiträge
    52
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo.

    Also wie schon geschrieben funktioniert der fc130 einwandfrei.
    Lediglich wenn ich ihn 2X aufrufe oder als Kopie aufrufe habe ich
    Probleme mit den FCs.
    Erstes Problem ist allein schon wenn der fc130 einen Nagelfehler ausgibt am A12.0 geht auch bei dem anderen der Nagelfehler A12.7 an.
    Obwohl hier die Kontrolle über den E0.7 gar nicht gestartet wurde...

    Gruss Stefan

  5. #5
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    775
    Erhielt 646 Danke für 492 Beiträge

    Standard

    Am Anfang resetierst du #Fehler bedingt. Das ist schonmal schlecht an einem Temp. Wenn die Bedingung nicht erfüllt ist, dann kann #Fehler irgendeinen Zustand haben.
    Später überspringst du #Fehler noch zweimal Bedingt. Gilt dasselbe wie beim bedingt resetieren.
    Bei der Abfrage ganz am Schluss kann also #Fehler irgendeinen Zustand haben wenn du nicht 100% sicher bist dass er durch den aktuellen FC gesetzt oder zurückgesetzt wird, macht das irgendein anderer Baustein im Stack für dich.

    Dein Programm ist überhaupt etwas Wirr.
    Was soll das:
    Code:
          CLR   
          =     #tb_rc1                     //Null setzen für neuen Zyklus
    Und das:
    Code:
         SET         =     #tb_rc1
    überspringen und wenn nicht gesprungen setzen ist sehr unübersichtlich. Da biste nur am Sprungbedingungen Suchen.

    mfG René

  6. #6
    Registriert seit
    09.04.2009
    Beiträge
    52
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Guten morgen

    @ Rene
    Den genauen zusammenhang im Programm kann ich nicht sagen, da mir die tiefgreifenden Programmierkenntnisse fehlen.

    Bin eher in der Instandhaltung aktiv. Muss aber Betriebsbedingter lage auch so kleine Programmierungen tätigen.

    Den Baustein habe ich aus einer Maschine kopiert und wollte Ihn anpassen.

    Vll. Kann mir ja einer einen guten Lösungsansatz zeigen...

    Funktionsablauf sollte folgendermassen sein:

    Kontrolle muss Ein-Ausschaltbar sein. Bool
    Resetfunktion Bool
    Startfunktion der Kontrolle Bool

    10 Eingänge zum Auswerten als Bool (Ringinitiator)

    max 10 Nägel (Kanäle zum auswerten).
    Vorwählbar als Bit. (auszuwertende Kanäle werden im HMI vorgewählt über Variable Bool invertieren.)
    Fehlermeldeausgang als Bool.

    Kontrollzeit vorwählbar.

    Ablauf:

    Nach dem Startbefehl
    werden alle 10 Ausgänge der Kontrollleds eingeschaltet.
    nach ablauf der Kontrollzeit wird angezeigt welcher Nagel (Ringinitiator) nicht gefallen ist.

    Bei den deaktivierten Kanälen wird nur die LED eingeschaltet solange die Kontrollzeit aktiv ist.
    Ein Auswertung findet dann nicht statt.

    Ist alles OK erlöschen alle LEDs.
    Wenn nicht wird angezeigt welcher Nagel fehlt bzw. nicht gefallen ist.

    Über Reset wird der Fehlerausgang und die LEDs wieder weggeschaltet.

    Wäre echt sehr dankbar wenn einer helfen könnte...

    Gruss Stefan

  7. #7
    Registriert seit
    12.12.2013
    Ort
    Kaiserslautern
    Beiträge
    1.337
    Danke
    385
    Erhielt 218 Danke für 173 Beiträge

    Standard

    Ich war mal so fei und hab über der quelle des FC`s eine FB draus gemacht.
    Probiere es einfach mal aus.

    lege dir erst in der Symboltabelle einen FB an mit der Name "Nagelfallkontrolle_FB"


    Code:
    FUNCTION_BLOCK "Nagelfallkontrolle_FB"
    VERSION : 0.1
    
    VAR_INPUT
      NFK_Ein : BOOL ; 
      NFK_Start : BOOL ; 
      NFK_Reset : BOOL ; 
      NFK_Lampentest : BOOL ; 
      NFK_Nagelmaske : DWORD ; 
      S5_Timer : TIMER ; 
      NFK_Kontrollzeit : S5TIME ; //In dieser Zeit müssen alle Nägel gefallen sein
      INI1 : BOOL ; 
      INI2 : BOOL ; 
      INI3 : BOOL ; 
      INI4 : BOOL ; 
      INI5 : BOOL ; 
      INI6 : BOOL ; 
      INI7 : BOOL ; 
      INI8 : BOOL ; 
      INI9 : BOOL ; 
      INI10 : BOOL ; 
      FM1 : BOOL ; 
      FM2 : BOOL ; 
    END_VAR
    VAR_OUTPUT
      NFK_aktiv : BOOL ; 
      NFK_Nagelfehler : BOOL ; 
      LED1 : BOOL ; 
      LED2 : BOOL ; 
      LED3 : BOOL ; 
      LED4 : BOOL ; 
      LED5 : BOOL ; 
      LED6 : BOOL ; 
      LED7 : BOOL ; 
      LED8 : BOOL ; 
      LED9 : BOOL ; 
      LED10 : BOOL ; 
    END_VAR
    VAR
      tb_rc1 : BOOL ; //zeigt an dass die Nagelfallkontrolle 1 einen Fehler gefunden hat
      tb_kontrolle_start : BOOL ; 
      td_auswertung : DWORD ; 
      SOLLMASKE : DWORD ; 
      ISTMASKE : DWORD ; 
      AUSWERTEMASKE : DWORD ; 
      Fehler : BOOL ; 
      Reset : BOOL ; 
      Start : BOOL ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =Nagelfallkontrolle aus
          U     #NFK_Ein; 
          =     #NFK_aktiv; 
    NETWORK
    TITLE =Nagelfallkontrolle aus
          UN    #NFK_Ein; 
          R     #Fehler; 
    NETWORK
    TITLE =Nagelfallkontrolle Reset
          U     #Fehler; 
          U(    ; 
          U     #NFK_Reset; 
          FP    #FM2; 
          )     ; 
          =     #Reset; 
    NETWORK
    TITLE =Auszuwertende Nagelmaske Nägel Nur AWL Ansicht!!!
    //Wird von TP177 vorgegeben
    // U     "high"
    // =     "Nagelfallkontrolle_".NK1
    // =     "Nagelfallkontrolle_".NK2
    // =     "Nagelfallkontrolle_".NK3
    //=     "Nagelfallkontrolle_".NK4
    //=     "Nagelfallkontrolle_".NK5
    //=     "Nagelfallkontrolle_".NK6
    //=     "Nagelfallkontrolle_".NK7
    //=     "Nagelfallkontrolle_".NK8
    //=     "Nagelfallkontrolle_".NK9
    // =     "Nagelfallkontrolle_".NK10
    NETWORK
    TITLE =Auszuwertende Nagelmaske einlesen
          L     #NFK_Nagelmaske; 
          T     #SOLLMASKE; 
          NOP   0; 
    NETWORK
    TITLE =Nagelfallkontrolle zurücksetzen
          U     #Reset; 
          U     #NFK_Ein; 
          R     #LED1; 
          R     #LED2; 
          R     #LED3; 
          R     #LED4; 
          R     #LED5; 
          R     #LED6; 
          R     #LED7; 
          R     #LED8; 
          R     #LED9; 
          R     #LED10; 
          R     #Fehler; 
    NETWORK
    TITLE =Nagelfallkontrolle starten
    //Alle LED Nagelkontrolle einschalten 
          U     #NFK_Ein; 
          UN    #Reset; 
          U(    ; 
          U     #NFK_Start; 
          FP    #FM1; 
          )     ; 
          UN    #Start; 
          =     L     19.0; 
          U     L     19.0; 
          =     #tb_kontrolle_start; 
          U     #tb_kontrolle_start; 
          S     #Start; 
          U     L     19.0; 
          SPBNB _001; 
          L     0; 
          T     #ISTMASKE; 
    _001: NOP   0; 
    NETWORK
    TITLE =LEDs Nagelkontrolle Kanal 1-10 einschalten
          U     #tb_kontrolle_start; 
          SPBN  NFK1; 
          SET   ; 
          =     #LED1; 
          =     #LED2; 
          =     #LED3; 
          =     #LED4; 
          =     #LED5; 
          =     #LED6; 
          =     #LED7; 
          =     #LED8; 
          =     #LED9; 
          =     #LED10; 
    NFK1: NOP   0; 
    NETWORK
    TITLE =Timer Nagelfallkontrolle
    //Innerhalb 1sek. müssen alle Nägel gefallen sein
          U     #Start; 
          L     #NFK_Kontrollzeit; 
          SE    #S5_Timer; 
          NOP   0; 
          NOP   0; 
          NOP   0; 
          NOP   0; 
    NETWORK
    TITLE =Ist-Maske einlesen
    //Ist-Maske = MD84
    //E8_ES_NK1 ist das rechte Bit
    //E8_ES_NK24 ist das linke Bit
          U     #Start; 
          UN    #S5_Timer; 
          UN    #Reset; 
          U     #NFK_Ein; 
          U(    ; 
          L     #SOLLMASKE; 
          L     L#0; 
          <>D   ; 
          )     ; 
          U     #Start; 
          SPBN  NFK2; 
          U     #INI1; 
          S     L     13.0; 
          U     #INI2; 
          S     L     13.1; 
          U     #INI3; 
          S     L     13.2; 
          U     #INI4; 
          S     L     13.3; 
          U     #INI5; 
          S     L     13.4; 
          U     #INI6; 
          S     L     13.5; 
          U     #INI7; 
          S     L     13.6; 
          U     #INI8; 
          S     L     13.7; 
          U     #INI9; 
          S     L     12.0; 
          U     #INI10; 
          S     L     12.1; 
          L     0; 
          T     LW    10; //mit 0 überschreiben da nicht verwendet
          CLR   ; 
          =     L     12.2; // rücksetzen da nicht verwendet
          =     L     12.3; // rücksetzen da nicht verwendet
          =     L     12.4; // rücksetzen da nicht verwendet
          =     L     12.5; // rücksetzen da nicht verwendet
          =     L     12.6; // rücksetzen da nicht verwendet
          =     L     12.7; // rücksetzen da nicht verwendet
          =     #Fehler; 
    NFK2: NOP   0; 
    NETWORK
    TITLE =Ausgänge wieder wegschalten und Ist-Maske auswerten
    //isTimer am ende zurücksetzen
          CLR   ; 
          =     #tb_rc1; //Null setzen für neuen Zyklus
          U     #Start; 
          U     #S5_Timer; 
          UN    #Reset; 
          U     #NFK_Ein; 
          SPBN  NFK3; 
          CLR   ; 
          =     #LED1; 
          =     #LED2; 
          =     #LED3; 
          =     #LED4; 
          =     #LED5; 
          =     #LED6; 
          =     #LED7; 
          =     #LED8; 
          =     #LED9; 
          =     #LED10; 
    //Nagelkontrolle Kanal 10
          L     #ISTMASKE; 
          L     #SOLLMASKE; 
          XOD   ; 
          T     #AUSWERTEMASKE; 
          L     #SOLLMASKE; 
          L     #AUSWERTEMASKE; 
          UD    ; 
          T     #AUSWERTEMASKE; 
          L     L#0; 
          <>D   ; 
          SPBN  NFK4; 
    // Ausgabe bei Fehler
          U     L     17.0; //Bit aus Auwerte Maske
          U     L      9.0; // Bit aus Sollmaske
          =     #LED1; 
          U     L     17.1; 
          U     L      9.1; 
          =     #LED2; 
          U     L     17.2; 
          U     L      9.2; 
          =     #LED3; 
          U     L     17.3; 
          U     L      9.3; 
          =     #LED4; 
          U     L     17.4; 
          U     L      9.4; 
          =     #LED5; 
          U     L     17.5; 
          U     L      9.5; 
          =     #LED6; 
          U     L     17.6; 
          U     L      9.6; 
          =     #LED7; 
          U     L     17.7; 
          U     L      9.7; 
          =     #LED8; 
          U     L     16.0; 
          U     L      8.0; 
          =     #LED9; 
          U     L     16.1; 
          U     L      8.1; 
          =     #LED10; 
          SET   ; 
          =     #tb_rc1; 
    NFK4: NOP   0; 
    
          NOP   0; 
          U     #tb_rc1; 
          =     #Fehler; 
    NFK3: NOP   0; 
    NETWORK
    TITLE =fertig Nagelfallkontrolle
          U     #Start; 
          U     #S5_Timer; 
          UN    #Reset; 
          U     #NFK_Ein; 
          R     #Start; 
    NETWORK
    TITLE =Störung Nagelfallkontrolle
          U     #Fehler; 
          =     #NFK_Nagelfehler; 
    END_FUNCTION_BLOCK
    Grüß Bram
    Geändert von de vliegende hollander (05.05.2016 um 19:04 Uhr) Grund: Symbol
    Wenn es nicht auf STRAVA ist, ist es nicht passiert !!

  8. #8
    Registriert seit
    09.04.2009
    Beiträge
    52
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Bram

    Danke...
    Im Netzwerk nagelfallkontrolle starten wird ein bitte L19.0 verarbeitet.
    Kann es sein das es daran liegt da dies nicht in der Schnittstelle des Bausteins eingetragen ist?
    KönnTeilen dies auch auswirkungen auf den anderentsprechenden FC haben?
    Bzw. Auch im FB Probleme machen?

    Gruss Stefan

  9. #9
    Registriert seit
    12.12.2013
    Ort
    Kaiserslautern
    Beiträge
    1.337
    Danke
    385
    Erhielt 218 Danke für 173 Beiträge

    Standard

    Die L19.0 ist ein Teil von td_Auswertung (DWORD Offset 16.0 )

    Die wird vorher beschrieben und dann gelesen. Das stimmt erst mal.

    Mit dem FB erwarte ich da kein Problemen. Die variabele ist jetzt mit dem FB nur 1 mal vorhanden.

    Bram
    Wenn es nicht auf STRAVA ist, ist es nicht passiert !!

  10. #10
    Registriert seit
    12.12.2013
    Ort
    Kaiserslautern
    Beiträge
    1.337
    Danke
    385
    Erhielt 218 Danke für 173 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Note !

    Auch im einen FB gilt,

    Erst schreiben dann lesen.
    Wenn es nicht auf STRAVA ist, ist es nicht passiert !!

Ähnliche Themen

  1. Baustein mit INOUT oder Baustein mit Interface?????
    Von SY50 im Forum CODESYS und IEC61131
    Antworten: 31
    Letzter Beitrag: 19.12.2015, 12:07
  2. Antworten: 16
    Letzter Beitrag: 05.03.2014, 06:05
  3. Step 7 Step 7 SCL Probleme mit Baustein
    Von Licht9885 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.07.2013, 11:14
  4. Probleme über Probleme!
    Von tom_2802 im Forum Simatic
    Antworten: 25
    Letzter Beitrag: 12.06.2008, 22:19
  5. Antworten: 18
    Letzter Beitrag: 22.06.2004, 15:43

Lesezeichen

Berechtigungen

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