# Systemzeit auslesen und umwandeln in S7-SCL



## Angelo (11 September 2008)

Hallo zusammen!
Ich bin gerade an meiner Diplomarbeit dran und muss unter anderem mit einer SPS einen Linearantrieb ansteuern. Ich arbeite zum ersten mal überhaupt mit einer SPS. Bitte verzeiht daher, dass die folgende Frage etwas blamabel ist, da es eigentlich schon duzende Einträge darüber gibt aber ich werde nicht schlau daraus.
Ich muss die Zeit in Minuten haben, die seit 00:00 vergangen ist. Ich habe es mit folgendem Code versucht:

```
ORGANIZATION_BLOCK OB1

VAR_TEMP
   info : ARRAY[0..19] OF BYTE;

   fehler : INT;
   zeit : DT;
END_VAR

BEGIN
  read_clk(RET_VAL := fehler, CDT := zeit);

END_ORGANIZATION_BLOCK
```
Der Fehler lautet dann ungültiger oder fehlend Funktionstyp.

Die Funktion hab ich in der Symboltabelle als SFC 1 deklariert.
Zum einen schaff ich es nun nicht einmal die Zeit auszulesen, zum andern hab ich noch keinen Blassen, wie ich dann die Minuten aus diesem DT- Format in einen einfachen INT von Minuten oder so bringe.
Wäre wirklich sehr froh um Unterstützung, bin wirklich Anfänger und hab mit dem schon so viel Zeit verloren.

Freundliche Grüsse Angelo


----------



## Larry Laffer (11 September 2008)

... ich würde das nicht im OB1 programmieren, sondern in einer Function ...
Ansonsten wäre es so richtiger :
	
	



```
fehler := read_clk (CDT := zeit) ;
```
wenn du den DT dann zerlegen willst, dann ginge das so :
	
	



```
VAR_TEMP
   fehler : INT;
   zeit : DT;
   a_zeit AT zeit : array [0..7] of byte ;
   Stunde : int ;
   Minute : int ;
   Sekunde : int ;
END_VAR
 
und dann im Code :
 
  Stunde  := BCD_TO_INT (a_zeit [3]) ;
  Minute  := BCD_TO_INT (a_zeit [4]) ;
  Sekunde := BCD_TO_INT (a_zeit [5]) ;
```
... das sollte dich nun schon einmal weiterbringen ...


----------



## Kai (11 September 2008)

Zur Berechnung der Zeit in Minuten seit 00:00 Uhr kann man die Systemfunktion SFC1 READ_CLK und die IEC-Funktion FC8 DT_TOD verwenden:

http://www.sps-forum.de/showpost.php?p=124788&postcount=7

http://www.sps-forum.de/showpost.php?p=124825&postcount=8

Gruß Kai


----------



## Kai (11 September 2008)

Und hier noch mal ein kurzes Programmbeispiel:


```
FUNCTION FC100 : VOID
 
NAME    : TOD
FAMILY  : SPSFORUM
AUTHOR  : KAI
VERSION : '1.0'
 
VAR_OUTPUT
    SPS_TOD : DINT;
END_VAR
 
VAR_TEMP
    SPS_DT : DT;
    RETVAL : INT; 
END_VAR
 
BEGIN
 
// Systemzeit
 
RETVAL := SFC1 (CDT := SPS_DT);
 
// Minuten seit Tagesbeginn (00:00 Uhr)
 
SPS_TOD := TOD_TO_DINT (FC8 (IN := SPS_DT)) / 60000; 
 
END_FUNCTION
```
 
Gruß Kai


----------



## Kai (11 September 2008)

Mir ist gerade noch aufgefallen, dass Larry Lafffer und ich die Aufgabenstellung scheinbar unterschiedlich verstanden haben:

Larry Laffer ermittelt die Anzahl der Minuten seit Beginn der aktuellen Stunde (00:00 Uhr, 01:00 Uhr, 02:00 Uhr bis 23:00 Uhr).

Ich ermittele die Anzahl der Minuten seit Tagesbeginn (00:00 Uhr).

Gruß Kai


----------



## Larry Laffer (12 September 2008)

Kai schrieb:


> Mir ist gerade noch aufgefallen, dass Larry Lafffer und ich die Aufgabenstellung scheinbar unterschiedlich verstanden haben:
> 
> Larry Laffer ermittelt die Anzahl der Minuten seit Beginn der aktuellen Stunde (00:00 Uhr, 01:00 Uhr, 02:00 Uhr bis 23:00 Uhr).
> 
> ...


 
Nö ... das hatte ich schon bewusst so gemacht.
*Angelo* wollte ja die Systemzeit in SCL auslesen und wandeln. Dafür war das Beispiel. Aus Stunden und Minuten (jeweils als INT-Werte) nur noch Minuten zu machen sollte nicht so problematisch sein (Minuten_von_Tag := Stunden * 60 + Minuten 

Gruß
LL


----------



## Angelo (12 September 2008)

Hei wow, da wird einem geholfen. Hat alles super hingehauen! Habe gerade wieder viel gelernt. Danke euch beiden viel mals! 
Gruss Angelo


----------



## Larry Laffer (12 September 2008)

Angelo schrieb:


> Hei wow, da wird einem geholfen.


 
Was hast du gedacht ...?
Ist doch Ehrensache ... oder ?


----------



## vierlagig (12 September 2008)

Larry Laffer schrieb:


> Ist doch Ehrensache ... oder ?



oder helfersyndrom  ... larry, du weißt, dass habe ich bei dir schon des öfteren diagnostiziert


----------

