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

Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte
Ergebnis 31 bis 40 von 42

Thema: Format Date and Time einer KW zuordnen

  1. #31
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von skyvan Beitrag anzeigen
    ich habe in einem DB 1000 Realwerte gespeichert in einem 2ten DB 1000 Datensätze mit dem Zeitstempel wann die dazugehörigen Realwerte abgespeichert wurden.
    In welchem Datenformat wird der Zeitstempel gespeichert?

    Wird der Zeitstempel im Datenformat DATE oder DATE_AND_TIME gespeichert?

    Gruß Kai

  2. #32
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Kai

    das sind schon alles aufgelöste Werte die Reihenfolge sieht so aus

    Kalenderwoche: Int DBW0
    Rate: Real DBD2
    Jahr: Int DBW6
    Monat: Int DBW8
    Tag: Int DBW10

    da ich beim abspeichern der Blöcke eine Zykluszeitüberschreitung hatte habe ich die Blöcke auf 500 begrenzt.

    und wenn ich die KW suche z.B. 49 sollen alle Werte aus dem DB mit KW 49 in den Anzeige DB kopiert werden max. 30 Blöcke

    Gruß Marco

  3. #33
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo zusammen

    @Larry
    wenn ich das richtig sehe wird i nach dem laden 0 und wird dann mit Anzahl_Bloecke multipliziert.

    hab ich das richtig verstanden?
    qptr = Quellpointer
    zptr = Zielpointer
    qw = Kalenderwoche
    i = Offset Pointer
    J = Offset Pointer

    Gruß Marco

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

    Standard

    Hallo Marco,
    in etwa stimmt es ...

    Mit dem Setzen des Bit "Suche_starten" initialisiere ich das Notwendige. Eine neue Suche soll ja ggf. neue Ergebnisse bringen ...

    In der i-Schleife durchsuche ich den von dir vorgegebenen Datenbereich nach Übereinstimmung. Das Such-DW ist dann "(i-1) * laenge_Block +1" also für den ersten Datensatz := (1-1)*12 +1 := 1 - für den 2.Datensatz := (2-1)*12 +1 := 13 - usw.
    Habe ich eine Übereinstimmung (erstes Wort stimmt mit deiner Vorgabe überein, so schreibe ich die Daten in den angegebenen Ziel-Bereich "(Anzahl_gefunden -1) * laenge_Block " als z.B. (1-1) * 12 := 0 oder (2-1)*12 := 12 usw.

    Das Ganze läßt sich natürlich noch optimieren ...
    Funktioniert es ... oder nicht ?

    Gruß
    LL

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

    skyvan (14.12.2009)

  6. #35
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hi Larry

    Ja funktioniert musste nur eine kleine Änderung machen da qw den Wert aus DW1 gelesen hat und somit einen Teil meines Real Wertes interpretierte.
    Kann man die Werte die nicht übereinstimmen löschen bei suche Starten (Anzeige DB initialisieren)?
    Vielen Dank an dieser Stelle.

    Hab bei Siemens mal geschaut wegen SCL Kurs was hälst du davon?

    Code:
    FUNCTION FC2 : VOID            
    Title   = 'DB durchsuchen'  
    AUTHOR  : 'LL '
    VERSION : '1.0'     
     
    VAR_INPUT
       Start_suchen:   BOOL ;              // löst das suchen aus
       suche_KW:       INT ;               // Kalenderwoche 
       Quell_DB:       BLOCK_DB ;          // in dem DB wird gesucht
       Ziel_DB:        BLOCK_DB ;          // in den DB wird geschrieben
       laenge_Block:   INT ;               // wird in Byte angegeben
       Anzahl_Bloecke: INT;               // Anzahl der zu durchsuchenden Blöcke
       END_VAR
     
    VAR_OUTPUT
                
    Anzahl_gefunden: INT ;             // Anzahl gefundener Blöcke  
    END_VAR
       VAR_IN_OUT
       Suche_beendet  : BOOL ; 
       End_var
     
       VAR_TEMP
       Bedingung_erfuellt : BOOL ; 
       i :     INT ;
       j :     INT ; 
       qptr :  INT ; 
       zptr :  INT ; 
       qw :    INT ;
     
    END_VAR
     
    //     Anweisungsteil
    BEGIN
    if Start_suchen and not Suche_beendet  then 
    qw := 0; 
    Anzahl_gefunden := 0 ;
    for i:= 1 to Anzahl_Bloecke by 1 do
       qptr := (i-1) * laenge_Block +1 ;                              // löschen?
       qw := word_to_int(Quell_DB.DW[qptr]) ;
       if (qw = suche_KW) then 
          Anzahl_gefunden := Anzahl_gefunden + 1 ;
          zptr := (Anzahl_gefunden -1) * laenge_Block ;
          for j:= 1 to laenge_Block by 1 do
             Ziel_DB.DB[zptr+j-1] := Quell_DB.DB[qptr+j-1] ;
          end_for ;
       end_if ;
    end_for ;
     
    end_if ;
    Suche_beendet  := Start_suchen ;
    end_function
    Gruß und nochmals vielen Dank Marco
    Geändert von skyvan (14.12.2009 um 10:16 Uhr)

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

    Standard

    Hallo Marco,
    Zitat Zitat von skyvan Beitrag anzeigen
    Kann man die Werte die nicht übereinstimmen löschen bei suche Starten (Anzeige DB initialisieren)?
    Na klar ... da gibt es z.B. einen SFC Fill (21). Den könntest du im SCL-Script starten und ihm sagen, dass er den Ziel-DB zunächst löschen soll. Oder du machst dafür eine eigene Schleife, in der du die überzähligen Werte auf "0" setzt ...

    Zitat Zitat von skyvan Beitrag anzeigen
    Hab bei Siemens mal geschaut wegen SCL Kurs was hälst du davon?
    Das mußt du wissen. Wenn du schon Programmiersprachen-Kenntnisse hast, dann kannst es es mit einn paar Fragen hier und da auch so schaffen ... wenn nicht, dann ist das sicher sinnvoll.

    Gruß
    LL

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

    skyvan (14.12.2009)

  9. #37
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hi Larry

    ich arbeite seit einigen Jahren mit Step7 und früher noch Step5 aber hochsprachen hab ich noch nicht gemacht und das wenige ist ewig her.

    ja an Fill hab ich auch schon gedacht.

    Gruß Marco

  10. #38
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo an alle

    ich hab von User Larry Lafer folgenden Code erhalten den ich ein klein wenig abgeändert habe. Was ich noch benötige ist (jetzt) nicht nur die KW sondern auch das Jahr. Ich hoffe ihr könnt mir weiter helfen. Ich weiß es nicht genau aber ich glaube die von mir markierte Zeile müsste noch geändert bzw erweitert werden.

    Code:
    FUNCTION FC3 : VOID            
    Title   = 'DB durchsuchen'  
    AUTHOR  : 'Test'
    VERSION : '1.0'     
     
    VAR_INPUT
       Start_suchen:   BOOL ;              // löst das suchen aus
       suche_KW:       INT ;               // Kalenderwoche
       suche_Jahr      INT ;               // Jahr
       Quell_DB:       BLOCK_DB ;          // in dem DB wird gesucht
       Ziel_DB:        BLOCK_DB ;          // in den DB wird geschrieben
       laenge_Block:   INT ;               // wird in Byte angegeben
       Anzahl_Bloecke: INT;                // Anzahl der zu durchsuchenden Blöcke
       END_VAR
     
       VAR_OUTPUT
       Anzahl_gefunden: INT ;             // Anzahl gefundener Blöcke  
       END_VAR
       VAR_IN_OUT
       Suche_beendet  : BOOL ; 
       END_VAR
     
       VAR_TEMP
       Bedingung_erfuellt : BOOL ; 
       i :     INT ;
       j :     INT ; 
       qptr :  INT ; // Quelle Pointer week
       zptr :  INT ; // Ziel Pointer 
       qw :    INT ; // Quelle Week
       qj :    INT ; // Quelle Year
      
       END_VAR
     
    //     Anweisungsteil
    BEGIN
    if Start_suchen and not Suche_beendet  then 
    qw := 0;
    qj := 0; 
    Anzahl_gefunden := 0 ;
    for i:= 1 to Anzahl_Bloecke by 1 do
       qptr := (i-1) * laenge_Block  ;
       qw := word_to_int(Quell_DB.DW[qptr]) ;
       IF (qw = suche_KW) AND (qj = suche_Jahr)THEN 
          Anzahl_gefunden := Anzahl_gefunden + 1 ;
          zptr := (Anzahl_gefunden -1) * laenge_Block ;
          for j:= 1 to laenge_Block by 1 do
             Ziel_DB.DB[zptr+j-1] := Quell_DB.DB[qptr+j-1] ;
          end_for ;
       end_if ;
    end_for ;
     
    end_if ;
    Suche_beendet  := Start_suchen ;
    end_function
    Gruß Marco
    Zitieren Zitieren Erweiterung  

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

    Standard

    Hallo Marco,
    nicht geändert ... du mußt für qt natürlich auch noch den Wert aus deiner DB-Matrix laden. Alles andere sieht erstmal OK aus ...

    also z.B. :
    qt := word_to_int(Quell_DB.DW[qptr +2]) ;


    Gruß
    LL

  12. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    skyvan (29.01.2010)

  13. #40
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Larry

    werd es gleich mal probieren meld mich dann noch einmal.

    Gruß Marco

Ähnliche Themen

  1. Format Date zerlegen
    Von online im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 05.11.2010, 13:08
  2. S7 Format DATE
    Von fmbux im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 18.10.2009, 19:53
  3. Time and Date
    Von paula23 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 22.10.2008, 08:50
  4. Format Date and Time online im DB beobachten
    Von cmm1808 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 08.12.2007, 17:09
  5. Date and Time im DB
    Von godi im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 19.05.2006, 15:56

Lesezeichen

Berechtigungen

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