Problem mit READ_CLK()

herdi

Level-1
Beiträge
50
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo miteinander,

ich hab da schon wieder ein Problem und keine Ahnung was da wieder falsch läuft:

Folgender Code:

DATA_BLOCK DBUhrtest
STRUCT
retval:INT;
cnt:INT;
Uhrzeit: DATE_AND_TIME;
END_STRUCT
BEGIN

END_DATA_BLOCK


FUNCTION Uhrtest : void

DBUhrtest.retval:=READ_CLK(CDT:=DBUhrtest.Uhrzeit);
DBUhrtest.cnt:=DBUhrtest.cnt+1;

END_FUNCTION


Ich rufe jetzt die Funktion Uhrtest zyklisch auf und muss feststellen dass in der Variable Uhrzeit nichts auftaucht. Die Variable retval bleibt ebenfalls 0.
Die Variable cnt die ich testhalber hochzählen lasse verhält sich korrekt...
Könnte vielleicht jemand von euch dieses Beispiel kurz mal bei sich auf einer Steuerung testen bzw. weiß was ich da falsch mache? Wäre da sehr dankbar dafür.

Viele Grüße

Herdi
 
Zuletzt bearbeitet:
:confused: woher weißt du denn, dass es nicht funktioniert ? Denk bitte daran, dass du DBUhrtest.Uhrzeit nicht in der Status-Anzeige des DB's angezeigt bekommst, da es größer als DWORD im Format (Breite) ist ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aha... Ich hatte jetzt gedacht dass wenigstens in der DB-Ansicht diese Variablen angezeigt werden. Habs jetzt mal kurz so getestet:

DATA_BLOCK DBUhrtest
STRUCT
retval:INT;
cnt:INT;
b0,b1,b2,b3,b4,b5:BYTE;
END_STRUCT
BEGIN

END_DATA_BLOCK

FUNCTION Uhrtest : VOID

VAR_TEMP
Uhrzeit: DATE_AND_TIME;
uhr_raw AT Uhrzeit: ARRAY[0..7] OF BYTE;
END_VAR
DBUhrtest.retval:=READ_CLK(CDT:=Uhrzeit);
DBUhrtest.b0:=uhr_raw[0];
DBUhrtest.b1:=uhr_raw[1];
DBUhrtest.b2:=uhr_raw[2];
DBUhrtest.b3:=uhr_raw[3];
DBUhrtest.b4:=uhr_raw[4];
DBUhrtest.b5:=uhr_raw[5];
DBUhrtest.cnt:=DBUhrtest.cnt+1;

END_FUNCTION


In b0-5 tauchen die Werte jetzt auf... Kann man eigentlich Date_and_time-Variablen oder ähnlich lange überhaupt irgendwo online beobachten? Wie siehts mit Strings aus? Das wird nämlich die nächste Baustelle werden...

Danke und viele Grüße

Herdi
 
Nein !
Alles was breiter als 4 Byte ist kannst du dir (außer in der Visu) nicht direkt anzeigen lassen (nur DWORD-weise).

Gruß
LL
 
Aber auch wenn ich dann im SCL-Editor auf die Brille klicke zeigt er ja dann bei Strings und Co nichts an. Ich würde halt gerne sehen was in meinen Variablen drin steht ohne jedes Mal gleich eine Visualisierung erstellen zu müssen...
 
hi, du kannst datum/uhrzeit byteweise in ner variablentabelle anzeigen lassen. die gleiderung steht irgendwo in der hilfe.
also die bytes in die tabelle und als format "hex" wählen. dann hast du zumindest jahr, tag, ... als einzelne werte
 
Zurück
Oben