# Was versteht man unter einer "statischen Variablen"?



## unbekanntster (24 März 2007)

Also es gibt dynamische globale und lokale Variablen. Das heißt sie sind lesbar und überschreibbar. Statische Variablen, z.B. bei Step7, sind definierte Konstanten. Also einmal zugewiesende Werte die nicht mehr verändert werden.

Ich glaub das ist falsch. Kann mir da einer auf eine entprechende Dokumentation verweisen. Siemenshandbuch als Ebook hab ich danach schon durchsucht. Da ist dann die Rede von statischen Daten. Ist da ein Zusammenhang?


----------



## zotos (24 März 2007)

unbekanntster schrieb:


> Also es gibt dynamische globale und lokale Variablen. Das heißt sie sind lesbar und überschreibbar. Statische Variablen, z.B. bei Step7, sind definierte Konstanten. Also einmal zugewiesende Werte die nicht mehr verändert werden.
> 
> Ich glaub das ist falsch. Kann mir da einer auf eine entprechende Dokumentation verweisen. Siemenshandbuch als Ebook hab ich danach schon durchsucht. Da ist dann die Rede von statischen Daten. Ist da ein Zusammenhang?




Leider kann ich Dir keine Doku anbieten.

Aber eine Statischevariable behält ihren Wert über den Aufruf des Bausteins hinaus.

Das gegenstück ist die Temporäre Variable.

FCs besitzen Temp und FBs Statische Variablen

Globalevariablen sind immer Statisch.

Konstanten gibt es bei der S7 glaube ich nicht zumindest keine die man selbst definieren kann.


----------



## Martin007 (24 März 2007)

Du sellst hier ja viele Fragen.
Darf man auch erfahren wofür du das alles brachust?
(Lehre, Schule, Sudium, ...)?


----------



## Unregistrierter gast (24 März 2007)

Martin007 schrieb:


> Du sellst hier ja viele Fragen.
> Darf man auch erfahren wofür du das alles brachust?
> (Lehre, Schule, Sudium, ...)?



Hat er schonmal erklärt:

*Er ist zu Faul und Dumm,* seine Hausaufgaben zu machen, und sucht jetzt "Idealisten" die das für ihn tun.


----------



## unbekanntster (25 März 2007)

Fazit: Lokale Variablen sind bei SPS'n temporäre Variablen; globale Variablen sind statische Variablen.

Sind also quasi Synonyme. Konnte sich Siemens wohl nicht entscheiden. Nutzen sie auf der einen Seite globale Instanz DB's und auf der anderen Seite reden sie von statischen Daten bzw. statischen variablen.

Also wenn da jetzt kein Widerspruch mehr kommt, nehm ich das mal so als richtig hin.

Man kann vielleicht auch sagen, weil die Variable nur innerhalb des FB's besteht ist sie nicht global, aber statisch weil die enthaltene Information nicht verloren geht und bei wiederaufruf wieder verwendet werden kann. - Kann man eigentlich sagen, das ein Merker(M) eine Variable ist? Was wäre mit Eingängen(E) und Ausgängen(A)?

Gut, danke.

PS: Fragen über mich, beantworte ich gerne per PN. - Ist immer blöd wenn man über Google in einem Forum seine Frage findet und die Antworten dann dort aber völlig am Thema vorbei gehen. Ist zwar jetzt nichts schlimmes, aber ich möchte doch gerne möglichst anonym bleiben.


----------



## zotos (25 März 2007)

Ich formuliert es noch mal neu "statische und temporäre" sowie "globale und lokale" Variablen sind Begriffe die nicht in der SPS-Welt geboren worden sind. 
 Und haben unterschiedliche Bedeutungen!

 Ob statisch oder temporär bezieht sich auf die Gültigkeit der Variable:
 Temporäre Variablen haben nur Gültigkeit für den einen Aufruf der Funktion statische Variablen behalten ihre Gültigkeit über den Aufruf hinaus.

 Ob global oder lokal steht für den Bereich wo diese Variablen zur Verfügung stehen:
 Lokale Variablen stehen nur innerhalb einer Funktion zur Verfügung und globale variablen stehen allen Funktionen zur Verfügung.

 _________________

 Planet SIMATIC:

 E/A/M (IMHO leider) auch DBs und ihre Inhalte sind Variablen die sowohl global als auch statisch sind.

 Die Variablen in einem FC die man dort deklariert (Also keine IN_OUTs) sind sowohl lokal als auch temporär. Wenn Du einen FC Aufrufst gelten die Variablen nur in dem FC und sie sind nur für diesen Aufruf gültig.

 Die Variablen die in einem FB deklariert sind statisch das bedeutet wenn Du den FB noch mal aufrufst weis er noch was der Inhalt der Variable beim letzten Aufruf war. Um genau zu sein beim letzten aufruf dieser Instanz des FBs. Da man auf diesem Planeten (SIMATIC) keine Instanz eines FBs anlegen kann geht man eben hin und ruft den FB auf mit einem Instanz DB der die Variablen die im FB deklariert sind statisch speichert. 
 Achtung!!! man kann auch quer an den Daten eines Instanz DBs manipulieren da ein DB nun mal global zur Verfügung steht das kann dann ganz übel doll in die Hose gehen. Also so was macht man eben nicht.

 Ansich ist aber eine Variable in einem FB als lokale statische Variable zu betrachten.

 _________________

 Ich hoffe das es nun verständlicher ist.


----------



## unbekanntster (25 März 2007)

Jupp, verstanden. besten Dank.


----------



## Matze83 (23 Juli 2009)

Unregistrierter gast schrieb:


> Hat er schonmal erklärt:
> 
> *Er ist zu Faul und Dumm,* seine Hausaufgaben zu machen, und sucht jetzt "Idealisten" die das für ihn tun.


 
sehr hilfreich dein beitrag...


----------



## Steve81 (23 Juli 2009)

Matze83 schrieb:


> sehr hilfreich dein beitrag...


 
Hast du eigentlich schon einmal auf das Datum der Beiträge geschaut?


----------



## rabit (27 Januar 2014)

Unregistrierter gast schrieb:


> Hat er schonmal erklärt:
> 
> *Er ist zu Faul und Dumm,* seine Hausaufgaben zu machen, und sucht jetzt "Idealisten" die das für ihn tun.



Jau und dein Beitrag ist höchst wissenschaftlich!!
Ich möchte nicht wissen was andere Leser über diesen Komentar denken.
Sowas braucht kein Mensch.


----------



## MSB (27 Januar 2014)

@rabit
Was vor allem kein Mensch braucht, das jemand einen 6 Jahre alten Beitrag mit so einem Kommentar aus dem Regal vorzieht ...


----------



## Onkel Dagobert (27 Januar 2014)

rabit schrieb:


> ..Ich möchte nicht wissen was andere Leser über diesen Komentar denken...


Schön war die Zeit  . rabit, ich weiß nicht ob der Unregistrierte auf seiner Südseeinsel Internetzugang hat. Aber wenn, dann wirst du es zu spüren bekommen  .


----------



## rabit (27 Januar 2014)

Was bedeutet schön war die Zeit? Und was werde ich spüren? Verstehe ich nicht?
Ich finde das nur schade das Leute nach Infos suchen und dann solche motivierende Komentare lesen.
Und ehrlich ich suche und suche und lese und bekomme das nicht hin.
Ich suche doch nur Hilfe wie einige andere auch dann lese ich solche nicht themabetreffende Komentare.


----------



## Onkel Dagobert (27 Januar 2014)

rabit schrieb:


> Was bedeutet schön war die Zeit? Und was werde ich spüren? Verstehe ich nicht?..


Mann, das war ein Scheherz. Der Unregistrierte Gast hatte halt seiner Zeit das gesagt, was andere höflicherweise nur dachten. Es war öfters auch mal sehr unterhaltsam. Manchen Abend konnte man mit Poppcorn und Bier am PC verbringen. Das durfte man halt nicht so eng sehen. Irgendwann hatte er nach eigenen Aussagen im Lotto gewonnen und hatte sich auf seine Südseeinsel zurück gezogen. Er wurde seit dem nie wieder gesehen.


----------



## rabit (27 Januar 2014)

Ja lach der glückliche!


----------



## Step7Neuling (26 April 2016)

es wäre doch auch richtig, zu sagen die "stat" Variable hat ihre Gültigkeit in jedem Netzwerk in einem Zyklus...
Die Temp. eben nur in diesem Netzwerk....
Sobald der Zyklus wieder von vorne beginnt, hat die "stat" auch diesen Wert nicht mehr und wird neu beschrieben...

Ist das so richtig?


----------



## Boxy (26 April 2016)

Step7Neuling schrieb:


> es wäre doch auch richtig, zu sagen die "stat" Variable hat ihre Gültigkeit in jedem Netzwerk in einem Zyklus...
> Die Temp. eben nur in diesem Netzwerk....
> Sobald der Zyklus wieder von vorne beginnt, hat die "stat" auch diesen Wert nicht mehr und wird neu beschrieben...
> 
> Ist das so richtig?



Nein ist nicht ganz richtig ...
Die Temp. eben nur in diesem Baustein! Eine Temp. Variable von einem FB/FC kann eben auch nur in diesem jeweiligen Baustein abgefragt werden, da nur temporär in diesem Baustein verfügbar.
Bei jedem Beginn/Aufruf des Bausteins wird dieser Variable "eigentlich" der Wert Null zugewiesen.

Eine stat. Variable kann auch in/über mehreren Zyklen ihre "Gültigkeit" haben solange kein neuer Wert zB zugewiesen wird, da Ihr Inhalt über die Bausteingrenzen gesichert wird.
Wie die Bezeichnung "Statisch" schon ersehen lässt, ihr Wert bleibt auch statisch vorhanden (zB Merker, Zähler, DB usw.)


----------

