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

Ergebnis 1 bis 10 von 10

Thema: call, cc, uc Anfängerfrage

  1. #1
    Registriert seit
    12.12.2012
    Beiträge
    4
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen bin neu hier. Mein Name ist Holger und ich bin so gerade am Anfang mit der S7 Programmierung.

    Und hier ist schon gleich meine Frage.

    Ich möchte FC´s aufrufen bei bestimmten Bedingungen. Jetzt hab ich mal was an einer Test SPS (S7-315) probiert und verstehe das mit call und cc nicht mehr.
    Ich schreib hier mal das kleine Testprogramm rein.
    ( OB1 )

    L MW1
    L 1
    ==I
    CALL FC1

    L MW1
    L 2
    ==I
    CALL FC2

    In den FC´s hab ich einfach nur Ausgänge zugewiesen.

    ( FC1 )
    = A0.0

    ( FC2 )
    = A0.1

    jetzt passiert folgendes,
    wenn MW1 = 0 kein FC kein Ausgang
    wenn MW1 = 1 FC1 Ausgang A0.0
    wenn MW1 = 2 FC2 Ausgang A0.0 geht aus und Ausgang A0.1 geht an

    Wenn ich Call durch CC ersetze passiert folgendes

    wenn MW1 = 0 kein FC kein Ausgang
    wenn MW1 =1 FC1 Ausgang A0.0 geht an
    wenn Mw1 = 2 FC2 Ausgang A0.1 geht an und Ausgang A0.0 bleibt aber auch an.

    Das ist bei meiner Test SPS so.

    Bei der Richtigen SPS verhält sich das aber irgendwie umgekehrt. Da ist allerdings auch mehr in den FC reingeschriebe. Und dann kommt mein Programm durcheinander.

    Kann mir das einer erklären ??

    Danke und schöne Grüße
    Holger
    Zitieren Zitieren call, cc, uc Anfängerfrage  

  2. #2
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    1. Wenn Du CALL oder CC markierst und die magische Taste F1 drückst, kommt die Hilfe zu den Befehlen. In der Hilfe steht, dass der Befehl CALL unabhängig vom VKE durchgeführt wird. Ganz im Gegensatz zum Befehl CC. Demnach hat die Abfrage des MW1 nur in Verbindung mit CC eine Auswirkung auf den Aufruf.

    2. Aufrufe von Merkerwörtern sollten niemals ungerade sein. Sehr schnell kommt es dann zu Fehlern, weil versehentlich Bereiche angesprochen wurden, die eigentlich gar nicht gemeint waren. Also besser MW2 oder MW4 oder...

    3. Bedingte Bausteinaufrufe lösen oft "ganz komische" Dinge aus. Z.B. wird im Code ein Ausgang durch eine Zuweisung auf TRUE geschaltet. Wird der Baustein dann nicht mehr aufgerufen, bleibt der Ausgang auf TRUE. Das ist oft so nicht gewollt....
    Geändert von Tigerente1974 (12.12.2012 um 13:42 Uhr) Grund: Korrektur
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  3. #3
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Und noch ein kleiner Nachtrag als Erklärung der "Phänomene" sofern im FC wirklich nur die Zuweisung auf den Ausgang steht:

    Die Zuweisung "=" fragt das VKE ab. Das VKE geht je nach Erfüllung der Abfrage des MW vor dem Bausteinaufruf auf TRUE.
    Deswegen gehen die Ausgänge in der 1. Variante auch an und aus.

    In der 2. Variante geschieht, was ich oben beschrieben habe. Wurde der Baustein erst einmal aufgerufen, bleiben die Ausgänge für immer auf TRUE.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  4. #4
    Registriert seit
    21.12.2006
    Ort
    Wiener Neustadt
    Beiträge
    931
    Danke
    154
    Erhielt 169 Danke für 127 Beiträge

    Standard

    Wenn ich nicht irre, steht in der Hilfe sogar dass man CALL verwenden sollte.
    Gruß
    M

    Handbook not read error...
    Klare Frage - klare Antwort

  5. Folgender Benutzer sagt Danke zu Manfred Stangl für den nützlichen Beitrag:

    dos-punktos (13.12.2012)

  6. #5
    Registriert seit
    30.01.2009
    Beiträge
    440
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard

    Hi,

    noch "sauberer" wäre
    OB1:
    call FC1
    call FC2

    FC1:
    L MW0 // nicht MW1
    L 1
    ==I
    = A0.0
    BE

    FC2:
    L MW0 // nicht MW1
    L 2
    ==I
    = A0.1
    BE

    So werden die FC's zyklisch bearbeitet und die
    Effekte treten erst garnicht auf
    Dieses abwürgen der FC-Aufrufe im OB1
    ist immer nicht ganz ohne.

    Gruß Move

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

    dos-punktos (13.12.2012)

  8. #6
    dos-punktos ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.12.2012
    Beiträge
    4
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,
    danke schon mal für die Antworten. Das mit der F1 und Hilfe kannte ich schon. Das man immer Call nehmen sollte hab ich auch schon mal gelesen, ist aber bei meinem Programm nicht möglich da dann alle Bausteine aufgerufen werden.

    Die Merkerwortvergleiche benutze ich als Programmanwahl um verschiedene Abläufe zu Starten. Es ist quasi ein Grundgestell wo verschiedene auswechselbare Montagestationen angebaut werden können. Und jede Montagestation hat eine Programmnummer.

    Mit dem Call CC und UC hab ich das so verstanden, das:

    Call FC ruft immer auf, egal ob Irgend eine Bedingung davor steht
    CC FC ruft nur auf, wenn die Bedingung die davor steht erfüllt ist.
    UC FC ruft auch immer auf.



    Wenn ich im OB1 schreibe

    Call FC 1
    Call FC 2

    und die FC´s sind wie im Beispiel oben, dann wird gar kein Ausgang gesetzt, also wird doch dann auch kein FC aufgerufen oder? Obwohl Call doch absoluter Aufruf heißt ?

    Wenn ich im OB1 schreibe

    CC FC1
    Call FC2

    wird nur der Ausgang der im FC 2 steht angesteuert. Klar, weil FC1 wohl eine Bedingung braucht. Aber dann Fuktioniert Call bei FC2

    Gruß
    Holger

  9. #7
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Das mit den Bausteinaufrufen hast Du noch nicht ganz verinnerlicht. Mit den bedingten Aufrufen "CC" wirst Du aber vermutlich mehr Probleme bekommen, als Dir lieb ist. Vielleicht noch mal für das Verständnis: Bei dem Bausteinaufruf wird der Code in dem aufgerufenen Baustein abgearbeitet und danach wieder an die aufrufende Stelle gesprungen. Hier der OB1. Die Bausteincontainer sollen doch nur der Übersicht dienen. Prinzipiell könnte auch alles im OB1 stehen. (was man natürlich nicht macht). Hier mal der Code für einen OB1 ohne Aufrufe, der aber GENAU DAS GLEICHE macht:

    Code:
    L MW0
    L 1
    ==I
    = A0.0
    
    L MW0 
    L 2
    ==I
    = A0.1
    Demnach werden die Ausgnänge auch eingeschaltet, wenn die Abfrage des MW0 das VKE=TRUE bringt.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  10. #8
    dos-punktos ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.12.2012
    Beiträge
    4
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Alles klar das mit den FC hab ich ja denke ich verstanden. Ist wegen der Übersicht und so.

    Aber wenn mein OB1 so aus sieht:

    CALL FC1
    CALL FC2

    Und die FC´s sehen so aus:

    (FC1)

    =a0.0


    (FC2)

    =a0.1

    Meinem Verständnis nach gehen so beide Ausgänge an.

    Bei meiner Test SPS blieben die Ausgänge aber aus.

  11. #9
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Das VKE ist FALSE! Das wurde vorher durch die Abfrage des MW0 ggf. auf TRUE gebracht. Schreib mal in den FC:

    Code:
    SET //Setzt das VKE auf 1
    =A0.0
    
    bzw.
    
    SET
    =A0.1
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  12. Folgender Benutzer sagt Danke zu Tigerente1974 für den nützlichen Beitrag:

    dos-punktos (13.12.2012)

  13. #10
    dos-punktos ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.12.2012
    Beiträge
    4
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ach so, der FC wurde zwar aufgerufen, aber vor der = zuweisung steht nichts und darum ist das VKE false.
    Und mit SET macht man das VKE true.

    Ich glaub da liegt der Hund begraben. Und weil im richtigen Programm in den FC´s richtige Programmierungen drin sind sah es nur so aus als ob es sich umgekehrt verhält.

    Ich glaub meine Welt ist wieder in Ordnung, Danke!

Ähnliche Themen

  1. call-by-reference Beckhoff?
    Von gingele im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 22.07.2011, 09:12
  2. Call, cc, uc, auf
    Von corvus im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 10.01.2011, 01:41
  3. Call in MC7
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 13
    Letzter Beitrag: 17.06.2010, 09:11
  4. S7-Graph CALL FC
    Von tl666 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 19.02.2009, 07:33
  5. call-by-call im ausland
    Von Markus im Forum Stammtisch
    Antworten: 11
    Letzter Beitrag: 16.10.2004, 14:30

Lesezeichen

Berechtigungen

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