Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 4 von 4

Thema: Mitsubishi: Timer-Problem

  1. #1
    Registriert seit
    27.04.2007
    Beiträge
    22
    Danke
    5
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Auf einer Mitsubishi/Melsec Q-CPU (GX IEX Developer) soll folgender code laufen:

    Code:
    T_3 := DINT_TO_TIME(REAL_TO_DINT(MIN_PUMPING_TIME * 60.0) * 1000);
    t_pumping_time(in := PUMPING, pt := T_3);
    T_3_ET := t_pumping_time.ET;
    MIN_PUMPING_TIME ist REAL und hat den Wert 60.0
    T_3 ist TIME und hat den Wert T#1h
    t_pumping_time ist ein lokaler TON-Timer

    Das Problem ist:
    Etwa 5 Minuten bevor der Timer abläuft wird T_3_ET negativ. Die Zeit läuft korrekt ab, nur der Angezeigte Wert für T_3_ET wird etwa T#-49h...

    Da ich die Restzeit aber für die Visualisierung brauche passt mir das gar nicht. Meinem Verständnis nach sollte die Null werden, wenn der Timer abgelaufen ist, und dann stehenbleiben.

    Was mache ich falsch?
    Zitieren Zitieren Mitsubishi: Timer-Problem  

  2. #2
    Registriert seit
    11.07.2004
    Beiträge
    1.597
    Danke
    10
    Erhielt 213 Danke für 183 Beiträge

    Standard

    Da ich die Restzeit aber für die Visualisierung brauche passt mir das gar nicht.
    ohne die Software genauer zu kennen:
    eine Subtraktion (PT Minus ET) sollte das richtige Ergebnis der Restzeit liefern?

  3. #3
    franzz ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    27.04.2007
    Beiträge
    22
    Danke
    5
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Oberchefe Beitrag anzeigen
    ohne die Software genauer zu kennen:
    eine Subtraktion (PT Minus ET) sollte das richtige Ergebnis der Restzeit liefern?
    Genauer gesagt geht es so weiter:

    Code:
    T_3 := DINT_TO_TIME(REAL_TO_DINT(MIN_PUMPING_TIME * 60.0) * 1000);
    t_pumping_time(in := PUMPING, pt := T_3);
    T_3_ET := t_pumping_time.ET;
    
     T := DINT_TO_REAL(TIME_TO_DINT(T_3_ET)) / 1000.0;
    WAITING_TIME := MIN_PUMPING_TIME *60.0 - T;
    Ich wandele also ET zurück in REAL-Sekunden und mache die Subtraktion danach. Das könnte man natürlich auch andersrum machen - auf die Idee bin ich noch nicht gekommen. Probiere ich morgen aus.

    Aber ich sehe einfach nicht, warum es so nicht geht.

  4. #4
    Registriert seit
    11.07.2004
    Beiträge
    1.597
    Danke
    10
    Erhielt 213 Danke für 183 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Aber ich sehe einfach nicht, warum es so nicht geht.
    Weil bei jeder Zahl in einer SPS irgendwann ein Überlauf kommt, rechnet man dann die Differenz (und hat hierbei auch wieder einen Überlauf weil man mit den gleichen Anzahl Bits rechnet), dann stimmt's wieder.

Ähnliche Themen

  1. problem mit timer
    Von linuxluder im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 06.11.2007, 16:41
  2. Step7 Timer problem
    Von Schlapi im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 28.01.2007, 13:02
  3. Timer Problem !!!
    Von Ma_su im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 04.04.2006, 15:12
  4. Problem mit FB, Timer und Bezeichnung
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 24.10.2004, 13:58
  5. Timer problem
    Von spooki01 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 14.07.2003, 10:49

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •