Uhrzeit

carsten

Level-1
Beiträge
53
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

ich möchte abhängig von der Uhrzeit und Datum, zu unterschiedlichen Tageszeiten also, Werte in einen Datenbaustein schreiben.
Nun habe ich aber noch nie mit dem SFC0 und SFC 1 gearbeitet. Kann mir da jemand helfen?

Gruß

Carsten
 
Also mit dem SFC 0 kannst du der CPU ein Datum und eine Uhrzeit vorgeben, was aber in deinem Fall wohl eher nicht gedacht ist. Mit dem SFC 1 kannst du das aktuelle Datum und die Uhrzeit deiner CPU auslesen und wenn gewünscht weiter damit arbeiten. (sprich mit einem Refernzwert auf >< oder = vergleichen)

Gruß
 
Hallo,

ja, die Hilfe habe ich mir angesehen. Als erstes muss ich aber mal den SFC0 und SFC1 unter Bausteine im Simaticmanager laden. Unter Bausteine und dann über die rechte Maustaste "neues Objekt hinzufügen" finde ich keine SFC's. Wo sind die?
 
Also du kannst mit dem SFC 1 das aktuelle Datum/Uhrzeit auslesen. Anschließend kannst du dir die einzelnen Bereiche (Stunde, Minute, Sekunde) filtern.

Funktioniert ungefähr so:

call sfc 1 (read clock)
ret_val:= MW300 (z.B.)
CDT:=#Date_Time

Zum Beispiel die aktuelle Stunde:
LAR1 P##Date_Time
L B[AR1,P#3.0]

Vielleicht auch noch ein nützlicher Link:
http://support.automation.siemens.c...objaction=csview&extranet=standard&viewreg=WW


Gruß

Slot23
 
Supper. Vielen Dank für eure schnelle und gute Hilfe. Die Links zu den Siemens Supportseiten haben viel Aufklärung gebracht.

Gruß
Carsten
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Datum und Uhrzeit kann man direkt aus OB1 auslesen ohne SFC zu nutzen. OB1 speichert aktuelles Datum und Uhrzeit in ab LB 12.

Beispiel:

L LB 12
BTI
T MB 102 #Jahr

L LB 13
BTI
T MB 103 #Monat

L LB 14
BTI
T MB 104 #Tag

L LB 15
BTI
T MB 105 #Stunde

L LB 16
BTI
T MB 106 #Minute

L LB 17
BTI
T MB 107 #Sekunde

L LW 18
SRW 4
BTI
T MW 108 #Milisekunden

L LW 20
L 2#1111
UW
BTI
T MW 120 #Wochentag
 
Tststs... auch wenn sich die absoluten Adressen der OB1-Standard-Temp-Variablen wohl nie ändern werden, sollte man das kopieren besser symbolisch machen, z.B. so:
Code:
//aktuelle Date+Time global verfügbar machen
      CALL  "BLKMOV"                            // SFC20
       SRCBLK :=#OB1_DATE_TIME
       RET_VAL:=#temp_Int                       // ein lokaler TEMP-Int oder ein MW..
       DSTBLK :="DB_global".now_Date_and_Time

//aktuelles Datum global verfügbar machen
      CALL  "DT_DATE"                           // FC6 (IEC Function)
       IN     :=#OB1_DATE_TIME
       RET_VAL:="DB_global".now_Date

//aktuelle Uhrzeit global verfügbar machen
      CALL  "DT_TOD"                            // FC8 (IEC Function)
       IN     :=#OB1_DATE_TIME
       RET_VAL:="DB_global".now_Time_of_Day

//oder mit einem Pointer kopieren
      LAR1  P##OB1_DATE_TIME
      L     B [AR1,P#0.0]                       // Jahr (BCD)
      T     ...
      L     B [AR1,P#1.0]                       // Monat (BCD)
      T     ...
      ...

Harald
 
Tststs... auch wenn sich die absoluten Adressen der OB1-Standard-Temp-Variablen wohl nie ändern werden, sollte man das kopieren besser symbolisch machen

Hallo Harald,
man sollte bei Siemens nie NIE sagen - davon abgesehen sehe ich das aber genau so : symbolische Lokal-Variablen sollte man auch symbolisch aufgreifen und nicht absolut ...

Gruß
Larry
 
Zurück
Oben