Verpolt
Level-1
- Beiträge
- 3.203
- Reaktionspunkte
- 546
-> Hier kostenlos registrieren
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
kann man das irgendwie erhöhen?sprich weiter zählen als 32 tausend?
der zähler darf ja auch beim Urlöschen nicht zurück gesetzt werden
UN #xResetTimer
SPB kres
L 0
T #diStunden
T #iMinuten
T #iSekunden
kres: NOP 0
O #xResetTimer
ON #xStartTimer
ON #xSekundenPuls
SAVE
BEB
L #iSekunden
L 1
+I
L 60
>=I
SPB min
TAK
T #iSekunden
BEA
min: L 0
T #iSekunden
L #iMinuten
L 1
+I
T #iMinuten
L 60
>=I
SPB std
TAK
T #iMinuten
BEA
std: L 0
T #iMinuten
L #diStunden
L 1
+D
T #diStunden
L DW#16#7FFFFFFF
>=D
SPBN ende
L DW#16#0
T #diStunden
ende: BE
Ich muss dazu sagen das ich bis jetzt vorallem in FUP programmiert habe vorallem weil ich die befehle in AWL noch nicht alle kenne(wens da nen guten guide gibt pls posten )
Weil 4352 zufällig von den Operationen vor Deinem Code noch im AKKU1 steht.Aber warum habe ich bei meiner booleschen Variable #BETR_RES (Betriebsstunden RESET) den Wert 4352?
Der wars! Hat eh funktoiniert!Vielleicht hilft es Dir, wenn Du den Wert des AKKU1 in der Gleitpunkt-Darstellung beobachtest? (Rechtsmausklick auf die Beobachtungsspalte > Darstellung > Gleitpunkt)
Kann ich dir gern sagen. Weil es mein Auftrag ist, diesen Betriebsstundenzähler im REAL-Format zu realisieren. So sinnfrei das auch ist (ja ich stimme dir zu), der Herr hat gesprochen und seine Worte waren:" Programmiere den Betriebsstundenzähler in REAL".Warum zählst Du die Sekunden und Stunden im REAL-Format?
Das fiel mir bereits auf und habs gesäubert.Und wenn Du schon mit REAL arbeitest, dann solltest Du auch durchgängig den Datentyp REAL verwenden und z.B. beim Nullsetzen der Zähler 0.0 zuweisen und nicht die Ganzzahl 0.
Wieso braucht man eigentlich bei einem Betriebsstundenzähler Sekundenimpulse?
Da reicht doch alle Stunde ein Impuls?
Hat der Herr gesagt, daß Du den Betriebsstundenzähler in REAL programmieren MUSST oder wollte er nur den Zählerstand in REAL angezeigt bekommen (123.456 h)?der Herr hat gesprochen und seine Worte waren:" Programmiere den Betriebsstundenzähler in REAL".
L #Sekunden_INT //Sekunden INT (0..3599)
DTR //Sekunden REAL
L 3.600000e+003
/R //Sekunden normiert 0.0 .. 0.999x
L #Stunden_DINT //Stunden DINT
DTR //Stunden REAL
+R //Stunden+Sekunden REAL
T #Betriebsstunden_REAL
Wie willst du dann...Wieso braucht man eigentlich bei einem Betriebsstundenzähler Sekundenimpulse?
Da reicht doch alle Stunde ein Impuls?
Ich hab mal eine gaaanz tolle Variante gesehen, da hatten die cleveren Jungs doch einfach 2.777777e-004 (1/3600) auf den Real addiert.Warum zählst Du die Sekunden und Stunden im REAL-Format? Das ist meiner Meinung nach sinnfrei und bringt nur unnötig Ungenauigkeiten in die Berechnung, zumal Du eh' nur ganze Sekunden zählst, ganz davon abgesehen, daß der Stundenzähler irgendwann bei ca. 16.8 Millionen stehenbleiben wird.
Hat der Herr gesagt, daß Du den Betriebsstundenzähler in REAL programmieren MUSST oder wollte er nur den Zählerstand in REAL angezeigt bekommen (123.456 h)?
UN #BETRH_RES // alle Werte auf Null setzen SPB m000
L 0.000000e+000
T #BETRH_SEK
T #BETRH
m000: U #BETRH_TAKT // Takt
FP #FP_Flanke
U(
O #B_VOR
O #B_RUE
)
SPBN END
//; // -------------------------------
L #BETRH_SEK
L 1.000000e+000 // Sekunden um 1 erhoehen
+R
T #BETRH_SEK
L 3.600000e+003
>=R
SPBN END
//; // -------------------------------
L 0.000000e+000
T #BETRH_SEK
L #BETRH_STD
L 1.000000e+000 // Stunden um 1 erhoehen
+R
T #BETRH_STD
//; // --------------------------------
//;
END: L #BETRH_SEK
L 3.600000e+003
/R
L #BETRH_STD
+R
T #BETRH
NW1
U E 0.0
FP M 25.1
SPBNB _001
L MD 20
L L#4
+D
T MD 20
UN OV
SAVE
CLR
_001: U BIE
= M 25.0
NW2
U(
L MD 20
L L#400
>=D
)
FP M 25.2
SPBNB _002
L 0
T MD 20
_002: NOP 0
NW3
U M 25.0 //Erst Zählen, dann speichern
SPBN M001
AUF DB 1 // Der DB, in den die Werte eingetragen werden sollen
L MD 20 // Nummer des Datendoppelwortes, kann z.B. von einem Zähler abgeleitet werden
SLD 3 // Die Integerzahl muss ins Pointerfornmat gewandelt werden
T #DBD_Pointer // Die Pointervariable muss ein Doppelwort sein!
L MD 0 // Messwert, der ins DBW 1 geschrieben werden soll, z.B. aus einem Parameter
T DBD [#DBD_Pointer] // es wird nun die Zahl 123 in das DB10.DBD??? geschrieben
M001: NOP 0
Naja... wenn man umständliche Lösungen magalso Top Teil ..
Den Baustein würde ich gerne bei mir benutzen.
Warum soll der Ringpuffer 100 Einträge haben?und zwar möchte ich gerne die Betriebsstunden in eine DB reinschreiben und diese nachher mit WinCC flex anzeigen lassen. und das Pro Monat.
Wir sind doch in einem SchaltJahr, Harald! Da plant man lieber viel zu viel Reserve ein, als ein wenig zu wenig!!!Warum soll der Ringpuffer 100 Einträge haben?
Das kann ich nur bestätigen. Oft ist das dann schon die "zweite halbe Lösung".Beschreibe mal mit einfachen Worten, was genau Du haben willst. Wenn man das kann, dann ist das meistens schon die halbe Lösung.
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen