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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 27

Thema: Unerklärliche Funktion FC226

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Die erste Bedingung.
    Was mir noch eingefallen ist , der FC 226 wird in vier anderen Zonen unter gleichen Bedingungen aufgerufen. Dort taucht der Fehler nicht auf.
    Dieter

  2. #12
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.260
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Zitat Zitat von werker Beitrag anzeigen
    Die erste Bedingung.
    Was mir noch eingefallen ist , der FC 226 wird in vier anderen Zonen unter gleichen Bedingungen aufgerufen. Dort taucht der Fehler nicht auf.
    Dieter
    Ja, das ist durchaus möglich, im Siemenstext steht ja auch sinngemäß "kann das Ergebnis zufällig sein". Das liegt daran, dass das Ergebnis ja im lokalen Speicher liegt. Wenn nun keine andere Funktion im Programm genau diesen lokalen Speicher auch mit irgendwelchen Daten beschreibt, dann greift deine Funktion beim nächsten Aufruf tatsächlich wieder auf dieses Bit zu und das ist dann auch 0 oder 1 wie vorher. Sicher kann man aber nicht sein, daher geht es halt manchmal und manchmal nicht.
    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

  3. #13
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.752
    Danke
    323
    Erhielt 1.526 Danke für 1.286 Beiträge

    Standard

    Also im Prinzip ist der Beitrag von Sarek zwar richtig, aber:

    Wenn an einem FC an einer Variable ein E, A, M, oder DBX(B,W,D) steht, dann ist letzten Endes jede Variable her vom Verhalten IN-OUT.
    Lediglich beim Vollqualifizierten DB-Zugriff ala DB10.DBX10.0 wäre das ein Problem.

    Also wie auch immer, das Problem liegt 100% sicher nicht an der Programmierart der OUT-Variable "STOM".

    P.S. Warum steht hier: http://support.automation.siemens.com/WW/view/de/189227

    Mfg
    Manuel
    Geändert von MSB (15.03.2013 um 18:50 Uhr)
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  4. #14
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.260
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    @MSB

    Ich kann nicht nachvollziehen, was genau du meinst.

    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.
    Das hier sagt eigentlich alles aus.

    Dazu kommt noch der Hinweis, das "S" und "R" bei VKE = 0 nichts bewirken, also einer Output-Variable nichts zuweisen.
    Genau das passiert im FC des TE.
    Demzufolge ist jede Outputvariable, der nicht explizit im FC etwas zugewiesen wird unbestimmt.
    Im günstigaten Fall belibt der Wert der letzten Zuweisung erhalten, wenn kein anderer Baustein die Lokaldaten verändert.
    Dann scheint alles normal zu funktionieren. Eine ganz netter Fallstrick; leider.
    Das liegt natürlich daran, wie man das im FC programmiert, aber was da außen an der Variablen anliegt, spielt m.E. nach keine Rolle.
    Der von dir verlinkte Beitrag sagt das ja auch aus.
    Geändert von Ralle (15.03.2013 um 19:18 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

  5. #15
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.752
    Danke
    323
    Erhielt 1.526 Danke für 1.286 Beiträge

    Standard

    @Ralle
    Elementare Parameter die mit EAM und einfachen DB Zugriffen beschrieben werden landen eben NICHT im Lokalstack, und sind somit auch nicht davon betroffen.
    Diese werden direkt mit P#EAMDBX übergeben, somit wird innerhalb des FC DIREKT auf den jeweiligen Operanden oder auch gelesen.

    Siehe:

    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).
    Da das ganze dann eben nicht über den Lokaldatenstack abläuft, kann es auch zu keinem Zeitpunkt "zufällige" Werte geben.

    Mfg
    Manuel
    Geändert von MSB (15.03.2013 um 19:51 Uhr)
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  6. Folgender Benutzer sagt Danke zu MSB für den nützlichen Beitrag:

    Ralle (15.03.2013)

  7. #16
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.260
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Ahhh, hier steht es ja auch in Sareks Auszug aus der Step7 Hilfe:

    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.
    Das gilt also für DB-Zugriffe (qualifiziert) und Lokaldaten des aufrufenden Bausteins.

    Dann ist im Falle des TE (der hat einen Merker verwendet) tatsächlich die Ursache eine andere. Wobei man nun wieder neu suchen muß...

    Ich heut nicht mehr, ich gehe heute zu einem echten kanadischen Eishockeyspiel.
    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. #17
    Registriert seit
    05.01.2009
    Ort
    69198 Schriesheim
    Beiträge
    236
    Danke
    54
    Erhielt 34 Danke für 33 Beiträge

    Standard

    Ich glaub dein Bock liegt schon in DB150.DBW12, wo und wie wird das gebildet ?

    gruß Thomas
    Radiozitat: "Meine Frau hat nen geilen Arsch, nämlich mich"

  9. #18
    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
    Jetzt habt ihr mich aber schwindelig geschrieben. Ist es richtig, nur wenn #E2 da ist, kann #STOM kommen..., können wir nochmal neu anfangen ?
    Dieter

  10. #19
    Registriert seit
    03.04.2008
    Beiträge
    6.205
    Danke
    237
    Erhielt 817 Danke für 691 Beiträge

    Standard

    Ja so ist es.
    Der SPS Analyser gibt nicht immer alles wieder, das ist dir klar?
    Ist mir auch schon passiert,dass ich mich auf den Analyser verlassen habe und dieser ab und an eine Impuls nicht mitgeschrieben hat.
    Wobei du nicht so echt genau geschrieben hast, welches Problem an der Anlage besteht.

    Schreib dir eine Fangschaltung, dann bist du sicher, da diese ja ebenfalls zyklisch abgearbeitet wird


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  11. Folgender Benutzer sagt Danke zu bike für den nützlichen Beitrag:

    thomas_1975 (17.03.2013)

  12. #20
    Registriert seit
    05.01.2009
    Ort
    69198 Schriesheim
    Beiträge
    236
    Danke
    54
    Erhielt 34 Danke für 33 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Okay,
    also du hast schon recht, #Stom kann seinen Zustand eigentlich nur ändern wenn:
    1. m0.3 ( reset ) zwingt #stom nach log.0 voraussetzung ist natürlich, das im gleichen Zyklus nicht m53.6
    auf high zur Prüfung ist. Denn wenn dieser auf High ist würde #stom erst rückgesetzt werden und dann in mit m53.6 in die nächste Prüfung gehen.

    Code:
    U M 0.3 M0.3 -- Störung quittieren  //bei log.1
    R #STOM                     //rücksetze stom
    UN #E1                        //und nicht In E1 ( m53.5 )
    UN #E2                        //und nicht In E2  ( m53.6 )
    SPB M001                    //Sprung zum beenden
    U #E1                         //und E1
    SPB M002                    //Sprungziel m002
    U #E2                          //und E2
    SPB M003                    //Sprungziel m003
    M002: L #AKT_TEMP    //Marke m002 laden der aktuellen Temperatur
    L #DT_WERT                //lade in DT_Wert ( in diesem Fall 10 )
    +I                                //addiere Int
    T #VERG_TEMP            //transfer in diesem Fall nach mw192
    SPA M001                    //Sprung zum beenden
    M003: L #AKT_TEMP    //Marke m003 laden der aktuellen Temperatur
    L #VERG_TEMP            //Lade Wert in diesem Fall aus mw192
    <I                               //vergleich #akt_temp ( Db150.DBW12 ) < #VERG_TEMP ( mw192 )
    = #STOM                    //zuweisen von #stom
    M001: NOP 0
    Ah eben, lese ich bike´s beitrag, kenne den Analyser nicht.
    Die Auswertung des Analysers hat mich halt extrem geschickt, da DB150.DBW12 in der Auswertung meist gar nicht geschrieben wird.
    Das Problem das der Ersteller hat, ist imho M53.7 nimmt wird willkürlich High ohne die Auswertung durch M53.6 angestossen zu haben.
    Der Analyser gefällt mir , wenn es funzt jedenfalls.

    gruß Thomas
    Radiozitat: "Meine Frau hat nen geilen Arsch, nämlich mich"

Ä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
  •