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

Ergebnis 1 bis 7 von 7

Thema: Verwendung von BOOL

  1. #1
    Registriert seit
    06.01.2005
    Ort
    im schönen Lipperland
    Beiträge
    4.494
    Danke
    502
    Erhielt 1.145 Danke für 738 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen.

    Ich habe den Baustein FC10 zur Laufzeitüberwachung (siehe Anhang)

    Trage ich bei LS (Ausgang des Bausteins) einen Merker ein geht das wunderbar, auch mit einer Lokalvariable gibt es kein Problem.
    Nur wenn ich ein BOOL nach DB101.DBX16.0 klappt es nicht. Schreibe ich ein Anfang des Bausteins ein OPN DB101 und schreibe dann an den LS ein DBX16.0 funktioniert es wieder........

    Hat jemand ne Idee ?????

    Anzumerken ist das der Ausgang LS gesetzt wird.
    Angehängte Grafiken Angehängte Grafiken
    Früher gab es Peitschen .... heute Terminkalender
    Zitieren Zitieren Verwendung von BOOL  

  2. #2
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 183 Danke für 168 Beiträge

    Standard

    Hallo!

    Was funktioniert nicht?
    Wird das Datenbausteinbit nicht gesetzt oder lässt sich das DBx.DBXy nicht anschreiben an dein Baustein?

    Poste mal den Bausteinaufruf in AWL mit dem Datenbausteinbit (wenn es sich anschreiben lässt)

    godi

  3. #3
    Avatar von Lipperlandstern
    Lipperlandstern ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.01.2005
    Ort
    im schönen Lipperland
    Beiträge
    4.494
    Danke
    502
    Erhielt 1.145 Danke für 738 Beiträge

    Standard

    Ach so.... Das Bit zB DB101.DBX16.0 bleibt durch den FC10 gesetzt obwohl die Setzbedingenungen nicht mehr da sind und das Bit zurückgesetzt wurde.


    Dieses "Phenomen" tritt bei Merkern nicht auf.
    Früher gab es Peitschen .... heute Terminkalender

  4. #4
    Registriert seit
    30.08.2003
    Beiträge
    2.197
    Danke
    30
    Erhielt 258 Danke für 229 Beiträge

    Standard

    nicht zyklische Zuweisungen (dazu gehört auch S/R) in Bausteinen auf OUT bringen meist Probleme. Besser man nimmt für sowas IN_OUT oder macht es anders.

    André
    www.raeppel.de
    mit innovativen SPS-Tools schneller ans Ziel ....
    Zitieren Zitieren Problem  

  5. Folgender Benutzer sagt Danke zu sps-concept für den nützlichen Beitrag:

    Lipperlandstern (13.03.2008)

  6. #5
    Avatar von Lipperlandstern
    Lipperlandstern ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.01.2005
    Ort
    im schönen Lipperland
    Beiträge
    4.494
    Danke
    502
    Erhielt 1.145 Danke für 738 Beiträge

    Standard

    Zitat Zitat von sps-concept Beitrag anzeigen
    nicht zyklische Zuweisungen (dazu gehört auch S/R) in Bausteinen auf OUT bringen meist Probleme. Besser man nimmt für sowas IN_OUT oder macht es anders.

    André
    Hab das mal gerade geändert und es funktioniert.... Verstehe zwar nicht so ganz warum aber das bekomme ich bestimmt noch erklärt
    Früher gab es Peitschen .... heute Terminkalender

  7. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Bei IN_OUT verwendest du einen Pointer auf deine tatsächliche Variable ...

    Gruß
    Ralf

  8. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Dagobert (13.03.2008)

  9. #7
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Siehe dazu die folgende Siemens-FAQ:

    Warum liefert eine Funktion bei den OUT-Parametern sporadisch falsche Rückgabewerte und was ist bei der Parametrierung der Ein- und Ausgangsparameter zu beachten?

    2. Versorgung der elementaren Ein- und Ausgangsparameter

    Bei der Versorgung von elementaren Formalparametern (z.B. die Datentypen BOOL, BYTE, WORD oder DWORD) der Schnittstelle einer Funktion sind zwei Fälle zu unterscheiden.
    1. Der elementare Formalparameter wird mit einem Merker, einem Ein- oder Ausgang aus dem Prozessabbild oder aus dem Lokaldatenstack (L-Stack) des aufrufenden Bausteines versorgt.
      In diesem Fall arbeitet der Code der Funktion mit einem bereichsübergreifenden Zeiger direkt(!) auf diesen elementaren Aktualparametern (z.B. P#E0.0, P#M0.0).
    2. Der elementare Formalparameter wird mit einer Konstanten oder einem Datenbausteinelement versorgt.
      In diesem Fall wird der Wert des Aktualparameters vor dem Aufruf der Funktion in den L-Stack des aufrufenden Bausteines kopiert. Der Code der Funktion arbeitet dann mit einem bereichsübergreifenden Zeiger auf diesen Lokaldatenbereich des aufrufenden Bausteines.
      Beachten Sie bitte, dass bei Ausgangsparametern keine Initialisierung erfolgt und die Eingangsparameter nicht gelöscht werden. Deshalb ist in diesem Fall darauf zu achten, dass Eingänge nur gelesen und Ausgänge in jedem Zyklus geschrieben werden. Bei Befehlen wie "S" oder "R" wird das Signal nur abhängig vom VKE geschrieben. Deshalb sollten Sie diese Befehle durch die Zuweisung "=" ersetzen oder die Werte vor der Abfrage initialisieren.
      Wenn Sie das Beschreiben der Werte nicht in jedem Zyklus sicherstellen können, sollten Sie einen IN/OUT- Parameter verwenden.
    Abhilfe:
    • Wenn bei einem FC eine OUTPUT-Variable beim Aufruf mit einer DB-Adresse versorgt und diese OUTPUT-Variable im FC anschließend mittels Setz- bzw. Rücksetz-Befehl in einen definierten Zustand gesetzt werden soll, so führt der Aufruf dazu, dass der S- bzw. R-Befehl sich wie ein =-Befehl auswirkt. Die Ursache hierfür liegt darin, dass die beim FC-Aufruf mit DB-Adressen versorgten OUTPUT-Variablen beim Aufruf über den L-Stack versorgt werden. Sollte nun die Bedingung für den R- bzw. S-Befehl nicht mehr erfüllt sein, wird die OUTPUT-Variable nicht mehr beschrieben. Somit wird die DB-Zelle mit einem zufällig in dieser Lokal-Stack-Adresse stehenden Wert versorgt. In diesem Fall empfehlen wir Ihnen als Abhilfe die OUTPUT-Variable durch eine IN/OUT-Variable zu ersetzten. Dadurch wird die Lokal-Stack-Adresse vor dem Aufruf durch den Inhalt der DB-Adresse definiert vorbelegt.
    • Das Verhalten kann auch auftreten, wenn der FC mehrfach aufgerufen wird und/oder DB-Variablen als Aktualwerte benutzt werden. Beachten Sie dabei bitte die Hinweise aus der STEP 7-Onlinehilfe "Vermeiden von Fehlern beim Aufruf von Bausteinen". Die OUT-Parameter in einem FC müssen bei jedem Bausteinaufruf im Zyklus beschrieben werden.
    Gruß Kai

Ähnliche Themen

  1. Verwendung von Webservices?
    Von newbe im Forum Hochsprachen - OPC
    Antworten: 9
    Letzter Beitrag: 23.02.2016, 11:25
  2. S5 Datenbaustein verwendung
    Von CZach001 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 17.09.2010, 22:34
  3. Zyklisch bei Verwendung
    Von Earny im Forum HMI
    Antworten: 5
    Letzter Beitrag: 13.01.2010, 08:22
  4. Anfangswerden bei verwendung von UDT's in DB
    Von kiestumpe im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 22.03.2006, 16:25
  5. Verwendung von FB
    Von drfunfrock im Forum Programmierstrategien
    Antworten: 0
    Letzter Beitrag: 22.11.2005, 13:40

Lesezeichen

Berechtigungen

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