Tigerente1974
Level-3
- Beiträge
- 1.826
- Reaktionspunkte
- 294
-> Hier kostenlos registrieren
Das Benutzen von temporären Lokalvariablen scheint ja nicht uneingeschränkt beliebt zu sein. Ich denke aber, dass sie durchaus Sinn machen und benutze diese zum Teil auch.
In der Regel speichere ich damit Zwischenergebnisse von BOOL-Verknüpfungen oder irgendwelchen Berechnungen (ADD_I, MUL_R, etc...) Das klappt auch ohne Probleme.
Mein Kollege hat jetzt mal eine TEMP-Variable an den (Q) Ausgang eines IEC TON-Timers gehängt. Das ging dann schief, denn der Ausgang wird scheinbar nicht unbedingt von dem IEC-Baustein beschrieben. Sprich: Die Zeit war noch nicht abgelaufen, die TEMP-Variable hatte aber den Zustand 1, als sie weiter unten im Baustein abgefragt wurde.
Wenn man nachliest, findet man auch die Information, dass temporäre Lokaldaten initialisiert werden sollen/müssen.
Das erschließt sich mir nicht ganz. Gilt das auch für die Verwendung als Zwischenergebnisse, wie ich sie zuerst beschrieben habe. Es dürfte doch wohl egal sein, ob ich zuerst eine 0 auf die Lokaldaten schreibe, oder diese mit einer =-Zuweisung (bei BOOL) bzw. als Ergebnis einer Berechnung zuweise.
Oder sagt man, je nachdem wie die Variable dann verwendet wird -wie in dem 2. Beispiel mit dem IEC-Timer- ist das IMMER zu empfehlen und deswegen macht man das auch immer.
Wenn ja, wie wäre es dann richtig?
Benutzt man die symbolische Adressierung (R #Testmerker) hat man die Sicherheit, dass beim Einfügen von weiteren Variablen nichts "verrutscht" Bei vielen BOOL-Variablen ist das aber viel Handarbeit.
Schreibt man eine 0 auf das Lokaldatenwort in dem die BOOL-Variablen liegen, muss man immer im Auge behalten, dass ggf. der Adressbereich vergrößert werden muss, wenn man noch weitere Variablen einfügt.
In der Regel speichere ich damit Zwischenergebnisse von BOOL-Verknüpfungen oder irgendwelchen Berechnungen (ADD_I, MUL_R, etc...) Das klappt auch ohne Probleme.
Mein Kollege hat jetzt mal eine TEMP-Variable an den (Q) Ausgang eines IEC TON-Timers gehängt. Das ging dann schief, denn der Ausgang wird scheinbar nicht unbedingt von dem IEC-Baustein beschrieben. Sprich: Die Zeit war noch nicht abgelaufen, die TEMP-Variable hatte aber den Zustand 1, als sie weiter unten im Baustein abgefragt wurde.
Wenn man nachliest, findet man auch die Information, dass temporäre Lokaldaten initialisiert werden sollen/müssen.
Das erschließt sich mir nicht ganz. Gilt das auch für die Verwendung als Zwischenergebnisse, wie ich sie zuerst beschrieben habe. Es dürfte doch wohl egal sein, ob ich zuerst eine 0 auf die Lokaldaten schreibe, oder diese mit einer =-Zuweisung (bei BOOL) bzw. als Ergebnis einer Berechnung zuweise.
Oder sagt man, je nachdem wie die Variable dann verwendet wird -wie in dem 2. Beispiel mit dem IEC-Timer- ist das IMMER zu empfehlen und deswegen macht man das auch immer.
Wenn ja, wie wäre es dann richtig?
Benutzt man die symbolische Adressierung (R #Testmerker) hat man die Sicherheit, dass beim Einfügen von weiteren Variablen nichts "verrutscht" Bei vielen BOOL-Variablen ist das aber viel Handarbeit.
Schreibt man eine 0 auf das Lokaldatenwort in dem die BOOL-Variablen liegen, muss man immer im Auge behalten, dass ggf. der Adressbereich vergrößert werden muss, wenn man noch weitere Variablen einfügt.