Ich möchte gerne eine UDINT Variable über Modbus auslesen, welche die Sekundenlaufzeit meiner Pelletförderschnecke enthält.
Meine Frage vorweg -> ist das überhaupt möglich?
Ich gehe mal grundsätzlich davon aus dass es möglich ist, da mir aber der wirkliche Durchblick bei den Datentypen fehlt dachte ich dass mir vielleicht jemand aus dem Forum weiterhelfen kann. Muss ich den Datentyp ggf. in der Wago konvertieren? Ich komme nicht weiter.
ich steh leider etwas auf dem Schlauch. Ich verwende als Baustein derzeit „ONTIME“ der Oscat Bibliothek. Kennst du vielleicht einen anderen Baustein?
Ich kann zwar UDINT in WORD konvertieren - aber wie bekomme ich WORD in IPS? Wenn ich in IPS eine Variable anlegen will geht nur Integer, String, Boolean oder Float. Oder stehe ich noch mehr auf dem Schlauch als ich denke?
der ONTIME-Baustein ist ok.
Wie sieht denn die Konvertierung von UDINT nach WORD aus?
Wenn Du einfach nur mit „DWORD_TO_WORD“ konvertierst, dann geht es wohl eine Zeit lang gut, aber nach 65535 Sekunden bekommst Du einen Überlauf.
WORD/UINT = 0 bis 65535
DWORD/UDINT = 0 bis 4294967295
INTEGER mit VZ = −32768 bis +32768
Kleine Hilfestellung für Konvertierung in „WORD“ für Stunde/Minute/Sekunde:
Stunden = Gesamtsekunden DIV 3600
Restsekunden = Gesamtsekunden MOD 3600 (MOD liefert den ganzzahligen Rest der Division)
Minuten = Restsekunden DIV 60
Sekunden = Restsekunden MOD 60
Dafür reicht auch der Wertebereich einer Integer-Variable in IPS aus. (32768 Stunden)
Danke Roland. Habe jetzt einiges ausprobiert… aber es klappt nicht so ganz…
Fällt die Verwendung eines Konvertierungsbausteins flach mit den von dir angegebenen Rechenoperationen? Oder muss ich UDINT nach INT Konvertieren und auf INT die Operationen anwenden?
Im Anhang siehst du was ich bisher gemacht habe… aber die Restsekunden ändern sich irgendwie nicht wie sie sollen glaube ich.
Was man für eine Zeit vor dem Computer verbringen kann :rolleyes:
Aber das brauche ich in diesem Forum niemandem zu erzählen
Ich habe nochmal 3 Screenshots angehängt.
Bild 1 und 2 sind der Programmteil, Bild 3 die Variablen.
Ich möchte gern wissen ob das mit den Datentypen jetzt so passt und das da nix überläuft
Ich muss mal schauen wie ich die Daten dann von IPS (schöner noch wäre ja direkt von der Wago) in eine Datei schreiben kann. Das ist dann wieder ein anderes Thema…
Wichtig ist, dass die Quellvariable (Gesamtsekunden) remanent gehalten wird. Alle anderen Variablen werden von dieser abgeleitet und brauchen keine Remanenz.
Hab mal ein Beispiel in CFC angehängt - ist etwas kompakter als FUP.
nochmals vielen Dank für deine Hilfe! Dann werde ich nur die Sekunden remanent definieren.
Was die Schreibzyklen des internen Flashs betrifft - ist das tatsächlich so das man den nur ca. 90tsd mal Beschreiben kann? Je nach Ungeschicktheit kann das ja ganz schnell gehen…
der Flash-Speicher für das Filesystem ermöglicht beim 841 bis zu 1 Million Schreibzyklen.
Ich persönlich vermeide den direkten Zugriff auf das Filesystem. Dafür gibt es ja beispielsweise IPS…