Step 7 Werrte flackern im DB

Adrian26

Level-2
Beiträge
75
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

Ich habe in meinem Programm ein FB erstellt darin rufe ich drei Zeiten auf (2x sfb4 1x sfb3).
Nun das seltsame die Zeiten funktionieren nicht wenn ich in die DB's der Zeiten sehe flackern da die Werte nur?.
Habe schon neue DB's generieren lasse sogar die Zeiten durch S7 Timer ersetzt bringt alles nix Ich denke der Fehler liegt eventuell im FB aber weshalb keine ahnung?.
 
Stell doch mal den Code von Deinem FB (aber komplett, mit Schnittstelle) ins Forum. Wenn wir nicht sehen können, was Du programmiert hast, ist eine Hilfe kaum möglich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Adrian

eins ist Gewiss, die Timer funktionieren. Hier hilft nur der Code von dir. Du wirst wahrscheinlich die DB´s mehrfach belegt haben bzw. du musst die anderes beobachten.
Wenn du die S7 Timer schon benutzt hast, solltest du den Code auch mal hochladen, dann können wir dir auch dazu Tips geben.

Schönes WE, pt
Hi,

Ich habe in meinem Programm ein FB erstellt darin rufe ich drei Zeiten auf (2x sfb4 1x sfb3).
Nun das seltsame die Zeiten funktionieren nicht wenn ich in die DB's der Zeiten sehe flackern da die Werte nur?.
Habe schon neue DB's generieren lasse sogar die Zeiten durch S7 Timer ersetzt bringt alles nix Ich denke der Fehler liegt eventuell im FB aber weshalb keine ahnung?.
 
Ich habe es gelöst die dbs gelöscht und die bausteine neu eingefügt und generiert, siehe da es funktioniert.
Seltsamerweiße flackern die Werte immer noch?.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe es gelöst die dbs gelöscht und die bausteine neu eingefügt und generiert, siehe da es funktioniert.
Seltsamerweiße flackern die Werte immer noch?.

Hallo SoftMachine,

ich glaube, den will er nicht verraten....

Die Aussage:
Ich habe es gelöst die dbs gelöscht und die bausteine neu eingefügt und generiert, siehe da es funktioniert.

deckt sich nicht mit der Erstfrage:
Seltsamerweiße flackern die Werte immer noch?
 
.
Ja, eben mit dem Flackern aus Beitrag #4 (trotz seiner Lösung)

Aber wenn er denn nicht will, gibt es auch keine Hilfe :cool:

Gruss
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Sie wollen dir einfach helfen herauszufinden warum deine Werte flackern!
Um das zu können benötigen sie den gesamten Zusammenhang -> Also den ganzen Baustein.

Meine Glaskugel sagt mir, dass du die Timer im STAT-Bereich eingefügt hast, aber den IDB nicht neu generiert hast.
Die jetzt noch flackernden Werte sind die Instanzen der TIMER, in denen die Zeiten runterzählen die als Hilfsvariable genutzt werden.

Grüße

Marcel
 
Der Code ist nicht geheim was wollt ihr denn den ganzen fb?


Ganz einfach:
Kopieren und teuer verkaufen.

Jedoch wenn ich es recht bedenke:
Bei mir funktionieren die Zeiten ohne flackern.:confused:
Was mache ich jetzt falsch? :ROFLMAO:

Wenn du eine Frage stellst, dann musst du zuerst in Vorleistung treten und alle relevanten Informationen bekannt geben.

Du hast das Problem, dass du die SFB mit den selben IDB aufrufst und das geht in die Hose.
Ein Stichwort wäre hierzu "Multiinstanz"


bike
 
OK hier mal der Baustein villeicht findet ihr ja was.

FUNCTION_BLOCK "evacuation conveyor 2"
TITLE =
AUTHOR : 'A.Kohler'
VERSION : 0.1


VAR_INPUT
release : BOOL ;
blockade_impulse : BOOL ;
time_conveyor_forward : TIME ;
time_blockade_pos : TIME ;
time_blockade_neg : TIME ;
time_conveyor_backward : TIME ;
timer1 : COUNTER ;
blockade_values : INT ;
step : INT ;
END_VAR
VAR_OUTPUT
fault_to_many_blockade : BOOL ;
actual_count_value : INT ;
END_VAR
VAR
released : BOOL ;
conveyor_forward : BOOL ;
pos_blockade : BOOL ;
neg_blockade : BOOL ;
mem_blockade : BOOL ;
conveyor_backward : BOOL ;
pos_edge_conveyor_forwar : BOOL ;
count_value_word : WORD ;
count_value_int : INT ;
evac_pump : BOOL ;
test : BOOL ;
END_VAR
BEGIN
NETWORK
TITLE =release delivery conveyor

U #release;
S #released;
UN #release;
R #released;
U #released;
= #evac_pump;
NETWORK
TITLE =conveyor forward

U( ;
O( ;
L #step;
L 6;
==I ;
) ;
O( ;
L #step;
L 7;
==I ;
) ;
) ;
NOT ;
U #released;
UN #conveyor_backward;
= #conveyor_forward;
NETWORK
TITLE =blockade control pos. edge

U #conveyor_forward;
U #blockade_impulse;
= L 0.0;
BLD 103;
CALL "TON" , "time neg blockade eva 2" (
IN := L 0.0,
PT := T#5S);

NOP 0;
NETWORK
TITLE =

U "time neg blockade eva 2".Q;
U #released;
= #pos_blockade;
NETWORK
TITLE =blockade control neg. edge

U #conveyor_forward;
UN #blockade_impulse;
= L 0.0;
BLD 103;
CALL "TON" , "time pos blockade eva 2" (
IN := L 0.0,
PT := T#5S);

NOP 0;
NETWORK
TITLE =

U "time pos blockade eva 2".Q;
U #released;
= #neg_blockade;
NETWORK
TITLE =blockade

O #pos_blockade;
O #neg_blockade;
= #mem_blockade;
NETWORK
TITLE =conveyor backward

U #mem_blockade;
= L 0.0;
BLD 103;
CALL "TP" , "time conveyor backward 2" (
IN := L 0.0,
PT := T#3S);

NOP 0;
NETWORK
TITLE =

U "time conveyor backward 2".Q;
U #released;
= #conveyor_backward;
NETWORK
TITLE =counter blockade

U #mem_blockade;
ZV #timer1;
BLD 101;
U #released;
L C#0;
S #timer1;
U #blockade_impulse;
R #timer1;
NOP 0;
LC #timer1;
T #count_value_word;
NOP 0;
NETWORK
TITLE =transform into INT

L #count_value_word;
BTI ;
T #count_value_int;
NOP 0;
NETWORK
TITLE =actual count value

L #count_value_int;
T #actual_count_value;
NOP 0;
NETWORK
TITLE =compare blockade values

L #count_value_int;
L #blockade_values;
>=I ;
= #fault_to_many_blockade;
END_FUNCTION_BLOCK
 
Hallo,
wenn ich mir das so ansehe, dann wundert es mich, dass es überhaupt funktioniert ...
Ein IEC-Timer wird mit im STAT-Bereich eines FB eingefügt - z.B. so :
Code:
meinTimer1 : SFB4 ;
meinTimer2 : SFB4 ;
meinTimer3 : SFB3 ;
im späteren Code rufst du dann diese Instanz auf :
Code:
call meinTimer1
... und übergibst dem dann die relevanten Info's.
Wichtig auch : nie die gleiche Instanz 2 mal aufrufen - das geht dann nämlich auch wieder nicht.

Den Rest kaghabe ich mir nicht angesehen ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mal 'ne Frage an den TE -

wie oft wird dieser FB im Programm aufgerufen?

Die SFBs haben direkt zugewiesene Instanzen, daraus folgt der FB darf nur EINMAL im im Programm aufgerufen werden.
 
Ich meine

Code:
CALL "TON" , [SIZE=4][COLOR="#FF0000"]"time neg blockade eva 2"[/COLOR][/SIZE] (
IN := L 0.0,
PT := T#5S)

Das riecht für mich nach einem eigenen Instanz-DB...
 
... im Prinzip nicht - aber schau mal in der Deklaration ... die Variable ist vom Typ TIME ... 8)

Gruß
Larry
 
Zurück
Oben