TIA kWh aus kW ermitteln

Zuviel Werbung?
-> Hier kostenlos registrieren
Was ist denn das für'n Quatsch?
Wenn ich @sirbarny richtig verstanden habe, ging es um die Genauigkeit der verschiedenen Arten, sich nen Impulsmerker für den OB1 zu erzeugen.
Wenn ich im OB1 Impulsmerker brauche, wofür auch immer, und den im OB32 generieren will, warum auch immer, dann muss ich den im OB1 umkopieren...
Wenn mein OB1 Zyklus länger ist, als der Impulsabstand, dann wird das alles sowieso nicht funktionieren, egal wo und wie der Impuls erzeugt wird.
 
Da hab ich ja wieder was angefangen ....
.... aber zum Moped 🏍️ fahren ist es zu kalt und unser Wirtshaus hat zugesperrt. 🤷‍♀️

In der Formel oben war ein Fehler und der Lehrer hat's nicht gemerkt :rolleyes: So komplexe Sachen soll man nüchtern einfach nicht machen 🤭

1737901863224.png

In die OB3x hab ich noch was reingemacht und
@Onkel Dagobert : Den FB hab ich auch rein. Mal schaua
 
Auf Merker sollte man gemäß Styleguide übrigens ohnehin möglichst vollständig verzichten, dafür nimmt heute GDBs, also Global Data Blocks.
 
Auf Merker sollte man gemäß Styleguide übrigens ohnehin möglichst vollständig verzichten, dafür nimmt heute GDBs, also Global Data Blocks.

"Styleguide", ihr lasst euch auch alles einreden! Was spricht dagegen, eine ganz allgemeine projektspezifische Variable, welche man global im ganzen Projekt verwendet, im Merkerbereich abzulegen? Nichts! Man muss nicht alles blindlinks übernehmen!
 
Zuletzt bearbeitet:
Der Styleguide ist doch mehr ein unverbindlicher "Serviervorschlag". Oder sowas wie eine Verkehrsschild in Frankreich => mehr so eine Empfehlung.

Aber egal, hat mit dem Thema ja nichts zu tun.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Da hab ich ja wieder was angefangen ....
.... aber zum Moped 🏍️ fahren ist es zu kalt und unser Wirtshaus hat zugesperrt. 🤷‍♀️

In der Formel oben war ein Fehler und der Lehrer hat's nicht gemerkt :rolleyes: So komplexe Sachen soll man nüchtern einfach nicht machen 🤭

Anhang anzeigen 84868

In die OB3x hab ich noch was reingemacht und
@Onkel Dagobert : Den FB hab ich auch rein. Mal schaua
Zählst Du die Impulse jetzt im Weckalarm oder erzeugst Du nur den Impuls dort?
Wo kommt der Unterschied zw. OB30 und OB32 her?
 
Hmm, ich würd ja mal nen Global DB mit LReal für a und b hernehmen.

Im OB30 dann
a := a + LREAL#0.1;

IM OB32 dann
b := b + LREAL#1.0;

Dann siehst doch schon nach ner Stunde ob das auseinander läuft.

Für den Test sollte auch nich zu viel weiterer Code in der SPS sein...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
1737911140683.png

Zwischenstand nach knapp 3h. No 1 und No 3 entspricht Zeile 1 und 2 von oben. Hier habe ich auch nix geändert, nur diesmal ist kein Unterschied. Bei No 2 und No 4 wird nur der Merker in den OB3x gesetzt und im OB1 addiert. Hier gibt es wohl eine Verzögerung.
Aber gute alte Taktmerker schlägt sich tapfer! 🙃
Der Zähler vom Onkel hängt auch etwas hinterher, evtl. vom Wetter abhängig. :)

Die CPU ist leider nicht leer, sonst muss ich heute Nacht frieren.
 
Aber gute alte Taktmerker schlägt sich tapfer! 🙃

Die CPU ist leider nicht leer, sonst muss ich heute Nacht frieren.

Ist schon ne Weile her, dass ich mich mit dem Systemverhalten von ner 1200er beschäftigt hab. Müsste TIA 13/14 gewesen sein. Es gab aber ein paar Unterschiede zwischen 1200 und 1500 und ich glaube, dass die Taktmerker bei der 1200 am Anfang des OB1-Zyklus eingelesen werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber gute alte Taktmerker schlägt sich tapfer! 🙃
Naja, welche Variante jetzt "genauer" ist, weisst Du ja nicht.
Zumindest scheint der Taktmerker intern so ähnlich gebildet zu werden wie der Takt für die Weckalarme.

Und ob die Fehler jetzt direkt aus dem Takt oder doch aus der Real-Berechnung stammen müsste man schauen, wenn man den gesamten Code hätte.

Das TOF Käse ist, hab ich schon geschrieben. Und Uhrzeit, naja selbst wenn die genauer wäre, krigst Probleme wenn die Uhr gestellt wird.
Was das RUNTIME Dings macht, weiss ich nicht.

Und wenn Du nur den Takt untersuchen willst, müsstest eigentlich die Addition mit DInt machen, um Einflüsse der Real-Ungenauigkeit auszuschliessen....
 
Zuletzt bearbeitet:
Und wenn Du nur den Takt untersuchen willst, müsstest eigentlich die Addition mit DInt machen, um Einflüsse der Real-Ungenauigkeit auszuschliessen....
Danke Jungs. Die Überlegung bezüglich des Zeitverhaltens hat auf jeden Fall eine interessante Diskussion nach sich gezogen. Für zeitkritische Anwendungen müsste man es sicherlich vertiefen, aber mein Fazit ist:

Für träge, unkritische Abläufe ist der Taktmerker oder ein Sekundentakt aus einem OB3x ausreichend. Feierabend!!! (y)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ein Sekundentakt aus einem OB3x ausreichend

Naja der übliche Weg ist eigentlich das Aufaddieren / Integrieren im OB3x.
Bei einer 1500 gibt es recht viele Faktoren, die die Zykluszeit des OB1 beeinflussen.
Die OB3x sind im Verhalten stabiler.
 
Naja der übliche Weg ist eigentlich das Aufaddieren / Integrieren im OB3x.
+1

Hinweis: ich würde ausdrücklich NICHT die Funktion LGF_Integration aus der Lib LGF verwenden, sondern das simple Addieren/Integrieren im OB3x selbst programmieren. Der LGF_Integration verwendet kein festes Zeitraster wie OB3x und war auch schon mehrmals hier im Forum Thema, weil da Siemens immer wieder mal Bugs reinbastelt.
 
Zurück
Oben