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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: CPU-Zeit Format

  1. #11
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    jetzt seh ich das Problem.
    Moment. kurz überlegen.
    mfG Aventinus

  2. #12
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard

    Zitat Zitat von kruz_007 Beitrag anzeigen
    ...kann ich anhand DB16.dbd8 und DB16.dbd12 die zeit in CPU schreiben ??
    Definitiv nicht.

    Wenn mich mein Gedächtnis nicht trügt muss der DATE_AND_TIME Pointer im BCD-Format vorliegen.

    Versuche es mal mit DTB die beiden Doppelwörter in eien anderen DB umzusetzen und mit diesen neuen Bytes den SFC zu füttern
    Das Grauen lauert in der Zwischenablage !!

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

    kruz_007 (31.03.2014)

  4. #13
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    ich tipp dir schnell was zusammen
    mfG Aventinus

  5. #14
    Registriert seit
    04.11.2010
    Beiträge
    31
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @dtsclipper

    habe ich auch schon mal gemacht leider hat auch nicht geklappt, sogar die Werte nach der konvertierung sich nicht ändern

    L db16.dbd 8
    DTB
    T MD214
    NOP 0


    L db16.dbd 12
    DTB
    T MD220
    NOP 0


    Variable tabelle2.jpg

  6. #15
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Code:
    FUNCTION FC 2 : VOID
    TITLE =
    VERSION : 0.1
    
    
    VAR_INPUT
      Zeit_1 : DINT ;    //Zeit Teil 1 von OPC
      Zeit_2 : DINT ;    //Zeit Teil 1 von OPC
    END_VAR
    VAR_OUTPUT
      Zeit_DT : DATE_AND_TIME ;    
    END_VAR
    VAR_TEMP
      Datenbaustein : INT ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =Zeit konvertieren
    
          L     P##Zeit_DT; 
          LAR1  ; 
    
          L     B [AR1,P#2.0]; 
          L     B#16#84; 
          <>I   ; 
          SPB   kdb; 
          L     W [AR1,P#0.0]; 
          T     #Datenbaustein; 
          AUF   DB [#Datenbaustein]; 
    kdb:  L     D [AR1,P#2.0]; 
          LAR1  ; 
    
    
    
    // Jahr
          L     #Zeit_1; 
          L     L#1000000; 
          /D    ; 
          ITB   ; 
          T     B [AR1,P#0.0]; 
    
    // Monat
          L     #Zeit_1; 
          L     L#1000000; 
          MOD   ; 
          L     L#10000; 
          /D    ; 
          ITB   ; 
          T     B [AR1,P#1.0]; 
    
    // Tag
          L     #Zeit_1; 
          L     L#10000; 
          MOD   ; 
          L     L#100; 
          /D    ; 
          ITB   ; 
          T     B [AR1,P#2.0]; 
    
    // Stunde
          L     #Zeit_1; 
          L     L#100; 
          MOD   ; 
          ITB   ; 
          T     B [AR1,P#3.0]; 
    
    // Minute
          L     #Zeit_2; 
          L     L#1000000; 
          /D    ; 
          ITB   ; 
          T     B [AR1,P#4.0]; 
    
    // Sekunde
          L     #Zeit_2; 
          L     L#1000000; 
          MOD   ; 
          L     L#10000; 
          /D    ; 
          ITB   ; 
          T     B [AR1,P#5.0]; 
    
    // Millisekunden
          L     #Zeit_2; 
          L     L#10000; 
          MOD   ; 
          L     L#100; 
          /D    ; 
          ITB   ; 
          T     B [AR1,P#6.0]; 
    
    // Millisekunde / WT
          L     #Zeit_2; 
          L     L#100; 
          MOD   ; 
          ITB   ; 
          T     B [AR1,P#7.0]; 
    
    END_FUNCTION
    Hier mal eine Quelle. Sollte passen, ist aber nicht 100% getestet.
    mfG Aventinus

  7. #16
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Zitat Zitat von kruz_007 Beitrag anzeigen
    @dtsclipper

    habe ich auch schon mal gemacht leider hat auch nicht geklappt, sogar die Werte nach der konvertierung sich nicht ändern

    L db16.dbd 8
    DTB
    T MD214
    NOP 0


    L db16.dbd 12
    DTB
    T MD220
    NOP 0


    Variable tabelle2.jpg
    DTB funktionier nicht, weil der nur Zahlen von -9999999 bis +9999999 akzeptiert, du aber drüber liegst.
    mfG Aventinus

  8. Folgender Benutzer sagt Danke zu Aventinus für den nützlichen Beitrag:

    kruz_007 (31.03.2014)

  9. #17
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard

    Jupp, habs auch grad gelesen...

    Wär ja auch zu einfach gewesen...
    Das Grauen lauert in der Zwischenablage !!

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

    kruz_007 (31.03.2014)

  11. #18
    Registriert seit
    04.11.2010
    Beiträge
    31
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @Aventinus

    super hat funktioniert

  12. #19
    Registriert seit
    04.11.2010
    Beiträge
    31
    Danke
    16
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @ Aventinus

    wie gesagt es funktioniert, danke nochmal, möchte nur mal verstehen was du genau gemacht hast, kannst du mir bitte paar kommentare zu dem Programm schreiben.

    Danke im Voraus

  13. #20
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    nochmal eine Quelle, besser kommentiert.
    Code:
    FUNCTION FC 2 : VOID
    TITLE =
    VERSION : 0.1
    
    
    VAR_INPUT
      Zeit_1 : DINT ;    //Zeit Teil 1 von OPC
      Zeit_2 : DINT ;    //Zeit Teil 2 von OPC
    END_VAR
    VAR_OUTPUT
      Zeit_DT : DATE_AND_TIME ;    
    END_VAR
    VAR_TEMP
      Datenbaustein : INT ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =Zeit konvertieren
    
    // Pointer auf Out-Variable laden und in AR1 ablegen
          L     P##Zeit_DT; 
          LAR1  ; 
    
          L     B [AR1,P#2.0]; // Speicherbereich der aussen anparametrierten Variable laden
          L     B#16#84; 
          <>I   ; 
          SPB   kdb; // Wenn Speicherbereich <> DB --> Springe zu kdb
          L     W [AR1,P#0.0]; // DB-Nummer laden
          T     #Datenbaustein; 
          AUF   DB [#Datenbaustein]; // DB aufschlagen
    kdb:  L     D [AR1,P#2.0]; // Adresse der Variable laden
          LAR1  ; // und in AR1 ablegen
    
    
    
    // Jahr                                 
          L     #Zeit_1; // Wert durch 1000000 Teilen, so dass nur die vorderen 2 Stellen übrigbleiben
          L     L#1000000; 
          /D    ; 
          ITB   ; // Integer zu BCD wandeln
          T     B [AR1,P#0.0]; // und an der richtigen Stelle in der am Out-Parameter anparametrierten Variable ablegen
    
    // Monat
          L     #Zeit_1; // Wert modulo 1000000 um die vorderen 2 Stellen zu löschen
          L     L#1000000; 
          MOD   ; // Ergebnis durch 10000 Teilen, so dass die Stellen 3 und 4 übrigbleiben
          L     L#10000; // ... der Rest sollte dann einleuchten
          /D    ; 
          ITB   ; 
          T     B [AR1,P#1.0]; 
    
    // Tag
          L     #Zeit_1; 
          L     L#10000; 
          MOD   ; 
          L     L#100; 
          /D    ; 
          ITB   ; 
          T     B [AR1,P#2.0]; 
    
    // Stunde
          L     #Zeit_1; 
          L     L#100; 
          MOD   ; 
          ITB   ; 
          T     B [AR1,P#3.0]; 
    
    // Minute
          L     #Zeit_2; 
          L     L#1000000; 
          /D    ; 
          ITB   ; 
          T     B [AR1,P#4.0]; 
    
    // Sekunde
          L     #Zeit_2; 
          L     L#1000000; 
          MOD   ; 
          L     L#10000; 
          /D    ; 
          ITB   ; 
          T     B [AR1,P#5.0]; 
    
    // Millisekunden
          L     #Zeit_2; 
          L     L#10000; 
          MOD   ; 
          L     L#100; 
          /D    ; 
          ITB   ; 
          T     B [AR1,P#6.0]; 
    
    // Millisekunde / WT
          L     #Zeit_2; 
          L     L#100; 
          MOD   ; 
          ITB   ; 
          T     B [AR1,P#7.0]; 
    
    END_FUNCTION
    mfG Aventinus

  14. Folgender Benutzer sagt Danke zu Aventinus für den nützlichen Beitrag:

    kruz_007 (02.04.2014)

Ähnliche Themen

  1. Step 7 Format #TOD Zeit inkrementieren
    Von Mathias im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 28.11.2013, 11:55
  2. Step 7 Umwandlung von EIB/KNX Datum und Zeit in Step7 Format
    Von emis80 im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 17.06.2013, 20:48
  3. TP177 Datum/zeit -> CPU
    Von AndreK im Forum HMI
    Antworten: 2
    Letzter Beitrag: 09.03.2010, 13:24
  4. CPU Zeit auswerten
    Von HWPascal im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 05.03.2009, 23:20
  5. CPU Zeit
    Von Pinguino im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.04.2007, 09:46

Lesezeichen

Berechtigungen

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