Alle x Sekunden eine Funktion einmalig ausführen

Daniel_G

Level-1
Beiträge
36
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich muss in meinem Programm einen Baustein der Messwerte an die FWT weiterleitet verzögert aufrufen und auch nur einmal.

zb: alle 20s sollen die Aktuellen Messwerte von Baustein X in Baustein Y geschrieben werden. Aber eben nur einmal alle Werte wandeln und speichern und nicht jeden Zyklus von vorne.

suche ne einfache und sichere Möglichkeit, habe da grad nen Brett vorm Kopf. Kann in AWL oder FUB sein.

Danke im vorraus
Daniel
 
zB

un t1
l s5t#20s
se t1

Der T1 ist jetzt alle 20 sec für einen Zyklus 1.

un t1
spb n1

l #Messwerte
t #Messwertspeicher

n1: nop 0

Dürfte so die einfachste verion sein.

peter(R)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
      UN    T      1
      L     S5T#20S
      SE    T      1

//Der T1 ist jetzt alle 20 sec für einen Zyklus 1.

      UN    T      1
      SPB   n1

      L     MW   123
      L     1
      +I    
      T     MW   123



n1:   NOP   0

      L     MW   123

Der MW123 ändert sich nicht. Sollte eigentlich ja alle 20s um einen hochzählen " um die funktion zu testen". Habs im Simulator getestet.
Wo is denn da der denkfehler, sollte doch laufen von der Theorie.

MFG Daniel
 
Ja du hast recht. So funktionierts nicht da die Timer nicht Zykluszeitsynchron ablaufen. :oops:

Un m1.0
l s5t#20s
se t 1
u t1
= m1.0

un m1.0
spb n1

l mw122
l 1
+I
t mw122

n1: nop 0

So funktionierts.

Bitte MW IMMER gradzahlig anfangen. Großes ungeschriebenes Gesetz !

peter(R)
 
Pack doch das Programm in den OB35.
diesen lässt du alle 20000ms aufrufen. (HW-Konfiguration)
Dann hast du keinerlei Probleme mit irgendwelchen Tieren.
Ach so. Der nennt sich Weckalarm und ist in den Eigenschaften der Cpu einzustellen.

Gruß Wolder
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So funktionierts.
JA stimmt so is die Funktion gegeben und es sollte gut laufen.
Bitte MW IMMER gradzahlig anfangen. Großes ungeschriebenes Gesetz !
Ja mach ich normal immer aber war nur zum testen eingegeben.
Pack doch das Programm in den OB35. diesen lässt du alle 20000ms aufrufen. (HW-Konfiguration)

Der OB35 is bei mir für die Regelung schon eingerichtet, somit ist diese möglichkeit nicht drin. Aber es liegt so nah und dennoch bin ich nicht auf die Idee gekommen. Danke für den hinweiß.

Danke euch für die Tips und Hilfe ... habt mir sehr geholfen.
MFG Daniel
 
Ob der OB35 dafür die richtige Entscheidung ist bezweifle ich.
Bei solch großen Zeitrastern ist eine zyklische Bearbeitung mit entsprechenden Aufrufen die bessere Lösung.
Die Grenze vom OB35 beginnt schon dann, wenn zwei verschiedene Raster benötigt werden.


bike
 
UN #Interner_Merker
L #Zeit
SE T 1
U T 1
= #Interner_Merker

UN #Interner_Merker
SPB n1

U "1-Signal"
= #Ausgang
SPB n2


n1: NOP 0
L MW 122

U "0-Signal"
= #Ausgang

n2: NOP 0

Habe es nun einbischen in einen FB eingebaut. Was nur nicht so schön is das ich den Timer immer anpassen muss wenn ich den Baustein mal öfters einsetzen würde. Überlege ob man was mit den Ton / Tof macht und dann als Multiinstanz.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ob der OB35 dafür die richtige Entscheidung ist bezweifle ich.
Bei solch großen Zeitrastern ist eine zyklische Bearbeitung mit entsprechenden Aufrufen die bessere Lösung.
Die Grenze vom OB35 beginnt schon dann, wenn zwei verschiedene Raster benötigt werden.


bike

Wieso,
du kannst doch ein Zähler im OB35 bauen und dann nur alle X mal den Baustein aufrufen je nach Zeitraster (wenn der Zähler erreicht ist)
 
Vielleicht solltest du alles lesen, was geschrieben wurde? "sinnier"

Nun werde doch nicht gleich schnippig, ich hab doch nur ein anderen Weg aufgezeigt. Ich hab deine tollen Beiträge gelesen!!!!
Ich habe nicht gesagt das er 20000 ms nehmen soll. In meinem Fall könnte er 100ms nehmen und sich ein Zähler für 20 sek bauen, mehr nicht!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nun werde doch nicht gleich schnippig, ich hab doch nur ein anderen Weg aufgezeigt. Ich hab deine tollen Beiträge gelesen!!!!
Ich habe nicht gesagt das er 20000 ms nehmen soll. In meinem Fall könnte er 100ms nehmen und sich ein Zähler für 20 sek bauen, mehr nicht!
Das war aber der Vorschlag der vorher gemacht wurde.
Nimm's leicht


bike
 
Ob der OB35 dafür die richtige Entscheidung ist bezweifle ich.
Bei solch großen Zeitrastern ist eine zyklische Bearbeitung mit entsprechenden Aufrufen die bessere Lösung.
Die Grenze vom OB35 beginnt schon dann, wenn zwei verschiedene Raster benötigt werden.

Das Thema ist ja eigentlich schon abgehakt, aber ich hab da trotzdem mal ne Frage.
Warum ist das eine falsche Entscheidung?

Von 2 verschiedenen Rastern war nie die Rede und auch nicht, dass da schon ne Regelung drin steckt.
Das wußte ich nicht. Trotzdem, was ist daran falsch oder verwerflich?

Ich will niemand angreifen, aber den Hintergrund des Verwerflichen kennenlernen.
Warum wäre die zyklischen Bearbeitung besser?
- Gut, wenn der OB35 für was anderem benötigt wird, dann ist mir das klar, aber wenn nicht?!

Gruß wolder
 
Zuviel Werbung?
-> Hier kostenlos registrieren
- Gut, wenn der OB35 für was anderem benötigt wird, dann ist mir das klar, aber wenn nicht?!
Also "wenn nicht" dann würde ich auch sagen: "dann schon". ;)
Ich würde jetzt auch nicht den OB dafür verbraten, selbst wenn ich ihn im Moment noch nicht bräuchte.
Aber Grundsätzlich bleibt es jedem selbst überlassen und ich würde es nicht mal als Stilbruch oder so etwas in der Art sehen und darum:
"Warum nicht" :D
 
Danke Paule.

Ich dachte schon es gibt ein "ungeschriebenes" Gesetz dafür.
Klar ist das nicht das schönste, da ich nicht weiß, ob ich den OB35 nochmal irgendwann für was anderes benutzen möchte.
Ich wollte auch nur mal ne andere Lösung darstellen.

Gruß wolder
 
Zurück
Oben