Uhrzeit sun_pos

siqo

Level-1
Beiträge
79
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo :)

ich bin ein anfänger und kenne mich mit der s7 nicht so gut aus jedoch muss ich ein projekt für die schule fertig machen -.-

es geht um die uhrzeit irgendwie klappt das nicht wirklich es sieht bei mir so aus (AWL) :

Netzwerk 1:

U "S1"
SPBNB _001
CALL "READ_CLK"
RET_VAL:=DB1.DBW1
CDT :=#OB1_DATE_TIME
_001: NOP 0


Netzwerk 2:
CALL "SUN_POS" , DB31
latitude :=5.131000e+001
longitude:=7.280000e+000
utc :=#OB1_DATE_TIME
B :=
H :=
HR :=
NOP 0
.
.
.
Das Funktioniert nicht, aber warum das weiß ich noch nicht... ich hoffe das es in naher zeit anders ist durch eure hilfe :)

mfg
 
Wie geschrieben OB1_Date_Time ist schon für eine andere Funktion reserviert. Lege für dein aktuelles Datum eine neue Definition entweder in der Schnittstelle des OB1 an (kann dann nur in OB1 direkt verwendet werden, oder mache in einem extra DB für solche Sachen ein Datenpunkt für dein aktuelles Datum, dann kannst du von überall her auf dieses zugreifen.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Code:
U "S1"
 SPBNB _001
 CALL "READ_CLK"
 RET_VAL:=DB1.DBW1// DB1.DBW0 oder DB1.DBW2 aber nicht 1 (Wortgrenze)
 CDT :=#OB1_DATE_TIME // Hier eine Variable im Format DateTime eintragen 
 _001: NOP 0

#OB1_DATE_TIME ist zum Lesen da, nicht zum Beschreiben.

Variable im Format DT anlegen und anstelle des #OB1_DATE_TIME eintragen
 

Anhänge

  • clk.jpg
    clk.jpg
    26,4 KB · Aufrufe: 23
Wie lege ich dieses DT format an?
Ich habe es nun so versucht ging auch nicht...

U "S1"
SPBNB _001
CALL "READ_CLK"
RET_VAL:=DB1.DBW1
CDT :=#aktDatum
_001: NOP 0


CALL "SUN_POS" , DB31
latitude :=5.131000e+001
longitude:=7.280000e+000
utc :=#OB1_DATE_TIME
B :=
H :=
HR :=
NOP 0
 
Logischerweise musst du dann #aktDatum auch für SunPos verwenden.

Und mit der Fehlerbeschreibung "geht nicht" ist die Lösungsfindung (für was?) nicht Erfolgsversprechend.

Ausserdem Solltest du an B und HR natürlich auch etwas anschliessen, ansonsten wird die Verwendung derselben relativ mühsam.

Dir ist klar das deine CPU Zeit Weltzeit haben muss? Wenn sie Lokalzeit hat musst du den datenpunkt an UTC noch korrigieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Entschuldige hast recht mit dem geht nicht ist nicht viel erfolgsversprechen...

aber es funktioniert jetzt :D

U "S1"
SPBNB _001
CALL "READ_CLK"
RET_VAL:=DB1.DBW1
CDT :=#aktDatum
_001: NOP 0


CALL "SUN_POS" , DB31
latitude :=5.131000e+001
longitude:=7.280000e+000
utc :=#aktDatum
B :=#calsunb
H :=#calsunh
HR :=
NOP 0

Musste auch für die ausgänge noch weitere deklerationen durchführen und diese dort angeben .... vielen vielen dank für eure hilfe :D :D :D

Allerdings sind die werte nicht richtig bei B und H -.-
wie kann ich das beheben?
 
Die Zeit ist nicht in UTC wie macht man das???
Wenn ich es beobachte sind die Werte von H und HR dieselben...wo soll der unterschied sein?
 
Zuletzt bearbeitet:
ok
und wo kann ich das nun so eingeben? der speichert ja die ausgelesene systemzeit und verwendet diese dann in sun_pos...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In der Standard Library von Step7 gibt es den "IEC Function Blocks" FC35 SB_DT_TM mit dem kann man von einer Variable vom Typ DT eine Time subtrahieren.

Gruss Daniel
 
aha ok
habe diesen baustein gerade geöffnet und sehe dann einen T und D eingang
in den einen werde ich die systemzeit laden müssen wie gebe ich den anderen wert ein???
 
Ist differenz immer von 2std?
oder variert diese?

Natürlich variiert die differenz da UTC überall gleich ist (der Sinn einer Weltzeit) und die Lokale Zeit abhängig von der aktuellen Zeitzone sowie Sommer Winterzeit ist.

Dementsprechend musst du in Mitteleuropa im Sommer 2h abziehen im Winter 1h. In Ägypten natürlich mehr usw.

Das alles findet sich bestimmt auch mit Google und in Wikipedia wird das sicher auch erklärt sein.

in der Oscat Library gibts auch Bausteine um UTC in LocalTime zu wandeln. Hab ich aber noch nie ausprobiert.
 
ok aber ich bräuchte in dem fall doch ein baustein welches die lokale zeit in utc umwandelt oder nicht???
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ok aber ich bräuchte in dem fall doch ein baustein welches die lokale zeit in utc umwandelt oder nicht???

äh ja ich meine das wirds auch geben. ansonsten oscat aufmachen quelle der bausteine studieren und formeln entsprechend umformen das du aus der lc die utc bekommst. Du könntest natürlich auch einfach die SPS mit der UTC laufen lassen. Mach ich immer so dann hab ich keine probleme mit den verschiedenen Zeitzonen.
 
Will jetzt die zeit auslesen lassen. Diese in ein Db schieben und das vom Touchpanel auslesen lassen. Zusätzlich aus den gelesenen vom DB ein UTC format für die s7 machen.
Ich schaffe es nich es in den Baustein zu schieben.
 
Zurück
Oben