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

Results 1 to 1 of 1

Thread: Temporäre Variable

  1. #1
    Join Date
    30.10.2009
    Location
    10 km vom Herzen der Natur
    Posts
    1,725
    Danke
    139
    Erhielt 359 Danke für 270 Beiträge

    Default


    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.
    Last edited by Ralle; 21.02.2013 at 12:28. Reason: Überschrift angepaßt
    Gruß
    Michael
    Reply With Quote Reply With Quote Temporäre Variable  

  2. Folgende 16 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),Thors (11.10.2018),timsen1337 (17.10.2013)

Similar Threads

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

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •