Zusatndsängerung Variable erkennen

Netwalker

Level-1
Beiträge
40
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann mir jemand auf die Sprünge helfen? Ich such eine Funktion mit der ich die Zustandsänderung einer Boolschen-Variable erkenne. Einmal von 0->1 und eine für 1->0. Gibts da was in den Beckhoff-Libarys?
 
Flanke Positiv und Flanke Negativ würde ich sagen, gibt sicher auch Bausteine, kann man aber auch mit wenigen Zeilen selbst programmieren.
 
Hallo,

früher musste man das noch selber basteln, aber bei der S7 gibt´s da FP (positiv) und FN (negativ) als fertigen Befehl



MfG

wer lesen kann ist klar imvorteil ... oder für dich nochmal zur verdeutlichung:

Gibts da was in den Beckhoff-Libarys?

"eingang und nicht hilfmerker ist gleich impuls. eingang ist gleich hilfsmerker." wäre übrigens eine auswertung auf eine positive flanke.
 
Oder wenn man unbedingt eine Bibliothek will:
F_Trig für Fallende Flanke
R_Trig für Steigende Flanke
sollte in der Standard-Lib wo auch z.B. TON und Co. ist zu finden sein.

Mfg
Manuel
 
Danke für die anregungen. Ich hab das jetzt mal folgendermasen gelöst:

Code:
IF DE_USV_Stoerung AND NOT hilfe THEN    (*Erkennung Flankenwechsel 0->1*)
    posF:=1;
    hilfe:=DE_USV_Stoerung;
END_IF

IF NOT DE_USV_Stoerung AND hilfe THEN    (*Erkennung Flankenwechsel 1->0*)
    negF:=1;
    hilfe:=DE_USV_Stoerung;
END_IF



(*am Ende des Programms Flankenvariablen zurücksetzen:*)
posF:=0;
negF:=0;
 
Moin,.

In der OSCAT.LIB gibt es auch die Funktion B_TRIG.

Diese reagiert grundsätzlich bei Signalwechsel.

Für die Bibliotheksverliebten.. ;-)

In der OSCAT sieht das dann so aus im Quelltext:
FUNCTION_BLOCK B_TRIG
VAR_INPUT
CLK : BOOL;
END_VAR
VAR_OUTPUT
Q : BOOL;
END_VAR
VAR
edge : BOOL;
END_VAR

(*
version 1.0 4. aug. 2006
programmer hugo
tested by tobias

this block is similar to R_trig and F_trig but it generates a pulse on rising and falling edge.

*)




Q := clk XOR edge;
edge := CLK;


(Ich hoffe, das durfte ich posten..)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich würde es so machen ... dann hast du auch noch eine Chance es sinnvoll auszuwerten (und zusätzklich habe ich noch etwas Code eingespart) :

Code:
posF:=0;
negF:=0;
 
IF DE_USV_Stoerung AND NOT hilfe THEN    (*Erkennung Flankenwechsel 0->1*)
    posF:=1;
END_IF
 
IF NOT DE_USV_Stoerung AND hilfe THEN    (*Erkennung Flankenwechsel 1->0*)
    negF:=1;
END_IF
 
hilfe:=DE_USV_Stoerung;
Gruß
LL

... achja ... und also zusammenhängend stehen lassen ...
 
und ich schreibe immer nur:

posF := ( DE_USV_Stoerung AND NOT hilfe ) ;
negF := ( NOT DE_USV_Stoerung AND hilfe ) ;
hilfe := DE_USV_Stoerung ;


bis dann
Thomas
 
Zurück
Oben