flanken mit temp variabeln

iPDI

Level-1
Beiträge
185
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo

funktionieren flanken einwandrei mit temp variabeln?!

variante 1:

u e1.0
fp #fp-test
= #test

#test soll dann im baustein für 1 Zyklus "1" sein.

variante 2:

u e1.0
fp # fp-test2
= m1.0

m1.0 soll in diesem fall durch das ganze programm für 1 zyklus "1" sein.


funktioniert das so? bin mir vor allem bei v2 nicht sicher.

gruss iPDI
 
hallo

funktionieren flanken einwandrei mit temp variabeln?!

variante 1:

u e1.0
fp #fp-test
= #test

#test soll dann im baustein für 1 Zyklus "1" sein.

variante 2:

u e1.0
fp # fp-test2
= m1.0

m1.0 soll in diesem fall durch das ganze programm für 1 zyklus "1" sein.


funktioniert das so? bin mir vor allem bei v2 nicht sicher.

gruss iPDI

Temp Flanken funktionieren nur mit Glück. Nämlich wenn sie vom Programm in den Lokalvariablen nicht überschrieben werden.
Temp werden nach dem abarbeiten des Bausteins zum überschreiben freigegeben.
V1 hab ich noch nicht ausprobiert, da normalerweise genug Merker vorhanden sind, sodass man nicht spren muss.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein, du darfst keine Temp-Var für Flanken nutzen. Manchmal funktioniert das zwar, aber das ist dann eher Zufall. Der Speicherbereich für Temp-Var wird von allen Bausteinen in der SPS genutzt. Am Ende eines Bausteines werden die Temp-Var wieder frei, d.h. der nächste Baustein nutzt diesen Bereich für seine eigenen Temp-Var, so er welche hat. Wenn du also nur einen Baustein in der SPS hast, wird das evtl. sogar gehen, da ja kein anderer Baustein den Temp-Var-Bereich für sich nutzt und überschreibt. Die Informationen darauf würden unverändert bleiben und wären beim nächsten Bausteinaufruf noch da. Aber das kann man natürlich nicht voraussetzen, denn schon ein weiterer Baustein kann seine Temp-Var auch dort ablegen und verändert dann den Speicherinhalt.
 
variante 1:

u e1.0
fp #fp-test
= #test

#test soll dann im baustein für 1 Zyklus "1" sein.
#fp-test darf keine Temp-Variable sein, das muß eine Variable mit "Gedächtnis" sein, also Stat, Merker oder DBX.
Oder ein IN_OUT-Parameter, wo beim Aufrufer ein Stat, Merker oder DBX dranhängt.
Wenn #test eine Temp-Variable ist, dann ist die ab der Zuweisung bis zum Ende des Bausteins gültig.

Gruß
Harald
 
Nein, du darfst keine Temp-Var für Flanken nutzen. Manchmal funktioniert das zwar, aber das ist dann eher Zufall. Der Speicherbereich für Temp-Var wird von allen Bausteinen in der SPS genutzt. Am Ende eines Bausteines werden die Temp-Var wieder frei, d.h. der nächste Baustein nutzt diesen Bereich für seine eigenen Temp-Var, so er welche hat. Wenn du also nur einen Baustein in der SPS hast, wird das evtl. sogar gehen, da ja kein anderer Baustein den Temp-Var-Bereich für sich nutzt und überschreibt. Die Informationen darauf würden unverändert bleiben und wären beim nächsten Bausteinaufruf noch da. Aber das kann man natürlich nicht voraussetzen, denn schon ein weiterer Baustein kann seine Temp-Var auch dort ablegen und verändert dann den Speicherinhalt.


ok danke...das heisst aber, dass die variante 1 funktioniert, oder? muss ich ev. am Anfang des Bausteiner die temp Variabeln initialisieren (zurücksetzen) ?

In meinem Fall geht es konkret darum, in einem Baustein DB Daten zurückzusetzen (Generalreset, Warmstart, Kaltstart etc.) Die positive Flanke dafür wird also nur in einem Netzwerk benötigt...deshalb hab ich gedacht, ich könne etwas Merker sparen (hätte noch mehr als genügend Reserven, falls dies nicht klappen sollte :) )
 
Zuviel Werbung?
-> Hier kostenlos registrieren
nein das funktioniert nicht, weil es zufällig ist das es passt. Das schreiben
doch alle. Mach das nicht du fällst nur auf die Schnauze. Statische
Variabeln gibt es doch auch genug, warum dann so einen unsinn machen.
 
ok danke...das heisst aber, dass die variante 1 funktioniert, oder? muss ich ev. am Anfang des Bausteiner die temp Variabeln initialisieren (zurücksetzen) ?
Wenn du am Bausteinanfang die Temporäre Variable gezielt zurücksetzt, würde Variante 1 funktionieren.

Aber wie hier schon alle schreiben:
>>> Es ist absoluter Müll, unsicher, und ein typischer Anfängerfehler. <<<
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

mal "back to the roots":

1.
"Temp.-Variablen" sind nur innerhalb eines Bausteins für EINEN Zyklus gültig

2.
Flankenauswertung: die Abfrage, ob sich ein Signal seit des letzten Zykluses geändert hat

Wie kann also 1. mit 2. funktionieren??????


MfG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo iPDI,
um eine Flanke von einem Signal zu generieren muss der Zustand des Signals gespeichert dauerhaft werden, damit sind temporäre Speicherbereiche ausgeschlossen, die, wie von meinen Vorgängern schon erwähnt, jederzeit von einem anderen Baustein überschrieben werden können.

Eine Flankenauswertung aus früheren Zeiten:

Code:
U Eingang
UN Merker
= Flanke         <- "Flanke" ist für einen Zyklus High wenn "Eingang" von Low auf High wechselt

U Eingang
= Merker         <- "Merker" ist der Speicher der sich das Signal von "Eingang" merkt
Wie du siehst wäre es fatal wenn die Variable "Merker" an einer anderen Stelle überschrieben würde.

Hoffe geholfen zu haben, Grüsse harrylask
 
Zurück
Oben