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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Zeitwert für Einschaltverzögerung berechnen

  1. #1
    Registriert seit
    27.02.2014
    Ort
    Spremberg
    Beiträge
    94
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich benötige mal wieder eure Hilfe.
    Ich möchte in einer S7-1214C eine Einschaltverzögerung TON verwenden.
    Die Schaltdauer soll aber Variabel sein und wird berechnet.

    Wie kann ich es anstellen, das ich nach einer Berechnung den Datentyp TIME erhalte, welchen ich dann als Zeitvorgabe PT nutzen kann?

    Ich hoffe ich habe mich halbwegs verständlich ausgedrückt.

    Vielen Dank!


    EDIT: Habe es soeben gefunden, wie ich das Format REAL oder INT in das TIME Format umwandle (siehe Bild im Anhang)
    Angehängte Grafiken Angehängte Grafiken
    Geändert von LOBBE1 (06.09.2015 um 09:47 Uhr)
    Zitieren Zitieren Zeitwert für Einschaltverzögerung berechnen  

  2. #2
    Registriert seit
    18.02.2013
    Ort
    Cottbus
    Beiträge
    153
    Danke
    40
    Erhielt 7 Danke für 7 Beiträge

    Standard

    Hallo Lobbe1,

    hier mal ein Baustein der den Wert (z.B. Analogwert) in das Datenformat TIME umwandelt.

    Hierbei ist zu beachten das am Anfang der Berechnung der Wert in Millisekunden angegeben ist und dann in Sekunden bzw. Minute. usw. umgerechnet werden muss.

    Mfg Matze

    INT-TIME.jpg
    Jedes Programm ist wie ein Puzzle, es muss nur gelöst werden!

  3. #3
    LOBBE1 ist offline Benutzer
    Themenstarter
    Registriert seit
    27.02.2014
    Ort
    Spremberg
    Beiträge
    94
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Matze,

    das ist natürlich auch eine Möglichkeit.
    Ich möchte eine Pulsgesteuerte Dosierpumpe ansteuern. Somit möchte ich einen Wert x in einem Panel in ml/h vorgeben. Ich möchte also einen Puls erzeugen, welcher, abhängig von einer bestimmten Durchflussmenge, variabel ist. Somit gebe ich in einem Panel z.B. 200ml/h vor. Über eine Berechnung wird die Impuslpause berechnet. Diesen berechnenten Wert benötige ich dann als TIME Datentyp. Hatte es erstmal so gemacht, wie ich es oben geschrieben hatte. Allerdings bekomme ich ja immer nur Millisekunden raus. Wenn ich das auf dein Beispiel anwenden würde, wäre #In_Int mein berechneter Wert in ms.
    Aber ich dachte bei T_CONV ist das Ergebnis IMMER in ms???

    MfG Norman

  4. #4
    Registriert seit
    18.02.2013
    Ort
    Cottbus
    Beiträge
    153
    Danke
    40
    Erhielt 7 Danke für 7 Beiträge

    Standard

    Nein, man bekommt nur ms raus wenn man den Wert so belässt. Sobald du den Wert umrechnest kommt am ende vov T_CONV auch ein anderer wert raus.

    Sozusagen das was du in den Baustein rein gibst kommt auch wieder raus nur das Format ist anders.
    Mfg Matze

    Sony Z3 über TapaTalk
    Jedes Programm ist wie ein Puzzle, es muss nur gelöst werden!

  5. #5
    LOBBE1 ist offline Benutzer
    Themenstarter
    Registriert seit
    27.02.2014
    Ort
    Spremberg
    Beiträge
    94
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das schon, aber woher "weiß" T_CONV das ich Sekunden hineingebe? Ich gebe doch nur eine Ganzzahl rein, welche errechnet wurde.
    Irgendwo hängt es gerade bei mir

  6. #6
    Registriert seit
    18.02.2013
    Ort
    Cottbus
    Beiträge
    153
    Danke
    40
    Erhielt 7 Danke für 7 Beiträge

    Standard

    Hier noch mal das Onlinebild,
    hab noch Kommentare hinzugefügt!
    Guck dir die Werte an um es nachzuvollziehen was der T_CONV macht!

    INT-TIME_1.jpg
    Jedes Programm ist wie ein Puzzle, es muss nur gelöst werden!

  7. Folgender Benutzer sagt Danke zu Smarty160484 für den nützlichen Beitrag:

    RONIN (06.09.2015)

  8. #7
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.330
    Danke
    448
    Erhielt 687 Danke für 512 Beiträge

    Standard

    Vielleicht um die Erklärung von Smarty noch ein wenig zu vereinfachen:

    Das Format TIME kennt keine andere Einheit als ms, auch wenn man T#15s angezeigt bekommt steht in der Variable der Dezimalwert 15000.
    T#15s = 15000ms
    T#3h5m3s500ms = 11103500ms

    Es ist nur die Anzeige der TIME-Variable die andere Einheiten darstellt, der Wert selber ist immer in ms.
    Lies dir dazu mal die F1-Hilfe zu TIME durch.

    Will man irgendeinen Wert in TIME umrechnen, muss man ihn einen ms-Wert herausbringen.
    So wie Smarty das mit der Sekunden-Vorgabe * 1000 macht.
    Man kann zwar schon ein T#15s mit 60 multiplizieren um auf T#15m zu kommen (smartys Beispiel), im Endeffekt ist das aber nichts anderes als den
    tatsächlichen Wert von T#15s (15000ms) mit "mal 60" auf 900000ms zu bringen, was wiederum den 15 Minuten entspricht.

    Zum Konvertieren eines DINT in TIME braucht man streng genommen auch gar keinen T_CONV. Beide sind 32-Bit ganzzahlen, ein einfacher MOVE würde es auch tun.
    Der einzige Unterschied zwischen TIME und DINT ist eigentlich nur zur Erkennung dass es sich um einen ZEIT-Datentypen handelt und damit TIA/Step7 weiß dass es den Wert als T#+/-__d__h__m__s___ms darstellen kann. Abgesehen davon gibt es zwischen DINT/TIME keinen wirklichen Unterschied, es gibt auch negative TIME-Werte.
    Geändert von RONIN (06.09.2015 um 22:03 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  9. #8
    Registriert seit
    13.11.2014
    Ort
    Paderborn
    Beiträge
    187
    Danke
    15
    Erhielt 12 Danke für 11 Beiträge

    Standard

    Moin, das hier sollte dir weiterhelfen ich hatte letztens ein ähnliches Problem: Wie kann ich Zeitwerte für Timer variabel eingeben?


    So wie ich das Bild von dem Smarty verstehe, lässt sich damit nur ganze Minuten erzeugen. Was machst du denn wenn du z.B. 40 sekunden haben willst?

  10. #9
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.330
    Danke
    448
    Erhielt 687 Danke für 512 Beiträge

    Standard

    Zitat Zitat von Junge Beitrag anzeigen
    So wie ich das Bild von dem Smarty verstehe, lässt sich damit nur ganze Minuten erzeugen. Was machst du denn wenn du z.B. 40 sekunden haben willst?
    @Junge: Du verwechselst gerade Äpfel mit Birnen.
    Dein Link verweist auf der Format S5-TIME während hier vom Format TIME geschrieben wird.

    Smartys Code rechnet nur einen Integer * 1000, was dann Millisekunden ergibt.
    Wenn der INT-Wert 40 ist bekommt er 40000ms raus was im TIME-Format die 40s sind.
    Danach zeigt er nur noch wie man von Sekunden auf Minuten (*60) kommt.

    S5-TIME ist das Dinosaurier-Format das die Hardware-Timer der SPSn verwenden, also S_EVERZ und Konsorten.
    Dieses Format hat 16Bit => 3 BCD-Kodierte Stellen und eine Einheit (10ms, 100ms, s, 10s).
    Stammt noch aus der S5-Uhrzeit und kann nicht mal Werte wie 33ms oder 2h1s darstellen.
    Hat auch einen max-Wert von 999*10s.
    Für Variable Berechnungen ist das Format in meinen Augen ziemlich ungeeignet.

    TIME hingegen ist ein 32-BIT-Format das wie ich oben beschrieben habe in Millisekunden angegeben ist.
    Daher kann es bis ca.24 Tage jeden Wert in ms-Auslösung darstellen. Es ist auch leichter damit zu rechnen da man sich keine
    Gedanken um BCD und einen Faktor machen muss.
    Allein schon das Rechnen ist leichter da man z.B. problemlos T#12d4h54m23s310ms mit T#5h#1s#123ms addieren/subtrahieren/multiplizieren/etc. kann.

    Das Format TIME wird von den Software-Timern (IEC-Timer) TON,TOF,TP etc. verwendet, wobei es z.B. auf der 1200 nur diese gibt.
    Geändert von RONIN (06.09.2015 um 22:08 Uhr) Grund: TIME-Max ist natürlich 24 Tage und 24h
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  11. #10
    Registriert seit
    13.11.2014
    Ort
    Paderborn
    Beiträge
    187
    Danke
    15
    Erhielt 12 Danke für 11 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Oh, ich nehme alles zurück! Hab das viel zu schnell und auch noch schlecht überflogen. Einfach meinen Beitrag ignorieren!

Ähnliche Themen

  1. Einschaltverzögerung Aussschaltverzögerung TON TOF für simulink
    Von Paulor im Forum Programmierstrategien
    Antworten: 0
    Letzter Beitrag: 26.02.2015, 10:41
  2. Antworten: 8
    Letzter Beitrag: 10.07.2012, 20:30
  3. Antworten: 16
    Letzter Beitrag: 03.09.2010, 22:00
  4. Eingangsbyte als Zeitwert für Zeitglied
    Von p-dae im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 12.08.2007, 20:04
  5. Antworten: 6
    Letzter Beitrag: 18.01.2005, 16:32

Lesezeichen

Berechtigungen

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