Timer läuft einfach nicht...

Zuviel Werbung?
-> Hier kostenlos registrieren
Timer

Hallo slma,

1) Timer in S7 sollen zyklisch bearbeitet werden, das ist gute Programmierung, nicht überspringen!
2) Im FB, deine Bits, deklariert als TEMP: ???. Deklariere die entspr. als STAT, dann ist die Sache OK.
STAT Bits werden im InstanzDB gebildet und behalten den Zustand.

Gruss: Vladi
 
wäre sehr nett, danke!!!

Wurde ja schon gesagt, Timer sollten zyklisch abgearbeitet werden, dann funktioniert das mit dem Neustart auch zuverlässig.

Weiter macht es deine struktur etwas umständlich fehler zu finden.

Der Timer scheint richtig zu funktionieren wenn die Zustände im richtigen moment wechseln. Also Zuerst E6.0 setzen rücksetzen um #fertig zu cleanen
Warum du aber E6.0 direkt adressierst ist mir schleierhaft.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo slma,

1) Timer in S7 sollen zyklisch bearbeitet werden, das ist gute Programmierung, nicht überspringen!
2) Im FB, deine Bits, deklariert als TEMP: ???. Deklariere die entspr. als STAT, dann ist die Sache OK.
STAT Bits werden im InstanzDB gebildet und behalten den Zustand.

Gruss: Vladi

hmm...ok ich versuchs zu verbessern...

habe kaum erfahrung mit diesen internen variablen, welche sollte man als STAT definieren???
Und wie geht das mit IEC_Timer???

mfg
 
Zuletzt bearbeitet:
Wurde ja schon gesagt, Timer sollten zyklisch abgearbeitet werden, dann funktioniert das mit dem Neustart auch zuverlässig.

Weiter macht es deine struktur etwas umständlich fehler zu finden.

Der Timer scheint richtig zu funktionieren wenn die Zustände im richtigen moment wechseln. Also Zuerst E6.0 setzen rücksetzen um #fertig zu cleanen
Warum du aber E6.0 direkt adressierst ist mir schleierhaft.

mfG René

Habe ich jetzt nur zum testen gemacht, bin mitten drinn...

mfg
 
hmm...ok ich versuchs zu verbessern...

habe kaum erfahrung mit diesen internen variablen, welche sollte man als STAT definieren???
Und wie geht das mit IEC_Timer???

mfg

(seufz)

Einfügen->Programmelemente und unten Bibliotheken aufschlagen, der Rest erfährst du in der Hilfe -Stichwort "TP, TOFF,TON",


Als STAT alles das, was über eine Zyklus hinaus gemerkt werden muss - oder für den Anfang einfach mal alles was in TEMP steht nach STAT verschieben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
(seufz)

Einfügen->Programmelemente und unten Bibliotheken aufschlagen, der Rest erfährst du in der Hilfe -Stichwort "TP, TOFF,TON",


Als STAT alles das, was über eine Zyklus hinaus gemerkt werden muss - oder für den Anfang einfach mal alles was in TEMP steht nach STAT verschieben.

bin leider kein profi, ich weis...

ok TP und so hab ich, wo finde ich sowas für Zähler??


danke!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber ein Problem ist da trotzdem noch:

Wenn ich in meinen FB den TP bzw. CTU Baustein verwende, muss ich ja einen DB angeben, wo dieser die Werte speichert...
Wenn ich den FB dann mehrmals hintereinander aufrufe, haben alle schon den Wert der im ersten FB hineingeschrieben wurde...
Ist doch so oder??
Was kann ich dagegen machen?

mfg
 
Wenn ich den FB dann mehrmals hintereinander aufrufe, haben alle schon den Wert der im ersten FB hineingeschrieben wurde...
Ist doch so oder??
Was kann ich dagegen machen?

Du must in zu einem Multiinstanzaufruf ändern.

z.B. Call #Test

in der Schnittstelle des FBs in Stat gibst du dann eine neue deklaration mit dem namen #Test an. Dann rechtsklick drauf -> "Objekteigenschaften" als datentyp den Namen des sfb eingeben (Hier SFB null)

Für jedesmal wenn du den sfb 0 brauchst braucht der einen neuen Namen

Call #Test0
Call #Test1
Call #Testn

mfg René
 
Du must in zu einem Multiinstanzaufruf ändern.

z.B. Call #Test

in der Schnittstelle des FBs in Stat gibst du dann eine neue deklaration mit dem namen #Test an. Dann rechtsklick drauf -> "Objekteigenschaften" als datentyp den Namen des sfb eingeben (Hier SFB null)

Für jedesmal wenn du den sfb 0 brauchst braucht der einen neuen Namen

Call #Test0
Call #Test1
Call #Testn

mfg René

ok danke!

hatte ein problem...habe es aber gefunden...FUP wird mir immer unsympatischer :)
Habe jetzt im FB2 #test deklariert.

Wird hier pro Aufruf immer ein neuer DB vergeben oder wie geht das? kann ich die Aktualwerte des DBs auch ansehen? Oder ist der irgendwo intern???
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
...habe das Problem gefunden...FUP wird mir immer unsympatischer :)
Habe im FB2 #test deklariert.

Wird hier pro Aufruf immer ein neuer DB vergeben oder wie geht das? kann ich die Aktualwerte des DBs auch ansehen? Oder ist der irgendwo intern???

Die Aktualwerte sind Instanzdb (in den Instanz DBs) des FB 2 hinterlegt.
Will heissen, wenn du den FB2 im FB3 mehrmals aufrufst braucht der für jeden Aufruf einen anderen Instanzdb da sind dann auch die Multiinstanzen hinterlegt. Du kannst den FB2 natürlich auch als Multiinstanz ablegen.

Du kannst mit Multiinstanzen auch voll auf die Fresse fliegen, ich hatte da schon absonderliche Begebenheiten. Also halte es so übersichtlich wie möglich.

mfG René
 
Die "instanzen" in den Instanzen - also geschachtelten InstanzDB - würde ich schon im Namen kenntlich machen. Z.B mit den Symbolen unter STAT Timer1_Dat, Zaehler1_Dat oder noch treffenderen Namen: ZaehlerIO_Dat.
Ausserhalb des FB's solltest du dann nicht auf die Instanzvariablen (vor allem die Statischen) zugreifen, da es sonst leicht unübersichtlich wird.
Für den FB3 hät's meiner Meinung nach auch ein FC getan - kommt aber drauf an, was du damit noch vorhast.
Das Durcheinander mit den Multiinstanz-FB's kann unter anderem von der Unterschiedlichen Verwendung der Adressregister und dem Einsatz von Zeigern kommen. (Aber um Zeiger sollte man eh einen Bogen machen und das anders lösen)
Wenn dein FB nicht multiinstanzfähig angelegt wurde musst du ihn unter umständen neu Anlegen und den Code nochmal reinkopieren.

hth und viel Erfolg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
so bis jetzt hat alles gut funktioniert!
Das mit TP und CTU hat geklappt, wenn ich aber meinen FB2 auch so ändere, nimmt er kurzzeitig einen Wert von irgendwo her und versaut mir alles!
Kann man das verhindern?

Habe es mit einzelnen DBs versucht, da läuft alles normal!

mfg
 
du musst den "Aufrufpfad" richtige einstellen - dann geht's

hmm...was meinst du? bei mir sieht das so aus:

CALL #Module
Stop :=L8.0
Leer :=L8.1
Start :=L8.2
kurzeStoerung :=5
langeStoerung :=20
NIOteile :=28
NAteile :=36
resetFertig :=L8.3
fertig :=#fertig1
durchlaeufeINT:=#TEMP1
NOP 0


wobei ich Module als STAT mit datentyp FB2 definiert habe...

was gehört jetzt wie genau geändert?

danke schonmal!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ähnliches Problem habe ich gerade...

Mein Zähler will nicht weiterzählen.

Bekommt ein High am Zähleingang aber es geht nicht...

vielleicht hat jemand Zeit sich das anzusehen...

IM FB22 mit E2.0 wird gestartet (steuern beobachten, dann Var.tabelle laden)
, nach einem Durchlauf kurz E0.0 aktivieren um zu reseten

Bei 3 Durchläufen soll er ohne die Zeit zu starten um 1 hochzählen...
Ich sehe zwar wie der Eingang von wurdeNIO aktiv wird, aber zählen tut er nicht.
Habe auch schon versucht davor eine pos. flanke abzufragen und den Zählwert über

L durchlaeufeINT
L 1
+I
T durchlaeufeINT

da kann er sich nicht entscheiden ob 3 oder 4...

Kann mir da jemand weiterhelfen?

MfG
 

Anhänge

  • Testprojekt_130707-11_56_zaehler.zip
    269 KB · Aufrufe: 3
Habs mir noch nicht richtig angesehen, aber hast du gesehen das der Aufruf in FB 4 nicht aktuell ist?

Und dann solltest du noch drauf achten, wenn du DurchläufeInt mehrfach beschreibst (Netzwerk 2 und 10) Musst du dir sicher sein das 10 auch wirklich nur dann nicht schreibt wenn du das wirklich willst da ja sonnst Netzwerk 2 dein DurchläufeInt mit 4 überschreibt.

Willst du in Netzwerk 2 überhaupt noch integrieren? So wie ich das sehe willst du nur im Netz 10 zählen und das Resultat gilt alles davor ist irrelevant. Wenn doch, würd ich die kompletten Verknüpfungen in ein Netzwerk machen und dann entsprechend zählen (nur an einem Ort) ist übersichtlicher und die Fehlersuche wird einfacher.

mfG René
 
Zuletzt bearbeitet:
Zurück
Oben