# TEMP Variablen (Step7)



## Rüdiger (28 Oktober 2010)

Hallo zusammen,

wann und wofür kann ich Temp-Variablen allgemein anwenden und wofür nicht? Kann ich mit TEMP-Variablen eine Flankenauswertung in einem PC machen?

Bitte um etwas Aufklärung 

Rüdiger


----------



## MSB (28 Oktober 2010)

PC soll FC heißen?

Für eine Flankenauswertung ist eine TEMP-Variable kategorisch ungeeignet.

Du kannst in einer TEMP-Variable Werte/Ergebnisse Zwischenspeichern von Zuweisung bis FC-Ende.
Im nächsten Zyklus steht da dann potentiell irgendwas drin (undefiniert).

Mfg
Manuel


----------



## Perfektionist (28 Oktober 2010)

auch wenn die Forumskollegen gleich mich als ... bezeichnen werden: lass das mit den FC, nimm FB mit Instanz-DB und schreib erstmal primär alles in den stat-Bereich. Wenn Du damit vertraut bist, dann kannst Du drüber nachdenken, wie man mit Temps die Resourcen der SPS schont (das sind die sog. Schmiermerker aus vergangenen S5-Tagen).


----------



## vierlagig (28 Oktober 2010)

Perfektionist schrieb:


> auch wenn die Forumskollegen gleich mich als ... bezeichnen werden: lass das mit den FC, nimm FB mit Instanz-DB und schreib erstmal primär alles in den stat-Bereich. Wenn Du damit vertraut bist, dann kannst Du drüber nachdenken, wie man mit Temps die Resourcen der SPS schont (das sind die sog. Schmiermerker aus vergangenen S5-Tagen).



temps sind die schmiermerker aus s5-zeiten?
aha, interessanter ansatz ...


----------



## Perfektionist (28 Oktober 2010)

vierlagig schrieb:


> temps sind die schmiermerker aus s5-zeiten?
> aha, interessanter ansatz ...


ist es nicht so? Früher in S5-Zeiten hat man die Merker ab M200.0 als Speicherbereich für temporäre Zwischenergebnisse verwandt. Und um "man" zu spezifizieren: auch Siemens. Und wofür verwendest Du nun heute den Temp-Bereich? So, wie damals die Jungs den Schmiermerkerbereich verwandten?


----------



## vierlagig (28 Oktober 2010)

Perfektionist schrieb:


> ist es nicht so? Früher in S5-Zeiten hat man die Merker ab M200.0 als Speicherbereich für temporäre Zwischenergebnisse verwandt. Und um "man" zu spezifizieren: auch Siemens. Und wofür verwendest Du nun heute den Temp-Bereich? So, wie damals die Jungs den Schmiermerkerbereich verwandten?



ich verwende ihn für i,j,k-zählvariablen in schleifen und ähnlichen sachen, die ich nicht in einem idb haben muß.
sicher, unter s5 hätte ich dafür global adressieren müssen, aber hier muß ich es jetzt nicht mehr, also mach ich es auch nicht mehr.
so sind es in dem sinne für mich keine schmiermerker mehr, sondern schlicht und ergreifend lokale variablen.


----------



## Perfektionist (28 Oktober 2010)

eben ...

Die Schmiermerker waren nichts als der Ersatz für die nicht vorhandenen, temporären Lokalvariablen. So, und nun dreh ich den Satz etwas um, und sage: für die Schmiermerker kamen dann als Ersatz die Temps. Über das Wort "Ersatz" lässt sich nun streiten. Man könnte es auch "Erweiterung" nennen. Aber die Schmiermerker gabs halt vor den Temps.

Aber eigentlich geht es um die Fragestellung: wofür die Temps? Da sage ich: rein zur Resourcenschonung der CPU. Eine stat-Variable leistet alles, was eine Temp-Variable leistet (wenn man mal von Maximalgröße von IDB und keine Ahnung was sonst noch absieht). Umgekehrt ist es so, dass die temp-Variable die Eigenschaft der Remanenz nicht hat. Also beim nächsten Durchlauf des Programmbausteins zunächst initialisiert werden muss, bevor sie sinnvoll verwendet werden kann.

Wenn also die Frage lautet:





> wofür kann ich Temp-Variablen allgemein anwenden


so lautet eine durchaus zutreffende Antwort:





> ich verwende ihn für i,j,k-zählvariablen in schleifen und ähnlichen sachen, ...


ja, und dann sind da die Dinge, die ich in einem IDB haben muss: z.B. die Flankenmerker. Eben die Werte, die bis zum nächsten Durchlauf erhalten bleiben müssen.


----------



## Paule (28 Oktober 2010)

Perfektionist schrieb:


> Aber eigentlich geht es um die Fragestellung: wofür die Temps? Da sage ich: rein zur Resourcenschonung der CPU.


Nicht nur, auch um die Geschwindigkeit beim Programmieren, gerade bei der Inbetriebnahme.
Ich brauche noch schnell ein Zwischenergebnis, also Temp Variable anlegen und rüber damit, saubere Sache und funktioniert. 
Für so etwas will ich natürlich kein Merkerwort nehmen und dieses in der Referenzliste auf Verfügbarkeit prüfen und in der Symboltabelle benennen.
Klar könnte ich auch eine Statische Variable anlegen und dann das ganze Prozedere absolvieren: DB neu generieren, Konsistenzprüfung ablaufen lassen, Bausteine vergleichen könnten sich ja Zugriffe verschoben haben da, wie Du selber auch schon mal geschrieben hast“, Querzugriffe ja wahrscheinlich sind.

OK, wenn die neue Variable immer hinten angehängt wird kann davon ausgegangen werden, dass keine Verschiebungen entstehen solange nicht mit Multiinstanzen gearbeitet wird.
Aber der Deklarationsteil sieht dann halt nicht wirklich professionell aus.

```
[COLOR=black][FONT=Verdana] BOOL[/FONT][/COLOR]
[COLOR=black][FONT=Verdana] BOOL[/FONT][/COLOR]
[COLOR=black][FONT=Verdana] INT[/FONT][/COLOR]
[COLOR=black][FONT=Verdana] BOOL[/FONT][/COLOR]
[COLOR=black][FONT=Verdana] FB x[/FONT][/COLOR]
[COLOR=black][FONT=Verdana] BOOL[/FONT][/COLOR]
```


----------

