sfc1

A

Anonymous

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
hallo leute

ich habe mit dem sfc1 baustein datum und uhrzeit ausgelesen. wie kann man beim datum den monat und tag einzeln auslesen. das ich dann jeweils ein wert für den monat und ein wert für den tag habe?
 

HaraldG

Active member
Beiträge
28
Punkte Reaktionen
0
Servus!

Laut S7-Hilfe:
Byte n Jahr
Byte n+1 Monat
Byte n+2 Tag
Byte n+3 Stunde
Byte n+4 Minute
Byte n+5 Sekunde
Byte n+6 höchstwertige Ziffern der Millisekunden
Byte n+7 linke 4 Bits: niederwertigen Ziffern der Millisekunden (?)
rechte 4 Bits: Wochentag (1= Sonntag, 2=Montag, (?)
3= Dienstag...)

Also, wenn Du das Datum und die Uhrzeit in DB10 ab Adresse 0.0
abgelegt hast dann steht im DB10.dbb0 das Jahr, im DB10.dbb1 der Monat, etc.

Im Zweifelsfall hilft die Variablentabelle Online
mit den einzelnen Bytes weiter.

Hoffe das hilft Dir für's erste weiter.

Gruß, Harald
 

verona

Member
Beiträge
18
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
hallo

möchte möchte dem gast anschließen. bin jetzt seit 3 tagen dabei irgendwie das datum und die uhrzeit aus dem sfc1 auszulesen. bekomme es aber nicht vernünfitg hin. möchte gerne das ich z.b. ein paar merker haben wo dann einzeln das jahr, montag, tag,stunde und minute drin steht. am besten wenn die das dezimal ausgeben. kann mir jemand ein beispiel geben? das von haraldg versteh ich nicht. vielleicht reicht ja auch ein ansatz. bin echt am verzweifeln.
 

volker

Supermoderator
Teammitglied
Beiträge
5.514
Punkte Reaktionen
948
verona schrieb:
das von haraldg versteh ich nicht.

wieso nicht? ist doch eigentlich klar.

rufe sfc1 auf und schreibe an den cdt-ausgang eine temporäre variable vom ty date_and_time.
eine date_and_time variable belegt 8 byte.
:!: schau dir auch mal den fc6-8 aus dem iec functionblocks an.

Code:
//datum und uhrzeit lesen
      CALL  "READ_CLK"
       RET_VAL:=#ret_val1
       CDT    :=#clk
      NOP   0


//wenn clk deine 1. temp-var ist belegt #clk die lokalbytes 0-7

      L     LB     0                    //Byte n Jahr 
      T     MB    10

      L     LB     1                    //Byte n+1 Monat 
      T     MB    11

      L     LB     2                    //Byte n+2 Tag 
      T     MB    12

      L     LB     3                    //Byte n+3 Stunde 
      T     MB    13

      L     LB     4                    //Byte n+4 Minute 
      T     MB    14

      L     LB     5                    //Byte n+5 Sekunde 
      T     MB    15

      L     LB     6                    //Byte n+6 höchstwertige Ziffern der Millisekunden 
      T     MB    16

      L     LB     7                    //Byte n+7 linke 4 Bits: niederwertigen Ziffern der Millisekunden (?) 
      T     MB    17
 
Oben