Step 7 OB 35 FB Aufruf->Verwendung des Ergebnisses in einem anderen FB

Stadi

Level-1
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen!

System:
Step 7, Simatic Manager
S7-314C-2 DP

Folgende Situation:
In meinem OB 35 rufe ich den FB 41 (PID-Regler, verwende aber nur den I-Anteil) auf und möchte nun das Ergebnis, sprich die Stellgröße in einem anderen FB weiterverwenden.
Soll ich nun im OB 35 das Ergebnis auf einem Merker schreiben und diesen, dann in meinem FB verwenden,Funktioniert das ?

Danke schon mal für eure Hilfe !

Mfg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
"Problemlos" - nur, wenn der Wert nur 1x verwendet wird!

Wenn er mehrmals verwendet wird, dann sollte für die Dauer des OB1 ein konsistentes Abbild (Arbeitskopie) des Wertes erzeugt werden, sprich: der Wert am Anfang des OB1 auf eine dritte Variable umgespeichert werden, weil sonst bei der zweiten Verwendung der vom OB35 beschriebenen Variable ein anderer Wert drinstehen könnte als bei der ersten Verwendung.

Code:
//--- OB35 ------------
CALL FB41, IDB
 ...
 LMN:="Stellwert1_LMN"    // IDB.LMN --> "Stellwert1_LMN"


//--- OB1 -------------
L "Stellwert1_LMN"        // "Stellwert1_LMN" nur hier lesen
T "Stellwert1"            // "Stellwert1_LMN" --> "Stellwert1" (konsistente Arbeitskopie)
...

L "Stellwert1"
L 80.0
>R
...
L "Stellwert1"
L 10.0
<R
...

CALL FB2, IDB2
 LMN_IN:="Stellwert1"     // "Stellwert1" --> IDB2.LMN_IN

...
L "Stellwert1_LMN"        // !!! hier wird öfters ein anderer Wert drinstehen als am Anfang des OB1 !!!

Harald
 
Jap, das ist definitiv ein gern gemachter Fehler...

Auch so was ist gefährlich. Hier ein Beispiel für einen Fehler den ich mal bei einer Istwert-Versorung eines FB41
innerhalb eines OB35 gemacht habe.
Code:
//Dieser Code liegt in einem normalen FB und nicht im OB35

L -1.0         //-1.0 bedeutet Messwertfehler
T Messwert

U Prüfbedingung_1
SPBN Ma01

L Wert_1
T Messwert

Ma01: U Prüfbedingung_2
SPBN Ma02

L Wert_2
T Messwert

Ma02....
Hier kann es passieren das dir die SPS sporadisch nach dem L1.0 - T Messwert, den OB35-Interupt ausführt und der Regler
dann alle Herrschaftszeiten mal -1.0 als Istwert bekommt. In meinem Fall wurde die Messwert-Fehler-Reaktion ausgeführt.

Da hab ich schon ein Weilchen geflucht bis ich drauf kam, hinterher sogar mehr als vorher. :D

Deshalb gilt bei allen Interrupt-Operation immer auf Konsistenz deiner Werte zu achten.
 
Zuletzt bearbeitet:
Zurück
Oben