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

Ergebnis 1 bis 10 von 10

Thema: Unterschied temp und static

  1. #1
    Registriert seit
    04.09.2012
    Beiträge
    253
    Danke
    45
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    aus der Theorie ist bekannt: temp speichert für einen Zyklus, static für mehrere. Trotzdem ist mir irgedendwie nicht klar, wann ich eine temp- und wann eine static variable nehmen soll. Für mich irgendwie gleich.

    Kann mir jemand bitte an einem Beispiel diese Frage beantworten?


    Gruß
    Zitieren Zitieren Unterschied temp und static  

  2. #2
    Registriert seit
    03.04.2008
    Beiträge
    6.206
    Danke
    237
    Erhielt 818 Danke für 692 Beiträge

    Standard

    Wenn du etwas mehr als nur im Moment dir merken musst / willst, dann static.
    Wenn nur kurz solange das aktuell ist und zum verrechnen im selben Moment temp.
    Okay?
    So verstehe ich die verschiedenen Variablen.


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

  3. #3
    siegener19 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.09.2012
    Beiträge
    253
    Danke
    45
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von bike Beitrag anzeigen
    Wenn du etwas mehr als nur im Moment dir merken musst / willst, dann static.


    bike
    Dafür kann ich auch eine temp nehmen?!

  4. #4
    Registriert seit
    03.04.2008
    Beiträge
    6.206
    Danke
    237
    Erhielt 818 Danke für 692 Beiträge

    Standard

    Zitat Zitat von siegener19 Beitrag anzeigen
    Dafür kann ich auch eine temp nehmen?!
    Eigentlich nicht.
    Wenn du etwas dir merken musst, dann brauchst du einen Speicher.
    Der Speicher bei Siemens sind entweder DB oder Merker.(ggF auch E /A die nicht im PEA /PAA leigen, ist aber mehr als unschön )


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

  5. #5
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von bike Beitrag anzeigen
    Wenn du etwas mehr als nur im Moment dir merken musst / willst, dann static.
    Wenn nur kurz solange das aktuell ist und zum verrechnen im selben Moment temp.
    Wie wird denn der "Moment" definiert?



    Wird der Wert der Variablen im Zyklus erst zugewiesen und dann nur noch im gleichen Zyklus verwendet, ist temp möglich.
    Wird der Wert der Variablen über den Zyklus hinaus benötigt, z.B. zuerst den Wert des letzten Zyklus lesen und dann erst einen neuen zuweisen, muss die Variable statisch sein.

    Boolsche Variablen, die ihren Zustand über SETZEN/RÜCKSETZEN bekommen, müssen statisch sein.

    Im Zweifelsfall lieber statisch wählen, dann ist man auf der sicheren Seite.

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

    siegener19 (18.08.2013)

  7. #6
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.649
    Danke
    789
    Erhielt 655 Danke für 498 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Boolsche Variablen, die ihren Zustand über SETZEN/RÜCKSETZEN bekommen, müssen statisch sein.
    Müssen nicht! Es ist einfach sicherzustellen das mindestens ein S oder R vor dem ersten Lesezugriff stattfindet.

    Ich mach das öfter so
    Code:
    SET
    R #tempvar
    
    u #freigabe 
    u #automatik
    S #tempvar
    
    U #brand
    o #fingerimweg
    R #tempvar
    als kleines beispiel. So wird sie immer beschrieben und kann daher temp sein. NAtürlich könnte man das zusammenfassen und per = zuweisen. Aber manchmal ist es schöner wenn man Verknüpfungen Logisch gruppiert.

    mfG rené

  8. #7
    Registriert seit
    15.03.2013
    Beiträge
    188
    Danke
    6
    Erhielt 36 Danke für 31 Beiträge

    Standard

    Zitat Zitat von siegener19 Beitrag anzeigen
    Hallo,

    aus der Theorie ist bekannt: temp speichert für einen Zyklus, static für mehrere. Trotzdem ist mir irgedendwie nicht klar, wann ich eine temp- und wann eine static variable nehmen soll. Für mich irgendwie gleich.

    Kann mir jemand bitte an einem Beispiel diese Frage beantworten?


    Gruß
    Temp nimmst du für Variablen, die du in einem Baustein für Zwischenergebnisse brauchst, also maximal bis zum Bausteinende, denn nach dem Bausteinende wird der Speicherplatz wieder freigegeben und für Temp Variablen anderer Bausteine verwendet.
    Temp Variablen speichern also nicht für einen Zyklus, sondern nur für die Laufzeit eines Bausteins.

    Static nimmst du für Variablen, deren Wert du über die Laufzeit eines Bausteins hinaus speichern willst. Beispiele hierfür sind Zähler, Timer, Zustände von Zustandsautomaten.

    Die gemeinsame Eigenschaft von beiden ist, dass sie lokal sind, also nur dem Baustein bekannt, in dem sie definiert sind.

  9. Folgender Benutzer sagt Danke zu Mediator für den nützlichen Beitrag:

    siegener19 (18.08.2013)

  10. #8
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von vollmi Beitrag anzeigen
    Müssen nicht! Es ist einfach sicherzustellen das mindestens ein S oder R vor dem ersten Lesezugriff stattfindet.
    Ja, die berühmten Ausnahmen.

    Ich hab' überlegt, ob ich's mit dazu schreibe.
    Hielt es dann aber doch für besser, es so drastisch auszudrücken.





    Zitat Zitat von Mediator Beitrag anzeigen
    also maximal bis zum Bausteinende
    Stimmt natürlich.

    Es gibt ja auch Bausteine, die man mehrmals im Zyklus aufruft. Da kann man bei Temps auch im gleichen Zyklus nicht mehr auf die Werte eines vorigen Aufrufs zurück greifen.


    Sorry, das mich da nicht ganz korrekt ausgedrückt habe.
    Ich bin einfach davon ausgegangen, das jeder Bausteinaufruf (Instanz) im Zyklus einmalig ist (auch wenn es der gleiche Baustein ist) und daher diese Baustein-Variablen im weiteren Zyklus gar nicht mehr vorkommen, um darauf zugreifen zu können.

  11. #9
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.628
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Siehe auch hier:
    Temporäre Variable
    Gruß
    Michael

  12. #10
    Registriert seit
    20.04.2010
    Ort
    Rostock an der Warnow
    Beiträge
    47
    Danke
    7
    Erhielt 9 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren

    Vorsicht bei Verwendung von 'S' od. 'R' bei temp-Variablen.
    Wenn eine Bedingung für 'S' od. 'R' nicht erfüllt ist, behält die temp-Variable ihren zufälligen Wert
    vom Bausteinaufruf. Es sei denn, die Temp-Variable wurde vorher gesetzt - z.B. über IN/OUT Variable.

    Gruß Kalle

Ähnliche Themen

  1. Twincat 3 Sample25: Static Libary
    Von Planlos_66 im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 06.02.2013, 19:08
  2. Unterschied MP, OP und TP
    Von Jelly im Forum HMI
    Antworten: 2
    Letzter Beitrag: 11.03.2009, 14:03
  3. Unterschied S5 und S7
    Von B.E. im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 17.07.2008, 10:01
  4. S5 und temp. messung.
    Von Jan_Veenstra im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 19.03.2006, 09:41
  5. Stat und Temp Variablen
    Von Anonymous im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 13.07.2004, 11:20

Lesezeichen

Berechtigungen

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