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

Ergebnis 1 bis 9 von 9

Thema: S5 zeiten addieren

  1. #1
    Registriert seit
    25.06.2007
    Beiträge
    15
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich habe folgendes Problem.
    Ich will eine variable Taktzeitüberwachung erstellen. Ich habe einen Timer für die Taktzeit. Zusätzlich habe ich aber in mehreren Schritten noch prüfzeiten die ich addieren will um damit den Zeitwert des Taktzeittimers zu füttern.
    gibts da irgend ein baustein der S5t# +S5t# rechnen kann oder so??

    mfg
    Stefan
    Zitieren Zitieren S5 zeiten addieren  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.792
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    die S5Time ist BCD-Codiert.
    Die obersten 4 Bit beinhalten den Multiplikator (3 = *10s , 2 = *1s , 1 = *100ms , 0 = *10ms) die unteren 12Bit den Zeitwert (0 .. 999). Den mußt du dir umrechnen - dann kannst du alle weiteren Rechen-Operationen machen und dananch wieder zurück-rechnen.
    Macht ein bißchen Arbeit - ist aber kein Hexenwerk.

    Eine andere Möglichkeit wäre mit den IEC-Timern (SFB3 - 5) zu arbeiten. Diese verwenden als Zeitbasis Time und dies ist einfach in ms codiert. Den Wert hiervon kannst du einfach so aufaddieren (etc.).

    Gruß
    LL

  3. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.262
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Ich würde das auch auf keinen Fall mit S5-Zeiten machen. Wenn schon dann mit Ton, siehe Larry.

    Oder du nimmst die Im OB 1 oder mittels SFC auslesbare SPS-Zeit.
    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

  4. #4
    Registriert seit
    20.01.2009
    Beiträge
    15
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Falls du es nicht so genau brauchst nimm einfach nen takmerker und addier auf nen ineteger oder so

  5. #5
    Papschtler ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.06.2007
    Beiträge
    15
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für die schnelle antwort.
    Das mit den IEC-Timern hab ich mir auch schon überlegt. Gibts ne möglichkeit die S5-BCD Zeit ins normale "Time" format zu wandeln?

  6. #6
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.752
    Danke
    323
    Erhielt 1.526 Danke für 1.286 Beiträge

    Standard

    Zitat Zitat von Papschtler Beitrag anzeigen
    Danke für die schnelle antwort.
    Das mit den IEC-Timern hab ich mir auch schon überlegt. Gibts ne möglichkeit die S5-BCD Zeit ins normale "Time" format zu wandeln?
    Ich weiß zwar nicht, warum du den Umweg über S5Time gehen willst,
    aber FC33 aus den IEC-Functions der Standard-Library würde diese Wandlung können.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

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

    Standard

    So kannst du dir deine S5-Zeit in Millisekunden umwandeln:

    Code:
    IN:
    s5tim: S5TIME
    TEMP:
    timebase: BYTE
    bcdtime: WORD
    multi: WORD
    RETURN:
    RET_VAL: DWORD
     
    Netzwerk 1: Zeitbasis
          L    #s5tim
          UW  W#16#3000
          SRW 12
          T   #timebase
     
    Netzwerk 2: BCD-Zeit
          L   #s5tim
          UW  W#16#FFF
          BTD
          T   #bcdtime
     
    Netzwerk 3: Multiplikator
          L   1
          T   #multi
          L   #timebase
          SPL MFFF
          SPA M000
          SPA M001
          SPA M002
          SPA M003
    MFFF: NOP 0
    M003: L   10
          L   #multi
          *D
          T   #multi
    M002: L   10
          L   #multi
          *D
          T   #multi
    M001: L   10
          L   #multi
          *D
          T   #multi
    M000: L   10
          L   #multi
          *D
          T   #multi
     
    Netzwerk 4: Zeit ausrechnen
          L   #multi
          L   #bcdtime
          T   #multi

  8. #8
    Registriert seit
    16.06.2009
    Ort
    Berlin
    Beiträge
    15
    Danke
    4
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo.

    Ich habe grade die selbe Thematik. Hintergrund bei mir ist eine Stauüberwachung, welche sich aus einem Timer mit einer variablen Zeit zusammensetzt. Diese variable Zeit soll gebildet werden aus der Materiallänge und der Bandgeschwindigkeit. Die Pads haben eine bestimmte Länge und je nach Bandgeschwindigkeit brauchen diese unterschiedlich lange, bis sie "durch" sind. Hier wird dann etwas "Reservelänge" dazuaddiert und fertig ist die Zeit für den Timer.

    Folgende Umsetzung habe ich geplant:
    Ich errechne mit eine "Zeit" in ms als Datentyp int aus Padlänge und Geschwindigkeit.

    Formel: Zeit = Weg(bzw. Länge) / Geschwindigkeit

    Das Ergebnis auf INT gecastet (REAL_TO_INT) und diesen Wert dann als Laufvariable für eine FOR Schleife genommen:

    1. Versuch in S7-SCL mit Datentypen S5TIME
    [PHP]
    ...
    Time_int : INT;
    Zeit : S5TIME;
    ...
    FOR i:=1 TO Time_int DO
    Zeit := Zeit + T#1ms;
    END_FOR;

    [/PHP]Beim Compilieren gibt es dann eine Fehlermeldung: Unzulässige Operandentypen ...

    Nimmt man aber als Datentyp IEC TIME also

    [PHP]
    ...
    Zeit : TIME;
    ...
    [/PHP]dann funktioniert es.

    Jetzt habe ich aber grade gelesen, dass der Datentyp TIME eigentlich ein Wert in ms ist. Dann könnte ich mir ja die FOR Schleife eigentlich sparen und das direkt zuweisen. Aber da werde ich bestimmt einen TYP Konflikt angemeckert bekommen. Vielleicht nach dem Mittag mal probieren ...
    Zitieren Zitieren Selbes Problem  

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.792
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich weiß jetzt nicht, was deine Frage war ... aber :
    du kannst schon mal keinen Datentyp S5Time (Datenbreite 16Bit - BCD-Codiert) mit einem Time (Datenbreite 32Bit) direkt verrechnen. Auch eine Typ-Umwandlung wird dir da nicht weiter helfen. Das Einzige was geht ist : S5Time in Time umrechnen, dann alles addieren und hinterher wieder S5Time davon machen. Die beiden Wandler gibt es allerdings nicht als Befehl, die mußt du dir schon selbst erstellen ... oder auf das S5Time verzichten und gleich mit den IEC-Timern arbeiten (SFB3 .. 5).

    Gruß
    LL

Ähnliche Themen

  1. S5, Zähler addieren
    Von Boardmaker im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 24.04.2010, 23:21
  2. Addieren Real
    Von Emilio im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 21.12.2007, 13:37
  3. BCD addieren CPU 224
    Von digidax im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 13.02.2006, 07:33
  4. Doppelworte addieren
    Von hubert im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 06.12.2005, 14:18
  5. Antworten: 5
    Letzter Beitrag: 15.10.2004, 15:19

Lesezeichen

Berechtigungen

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