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

Ergebnis 1 bis 7 von 7

Thema: Zeit mit Zähler stoppen

  1. #1
    Registriert seit
    18.06.2009
    Ort
    Karlsruhe
    Beiträge
    14
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    1.CPU TYP 315-2DP , 16*DI/DO, 2*12bit AI
    2. Step7 V5
    3. WinCC flexible V 5.4


    Hallo!

    Ich möchte die Zeit stoppen die von betätigen von e 0.1 bis erreichen eines Initiators A 2.1 vergeht. Die Zeitangabe mit einer Komastelle reicht.

    Hab das mal wie folgt probiert:

    E0.1 setzt nen Vorwärtszähler der den Takt von Taktmerker 100.0 bekommt (0,1s).

    Am dezimalausgang des Zählers schreib ich den Zählwert in MW 2.
    MW 2 teile ich durch 10 um wieder auf den Wert in sekunden zu kommen.

    Leider ist MW 2 nur ein INT und ich kann keine Kommazahlen zeigen und auch nur mit INT rechnen.


    Ist es möglich MW 2 mit ITD in MD 2 zu schreiben um mit real zahlen weiterzurechnen und diese ggf. darzustellen?

    Muss ich vllt. vor den rechenfunktionen Bitschieben in MD 2, um an den Wert z.B. bei 23 Takten; 2,3 s zu kommen?

    Würd mich sehr über Antworten, Anregungen freuen.
    Nicht gleich mit dem Hammer draufhauen,
    erst auf Stop schalten und nochmal streicheln....

    Mfg Trust
    Zitieren Zitieren Zeit mit Zähler stoppen  

  2. #2
    Registriert seit
    01.03.2007
    Beiträge
    262
    Danke
    26
    Erhielt 33 Danke für 28 Beiträge

    Standard

    Hallo Trust,

    ich versuche eigentlich immer auf Taktmerker zu verzichten um meine Programmteile auch wieder für andere Projekte wiederzuverwerten ohne dann die halbe Hardwarekonfiguration wieder über den Haufen zu werfen müssen.

    Im OB1 hast du ja in der TEMP-Schnittstelle verschiedene Variablen u.a. auch eine, die sich #OB1_PREV_CYCLE nennt. Diese gibt dir die Zeit in ms des letzten Durchlaufs des OB1 an.

    Also wenn du das dann so machst:
    Code:
    NW1: Initialisieren
    UN    M 0.0 // Hilfsmerker Flanke
    U     E 0.1 // dein Eingang
    =     M 0.1 // Flanke
     
    U     E 0.1 // dein Eingang
    =     M 0.0 // Hilfsmerker Flanke
     
    U     M 0.1 // Flanke
    UN    A 2.1 // dein Ausgang
    SPBN  M001
    L     L#0
    T     MD 4 // Zeit auf 0 setzen
    M001: NOP 0
     
    NW2: Zählen
    U     E 0.1 // dein Eingang
    UN    A 2.1 // dein Ausgang
    SPBN  M002 // springen wenn VKE <> 1
    L     #OB1_PREV_CYCLE // Zykluszeit
    ITD // Int in DInt wandeln
    L     MD 4 // Zeit
    +D // addieren
    T     MD 4 // wieder auf MD zurückschreiben
    M002: NOP 0
     
    NW3: Zähler in REAL konvertieren
    L     MD 4
    DTR
    L     1000.0
    /R
    T     MD 8
    Dann hast du im MD 4 deine Zeit in ms und im MD 8 deine Zeit in Sekunden als Gleitpunktzahl.
    Die Konvertierung in eine Gleitpunktzahl musst du aber nicht machen, da es im WinCC flex im Darstellungsformat einfach hingehen kannst und dort z.B. "9999,9" eingeben kannst, dann konvertiert das WinCC deine Zahl automatisch in eine Komazahl mit einer Nachkommastelle.

  3. Folgender Benutzer sagt Danke zu Human für den nützlichen Beitrag:

    Trust1981 (21.06.2009)

  4. #3
    Registriert seit
    13.10.2008
    Beiträge
    29
    Danke
    4
    Erhielt 7 Danke für 4 Beiträge

    Standard

    Hallo, welche Zeiten sind denn zu erwarten?
    Wenn ob35 noch nicht verwendet wird, könnte man diesen zB. auf 100ms stellen und jeden Aufruf zwischen Start und Stopp hoch zählen und hat so gleich den Wert in 0,1 Sekunden – Raster.
    Andere Möglichkeit ist das Lesen der Systemzeit bei Start und Stopp und gegeneinander verrechnen.

  5. Folgender Benutzer sagt Danke zu Steff_F für den nützlichen Beitrag:

    Trust1981 (21.06.2009)

  6. #4
    Trust1981 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.06.2009
    Ort
    Karlsruhe
    Beiträge
    14
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Reden

    Danke für deine Hilfe!!!

    Habs Folgendermaßen im OB 1 gelöst, siehe Anhang

    Mfg Trust

    Zitat Zitat von Human Beitrag anzeigen
    Hallo Trust,

    ich versuche eigentlich immer auf Taktmerker zu verzichten um meine Programmteile auch wieder für andere Projekte wiederzuverwerten ohne dann die halbe Hardwarekonfiguration wieder über den Haufen zu werfen müssen.

    Im OB1 hast du ja in der TEMP-Schnittstelle verschiedene Variablen u.a. auch eine, die sich #OB1_PREV_CYCLE nennt. Diese gibt dir die Zeit in ms des letzten Durchlaufs des OB1 an.

    Also wenn du das dann so machst:
    Code:
    NW1: Initialisieren
    UN    M 0.0 // Hilfsmerker Flanke
    U     E 0.1 // dein Eingang
    =     M 0.1 // Flanke
     
    U     E 0.1 // dein Eingang
    =     M 0.0 // Hilfsmerker Flanke
     
    U     M 0.1 // Flanke
    UN    A 2.1 // dein Ausgang
    SPBN  M001
    L     L#0
    T     MD 4 // Zeit auf 0 setzen
    M001: NOP 0
     
    NW2: Zählen
    U     E 0.1 // dein Eingang
    UN    A 2.1 // dein Ausgang
    SPBN  M002 // springen wenn VKE <> 1
    L     #OB1_PREV_CYCLE // Zykluszeit
    ITD // Int in DInt wandeln
    L     MD 4 // Zeit
    +D // addieren
    T     MD 4 // wieder auf MD zurückschreiben
    M002: NOP 0
     
    NW3: Zähler in REAL konvertieren
    L     MD 4
    DTR
    L     1000.0
    /R
    T     MD 8
    Dann hast du im MD 4 deine Zeit in ms und im MD 8 deine Zeit in Sekunden als Gleitpunktzahl.
    Die Konvertierung in eine Gleitpunktzahl musst du aber nicht machen, da es im WinCC flex im Darstellungsformat einfach hingehen kannst und dort z.B. "9999,9" eingeben kannst, dann konvertiert das WinCC deine Zahl automatisch in eine Komazahl mit einer Nachkommastelle.
    Angehängte Grafiken Angehängte Grafiken
    • Dateityp: jpg 1.jpg (214,6 KB, 38x aufgerufen)
    • Dateityp: jpg 2.jpg (143,7 KB, 26x aufgerufen)
    Nicht gleich mit dem Hammer draufhauen,
    erst auf Stop schalten und nochmal streicheln....

    Mfg Trust

  7. #5
    Registriert seit
    26.05.2009
    Beiträge
    541
    Danke
    35
    Erhielt 78 Danke für 69 Beiträge

    Standard

    Zitat Zitat von Steff_F Beitrag anzeigen
    Andere Möglichkeit ist das Lesen der Systemzeit bei Start und Stopp und gegeneinander verrechnen.
    Welche ich bevorzugen würde.
    Dann hättest du es nämlich ganz genau...

    Gruß wolder

  8. #6
    Trust1981 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.06.2009
    Ort
    Karlsruhe
    Beiträge
    14
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Falls mans schonmal gemacht hat und weiß wie`s geht sicherlich.

    Zitat Zitat von wolder Beitrag anzeigen
    Welche ich bevorzugen würde.
    Dann hättest du es nämlich ganz genau...

    Gruß wolder
    Nicht gleich mit dem Hammer draufhauen,
    erst auf Stop schalten und nochmal streicheln....

    Mfg Trust

  9. #7
    Registriert seit
    26.05.2009
    Beiträge
    541
    Danke
    35
    Erhielt 78 Danke für 69 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Datum_uhrzeit ist eine Temporäre Variable vom Typ Date_and_time.

    SFC1 findest du in der Bibliothek -> Standard Library -> System Function Blocks

    Der FC8 ist in der Bibliothek -> IEC Function Blocks zu finden.

    MD80 = Startzeit
    MD90 = Endzeit
    Differenzbilden und ausgeben in MD100

    Gruß wolder
    Angehängte Dateien Angehängte Dateien

  10. Folgender Benutzer sagt Danke zu wolder für den nützlichen Beitrag:

    Trust1981 (24.06.2009)

Ähnliche Themen

  1. Motor schnell stoppen, S7-200
    Von pinolino im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 16.12.2009, 20:56
  2. Zeit stoppen
    Von SPS_NEU im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 27.08.2009, 11:08
  3. normaler Zähler nach Zeit rücksetzen und weitzählen
    Von sebastianr1980 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 06.05.2009, 09:32
  4. laufendes programm stoppen
    Von prinz1978 im Forum Programmierstrategien
    Antworten: 5
    Letzter Beitrag: 09.01.2008, 19:19
  5. Asynchronmotor Stoppen
    Von netx1 im Forum Antriebstechnik
    Antworten: 7
    Letzter Beitrag: 11.12.2007, 15:22

Stichworte

Lesezeichen

Berechtigungen

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