Step 7 Mehrfachbenutzung FC zu FB

mzva

Level-1
Beiträge
144
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

habe folgendes Problem und verstehe es eigentlich nicht.
Benutze in meinem Programm einen FC mehrfach. Stecke vorne Variablen (Real) aus einem DB rein und hole das Ergebnis (Bool) hinten ab. Ist ein Vergleich auf grösser und kleiner, sprich Hysterese.
Es funktioniert aber nur, wenn ich einen FB als Multiinstanz anlege und dann mehrfach im Programm verwende, als FC nicht.
Warum dies? Hoffe jemand hierzu helfen. Danke schon im Voraus.

Gruss

mzva
 
Dann hast Du wahrscheinlich Daten, die statisch sein müssten, auf temporäre Variablen gelegt.
Wie wäre es mal mit dem Code Deines Bausteins?
Gruß
Erich
 
Ich benutze eigentlich intern keine Variablen, anbei der Code

Code:
FUNCTION_BLOCK "Analog_Digital_FB"
TITLE =
VERSION : 0.1


VAR_INPUT
  r_value : REAL ;	
  r_hysterese_on : REAL ;	
  r_hysterese_off : REAL ;	
END_VAR
VAR_OUTPUT
  b_output : BOOL ;	
END_VAR
BEGIN
NETWORK
TITLE =

      L     #r_value; 
      L     #r_hysterese_on; 
      >R    ; 
      S     #b_output; 

      L     #r_value; 
      L     #r_hysterese_off; 
      <R    ; 
      R     #b_output;

#########################################

FUNCTION "Analog_Digital" : VOID
TITLE =
VERSION : 0.1


VAR_INPUT
  r_value : REAL ;	
  r_hysterese_on : REAL ;	
  r_hysterese_off : REAL ;	
END_VAR
VAR_OUTPUT
  b_output : BOOL ;	
END_VAR
BEGIN
NETWORK
TITLE =

      L     #r_value; 
      L     #r_hysterese_on; 
      >R    ; 
      S     #b_output; 

      L     #r_value; 
      L     #r_hysterese_off; 
      <R    ; 
      R     #b_output;
 
Zer Zustand von b_output wird bei Verwendung eines FC nicht gespeichert, da ein FC keinen Speicher besitzt. Wenn Du das so machen willst, musst Du einen FB nehmen. Dort wird b_output in dem dazugehörigen InstanzDB gespeichert.

Gruß.
 
Hallo

leg doch deinen Ausgang auf IN_OUT um, dann speichert dein Merker oder Ausgang den Zustand

dann sollte es auch mit einem FC funktionieren

mfG
Andreas
 
Zurück
Oben