Sonnenstand-Berechnung

vipianer

Level-1
Beiträge
90
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
es geht um Jalousiensteuerung; zum Beschatten möchte ich die Lamellen soweit schräg stellen, daß es zwar noch hell im Raum ist, die Sonne aber nicht direkt reinstrahlt.
Dazu müßte ich abhängig von Datum und Uhrzeit den Sonnenstand berechnen; nach ein bißchen googeln fand ich folgende Fachbegriffe:

- Ephemeridenrechnung
- VSOP87

hat jemand sowas schon mal programmiert (idealerweise für S7-Steuerung) oder weiß jemand nen guten link?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Bitverbieger.

Habe in deinem FB105 folgend Programmcode gesehen. Verstehe ihn aber nicht was diese Zeilen bedeuten. Habe sowas noch nie gesehen.

Code:
      SET   
      SAVE  
      =     L      0.1
      L     1.745329e-002
      L     #latitude
      *R    
      T     #B
      L     -1.450000e-002
      T     #h
      L     DINO
      T     LW     2
      TAR2  
      +     L#64
      T     LD     4
      TAR2  LD     8
      UC    "DT_DATE"
            P#L 2.0
            P#L 12.0
      LAR2  LD     8
      TAR2  LD     8
      UC    "day_of_year"
            P#L 12.0
            P#L 2.0

Mir geht es speziell um die Pointeraufrufe nach den UC Aufrufen der Baustein. Beispiel: P#L2.0. Kannst du mir das Erklären?
 
Hallo Bitverbieger.

Habe in deinem FB105 folgend Programmcode gesehen. Verstehe ihn aber nicht was diese Zeilen bedeuten. Habe sowas noch nie gesehen.

Mir geht es speziell um die Pointeraufrufe nach den UC Aufrufen der Baustein. Beispiel: P#L2.0. Kannst du mir das Erklären?

erstens ist das Code, der vom SCL-Compiler erzeugt wird...den muß man nicht wirklich verstehen!
zweitens: hinter dem UC steht die Parameterliste für den aufgerufenen Baustein; ich weiß es aus dem gedächtnis nicht ganz genau; aber meistens ist der eigentliche Parameter oder der Pointer darauf auf den Lokalstack gelegt; deswegen die LStack-Pointer als Aufrufparameter;
wenn du in AWL eine CALL programmierst, sieht es eigentlich genauso aus, nur zeigt der Editor dir die Paramterliste nicht so!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Bitverbieger.

Ich wusste das der FB105 von SCL in AWL übersetzt worden ist, da ja die SCL-Quelle für den Baustein fehlt und Siemens somit den Baustein auf AWL übersetzt. Aber Danke schon mal für die Antwort. Werden mal ein neues Thema aufmachen und ich hoffe, dass mir einer diese Zeile erklären kann.
 
sun_pos

... um den thread wieder in die eigentliche richtung zu lenken ;-)

es geht um eine sonnenstandsbestimmung; sonnenstand abhängig von ort, datum, uhrzeit.
dazu geeignet scheint aus der oscat-library der funktionsblock sun_pos...dieser lässt sich aber mit dem scl-compiler nicht übersetzen....gibt es da einen bugfix? oder mache ich was falsch?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es gibt die Oscat-Library bereits für die S7 angepaßt, hast du die genommen?
ja, hab ich...hab Version 1.6 für Step7 und 1.7 für Step7 probiert; andere Funktionen aus dem Verzeichnis (z.b. sun_time) funktionieren auch, nur ausgerechnet sun_pos wird anscheinend nicht gepflegt!?
 
oscat/sun_time ist zwar übersetzbar, aber stimmen die werte???
folgende Daten hab ich vorgegeben:
Datum 04.09.07 u. Koordinaten des Nürnberger Flughafens
und mit folgendem Code auf S7 umgesetzt:

VAR_TEMP
local_dt : DT;
acttime: TOD;
utc: DT;
RETVAL: INT;
sun_rise : TOD;
sun_set : TOD;
END_VAR
BEGIN
RETVAL := READ_CLK(CDT:=local_dt);
utc := Ltime_to_UTC(LTime:=local_dt,DST:=TRUE,Time_Zone_Offset:=+t#1h);
STime(latitude:=49.4987,longitude:=11.066897,UTC:=utc);
sun_rise := STime.sun_rise;
sun_set := STime.sun_set;

folgende Werte werden geliefert:
sun_rise = 04:41:02
sun_down = 17:47:50

wenn ich die daten z.b auf www.sonnenuntergang.de eingebe, bekomme
ich folgende daten: 6:33 bzw 19:55

hat jemand eine idee, was ich falsch mache?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Bitverbieger

habe deinen Code mal ausprobiert; der liefert nochmal andere Daten...
allerdings hast du ganz andere Koordinaten eingegeben...ist das Grönland oder so??
vielleicht geb ja ich die Koordinaten falsch ein oder es gibt noch ein anderes Format dafür; ich habe die für Nürnberg im Internet in Sexagesimal-Darstellung und Dezimaldarstellung gefunden und die Dezimalwerte genommen; ist das richtig?
 
Verstehe ich nicht so ganz.
Ich habe bei mir den Längengrad von ca. 6,9grad
und als Breitengrad ca. 51 grad. (Nördl. Ruhrgebiet:-D)
deswegen habe ich am Baustein diese Werte als Realzahl angefügt.
Die Zeit, die am Baustein angezeigt wird ist Weltzeit. Das bedeutet
für unsere Gegend +1 und nochmal +1 für die Sommerzeit.
 
Verstehe ich nicht so ganz.
Ich habe bei mir den Längengrad von ca. 6,9grad
und als Breitengrad ca. 51 grad. (Nördl. Ruhrgebiet:-D)
deswegen habe ich am Baustein diese Werte als Realzahl angefügt.
Die Zeit, die am Baustein angezeigt wird ist Weltzeit. Das bedeutet
für unsere Gegend +1 und nochmal +1 für die Sommerzeit.

dann müßte standort dortmund doch ganz gut hinkommen, dafür berechnet www.sonnenuntergang.de für den heutigen Tag (14.07.2007) Sonnenaufgang 7:01 und Untergang 19:50

dein Programm und das darin verwendete sun_time ermittelt 5:12 und 17:42, zuzüglich der 2 Stunden für die Localzeit ergibt 7:12 und 19:42
...macht mal bis zu 11 Minuten Differenz zum Wert vom Internetrechner!
ich dachte, die Genauigkeit des Algorithmus soll im Bereich < 1% liegen?
 
Zurück
Oben