OSCAT Forum
oscat.lib => Bestehende Module / Existing Modules => Thema gestartet von: DeejayT am 26. Oktober 2009, 18:40:07
-
Hallo,
ich nutze den Baustein UTC_TO_LTIME um die Sonnenauf und Sonnenuntergangszeit (errechnet laut UTC Zeit), in die Locale Zeit anzupassen. Leider hat der Baustein UTC_TO_LTIME die Sommer/Winterzeitumstellung nicht gemacht. Ich denke es liegt daran das er am Eingang kein Datum bekommt. Das steht auf 1970. Wie kriege ich dort das Aktuelle Datum mit rein. Ich habe schon probiert nach dem TOD_TO_DT mit ADD ein Datum hinzuzufügen aber dann kommt bei übersetzen eine Fehlermeldung. Wie kriege ich das Problem gelöst. Vielleicht kann mir jemand von euch ein Screenshot schicken wie er das in CFC gemacht hat.
[gelöscht durch Administrator]
-
warum arbeitest du denn überhaupt mit TOD, das ist natürlich völlig unpassend, damit kann keine sommerzeit umschaltung funktionieren
du benötigst natürlich einen typ "DT"
woher bekommst du denn dein aktuelles Datum und die Uhrzeit ?
du kannst z.b. mit "SET_DT" ganz einfach Datumsangaben und Zeitangaben vereinen
DATE_AND_TIME-Konstanten, Kombination von Datum und Uhrzeit:
DATE_AND_TIME-Konstanten beginnen mit "dt#", "DT#", "DATE_AND_TIME#" oder "date_and_time#". Nach der Datumsangabe folgt ein Bindestrich und danach die Uhrzeit. Mögliche Werte: 1970-00-00-00:00:00 bis 2106-02-06-06:28:15.
Beispiele:
DATE_AND_TIME#1996-05-06-15:36:30
dt#1972-03-29-00:00:00
-
Hi,
also die Uhrzeit und Datum lese ich aus der WAGO (750-841) direkt aus. Das ist die UTC Zeit. Diese UTC Zeit gebe ich auf den Baustein SUN_TIME, hier soll man ja umbedingt die UTC Zeit nehmen. Die Sonnenauf und Sonnenuntergangszeiten wollte ich dann in die Locale Zeit umwandeln (siehe Screenshot 1. Post) !
Oder wie sollte ich das sonst aufbauen, der SUN_TIME soll ja mit UTC befüttert werden. Irgendwo muß ich ja die Locale Zeitumrechnung in die Sonnenauf und Sonnenuntergangszeiten einbauen!
-
die ganze arbeit kannst du einfacher machen indem du das struct calendar ebnutzt und mit dem baustein calendar_calc alles berechnest
-
@Hugo: Sehe ich das Richtig das ich dem calendar_calc nur UTC zur Verfügung stellen muß und der Baustein stellt mir dann alle Daten aus dem struct calendar zur Verfügung ??? Aber um Sonnenunter und Aufgang berechnen zu können, braucht man doch die Koordinaten, wo gebe ich die denn vor???
Das wäre ja Mega Klasse, da kann ich mir viele Bausteine sparen!
-
ja das ist richtig.
zu beachten ist:
die daten für längengrad und breitengrad schreibst du einfach nin die datenstruktur calendar, oder die variable die du definierst.
der eingang SPE von calendar_calc legt fest ob die sonnenposition dauernd berechnet wird oder nicht.
alles andere wird automatisch immer dann berechnet wenn es nötig ist.
-
Hallo Hugo, könntest du mir evtl. ein Projekt hochladen wo du das mit dem Calendar_Calc realisiert hast?! Ich versteh das ganz ehrlich nicht so genau mit den Datentypen. Bin halt nicht so der SPS Freak. Wenn ich dein Beispiel hätte, könnte ich mich daran lang hangeln.
Habe mal versucht das ganze zu programmieren, aber ich bleibe immer an dem Fehler hängen das die Taskkonfiguration fehlerhaft ist.
Würde mich, wie schon geschrieben über ein Beispiel Prog freuen, das bringt mir am meisten und ich denke das wird den einen oder anderen auch helfen!
-
ein beispiel findest du hier im forum unter anwendungsbeispiele : http://www.oscat.de/community/index.php/topic,586.0.html
mit task konfiguration hat das überhaput nichts zu tun das ist eine ganz andere baustelle
wundere mich aber auch wie man eine spüs programmieren will wenn diese basics fehlen????
-
Hi Hugo,
danke also ich hab den Calendar_Calc Baustein jetzt am laufen.
Jetzt hab ich nur wieder das Problem das ich den Sonnenauf und Sonnenuntergang in UTC Zeit habe. Ich brauche aber diese beiden Werte in der Localen Zeit. Also zur Zeit +1h. Wie mach ich das jetzt am geschicktesten???
Es gab mal einen anderen Beitrag, wo jemand damit Probleme hatte. Ich hab das genau so wie dort gemacht, aber es funzt nicht.
Hugo schrieb " um tod zu dt zu addieren musst du zuerst tod in time wandeln mit tod_to_time und dann kannst du mittels add dt und time adieren" !
So habe ich es auch gemacht, siehe Screenshot!
Kriege leider dort die Fehlermeldung. Was mache ich falsch????
[gelöscht durch Administrator]
-
versuch bitte mal die beiden eingänge am add zu vertauschen,
der add nimmt hier anscheinend den falschen ausgangsdatentyp time.
-
Jo Super, das war es. Da komm mal drauf.
Vielen Dank, läuft jetzt alles einwandfrei ;D