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

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

Thema: S7-300 Date und Time

  1. #1
    Registriert seit
    17.01.2011
    Beiträge
    105
    Danke
    12
    Erhielt 2 Danke für 2 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wie kann ich im TIA beim Format Date und Time auf die jeweiligen Byte (Jahr, Monat, Tag, Stunde, Minuten, Sekunden zugreifen?
    Ich möchte eine Wochenzeitschaltuhr programmieren mit Vergleicher.
    Wie oben benannt ist eine S7-300 315-2DP vorgesehen.

    Hat jemand eine Anleitung wie man das macht?

    Gruss
    TMaroni
    Zitieren Zitieren S7-300 Date und Time  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.316
    Danke
    932
    Erhielt 3.331 Danke für 2.689 Beiträge

    Standard

    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    TMaroni ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    17.01.2011
    Beiträge
    105
    Danke
    12
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Was heisst Indirekt absolut zugreifen und DT auf einen (temporären) Struct umkopieren?
    Kannst du mir jeweils ein Beispiel aufzeigen?

    TMaroni

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.316
    Danke
    932
    Erhielt 3.331 Danke für 2.689 Beiträge

    Standard

    Indirekt absolut zugreifen: in AWL per speicherindirekter oder registerindirekter Adressierung auf die Speicheradressen innerhalb der DATE_AND_TIME-Struktur zugreifen. In SCL indirekt auf die absoluten Adressen in z.B. einem DB zugreifen.

    DT auf einen temporären STRUCT umkopieren: in TEMP eine Struktur mit dem Byte-Aufbau von DATE_AND_TIME deklarieren und dann eine DATE_AND_TIME-Variable z.B. per BLOCKMOVE in diese Struktur kopieren. Danach kannst Du auf die einzelnen Bytes symbolisch zugreifen. Das geht in AWL und SCL. (In SCL kann auch per AT-Sicht direkt ohne Umkopieren auf die Einzel-Bytes des DATE_AND_TIME zugegriffen werden.)

    Wie das ganze in TIA geht habe ich keine praktische Erfahrung. Für S7-300/400 muß es aber ähnlich wie bei Step7 classic gehen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.316
    Danke
    932
    Erhielt 3.331 Danke für 2.689 Beiträge

    Standard

    PS:
    Im TIA-Hilfesystem bzw. Systemhandbuch sollte der Aufbau des Datentypes DATE_AND_TIME zu finden sein, ebenso die Erklärungen zur speicherindirekten (L B [#index]) und registerindirekten (L B [AR1, P#2.0]) Adressierung.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #6
    TMaroni ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    17.01.2011
    Beiträge
    105
    Danke
    12
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Wie wird die AT-Sicht mit dem SCL gemacht?

    TMaroni

  7. #7
    TMaroni ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    17.01.2011
    Beiträge
    105
    Danke
    12
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Ich habe gemäss deine Angabe die DT-Struktur umkopiert (Byte), jetzt möchte ich diese Bereiche in INT-Werte haben.
    Wie kann ich das umwandeln? Kann ich das ganze auch umgekehrt anwenden?
    Siehe unten Bilder
    DT_Struktur_1.jpgDT_Struktur_2.png

    Gruss
    TMaroni

  8. #8
    Registriert seit
    04.03.2010
    Beiträge
    44
    Danke
    7
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Vermutlich fast passend für Dich. Wurde halt nicht mit TIA programmiert sondern noch mit dem Simatic Manager.
    Hoffe das hilft Dir weiter.

    Code:
    FUNCTION FC226 : BOOL
    //  Beschreibung: FC_DT_TO_STRUCT
    //                Baustein zerlegt den Datentyp DATE_AND_TIME in einzelne Variablen. Unter "Hilfe zu Step 7" ==> "Suchen" ==> "Format des Datentyps DATE_AND_TIME"
    //                ist der Aufbau des Datentyps DATE_AND_TIME beschrieben. Mit Hilfe dieser Angaben wurde dieser Baustein hier erstellt.
    //                Als Rückgabewert der Funktion wird das OK Flag übergeben.
    //  Ersteller:  ***
    //  Erstelldatum: ***    
    //  Änderungen:   
    TITLE=    'Konvertierung von DATE_AND_TIME in einzelne Variablen';
    NAME:     DT_TO_STRUCT;
    Family:   SCL;
    Version:  '1.0';
    AUTHOR:   **;
    // KNOW_HOW_PROTECT
    {SCL_SetOKFlag:='TRUE'}
    
    VAR_INPUT
      DTVar                 :DT;            // DATE_AND_TIME Variable die zerlegt werden soll
    END_VAR
    
    VAR_OUTPUT
      nJahr                 :INT;           // Wertebereich 90-89, 90=1990/89=2089
      nMonat                :INT;           // Wertebereich 1-12, 1=Jan/12=Dez
      nTag                  :INT;           // Wertebereich 1-31 Tage
      nStunde               :INT;           // Wertebereich 0-23 Stunden
      nMinute               :INT;           // Wertebereich 0-59 Minuten
      nSekunde              :INT;           // Wertebereich 0-59 Sekunden
      nMillisekunde         :INT;           // Wertebereich 0-999 Millisekunden
      nWochentag            :INT;           // Wertebereich 1-7 1=Sonntag/7=Samstag
    END_VAR
    
    VAR
      sdtVar                :STRUCT   
        byJahr              :BYTE;          // Wertebereich 90-89, 90=1990/89=2089 BCD Codiert
        byMonat             :BYTE;          // Wertebereich 1-12, 1=Jan/12=Dez BCD Codiert
        byTag               :BYTE;          // Wertebereich 1-31 Tage BCD Codiert
        byStunde            :BYTE;          // Wertebereich 0-23 Stunden BCD Codiert
        byMinute            :BYTE;          // Wertebereich 0-59 Minuten BCD Codiert 
        bySekunde           :BYTE;          // Wertebereich 0-59 Sekunden
        byMillisekunde      :BYTE;          // Die beiden höchstwertigen Ziffern von MSEC
        by7                 :BYTE;          // xxxxyyyy x=Die niederwertige Ziffer von MSEC Y=Wochentag 1=Sonntag/7=Samstag
      END_STRUCT;      
      dtVartmp AT sdtVar    :DT;            // Temporärer Eingangszeiger der zerlegt werden soll 
      wWord                 :WORD;          // Hilfsvariable
      sWord AT wWord        :STRUCT         // Hilfsstruktur
        by0                 :BYTE;
        by1                 :BYTE;
      END_STRUCT;
      
    END_VAR
    
    BEGIN
    
    // Die DATE_AND_TIME Variable mal temporär übergeben
    dtVartmp:= DTVar;
    
    // Bytes ins Word kopieren
    sWord.by0     := sdtVar.byMillisekunde;
    sWord.by1     := sdtVar.by7;
    
    // Variablen übergeben
    nJahr         := BCD_TO_INT(sdtVar.byJahr);
    nMonat        := BCD_TO_INT(sdtVar.byMonat);
    nTag          := BCD_TO_INT(sdtVar.byTag);
    nStunde       := BCD_TO_INT(sdtVar.byStunde);
    nMinute       := BCD_TO_INT(sdtVar.byMinute);
    nSekunde      := BCD_TO_INT(sdtVar.bySekunde);
    nMillisekunde := BCD_TO_INT(SHR(IN:= wWord, N:= 4));
    nWochentag    := BCD_TO_INT(sdtVar.by7 AND BYTE#2#0000_1111);
    
    FC226:= OK;
    
    END_FUNCTION
    Gruß Didaddy
    Geändert von Didaddy (12.09.2013 um 15:07 Uhr)

  9. Folgender Benutzer sagt Danke zu Didaddy für den nützlichen Beitrag:

    ducati (28.05.2014)

  10. #9
    TMaroni ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    17.01.2011
    Beiträge
    105
    Danke
    12
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Im TIA Portal SCL ist die Umwandlung anders als beim Classic SCL. Die Umwandlung sieht so aus => BCD16_TO_INT.
    Gibt es im TIA Portal die normale BCD_TO_INT-Umwandlung? Oder sind beide gleich?

    Danke Didaddy für dein FC226!

    Gruss
    TMaroni

  11. #10
    Registriert seit
    04.03.2010
    Beiträge
    44
    Danke
    7
    Erhielt 5 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Habs mir gerade mal angeschaut, so wie ich das sehe müsste die Funktion in TIA BCD16_TO_INT der in S7 BCD_TO_INT entsprechen.
    BCD32_... wäre dann für Double Integers zu verwenden.

    Gruß Didaddy

Ähnliche Themen

  1. Beckhoff Date and Time an S7
    Von dr1101 im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 15.11.2013, 19:29
  2. Date and Time umwandeln in Time
    Von veritaz89 im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 24.05.2012, 08:07
  3. S7 Time und Date syncronisieren?
    Von babylon05 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 19.11.2008, 12:26
  4. Time and Date
    Von paula23 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 22.10.2008, 08:50
  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
  •