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

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 35

Thema: FC aufruf klappt nicht

  1. #1
    Registriert seit
    16.08.2014
    Beiträge
    29
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen, ich habe mal ein kleines Anfänger problem und ich hoffe ihr könnt mir sagen, was ich falsch gemacht habe oder wie es richtig klappt.

    Ich habe eine fertige Anlage an der 20 Kühlkreisläufe sitzen. An den Kühlkreisläufen wird der Durchfluss gemssen, wenn kein Durchfluss da ist, gibt es eine Fehlermeldung.
    Dieses Programm möchte ich nun so erweitern, das wenn an einem Kühlkreislauf drei mal kein Durchfluss da ist, die Anlage in den Taktstopp geht und erst wieder gestartet wird wenn die Kühlung io ist.

    Ich habe mir nun einen neuen FC erstellt, in dem ich den Zähler und weitere Bedingungen programmiert habe.
    Den fertigen FC habe ich nun 20 mal aufgerufen wenn nun ein Kreislauf 3 mal einen Fehler hat, soll in einem DB ein DBX gesetzt werden welches ich für die Fehlermeldung nutzen will.

    Mein Problem ist nun das wenn 1 Kreislauf 3mal einen Fehler hatte. Ich 20 Fehlermeldungen erhalte und nicht nur eine.

    Ich hoffe ihr versteht mein Problem und könnt mir weiterhelfen.

    Vielen Dank.
    Zitieren Zitieren FC aufruf klappt nicht  

  2. #2
    Registriert seit
    25.02.2016
    Beiträge
    288
    Danke
    20
    Erhielt 63 Danke für 55 Beiträge

    Standard

    Hallo

    es währen etwas mehr Infos gefragt. Ich weis nicht wie fit du bist. Ich hoffe du übergibst den Zähler an der Schnittstelle oder hast du einen Fb mit Multiinstanz? Wenn du immer den gleichen Zähler aufrufst geht das nicht stell am besten mal den Code des fc s bitte online

    gruß TiaWinCC

  3. #3
    janoro ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    16.08.2014
    Beiträge
    29
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo TiaWinCC danke für die Antwort.
    Doch ich nehme immer den gleichen Zähler. Ich habe auch keinen fb. Liegt da der Fehler?

    Ich komme leider erst morgen nachmittag wieder an das Programm um den Code zu senden.

  4. #4
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.628
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Wenn Du den selben Zähler verwendet hast, ist es sehr wahrscheinlich der Zähler, aber da Du den Code nicht gepostet hast, kann es natürlich auch noch andere Fehler geben.
    Gruß
    Michael

  5. #5
    janoro ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    16.08.2014
    Beiträge
    29
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hier nun der Code von dem FC den ich aufrufe. ICh hoffe ihr könnt das so verstehen

    NW1
    U M 100.6
    U #Durchfluss_nio
    ZV Z 10
    BLD 101
    U M 100.6
    L C#0
    S Z 10
    U #Durchfluss_io
    R Z 10
    NOP 0
    LC Z 10
    T #Zaehler
    NOP 0


    NW2
    L #Zaehler
    L 3
    ==I
    = #Stoerung_1

    NW3
    U #Stoerung_1
    S #Fehler_Da
    U E 2.3
    R #Fehler_Da
    NOP 0

  6. #6
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.648
    Danke
    789
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Du rufst diesen FC 20 mal auf? benutzt darin aber diverse globale Variablen. Das sind also diverse fehler die du hier machst.
    Der erste ist natürlich der Z10 der ist immer Z10 es ist also egal welcher aufruf #Durchfluss_nio bringt es wird immer Z10 hochgezählt und in jedem aufruf auch Z10 abgefragt. übersteigt dieser also den Grenzwert wird jeder FC Aufruf #Stroerung_1 Setzen.

    Such im Forum mal nach Multiinstanzen, FBs und wie man Zähler Instanziert. Wobei Hier natürlich nicht unbedingt ein FB nötig wäre, kann man (sollte man) auch alles über die Schnittstelle übergeben.

    mfG René

  7. Folgender Benutzer sagt Danke zu vollmi für den nützlichen Beitrag:

    janoro (10.05.2016)

  8. #7
    Registriert seit
    25.02.2016
    Beiträge
    288
    Danke
    20
    Erhielt 63 Danke für 55 Beiträge

    Standard

    Hallo janoro,

    wie vollmi schon geschrieben funktioniert das leider nicht ganz so ich weis leider nicht genau was bei dir M100.6 macht.
    aber du musst für jeden FC aufruf einen eigenen Zähler verwenden das Funktioniert entweder über einen FB in dem du einem IEC Timer aufrufst oder einfacher du legt eine In_out Variable an die den Zähler übergibst.
    Dann musst du halt noch bei jedem Fc aufruf einen anderen Zähler an den FC Schreiben.

    ähnlich wäre es beim M100.6 wenn dieser bei jeden Aufruf die gleiche Aufgabe hat (das gleiche abfragen soll) ist das gut so soll hier aber bei jeden Aufruf etwas anderes abgefragt werden solltest du hier auch eine Variable im In Bereich des FC deklariern und diese beim Aufruf übergeben

    Wenn du fragen hast oder nicht ganz verstanden hast um was es geht dann melde dich bitte nochmal ich werde es dir dann genauer erklären.

    MFG WINCCTIA
    Zitieren Zitieren ??  

  9. Folgender Benutzer sagt Danke zu Wincctia für den nützlichen Beitrag:

    janoro (10.05.2016)

  10. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.316
    Danke
    932
    Erhielt 3.331 Danke für 2.689 Beiträge

    Standard

    Bei Verwendung von mehrfach aufgerufenen FC beachten:
    - alles was von außerhalb des FC kommt (z.B. Eingänge, Merker) --> über die FC-Schnittstelle übergeben
    - alles was sich der FC merken soll --> eine Speichervariable über IN_OUT übergeben, weil ein FC kann sich nichts merken
    - wenn der FC je Aufruf unterschiedliche Zähler oder Timer verwenden soll, dann die Instanz (Nummer) des zu verwendenden Zählers/Timers an den FC übergeben

    Wenn in KOP/FUP der Zählerstand eines Z_VORW noch mit Dezimalzahlen (INT) verglichen werden soll, dann
    - den Zählerstand vom Ausgang DUAL nehmen (der Ausgang DEZ ist BCD-codiert)
    - den Zählerstand auf eine Word-Variable speichern, weil DUAL und DEZ als WORD deklariert sind
    - den Wert von der WORD-Variable in eine INT-Variable kopieren (MOVE), weil CMP bei (normalerweise) aktivierter Typprüfung nicht mit WORD arbeitet
    - beim CMP auf >=I vergleichen statt ==I, weil der Zähler auch noch weiterzählen kann

    - Deine Verwendung des M100.6 bei ZV und für Setzen des Zählers kann so wie gezeigt nicht richtig sein. Hast Du da einen Tippfehler?

    - Fehlerspeicher bis Quittieren macht man üblicherweise als RS-Flipflop (vorrangig Setzen) anstatt SR-Flipflop (vorrangig rücksetzen), damit man nur quittieren kann, wenn der Fehler nicht mehr ansteht. Bei SR-Flipflop kann man die Fehlerspeicherung unterdrücken, solange man den Quittierknopf gedrückt hält.

    Hier ein Beispiel, wie Du es besser machen kannst:
    Code:
    FUNCTION FC123 : VOID
    TITLE =
    VERSION : 0.1
    
    VAR_INPUT
      Durchfluss_io : BOOL ;
      Durchfluss_nio : BOOL ;
      CheckPuls : BOOL ;
      Quitt : BOOL ;
      Z_No : COUNTER ;
    END_VAR
    VAR_IN_OUT
      Fehler_Da : BOOL ;
    END_VAR
    VAR_TEMP
      wZaehler : WORD ;
      iZaehler : INT ;
      Stoerung_1 : BOOL ;
    END_VAR
    
    BEGIN
    NETWORK
          U     #CheckPuls;
          U     #Durchfluss_nio;
          ZV    #Z_No;
          BLD   101;
          NOP   0;
          NOP   0;
          U     #Durchfluss_io;
          R     #Z_No;
          L     #Z_No;
          T     #wZaehler;
          NOP   0;
          NOP   0;
    NETWORK
          L     #wZaehler;
          T     #iZaehler;
          NOP   0;
    NETWORK
          U     #Quitt;
          R     #Fehler_Da;
          U(    ;
          L     #iZaehler;
          L     3;
          >=I   ;
          )     ;
          =     #Stoerung_1;
          U     #Stoerung_1;
          S     #Fehler_Da;
          NOP   0;
    END_FUNCTION
    Den Code in eine AWL-Quelle kopieren, die FC-Nummer anpassen und übersetzen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  11. #9
    janoro ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    16.08.2014
    Beiträge
    29
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo, vielen Dank erstmal für die wirklich schnelle Hilfe. Ich habe das Programm jetzt so geändert das ich an den aufgerufenen FC einen Zähler dran schreibe. Das funktioniert jetzt auch soweit.

    Allerdings finde ich es nicht schön jedes mal einen Zähler zu verwenden. Für die ganze Anlage wären das insgesamt 40 Zähler die ich nutzen müßte.

    Mir ist nun die Idee gekommen, dass ganze über einen addierer zu machen.
    Ich habe mir das so vorgestellt, das wenn der Durchfluss nio ist die Zahl um 1 erhöht wird und dann im db gespeichert wird. Wenn im db irgendwann eine 3 steht, gibt es eine Fehlermeldung.

    Aber auch das will wieder nicht auf Anhieb klappen.
    Ich habe einen addierer genommen und das db.dbb ran geschrieben und mit 1 addiert am Ausgang habe ich das gleiche db.dbb gesetzt.

    Wenn nun ein Fehler kommt, wird 1 hochgezählt. Wenn der Fehler wieder geht, steht aber wieder eine 0 drin.

    Vielleicht könnt ihr mir da auch einen Tipp geben.

    Den Code werde ich gleich noch einmal hochladen.

    Gesendet von meinem SM-G920F mit Tapatalk

  12. #10
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.648
    Danke
    789
    Erhielt 654 Danke für 497 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Dir ist klar dass ein Byte keine zahlentyp hat? Nimm lieber einen INT oder DINT. Diesen musst du an inout des fc deklarieren.


    Sent from my iPhone using Tapatalk

Ähnliche Themen

  1. S5 Verbindung mit PG klappt nicht
    Von dpd80 im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 10.03.2017, 07:31
  2. DINT TO DWORD klappt nicht
    Von Carsten77 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 11.04.2011, 15:48
  3. Antworten: 35
    Letzter Beitrag: 14.09.2010, 14:16
  4. S7Graph-Simultanverzweigung klappt nicht
    Von Wassermann im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 25.07.2006, 17:25
  5. AWL klappt, FUP nicht ...
    Von fbeine im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 01.09.2005, 11:42

Lesezeichen

Berechtigungen

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