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

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

Thema: Unerklärliche Funktion FC226

  1. #1
    Registriert seit
    13.01.2008
    Beiträge
    31
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    bin bei der Fehlersuche in einem Projekt auf folgendes Phänomen gestoßen:

    Nach meinem Verständnis des FC226 darf der Merker 53.7 nur kommen, wenn der Merker 53.6 da war.
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren Unerklärliche Funktion FC226  

  2. #2
    Registriert seit
    05.06.2006
    Ort
    PLZ 97xxx
    Beiträge
    274
    Danke
    31
    Erhielt 44 Danke für 36 Beiträge

    Standard

    #STOM ist eine OUT-Variable
    => diese muß beschrieben werden sonst kann "Schrott" drinstehen (aus L-Stack)

  3. Folgender Benutzer sagt Danke zu Sarek für den nützlichen Beitrag:

    werker (15.03.2013)

  4. #3
    Registriert seit
    05.06.2006
    Ort
    PLZ 97xxx
    Beiträge
    274
    Danke
    31
    Erhielt 44 Danke für 36 Beiträge

    Standard

    siehe auch STE7-Hilfe


    Wichtiger Unterschied bei Ausgangsparametern von FC und FB
    In Funktionsbausteinen (FB) wird beim Zugriff auf Parameter die Kopie des Aktualparameters im Instanz-DB verwendet. Wird beim Aufruf eines FB ein Eingangsparameter nicht übergegeben bzw. im Baustein ein Ausgangsparameter nicht beschrieben, so werden die im Instanz-DB noch vorhandenen älteren Werte weiter verwendet (Instanz-DB = Gedächtnis des FB).
    Funktionen (FC) haben kein Gedächtnis. Die Versorgung der Formalparameter ist deshalb im Gegensatz zum FB nicht optional, sondern zwingend erforderlich. Der Zugriff auf FC-Parameter erfolgt über Adressen (bereichsübergreifende Zeiger). Wird als Aktualparameter ein Operand aus dem Bereich Daten (Datenbaustein) oder eine lokale Variable des rufenden Bausteins verwendet, wird für die Parameterübergabe eine Kopie des Aktualparameters in den Lokaldaten des rufenden Bausteins temporär gespeichert.

    Achtung
    Wird in einem solchen Fall ein OUTPUT Parmeter in einem FC nicht beschrieben, können die ausgegebenen Werte zufällig sein!
    Der für die Kopie bereitgestellte Bereich in den Lokaldaten des rufenden Bausteins wird mangels Zuweisung an den OUTPUT Parmeter nicht beschrieben und bleibt somit unverändert. Damit wird zufällig der in diesem Bereich stehende Wert ausgegeben, da Lokaldaten nicht automatisch mit z. B. 0 vorbelegt sind.


    Beachten Sie deshalb Folgendes:

    • Initialisieren Sie wenn möglich OUTPUT Parameter.
    • Setze- und Rücksetze-Befehle sind VKE-abhängig. Wird mit diesen Befehlen der Wert eines OUTPUT Parameters ermittelt, wird bei VKE = 0 kein Wert gebildet.
    • Achten Sie darauf, dass - unabhängig von allen möglichen Programmpfaden innerhalb des Bausteins - die OUTPUT-Parameter auf jeden Fall beschrieben werden. Beachten Sie hierbei insbesondere Sprungbefehle sowie den ENO-Ausgang in KOP und FUP. Denken Sie auch an BEB und die Wirkung der MCR-Befehle.


    Hinweis
    Bei OUTPUT-Parametern eines FB bzw. INOUT-Parametern eines FC und FB können die ausgegebenen Werte zwar nicht zufällig sein, da hier ohne Beschreibung des Parameters der alte Ausgangswert bzw. der Eingangswert als Ausgangswert erhalten bleibt. Dennoch sollten Sie auch hier die oben gegebenen Hinweise beachten, um nicht unbeabsichtigt "alte" Werte weiter zu verarbeiten.

  5. #4
    werker ist offline Benutzer
    Themenstarter
    Registriert seit
    13.01.2008
    Beiträge
    31
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo
    Vielen Dank für die ausführliche Antwort.

    UN #E1
    UN #E2
    R. #STOM
    SPA M001

    Wäre das eine Lösung

    Gruß

  6. #5
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Nein!
    Wenn man davon ausgeht, dass der Programmierer die richtige Idee hatte, aber einfach nur nicht programmieren konnte sollte man aus dem FC einen FB machen und mit IDB aufrufen.

  7. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Du kannst auch #STOM zu eier INOUT-Variablen machen, dann wird deren Zustand praktisch in der außen angelegten Variablen gespeichert. Ich nutze bei FC fast nur IN und INOUT, um genau das von Sarek dargelegte Problem zu umgehen.

    PS. Dann darf aber natürlich außen an STOM auch keine lokale Variable angelegt werden!!!! Bei dir, mit einem Merker, sollte es funktionieren.
    Geändert von Ralle (15.03.2013 um 16:19 Uhr)
    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

  8. #7
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Hast Du Angst vor DB's, Ralle?

  9. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von borromeus Beitrag anzeigen
    Hast Du Angst vor DB's, Ralle?
    LOL, in gewissem Sinne schon, besonders, wenn es auch ohne geht! Die vielen IDB, das ständige "neu generieren" nervt ein wenig.
    Ich nutze FB recht sparsam, stimmt, wird aber langsam mehr.
    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

  10. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    borromeus (15.03.2013)

  11. #9
    werker ist offline Benutzer
    Themenstarter
    Registriert seit
    13.01.2008
    Beiträge
    31
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich muß gestehen, da fehlen mir Einiges an Wissen.
    Laut Analyzer, dachte ich schon, daß an dem Baustein etwas faul ist.
    Es gibt noch einen zweiten Fehler, daß sporadisch die erwartete Temperaturänderung nicht erfolgt.
    Deshalb steht in Moment 0 am Baustein.
    (Betriebselektriker)
    Gibt es eine einfache Lösung

    Dieter

  12. #10
    Registriert seit
    05.06.2006
    Ort
    PLZ 97xxx
    Beiträge
    274
    Danke
    31
    Erhielt 44 Danke für 36 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wobei man aber nicht genau weiß was der Baustein eigentlich machen soll,
    bzw. das bisher programmierte überhaupt richtig ist.

    Soll #STOM speichernd sein wenn er aufgetreten ist und dann nur mit M0.3 gelöscht werden?
    Soll #STOM auch bei E1=1 (Temperatur einfrieren) gelöscht werden?
    Soll #STOM auch bei E2=0 (Temperatur nicht vergleichen) gelöscht werden?

    der M0.3 hat auch nichts im Baustein zu suchen, er sollte auch nach aussen gelegt werden.

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 04.01.2012, 07:45
  2. Funktion AnalyzeExpression
    Von bonatus im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 22.06.2009, 15:13
  3. Funktion
    Von Placidjam im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 07.05.2009, 15:26
  4. arcsin() Funktion
    Von volta im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 26.12.2007, 13:51
  5. Funktion
    Von isensa im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 26.07.2006, 18:07

Lesezeichen

Berechtigungen

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