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

Ergebnis 1 bis 1 von 1

Thema: Temporäre Variable

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Temporäre Variable

    Temporäre Variable (TEMP) sind eine Art von Variable, bei deren Verwendung viel falsch gemacht werden kann und regelmäßig wird, deshalb hier die wichtigsten Dinge über TEMP:

    TEMP sind als Zwischenspeicher für Ergebnisse gedacht, die nur innerhalb eines Bausteins gebraucht werden. Sie ersetzen die den älteren Semestern durchaus noch bekannten Schmiermerker. TEMP liegen in einem eigenen Speicherbereich innerhalb der CPU. Am Anfang eines Bausteinaufrufs wird hier Speicher für die TEMP des jeweiligen Bausteins reserviert, dieser Speicher bleibt bis zum Ende des Bausteinaufrufs reserviert und wird dann am Ende des Bausteins wieder freigegeben. Dies führt unweigerlich dazu, dass hierbei Speicher verwendet wird, in den unmittelbar vorher ein anderer Baustein seine TEMP geschrieben hat und aufgrunddessen dort beliebige Werte liegen. Daraus ergibt sich, dass man sobald man einen Baustein neu aufruft, zwingend davon ausgehen muss, dass alle TEMP einen zufälligen Zustand haben.

    Daraus ergeben sich Probleme, sobald man eine TEMP-Variable abfragt, bevor sie im jeweiligen Bausteinaufruf zugewiesen wurde oder auf andere Weise einen eindeutigen Zustand bekommen hat. Man greift zwar im TEMP-Speicher auf die richtige Adresse zu, erhält aber den Wert, den ein anderer Baustein dort abgelegt hat, also mehr oder weniger einen zufälligen Wert, es ist also so, dass TEMP nur innerhalb eines Bausteinaufrufs und dort nur nach einer wie auch immer gearteten Zuweisung einen definierten Zustand haben.

    Aus den oben genannten Gründen lassen sich TEMP nicht sinnvoll an Stellen verwenden, an denen nicht in jedem Zyklus zugewiesen wird (z.B. SR-Glieder) oder an denen die Variable vor einer Zuweisung abgefragt wird.

    Da es sich um die wohl häufigsten Fehler im Umgang mit TEMP handelt, möchte ich hier explizit darauf hinweisen:
    TEMPORÄRE VARIABLE KÖNNEN NICHT OHNE WEITERES AN SR-GLIEDERN UND FLANKENAUSWERTUNGEN VERWENDET WERDEN! DIES FÜHRT UNWEIGERLICH ZU FEHLERN!

    Um dennoch in einem FC ohne Globale Variable SR-Glieder oder Flankenauswertungen zu verwenden, kann die jeweilige Variable als INOUT definiert und von außen mit einer globalen oder statischen Variablen beschaltet werden.

    Bei verschachtelten Aufrufen gibt es keine Probleme mit Überschneidungen des TEMP-Speichers, da jeder Baustein zu Beginn des Aufrufs seinen TEMP-Speicher reserviert und diesen über den gesamten Aufruf, auch über Unteraufrufe hinweg, behält, es ist hier nur zu beachten, dass der TEMP-Bereich begrenzt ist und es dadurch bei zu vielen Unteraufrufen oder zu vielen TEMP-Variablen möglicherweise zu Problemen kommen kann, in der Regel ist dies jedoch nicht der Fall.

    Interrupts durch Alarm-OBs führen nicht zu Problemen, da jede Prioritätsklasse ihren eigenen TEMP-Speicherbereich besitzt.
    Geändert von Ralle (21.02.2013 um 12:28 Uhr) Grund: Überschrift angepaßt
    Gruß
    Michael
    Zitieren Zitieren Temporäre Variable  

  2. Folgende 15 Benutzer sagen Danke zu M-Ott für den nützlichen Beitrag:

    de vliegende hollander (24.05.2014),DeltaMikeAir (15.03.2017),elektro_mensch (06.03.2013),friendo (21.05.2015),Gleichstromer (09.11.2014),jimbojones (03.02.2017),kapo666 (09.08.2013),LOBBE1 (21.08.2014),LT005 (25.03.2013),Petri.f (19.02.2014),Ralle (21.02.2013),Rechi (22.05.2014),sgtech83 (11.10.2014),svenhuber (23.01.2017),timsen1337 (17.10.2013)

Ähnliche Themen

  1. Temporäre Variable in FC absolut adressieren
    Von rightsaidtim im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 28.11.2012, 21:32
  2. Temporäre Variable anlegen
    Von MrChiliCheese im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 05.07.2012, 17:35
  3. (an einen Admin) Account bitte löschen!
    Von akktta im Forum Stammtisch
    Antworten: 14
    Letzter Beitrag: 24.09.2011, 13:28
  4. Temporäre Variable Laden
    Von Bensen83 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.01.2010, 08:51
  5. OPC FAQ Anregungen bitte hier
    Von plc_tippser im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 18.01.2005, 11:47

Stichworte

Lesezeichen

Berechtigungen

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