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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Out-Parameter von FB setzen

  1. #1
    Registriert seit
    04.10.2012
    Beiträge
    62
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, die Damen und die Herren:

    folgendes Problem bzw. folgende Fragestellung beschäftigt jetzt schon den ein oder anderen Programmierer von uns:

    Ist es möglich (ohne undefinierte Zustände oder Fehler zu erhalten), einen OUT-Parameter eines FBs zu setzen / rückzusetzen?
    (Auch als Multiinstanz bzw. bei mehreren Instanzen des FBs).
    Konkretes (vereinfachtes) Beispiel:

    O #STAT_1
    O #STAT_2
    S #OUT_1

    U #IN_1
    R #OUT_1

    --> Kann das so gemacht werden, auch wenn #STAT_1 und #STAT_2 mal beide 0 werden? Also #OUT_1 wird irgendwann gesetzt, weil das ODER wahr wird
    --> bleibt #OUT_1 dann gesetzt, auch wenn das ODER wieder falsch wird? Oder kann man das so nicht machen?

    Wäre natürlich ideal, wenn jemand die entsprechende Stelle aus einer Siemens-Doku zur Hand hätte und beweisen könnte, dass das so geht bzw. eben nicht geht.

    Vielen Dank im Voraus für viele hilfreiche Antworten!
    Zitieren Zitieren Out-Parameter von FB setzen  

  2. #2
    Registriert seit
    29.09.2008
    Beiträge
    68
    Danke
    10
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Ja, das funktioniert.

    Die OUT Parameter sind ja Speicherbereiche im InstanzDB und in genau diesen wird der Status von OUT_1 gespeichert. (Auch wenn #STAT_1 usw. auf null gehen -> weil eben gespeichert )

    Tja beweisen kann ich es dir nicht aber du bist gerne eingeladen dein Beispiel in vermutlich 3 Minuten selbst zu testen und zu bemerken dass es funktioniert.
    Die Erklärung hast du ja nun.

  3. #3
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.476
    Danke
    1.138
    Erhielt 1.238 Danke für 971 Beiträge

    Standard

    Es funktioniert, da der Instanz-DB das "Gedächtnis" ist.
    Beim FC geht es nicht, da benötigst du INOUT.

    Gruß
    Dieter

  4. #4
    Registriert seit
    09.08.2006
    Beiträge
    3.626
    Danke
    911
    Erhielt 656 Danke für 542 Beiträge

    Standard

    Zitat Zitat von Niemandhatmichgesehn Beitrag anzeigen
    Wäre natürlich ideal, wenn jemand die entsprechende Stelle aus einer Siemens-Doku zur Hand hätte und beweisen könnte, dass das so geht bzw. eben nicht geht.
    Was setzt Du denn ein? Step7 5.x oder Tia Portal? Im TIA Portal stimmt an der Stelle nämlich die Doku nicht

    irgendwo gabs hier mal nen Thread dazu...

    PS: Wobei man natürlich überlegen könnte, ob man das unbedingt so machen muss... ich versuche, in meinen Bausteinen die Ausgänge in jedem Aufruf auch zu beschreiben...
    Geändert von ducati (08.11.2013 um 15:17 Uhr)

  5. #5
    Registriert seit
    04.10.2012
    Beiträge
    62
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Projektierungssoftware ist Step 7 5.5.

    Ja, es ist zumindest "unschön", einen OUT zu setzen, statt per = zuzuweisen. Sollte dem SR vorgezogen werden... Habs aber schon öfters so gemacht, werde mir das wohl abgewöhnen.
    Klar, dass es beim FC nicht geht. Aber wie gesagt, wir diskutieren hier mit 4 Kollegen über das Thema, 2 (die erfahrenen) tendieren eher dazu bzw. sind sich sogar sicher, dass es NICHT geht, die beiden andern (mich eingeschlossen)
    wundern sich, dass das nicht gehen soll und denken eher, dass es funktioniert.

    Angeblich hängt es damit zusammen, dass die OUT-Variablen zwar im Instanz-DB stehen, aber vom FB irgendwie anders behandelt werden, eher so wie TEMP-Variablen. So 100% hab ichs auch nicht verstanden, warum das so sein sollte, aber es ist nun mal ihre Meinung. Ich will ja auch nicht ihre Kompetenz in Frage stellen, nur ist es eben ein Thema, was mich schwer verwundert...

    Ich habs wie gesagt auch auf anderen Anlagen schon öfters so eingesetzt und Probleme damit sind mir bisher noch nicht aufgefallen, auch im PLCSIM habs ich natürlich direkt nachgestellt --> Kein Problem. Deshalb eben, ich weiß, ich wiederhole mich, meine Unsicherheit und Verwunderung bzgl. dieses Themas...

    Und solange ich das jetzt nicht irgendwie bewiesen bekomme, wie es im Endeffekt richtig ist, bleibe ich skeptisch (auch wenn ichs gern nicht wäre ), ich meine, über 20 Jahre Programmiererfahrung der Kollegen gegen meine 3 mickrigen haben natürlich schon irgendwie eine gewisse Aussagekraft...

    Danke für die Antworten und wie gesagt, gerne mehr davon!

  6. #6
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    Bausteinparameter eines FBs liegen im IDB. Beim Aufruf eines FBs müssen deswegen nicht alle Bausteinparameter versorgt werden. Sind gewisse Bausteinparamter nicht versorgt, arbeitet der FB mit seinen alten Werten vom letzten Aufruf oder mit den Werten der Vorbelegung. Einzige Ausnahme sind die Durchgangsparameter mit zusammengesetztem Datentyp.

    Nachzulesen in jedem guten Buch (will jetzt keine Schleichwerbung betreiben )

    Ich hoffe, das konnte helfen...

    Ansonsten kannst du deinen Quellcode auch so schreiben:
    O #STAT_1
    O #STAT_2
    = #OUT_1

    oder


    O #STAT_1
    O #STAT_2
    S #OUT_1

    UN #STAT_1
    UN #STAT_2
    R #OUT_1


    Ein Auszug aus der Hilfe (hier: TIA Portal)
    Versorgung der Parameter von Funktionsbausteinen (FB)
    Bei Funktionsbausteinen werden die Parameterwerte in den Instanzdaten gespeichert.
    Wenn Ein-, Aus- oder Durchgangsparameter eines Funktionsbausteins nicht mit Werten versorgt wurden, werden die gespeicherten Werte verwendet.
    In einigen Fällen wird zwingend die Angabe eines Aktualparameters verlangt.
    Geändert von shutdown_TIA12 (08.11.2013 um 17:02 Uhr)

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

    Niemandhatmichgesehn (08.11.2013)

  8. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von Niemandhatmichgesehn Beitrag anzeigen
    Wäre natürlich ideal, wenn jemand die entsprechende Stelle aus einer Siemens-Doku zur Hand hätte und beweisen könnte, dass das so geht bzw. eben nicht geht.
    Ihr seid ja Spezialisten ... kommt denn bei Euch niemand auf die Idee (oder ist das so schwer?) sich mal ganz naheliegend die Simatic-AWL-Hilfe zur Parameterübergabe anzusehen statt wegen verschwommen-uralter Erfahrungen ergebnislos zu diskutieren?

    Zitat Zitat von Hilfe zu AWL > Parameterübergabe
    Die Parameter eines Bausteins werden als Wert übergeben. Bei Funktionsbausteinen wird innerhalb des aufgerufenen Bausteins eine Kopie des Aktualparameterwertes im Instanz-DB verwendet. [...] Vor dem Aufruf werden die INPUT-Werte in den Instanz-DB [...] kopiert. Nach dem Aufruf werden die OUTPUT-Werte zurück in die Variablen kopiert. Innerhalb des aufgerufenen Baustein arbeitet man nur auf einer Kopie.
    [...]

    Warnung

    Sorgen Sie bei der Programmierung des aufgerufenen Bausteins dafür, daß die als OUTPUT deklarierten Parameter auch beschrieben werden. Sonst sind die ausgegebenen Werte zufällig! Bei Funktionsbausteinen bekommt man den vom letzen Aufruf gemerkten Wert aus dem Instanz-DB
    (rote Hervorhebungen sind von mir)

    Also eindeutig: S/R von OUT-Variablen in FB funktioniert, weil bei FB die OUT-Variablen im IDB liegen und dadurch ein "Gedächtnis" haben.
    Trotzdem die Warnung, es auch in FB möglichst nicht zu tun - wie schnell kopiert mal jemand den "prima Code" in einen FC und da funktioniert's dann nur zufällig.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. Folgende 2 Benutzer sagen Danke zu PN/DP für den nützlichen Beitrag:

    kapo666 (08.11.2013),Niemandhatmichgesehn (08.11.2013)

  10. #8
    Registriert seit
    04.10.2012
    Beiträge
    62
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Macht es einen Unterschied, wenn die Variable in einem UDT liegt, also eigentlich #OUT_UDT.OUT_VALUE heißt?

    Also laut der Antwort von PN/DP sehe ich das aber jetzt doch anders:

    Warnung

    Sorgen Sie bei der Programmierung des aufgerufenen Bausteins dafür, daß die als OUTPUT deklarierten Parameter auch beschrieben werden. Sonst sind die ausgegebenen Werte zufällig! Bei Funktionsbausteinen bekommt man den vom letzen Aufruf gemerkten Wert aus dem Instanz-DB
    D.h., die OUT-Variable MUSS beschrieben werden, und das wird sie ja im Fall von

    O #STAT_1
    O #STAT_2
    S #OUT_1

    nicht, wenn #STAT_1 und #STAT_2 beide 0 sind! Sie wird nur beschrieben, wenn das ODER erfüllt (VKE = 1) ist! --> Folglich kann #OUT_1 Zufallswerte erhalten!
    Geändert von Niemandhatmichgesehn (08.11.2013 um 22:56 Uhr)

  11. #9
    Registriert seit
    03.07.2006
    Beiträge
    1.725
    Danke
    515
    Erhielt 303 Danke für 223 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Trotzdem die Warnung, es auch in FB möglichst nicht zu tun - wie schnell kopiert mal jemand den "prima Code" in einen FC und da funktioniert's dann nur zufällig.

    Harald
    dann ist der auch einer von den Spezialisten.
    das man nicht sofort die Hilfe liest kann ich gut verstehen aber warum man das nicht mal schnell probiert an einer Steuerung oder PLCSIM sonder lieber unter Spezialisten diskutier .... Da denk ich mir mal meinen Teil dazu

  12. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von UniMog Beitrag anzeigen
    dann ist der auch einer von den Spezialisten.
    das man nicht sofort die Hilfe liest kann ich gut verstehen aber warum man das nicht mal schnell probiert an einer Steuerung oder PLCSIM sonder lieber unter Spezialisten diskutier .... Da denk ich mir mal meinen Teil dazu
    Warum so kritisch?
    Durch die Diskussion geht das viel besser ins Gedächtnis, man versteht es vielleicht auch besser.
    Und nicht zu vergessen, genau dazu ist das Forum ja da!
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 22.01.2009, 17:30
  2. Setzen von Merkern in PLCsim
    Von Waldi_März im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 04.12.2008, 14:50
  3. Antworten: 0
    Letzter Beitrag: 26.09.2008, 11:51
  4. DB Parameter von CPU ins Programm holen
    Von ottopaul im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 27.10.2007, 15:01
  5. Antworten: 0
    Letzter Beitrag: 19.07.2004, 15:14

Stichworte

Lesezeichen

Berechtigungen

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