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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 27

Thema: Mit Zeiten "S5T#0MS" rechnen

  1. #1
    Registriert seit
    15.02.2007
    Beiträge
    10
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Ich schreibe von einem OP3-Panel Zeiten im "S5T#2S"-Format in einen DB.
    Zeit A und Zeit B im DB abgelegt. Soweit so gut.

    Nun brauche ich eine Differenz zwischen den beiden Zeiten A und B.
    Zeit C = Zeit A - Zeit B

    Wie, bzw. mit was für Funktionen kann ich das tun?
    Geht das überhaupt.

    Ich arbeite mit Simatic-Manager Step7

    Danke schon mal.

    Gruss
    kussji
    Geändert von kussji (15.02.2007 um 15:42 Uhr)
    Zitieren Zitieren Mit Zeiten "S5T#0MS" rechnen  

  2. #2
    Registriert seit
    20.01.2007
    Ort
    Grünkraut
    Beiträge
    103
    Danke
    31
    Erhielt 19 Danke für 16 Beiträge

    Standard

    Zeit A in INT umwandeln Basis Millisekunden
    Zeit B in INT umwandeln Basis Millisekunden
    A - B
    Ergebnis bei Bedarf wieder in S5-Time-Format konvertieren

    Gruss KS

  3. #3
    Registriert seit
    22.11.2006
    Beiträge
    186
    Danke
    2
    Erhielt 12 Danke für 12 Beiträge

    Standard

    das Problem bei der Berechnung besteht darin, dass die S5Time aus 4 BCD Ziffern besteht. In der Linken Ziffer befindet sich der Faktor. Anders gesagt um die Zeiten zu addieren bzw Subtrahieren müssen die erst mal die Gleiche Basis haben, dann kann mann sich mit schieben so ein wenig weiterhelfen
    Ciao

    Antonio
    ________________________________
    nicht in Problemen, sondern in Lösungen denken

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Guckst du mal hier in die FAQ:

    http://www.sps-forum.de/showthread.php?t=2942

    da steht, wie die S5#Time aufgebaut ist.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #5
    Registriert seit
    02.09.2006
    Beiträge
    115
    Danke
    5
    Erhielt 13 Danke für 11 Beiträge

    Standard

    Servus.

    Gugst du zuerst hier:

    http://www.sps-forum.de/showthread.p...ablen+Zeitwert

    Hol dir 2 Variablen aus dem OP, mach damit was du willst und fertig.
    Folgendes gilt dann zu beachten:
    Der minimale Zeitwert, einer S5T ist 10ms...
    Reicht das?

    MfG
    Borsti
    „Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, daß sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, daß es unmöglich zerlegt oder repariert werden kann.“
    Douglas Adams

  6. #6
    Registriert seit
    29.01.2007
    Ort
    Sandkrug
    Beiträge
    147
    Danke
    7
    Erhielt 36 Danke für 25 Beiträge

    Standard

    Hallo kussji,
    dein Problem ist nicht so ganz einfach, aber natürlich lösbar. Hier mein fertiges Programm:
    1. Das aufrufende Programm
    Im aufrufenden Programm wird der FC10 (meine Vorgabe) 2 mal verwendet:
    (DB12.DBW0 (Zeit A) und DB12.DBW2 (Zeit B) sind auch nur meine Vorgaben)
    // Aufruf FC10 mit Zeit A
    CALL FC 10
    Zeitwert:=DB12.DBW0
    Zeit_ms:=MD110 // Rückgabe im DINT-Format in ms nach MD 110
    // Aufruf FC10 mit Zeit B
    CALL FC 10
    Zeitwert:=DB12.DBW2
    Zeit_ms:=MD114 // Rückgabe im DINT-Format in ms nach MD114
    // Differenzbildung Zeit A - Zeit B
    L MD 110
    L MD 114
    -D
    T MD 118 // Ergebnis nach MD118
    Das bedeutet, der FC10 hat eine IN-Variable vom Typ S5TIME (Zeitwert) und eine OUT-Variable vom Typ DINT (Zeit_ms). Dazu hat er eine temp. WORD-Variable "Zeit_BCD" und eine temp. INT-Variable "Faktor".
    2. Der FC10
    Das "Innenleben" des FC10 sieht folgendermaßen aus:
    L #Zeitwert // Zeitwert im BCD-Format speichern
    SLD 20
    SRD 20
    T #Zeit_BCD
    L #Zeitwert // Zeitfaktor im INT-Format speichern
    SLD 18
    SRD 30
    T #Faktor
    L #Faktor // Umrechnen in ms, falls Faktor=0
    L 0
    ==I // Zeitfaktor=0 ?
    SPBN FA1 // <-- nein
    L #Zeit_BCD
    SLD 4
    BTD
    T #Zeit_ms
    FA1 :L #Faktor // Umrechnen in ms, falls Faktor=1
    L 1
    ==I // Zeitfaktor=1
    SPBN FA2 // <-- nein
    L #Zeit_BCD
    SLD 8
    BTD
    T #Zeit_ms
    FA2 :L #Faktor // Umrechnen in ms, falls Faktor=2
    L 2
    ==I // Zeitfaktor=2 =
    SPBN FA3 // <-- nein
    L #Zeit_BCD
    SLD 12
    BTD
    T #Zeit_ms
    FA3 :L #Faktor // Umrechnen in ms, falls Faktor=3
    L 3
    ==I // Zeitfaktor=3 ?
    SPBN ENDE // <-- nein
    L #Zeit_BCD
    SLD 16
    BTD
    T #Zeit_ms
    ENDE :NOP 0
    Lass dich von der Genauigkeit des Ergebnisses in ms nicht blenden. Das Format S5TIME kann bestenfalls im Raster 10ms vorgegeben werden. Das sollte bei der Weiterverarbeitung des Ergebnisses berücksichtigt werden. Auch möchte ich drauf hinweisen, dass die Differenz auch negativ sein kann. Aber du wirst ja wissen, was das eventuell zu bedeuten hat.
    Gruß eNDe

  7. #7
    kussji ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.02.2007
    Beiträge
    10
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo zusammen,

    ich Danke euch vielmal für eure raschen und teilweise sehr ausführlichen Antworten, super!

    Bin neu hier und ab eurer schnelligkeit regelrecht erschrocken

    Kann das ganze leider erst am Montag probieren. Vielleicht gibts dann noch Fragen.

    Schönes Wochenende (ich hab schon )

    Gruss
    kussji
    Zitieren Zitieren Wauw das geht ja schnell hier bei euch!!!  

  8. #8
    Registriert seit
    29.01.2007
    Ort
    Sandkrug
    Beiträge
    147
    Danke
    7
    Erhielt 36 Danke für 25 Beiträge

    Standard

    Hallo kussji und alle Interessierten,
    ich kann nicht anders und stelle den folgenden Code hier in's Forum. Er ersetzt den in meinem obigen Beitrag dargestellten Code des FC10, also identische Funktion!
    Kleine Knobelaufgabe, wie das wohl funktioniert.
    Und hier der Code :
    L 4
    L #Zeitwert
    UW W#16#3000
    SRD 12
    *I
    +I
    L #Zeitwert
    UW W#16#0FFF
    SLD
    BTD
    T #Zeit_ms
    Das ist wirklich schon Alles !
    Ebenfalls schönes Wochenende

  9. #9
    Registriert seit
    20.10.2004
    Beiträge
    650
    Danke
    5
    Erhielt 26 Danke für 26 Beiträge

    Standard

    Zitat Zitat von eNDe Beitrag anzeigen
    L 4
    L #Zeitwert
    UW W#16#3000
    SRD 12
    *I
    +I
    L #Zeitwert
    UW W#16#0FFF
    SLD
    BTD
    T #Zeit_ms
    Und wie lange bist du dabei gesessen

    Nur eine frage was machst du mit denn +I

  10. #10
    Registriert seit
    27.08.2004
    Beiträge
    65
    Danke
    1
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Warum verwendest Du in der S7 nicht S7-Timer mit S7-Zeiten?

    ICh glaube da vereinfacht sich einiges.


    Gruss Ligatschow

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 16.03.2012, 18:20
  2. "Index Pulse", "Home Switch" und "Position Limit Switch"
    Von senmeis im Forum Antriebstechnik
    Antworten: 3
    Letzter Beitrag: 07.03.2011, 11:21
  3. Problem bei Rechnen mit "REAL" Werten
    Von SPS n00b im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 10.02.2010, 10:21
  4. Antworten: 2
    Letzter Beitrag: 14.12.2007, 15:09
  5. Antworten: 4
    Letzter Beitrag: 29.11.2006, 08:59

Lesezeichen

Berechtigungen

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