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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 12 von 12

Thema: Date_and_Time vom OB auslesen

  1. #11
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    *
    FUNCTION FC 1710 : VOID
    TITLE =READ_CLK
    //Funktion zum Lesen und Speichern der Systemzeit im Merker- oder 
    //Datenbausteinbereich
    //Die Uhrzeit wird fortlaufend ab dem ersten Word am Eingang anyDateTime gespeichert
    //Jahr,Monat,Tag,Stunde,Minute,Sekunde,Millisekunde,Wochentag
    //
    //Aufrufbeispiel:
    //      CALL  FC     2
    //       anyDateTime   :=#OB1_DATE_TIME
    //       anyDestination:=DB1.DBW16
    //
    //DATE:     09.12.2008
    //AUTHOR:   4lagig
    //VERSION:  V0.1 BasicVer
    AUTHOR : '4lagig'
    FAMILY : ClockGF
    VERSION : 0.1
    
    VAR_INPUT
      anyDateTime : ANY ;    
      anyDestination : ANY ;    
    END_VAR
    VAR_TEMP
      dwTempAR1 : DWORD ;    
      dwTempAR2 : DWORD ;    
      xDB : BOOL ;    
      wDB : WORD ;    
      iLoop : INT ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          TAR1  #dwTempAR1; // adressregister
          TAR2  #dwTempAR2; // sichern
    
          L     0; // schleife
          T     #iLoop; // initialisieren
    
          L     P##anyDestination; // ziel prüfen
          LAR1  ; 
    
          L     W [AR1,P#4.0]; // ob DB
          L     0; 
          <>I   ; 
          SPBN  db2; 
          TAK   ; 
          T     #wDB; 
          SET   ; 
          =     #xDB; 
          SPA   ver; 
    db2:  CLR   ; 
          =     #xDB; // oder nicht
    
    ver:  L     D [AR1,P#6.0]; // speicherbereich aus ANY
          LAR1  ; // in AR1
    
          L     P##anyDateTime; // quelle
          LAR2  ; 
          L     D [AR2,P#6.0]; // adressieren
          LAR2  ; 
    
          U     #xDB; // wenn DB
          SPB   ver2; // die andere schleife nutzen
    
          L     6; 
    nex1: T     #iLoop; // jahr, monat, tag,
          L     B [AR2,P#0.0]; // stunden, minuten, sekunden
          BTI   ; // in integer wandeln
          T     W [AR1,P#0.0]; // und speichern
          +AR1  P#2.0; 
          +AR2  P#1.0; 
          L     #iLoop; 
          LOOP  nex1; 
    
          L     W [AR2,P#0.0]; // millisekunden
          SRW   4; // filtern
          BTI   ; 
          T     W [AR1,P#0.0]; // und speichern
    
          L     W [AR2,P#0.0]; // wochentag
          SLW   12; // filtern
          SRW   12; 
          BTI   ; 
          T     W [AR1,P#2.0]; // und speichern
    
          SPA   ver3; 
    
    ver2: AUF   DB [#wDB]; 
    
          L     6; 
    nex2: T     #iLoop; 
          L     B [AR2,P#0.0]; 
          BTI   ; 
          T     DBW [AR1,P#0.0]; 
          +AR1  P#2.0; 
          +AR2  P#1.0; 
          L     #iLoop; 
          LOOP  nex2; 
    
          L     W [AR2,P#0.0]; 
          SRW   4; 
          BTI   ; 
          T     DBW [AR1,P#0.0]; 
    
          L     W [AR2,P#0.0]; 
          SLW   12; 
          SRW   12; 
          BTI   ; 
          T     DBW [AR1,P#2.0]; 
    
    ver3: LAR1  #dwTempAR1; // adressregister zurückspeichern
          LAR2  #dwTempAR2; 
    
          SET   ; //EN0-handling
          SAVE  ; 
    END_FUNCTION
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  2. #12
    Registriert seit
    01.06.2008
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von vierlagig Beitrag anzeigen
    so sieht es aus, wenn man sich an Gebs vorgaben hält - danke dafür auch von mir.

    Code:
    *
          L     LW    18
          SRW   4
          BTI   
          T     &quot;Millisekunden&quot;
    
          L     LW    18
          SLW   12
          SRW   12
          BTI   
          T     &quot;Wochentag&quot;
    So hab ich´s gemacht mit Ausblenden
    Code:
     CALL SFC1
    RET_VAL:=MW10
    CDT:=#DATUM_UHRZEIT
    
    LAR1 P##DATUM_UHRZEIT
    ...
    
    L W#16#FFF0
    L W [AR1, P#6.0]
    UW
    T "Millisekunden"
    L B#16#F
    L B [AR1, P#7.0]
    UW
    T "Wochentag"
    PS: Sollte man nicht besser immer über den Pointer arbeiten, falls jemand von den Kollegen mal auf die pfiffige Idee kommt eine Variable dazwischen zu schieben?
    Gruß, Mike
    Geändert von MikeDO (10.12.2008 um 22:46 Uhr)

Ähnliche Themen

  1. FC mit Date_And_Time
    Von Heinz2011 im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 07.02.2011, 22:28
  2. String-->date_and_time
    Von rolusch im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 14.12.2009, 09:16
  3. Date_and_time
    Von uz71 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 31.03.2006, 15:05
  4. Date_And_Time
    Von pm im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 17.01.2005, 12:18
  5. Date_and_time
    Von Anonymous im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 06.10.2003, 16:05

Lesezeichen

Berechtigungen

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