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

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

Thema: REAL in S5time

  1. #1
    Registriert seit
    02.10.2006
    Ort
    Tirol
    Beiträge
    159
    Danke
    17
    Erhielt 5 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moagen,

    würde gerne einen Real Wert in eine S5time für einen Timer umwandeln.

    Ich mach das ganze so

    L #WERT
    TRUNC
    T DINT
    DTB
    t DWORD

    und dazwischen ?

    T S5TIME
    T H X T O M A T E
    Zitieren Zitieren REAL in S5time  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Hallo,
    du must bei deiner Wandlung berücksichtigen, dass der Wert S5Time BCD-Codiert ist und das vorderste Byte der Faktor für den Rest ist (Wie früher bei S5)
    "xyyy"
    yyy := BCD von 000 bis 999
    x := (0) * 10 ms
    x := (1) * 100 ms
    x := (2) * 1 s
    x := (3) * 10 s

    Das wars ...

  3. #3
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    wandelt Minuten.....

    Code:
    FUNCTION "Real->S5T" : VOID
    TITLE =
    VERSION : 0.1
    
    VAR_INPUT
      Zeit_min : REAL ; 
    END_VAR
    VAR_OUTPUT
      Zeit_W : WORD ;   
    END_VAR
    VAR_TEMP
      T_sek : REAL ;    
      OFlow : BOOL ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
          L     #Zeit_min; 
          L     6.000000e+001; 
          *R    ; 
          T     #T_sek; 
          L     #T_sek; 
          L     9.990000e+000; 
          <R    ; 
          SPB   P0; 
          TAK   ; 
          L     9.990000e+001; 
          <R    ; 
          SPB   P1; 
          TAK   ; 
          L     9.990000e+002; 
          <R    ; 
          SPB   P2; 
          TAK   ; 
          L     9.999000e+003; 
          >R    ; 
          =     #OFlow; 
          SPA   P3; 
     
     
    NETWORK
    TITLE =
    P0:   NOP   0; 
          L     #T_sek; 
          L     1.000000e+002; 
          *R    ; 
          RND   ; 
          ITB   ; 
          L     2#0; 
          OW    ; 
          T     #Zeit_W; 
          BEA   ; 
    P1:   NOP   0; 
          L     #T_sek; 
          L     1.000000e+001; 
          *R    ; 
          RND   ; 
          ITB   ; 
          L     2#1000000000000; 
          OW    ; 
          T     #Zeit_W; 
          BEA   ; 
    P2:   NOP   0; 
          L     #T_sek; 
          RND   ; 
          ITB   ; 
          L     2#10000000000000; 
          OW    ; 
          T     #Zeit_W; 
          BEA   ; 
    P3:   NOP   0; 
          L     #T_sek; 
          L     1.000000e+001; 
          /R    ; 
          RND   ; 
          ITB   ; 
          L     2#11000000000000; 
          OW    ; 
          T     #Zeit_W; 
          UN    #OFlow; 
          BEB   ; 
          L     W#16#3999; 
          T     #Zeit_W; 
          BEA   ; 
    
    END_FUNCTION

  4. Folgende 2 Benutzer sagen Danke zu borromeus für den nützlichen Beitrag:

    Egatec (01.02.2014),IBFS (18.07.2007)

  5. #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

    Schau mal in die FAQ: http://www.sps-forum.de/showthread.php?t=2942

    Da ist das nochmal genauer erklärt.
    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

  6. #5
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Beitrag

    Hi,
    siehe auch IEC FCs, FC33, FC40, wandeln S5Time nach TIME und umgek.
    Da TIME ein Long Integer ist, wo die Zeit einfach in ms steht, sind weitere Berechnungen einfach.

    Vladi
    ______________________________________
    relax, take it easy
    Zitieren Zitieren S5 Time umwandeln  

  7. #6
    Registriert seit
    18.06.2007
    Ort
    im Loch
    Beiträge
    56
    Danke
    6
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Also:

    L #Wert_in_Real
    Round
    L 1000
    *D
    T #Wert_in_ms_als_DINT

    FC40 füttern damit, das wars.
    Die dümmsten Programmierer haben die dicksten Programme.

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

    Standard

    Hallo tomatensaft,
    ich gehe mal davon aus, dass du eine "beliebige" Realzahl nach S5TIME wandeln willst. Die FC soll dann selbst die optimale Zeitdarstellung entscheiden. Hierfür der folgende Code:
    Code:
    FUNCTION FC 5 : VOID
    TITLE =
    VERSION : 0.1
    VAR_INPUT
      Zeitwert : REAL ; 
    END_VAR
    VAR_OUTPUT
      S5_TIME : WORD ;  
    END_VAR
    BEGIN
    NETWORK
    TITLE =Umwandlung Realzahl in Format S5TIME
          L     #Zeitwert; 
          L     9.990000e+000; // wandelbar in 1/100s ?
          <=R   ; 
          SPB   P0; // <-- ja
          TAK   ; 
          L     9.990000e+001; // wandelbar in 1/10s ?
          <=R   ; 
          SPB   P1; // <-- ja
          TAK   ; 
          L     9.990000e+002; // wandelbar in Sekunden ?
          <=R   ; 
          SPB   P2; // <-- ja
          TAK   ; 
          L     9.990000e+003; // wandelbar in 10s ?
          <=R   ; 
          SPB   P3; // <-- ja
          SPA   P4; // weil Bereichsüberschreitung
     
    P0:   L     #Zeitwert; // Zeitwert wandeln in 1/100s-Wert
          L     1.000000e+002; 
          *R    ; 
          RND   ; 
          ITB   ; 
          T     #S5_TIME; 
          BEA   ; 
    P1:   L     #Zeitwert; // Zeitwert wandeln in 1/10s-Wert
          L     1.000000e+001; 
          *R    ; 
          RND   ; 
          ITB   ; 
          OW    W#16#1000; 
          T     #S5_TIME; 
          BEA   ; 
    P2:   L     #Zeitwert; // Zeitwert wandeln in Sekunden-Wert
          RND   ; 
          ITB   ; 
          OW    W#16#2000; 
          T     #S5_TIME; 
          BEA   ; 
    P3:   L     #Zeitwert; // Zeitwert wandeln in 10s-Wert
          L     1.000000e-001; 
          *R    ; 
          RND   ; 
          ITB   ; 
          OW    W#16#3000; 
          T     #S5_TIME; 
          BEA   ; 
    P4:   NOP   0; // Zeitbereich ist überschritten, deshalb:
          L     W#16#3999; // Zeit begrenzen auf 9990 s
          T     #S5_TIME; // oder andere Fehlerausgabe
    END_FUNCTION
    Es ist noch zu entscheiden was passieren soll, wenn der Zeit-Wertebereich nicht eingehalten wird. S5Time geht von 0,01s bis 9990s. Alle anderen Werte würden den "Zeitbereich" verletzen. Das könnte man innerhalb der FC behandeln oder den EN-Eingang der FC entsprechend beschalten, dass gar nicht erst "falsche" Werte in die FC gelangen!
    Mfg eNDe
    Zitieren Zitieren Real nach S5TIME  

  9. Folgende 4 Benutzer sagen Danke zu eNDe für den nützlichen Beitrag:

    Egatec (01.02.2014),OHGN (20.07.2007),tomatensaft (24.07.2007),Verena91 (22.09.2015)

  10. #8
    Registriert seit
    04.09.2007
    Beiträge
    128
    Danke
    20
    Erhielt 8 Danke für 8 Beiträge

    Standard

    Zitat Zitat von TagebauCoder Beitrag anzeigen
    Also:

    L #Wert_in_Real
    Round
    L 1000
    *D
    T #Wert_in_ms_als_DINT

    FC40 füttern damit, das wars.
    Das funktioniert leider nicht, da der FC40 ein DINT am IN-Eingang nicht akzeptiert.

  11. #9
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Zitat Zitat von moeins Beitrag anzeigen
    Das funktioniert leider nicht, da der FC40 ein DINT am IN-Eingang nicht akzeptiert.
    Code:
          L     #myReal
          RND   
          L     1000
          *D    
          T     #myTime
          CALL  "TIM_S5TI"
           IN     :=#myTime
           RET_VAL:=#myS5dreck
    PS: Kann man sich nicht langsam mal von dem S5time Gelummps lösen?
    If you open your Mind too much, your Brain will fall out.

  12. Folgende 2 Benutzer sagen Danke zu zotos für den nützlichen Beitrag:

    fugger666 (03.12.2012)

  13. #10
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von zotos Beitrag anzeigen
    PS: Kann man sich nicht langsam mal von dem S5time Gelummps lösen?
    Zugegebener Maßen hantiert sich dieser S5-Timer so schön einfach. Bestens geeignet als der "schnelle Timer zwischendurch".
    Kein Datenbaustein, keine Multiinstanzen, sondern einfach einfügen und fertig.
    Deshalb nutzen den auch noch so viele.
    Der einzige Weg wäre, dass Siemens den killt...
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

Ähnliche Themen

  1. s5time Multiplizieren
    Von settelma im Forum Simatic
    Antworten: 42
    Letzter Beitrag: 03.06.2011, 20:32
  2. S5Time
    Von penki im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 20.05.2010, 13:26
  3. S5TIME in INTEGER?
    Von Felse im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 12.03.2009, 12:06
  4. OP S5time
    Von seb992000 im Forum HMI
    Antworten: 3
    Letzter Beitrag: 22.07.2008, 08:14
  5. WinCCFlexible und S5Time
    Von M-Arens im Forum HMI
    Antworten: 4
    Letzter Beitrag: 22.06.2006, 10:29

Lesezeichen

Berechtigungen

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