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

Ergebnis 1 bis 10 von 10

Thema: Setzen von bool´schen Ausgangsparametern bei FC´s

  1. #1
    Registriert seit
    01.05.2008
    Beiträge
    93
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich verstehe momentan nicht, warum folgendes Konstrukt funktioniert:

    Ich habe einen FC und setze in diesem einen bool´schen Ausgangsparameter.
    Und dieser bleibt gesetzt. Aber nur warum? - Ich sehe die Outs wie Temp-Variablen
    an. Die also am Ende des Bausteins ihren Zustand wieder "verlieren".

    Anbei mal ein Beispiel

    Bild002.jpg
    mfg
    Helmi
    Zitieren Zitieren Setzen von bool´schen Ausgangsparametern bei FC´s  

  2. #2
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 918 Danke für 740 Beiträge

    Standard

    Zitat Zitat von HelmiMUC Beitrag anzeigen
    Ich sehe die Outs wie Temp-Variablen
    an. Die also am Ende des Bausteins ihren Zustand wieder "verlieren".
    Ja, genau.
    Und genau wie bei den Temps ist ihr Zustand ohne Zuweisung undefiniert und kann damit eben auch 1 sein.

    Und Setzen/Rücksetzen ist nun mal keine Zuweisung, da der Aufruf nur bedingt stattfindet.

  3. #3
    Registriert seit
    13.10.2007
    Beiträge
    12.032
    Danke
    2.787
    Erhielt 3.268 Danke für 2.156 Beiträge

    Standard

    Zitat Zitat von HelmiMUC Beitrag anzeigen
    Hallo,

    ich verstehe momentan nicht, warum folgendes Konstrukt funktioniert:

    Ich habe einen FC und setze in diesem einen bool´schen Ausgangsparameter.
    Und dieser bleibt gesetzt. Aber nur warum? - Ich sehe die Outs wie Temp-Variablen
    an. Die also am Ende des Bausteins ihren Zustand wieder "verlieren".

    Anbei mal ein Beispiel

    Bild002.jpg
    Der Ausgang (A100.0) den du gesetzt hast, ist aber Global
    und bleibt gesetzt bist du ihn wieder zurücksetzt. Was du in
    deiner Online Ansicht des FC18 siehst, ist der Zustand mit dem
    angelegten Variablen E100.0; E100.1 und A100.0 (wenn du den
    Baustein nur einmal im Programm verwendest)

  4. #4
    Registriert seit
    01.05.2008
    Beiträge
    93
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von rostiger Nagel Beitrag anzeigen
    Der Ausgang (A100.0) den du gesetzt hast, ist aber Global
    und bleibt gesetzt bist du ihn wieder zurücksetzt. Was du in
    deiner Online Ansicht des FC18 siehst, ist der Zustand mit dem
    angelegten Variablen E100.0; E100.1 und A100.0 (wenn du den
    Baustein nur einmal im Programm verwendest)
    Danke für die Erklärung!

    Ich habe nun mal an den OUT-Parameter des FC´s eine Temp-Variable des aufrufenden
    Bausteins gehängt und im nächsten Netzwerk die Temp-Variable auf den Ausgang gesetzt.

    Das Verhalten ist das gleiche - aber warum funktionierts auch mit der Temp-Variablen?
    (auch ohne dem Beschreiben des Ausgangs durch die Temp-Variable funktionierts)
    mfg
    Helmi

  5. #5
    Registriert seit
    13.10.2007
    Beiträge
    12.032
    Danke
    2.787
    Erhielt 3.268 Danke für 2.156 Beiträge

    Standard

    Das kann mit Temponären Variablen funktionieren, wenn dieser
    Speicherbereich im Programm an anderer Stelle nicht noch einmal
    verwendet wird bzw überschrieben wird. Der Temponäre Speicherbereich
    wird geteilt, mal verwendet der Baustein ihn mal ein anderer.
    Deshalb solltest du den temporären Speicherbereich nur innerhalb eines
    Bausteins verwenden, über Bausteingrenzen kann muß er aber nicht stabil
    sein.

  6. #6
    Registriert seit
    01.05.2008
    Beiträge
    93
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    also sollte man auf das Setzen von Ausgängen verzichten, da es nicht sicher ist, dass der Speicherbereich immer der Gleiche ist?
    mfg
    Helmi

  7. #7
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 918 Danke für 740 Beiträge

    Standard

    Zitat Zitat von HelmiMUC Beitrag anzeigen
    also sollte man auf das Setzen von Ausgängen verzichten, da es nicht sicher ist, dass der Speicherbereich immer der Gleiche ist?
    Nö, sondern man sollte an dieser Stelle nicht OUT sondern IN/OUT verwenden. So bekommt der Ausgang beim Aufruf des Bausteins einen definierten Zustand (meist den aus dem letzten Zyklus).

  8. #8
    Registriert seit
    01.05.2008
    Beiträge
    93
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Nö, sondern man sollte an dieser Stelle nicht OUT sondern IN/OUT verwenden. So bekommt der Ausgang beim Aufruf des Bausteins einen definierten Zustand (meist den aus dem letzten Zyklus).
    klingt logisch, Danke!
    mfg
    Helmi

  9. #9
    Registriert seit
    13.10.2007
    Beiträge
    12.032
    Danke
    2.787
    Erhielt 3.268 Danke für 2.156 Beiträge

    Standard

    Du solltest beim setzen bzw. zuweisen von Temponären Variablen vorsichtig sein,
    weil an andrer stelle in einen langen Programm ein andrer Baustein auf diesen
    Speicherbereich zugreifen kann.

    Bei deinen FC ist es ja so das du den lokalen IN, OUT und INOUT Variablen zuweist,
    die dann in deinen fall ja sogar globale Variablen sind.

    Um es zu verstehen Rufe doch deinen FC zweimal auf mit unterschiedlichen globalen
    Variablen auf und beobachte ihn.

  10. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.181
    Danke
    923
    Erhielt 3.288 Danke für 2.657 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Der Out des FC funktioniert und bleibt gesetzt, weil "außen" beim Bausteinaufruf als Aktualoperand ein Ausgang (A100.0) angeschaltet ist.
    Zitat Zitat von Hilfe zu AWL > Parameterübergabe
    Wenn Merker, Eingänge, Ausgänge, Peripherieeingänge oder Peripherieausgänge als Aktualoperanden an einer Funktion verwendet werden, werden diese anders behandelt als die anderen Operanden. Die Aktualisierung erfolgt hier nicht über den L-Stack, sondern direkt.
    Der aufgerufene Baustein kann aber nicht erkennen, ob der Aktualparameter eine Variable aus diesen speziellen Speicherbereichen ist oder ein DBXa.b oder ein La.b, daher sollte man immer so programmieren, als ob es diese Siemens-Ausnahmeregel nicht gäbe.
    Zitat Zitat von Hilfe zu AWL > Parameterübergabe
    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, bei Funktionen den zufällig auf dem L-Stack liegenden Wert.
    Soll ein Übergabeparameter Informationen in den FC bringen dann muß das ein IN-Parameter sein.
    Soll er Informationen aus dem FC bringen, dann muß das ein OUT-Parameter sein.
    Soll er zunächst Informationen in den FC bringen (das Wissen des aktuellen Zustands) und anschließend den eventuell veränderten Zustand aus dem FC speichern, dann muß das logischerweise ein IN_OUT-Parameter sein.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. DB20 (0.0 BOOL) als Ausgang bzw. TRUE setzen wie?
    Von superkato im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 11.05.2011, 00:41
  2. Multiplex-Variable vom Typ Bool setzen?
    Von mercury_26 im Forum HMI
    Antworten: 16
    Letzter Beitrag: 20.04.2011, 09:35
  3. bool Eingang "True" setzen - wie??
    Von hugo_83 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 07.07.2010, 22:33
  4. Verwendung von BOOL
    Von Lipperlandstern im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 13.03.2008, 13:09
  5. Bool-Variable setzen/rücksetzen
    Von Supervisor im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 18.07.2006, 12:29

Lesezeichen

Berechtigungen

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