Stat und Temp Variablen

A

Anonymous

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,

ich bin auf der Suche nach einem Beispiel für Temp und Stat Variablen.

Um mein Verständnisproblem genauer zu beschreiben folgendes:

Ich bearbeite gerade im Selbststudium ein Buch der Firma Siemens.
Zurzeit bin ich beim Thema Ablaufsteuerungen.

Und nun folgendes, bei den Ablaufsteuerung in den Beispielen werden die Einzelschritte immer als Stat Variablen deklariert, dies müsste doch eigentlich auch mit Temp Variablen funktionieren solange wie ich den Baustein nicht über den EN Eingang die Freigabe nehme.

Also müsste sich die Ablaufkette doch den letzten Zustand merken können und ganz normal funktionieren.

Oder befinde ich mich auf dem Holzweg?

Am meisten würde ich über eine kurze erklärung anhand eines Beispiel freuen.

Danke im vorraus.
 

Markus

Administrator
Teammitglied
Beiträge
5.267
Punkte Reaktionen
1.302
die sps arbeitet zyklisch

in jedem zyklus wid das programm einmal abgearbeitet.

den datebereich in dem die temp variablen liegen benutzt jeder baustein.

wenn den baustein mit der sk im abgeabrebtiet wurde, dann wir der nächste baustein bearbeitet. der nutz dann wieder den bereich der temp variablen.

bereits jetzt stehen in dem bereich andere daten drin.

wenn im nächsten zyklus dein programm wieder zu dem baustein zurückkommt dann haben alle bausteine die im programm aufgerufen wurden diesen bereich genutzt und überschrieben.
 

plc_tippser

Well-known member
Beiträge
2.500
Punkte Reaktionen
301
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo Giovanni,

hinzufügen möchte ich nur kurz den Sinn solcher Variablen.

Mann spart durch die Mehrfachnutzung Speicher in der SPS.

Aber vorsichtig bei der Verwendung. Z.B. bei Flankenhilfsmerkern ist der Einsatz von Temp Variablen nicht geeignet, also es geht nicht.

Eigentlich alle Variablen, die im nächsten Zyklus noch benötigt werden, dürfen nicht in Temp angelegt werden.

Gruß pt
 

man_of_luck

Member
Beiträge
22
Punkte Reaktionen
1
Noch 'ne kurze Bemerkung: STAT Variablen koennen nur in FB's deklariert und verwendet werden, da die in dem einem FB zugehoerigen Instanz-Datenbaustein abgelegt werden und somit ihre aktuellen Zustaende fuer das naechste Zyklus gespeichert werden. :wink:

MfG,

man_of_luck
 
OP
A

Anonymous

Guest
Temp Variablen

Hallo und Danke erstmal,

d.h.

das Temp Variablen (egal wieviele ich deklariere) immer auf den gleichen Adressspeicher zugreifen und somit bestehenden Werte im nächsten (oder noch im selben) Zyklus überschrieben werden sofern ich weitere Temp variablen deklariert habe

da ich aber bei einer Ablaufkette mit dem aktuellen Schritt und der Transition den nächsten Schritt setzen möchte, würde es nicht funktionieren wenn im gleichen Zyklus wo der eine Schritt als Temp Variable deklariert ist noch eine andere Temp Variable beschrieben würde und der Schriit somit wieder auf null gesetzt wird.

Dieser fehlt mir dann zur transition zum nächsten Schritt.

In diesem Sinne?
 

plc_tippser

Well-known member
Beiträge
2.500
Punkte Reaktionen
301
Zuviel Werbung?
->Hier kostenlos registrieren
Solche Schrittkettenmerker haben nichts in den TempVariablen zu suchen. Dafür sind die Stat bestens geeignet.

Wo Du die Temp einsetzt, musst du dir genau überlegen, sonst erlebst du Schiffbruch a la carte. Ich benutzte die eigentlich nie.



Gruß pt
 

Ralle

Supermoderator
Teammitglied
Beiträge
14.403
Punkte Reaktionen
3.373
So ähnlich,

daß Wichtigste ist eigenlich für dich, eine Temp-Variable, die du in dem gerade laufenden SPS-Zyklus im gerade laufendem FC, zu welchem diese Temp-Var gehört nicht selbst mit einem Wert versorgt hast, hat einen nicht definierten Wert und sollte nicht verwendet werden. Eine Temp-Var ist nur ein Zwischenspeicher, der von seiner Belegung (Setzen, Rücksetzen, Tranferbefehl etc.) bis zum Bausteinende verwendet werden kann.
Für alles Andere nimm also besser statische Variablen, Datenbausteine oder Merker.

Gruß Ralle !
 

andre

Well-known member
Beiträge
268
Punkte Reaktionen
37
Hallo,
wenn ein Programm läuft, dann setze ich für RET_VAL - Ausgänge(Fehlerausgabe an fertigen Bausteinen) gern temporäre Variablen ein.
Sonst fast nie.
 

andre

Well-known member
Beiträge
268
Punkte Reaktionen
37
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,
wenn ein Programm läuft, dann setze ich für RET_VAL - Ausgänge(Fehlerausgabe an fertigen Bausteinen) gern temporäre Variablen ein.
Sonst fast nie.
 

Zottel

Well-known member
Beiträge
2.299
Punkte Reaktionen
277
Für diejenigen, die schon mal C oder Pascal programmiert haben:
TEMP-Variablen verhalten sich wie lokale Variablen in Funktionen.

Für diejenigen, die früher S5 mit Schmiermerkern ab M200.0 programmiert haben:
TEMP-Variablen kann man überall da gebrauchen, wo man früher die Schmiermerker brauchte.
 
OP
G

Gino

Guest
Stat Variablen

Hat nicht jemand ein kleines beispiel für die Anwendung von Stat und Temp Variablen, damit mal Klarheit geschafft werden kann,

Ich habe mal was ausprobiert:

Ein SR-Glied mit einem Setz Eingang versorgt, das SR Glied selber habe ich als Temp Variable deklariert.

Demnach müsste im gesetzten Zustand das SR-Glied nachdem ich dem Baustein über EN Eingang die Freigabe auf Low geschaltet habe und somit die Bearbeitung beendet ist, beim wiedereinschalten des Baustein auf Low sein.

Aber es hat sich den letzten High Zustand gemerkt, warum?

Garnicht so einfach mit den beiden Variablen.
 

Onkel Dagobert

Well-known member
Beiträge
4.983
Punkte Reaktionen
953
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo Gino,

wahrscheinlich hast du nur einen einzigen Baustein mit dem RS-Glied im OB1-Zyklus aufgerufen - dann wird der Speicherbereich deiner TEMP-Variable von keinen anderen Baustein verwendet und NICHT überschrieben.

Beim Aufruf eines zweiten Bausteins wird der Speicherbereich der TEMP-Variablen für diesen Baustein neu verwendet!

Wenn du eine statische Variable verwenden würdest, dann würde diese in dem Instanz-DB deines Bausteins gespeichert und bliebe bis zum nächsten Aufruf unverändert!


Gruß, Onkel
 
OP
G

Gino

Guest
Stat Variablen

Genau,

ich habe mal 3 Bausteine mit jeweils einem SR-Glied im OB1 aufgerufen,
die SR Glieder selber sind Temp Variablen.

So, daraus ergab sich folgendes Ergebnis:

Mit dem Setzen des ersten SR Glied, setzten sich gleichzeitig alle drei SR Glieder in den folgenden Bausteinen (FC 1, FC 2, FC 3), rücksetze ich ich nun das zweite SR Glied (FC 2), setzen sich alle zurück (FC 1, FC 2, FC 3).

Das liegt dann wohl an deiner (Onkel Dagobert) Erklärung der gleichen Datenadresse (Speicherbereich). Die bei der nächsten Bearbeitung überschrieben wird.

So muüsste es doch eigentlich sein.
 

Question_mark

Well-known member
Beiträge
3.381
Punkte Reaktionen
578
Temp-Vars

@Gino,
So muüsste es doch eigentlich sein
Genau so isses, Du hast in deinem Versuch Dago's Erklärung exakt nachvollziehen können. Temp-Variablen sind wirklich eine gute Sache, um nicht grenzenlos (und manchmal auch sinnlos) Merker im Programm zu verbraten. Man muss nur, wie Dago ja auch schon festgestellt hat, höllisch aufpassen und sich über den Gültigkeitsbereich der Variablen im Klaren sein. Aber das ist in jeder Programmiersprache halt so. Gut das Du versucht hast, das selber nachzuvollziehen. Wenn man das mal so gemacht hat, versteht man das Problem und wird das auch nicht so schnell vergessen.
Gruss
Question_mark
 

Ralle

Supermoderator
Teammitglied
Beiträge
14.403
Punkte Reaktionen
3.373
Zuviel Werbung?
->Hier kostenlos registrieren
Einziges Problem ist leider immer noch, daß man Temp-Variablen (und auch Statische) nicht global suchen kann, man sie also schlecht wiederfindet, oder kennt einer dazu eine einfache Lösung (außer Export des gesamten Programmes als Quelle :roll: )?

Gruß Ralle
 
Oben