TIA ADD addiert statt "1" per 1Hz-Takt 1000 auf eine UDINT

trockenpaule

Level-1
Beiträge
14
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe in einem Globalen Datenbaustein einen sekundenzähler und einen Stundenzähler erstellt.
Hiermit möchte ich Betriebstd zählen lassen.
Beide wurden als UDINT angelegt.
Per clock_1Hz takte ich den Rechner "ADD" und zähle auf SEK damit eins drauf.
So sollte ja eigentlich sekündlich der Wert in der SEKUNDEN-Variable um eins erhöht werden.
Leider ist dem nicht so.... er zählt ca. 1000 drauf.
genau kann ich es nicht sagen, weil es nicht genau 1.000 sind und es zu schnell geht mit der Übertragung.
Ich komm einfach nicht drauf, 1 sollte ja eigentlich 1 sein.:-(
TIA13pro, S71214FC
 
Na da wirst du eine Flanke von dem Clock_1Hz generieren müssen.
Der ist ja immer für eine Sekunde TRUE und in jedem Programmzyklus
wird dann 1x hochgezählt. Dies würde darauf hindeuten, dass deine aktuelle
Zykluszeit bei 1ms liegt.

Mit Grüßen
 
Ja, 1 Hz ist eine Sekunde. Dein Programm wird ja zyklisch abgearbeitet.
Jetzt ist der Sekundentakt für eine 500ms auf TRUE. In diesem Zeitraum
wird das Programm bei einer Zykluszeit von 0,5ms 1000x durchlaufen, in der
deine Hochzählbedingung TRUE ist. Aus diesem Grund gibt es Flanken.

Bitte selber Goggeln.

Mit Grüßen
 
Zuletzt bearbeitet:
Der 1Hz-Taktmerker ist 0.5s lang TRUE und 0.5s lang FALSE. Was auf eine Zykluszeit bei 0.5ms hindeutet.

PS: Und nach "Flanke" braucht der TE nicht googlen, sondern einfach im TIA-Programmeditor F1 drücken > Index > Flanke. Doch vielleicht erbarmt sich jemand, dem TE aus den nun sooo vielen Flanke-Anweisungen die richtige rauszusuchen?

Harald
 
Zuletzt bearbeitet:
Danke an alle, hab ich schon gemacht, und funktioniert. Is mir noch gar nicht aufgefallen dass das so ist. Hab die Clock´s eigentlich schon ab und zu eingesetzt, allerdings nicht zum zählen.
Danke an alle!
 
Für die Flanke kannst Du z.B. die Anweisungen P_TRIG oder P= verwenden.
Code:
             +--------+   Puls_1Hz
Clock_1Hz    | P_TRIG |   +-----+
---| |-------|CLK    Q|---|  =  |
             +--------+   +-----+
              Tag_FPM
Den Puls_1Hz kannst Du dann zum Sekundenzählen verwenden.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es ist ja eine reine Logiksache. Du musst dir ja nur vorstellen, dass deine Hochzählbedingung für sehr viele Zyklen auf TRUE ist.
Du möchtest aber nur einmal hochzählen, also generierst du eine positive Flanke und nun hast die ein TRUE Ergebniss für einen
Zyklus und es wird nur 1x hochgezählt. Es gibt übrigens noch negative Flanken. Aber du hast es ja geschafft.

Manchmal sieht man den Wald vor Bäumen nicht.
 
Mit CountUp hab ich das sonst immer gemacht, aber das ist doof, weil ich da ja eine maximale Zahl eingeben muss.
Weiss jetzt nicht, wie ich es genau nennen soll.
Das will ich nicht mehr, vor allem weil mir hier im Forum dazu geraden hat, die Betriebsstunden mit ADD hochzuzählen.
Find ich auch gut so.
Wie rechnet Ihr auf Betriebsstunden in Industriezeit um?
Ich hab hier mal die gezählten Sekunden / 300 x 5 gemacht. Dürfte richtig sein oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie meinst du dass mit
Wie rechnet Ihr auf Betriebsstunden in Industriezeit um

Aber Sekunden in Stunden wäre wohl eher "Gezählte Sek" / 3600

Warum machst du nicht zwei BYTE für Sekunden, Minuten und einen DINT für Stunden.
Dann kannst du nach 59 Sekunden die Sekunden auf 0 setzen und die Minute + 1 und nach
59 Minuten die Minuten auf 0 und die Stunde +1

Aber vielleicht verstehe ich nicht, was du machen möchtest.

Mit Grüßen
 
Wie rechnet Ihr auf Betriebsstunden in Industriezeit um?
Ich hab hier mal die gezählten Sekunden / 300 x 5 gemacht. Dürfte richtig sein oder?
Wie kommst Du auf "Sekunden / 300 x 5"? :confused:

Betriebsstundenzähler mit Anzeige im Industriestunden-Format ###.# :
* Betriebssekunden zählen in einen DINT (reicht für fast 70 Betriebsjahre)
* für Anzeige in Industrie-Betriebsstunden den Wert durch 3600 teilen
- entweder durch lineare Skalierung im HMI (0...3600 --> 0...1)
- oder den DINT in REAL wandeln und danach DIV 3600.0

Beispiel: gezählt 5400 Sekunden DIV 3600.0 --> 1.5 Stunden

PS: Du hättest ruhig in Deinem vorherigen Thema weitermachen können. Da hat vollmi erklärt wie er Betriebsstundenzähler macht.

Harald
 
Zurück
Oben