SUN_TIME und Wandlung in local time (1 Stunde abweichender Wert)

Begonnen von Markus2, 25. Januar 2015, 14:53:13

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Markus2

Hallo,
ich bin neu hier und möchte Euch erstmal herlich Danken für die Bilbliotheken (das Toggle hätte ich nicht selber programmieren müssen, leider dieses Forum zu spät gefunden). War ein Tipp von der Phoenix Contact Hotline. Ich habe keine Erfahrung in der SPS Programmierung und mich wegen der grafischen Oberfläche für PC WorX Express entschieden. Die SPS ist eine ILC131 zur Steuerung meiner Raffstoreanlage (war eine Siemens S5).

Jetzt zu meinem Problem (die Suche hat mir keine Lösung geliefert). Der Baustein SUN_TIME liefert laut Baustein local time (s. Anhang). In der Dokumentation heisst es Weltzeit. Weltzeit ist wohl richtig, aber wie rechne ich die in local time um? Mit dem Baustein UTC_TO_LTIME klappt es nicht, obwohl der Offset als 60 Minuten abgegeben ist (Anhang).

Was mach ich falsch?




[gelöscht durch Administrator]

peewit

hast du die letzte oscat basic 3.33 in verwendung ?

wenn ja, dann exportiere doch mal deinen beispielbaustein und stelle den baustein online

Markus2

Ja, ist die aktuelle (oscat_basic_333.mwt).
Baustein exportieren ... so eine Funktion finde ich nicht. Anbei das Projekt.

[gelöscht durch Administrator]

peewit

hi

ist ja an sich ein logisches problem

tod ist die vergangene zeit seit 00:00:00 und wird in millisekunden angegeben
DT bzw. DATE_TIME gibt an wie viele sekunden seit 1.1.1970 vergangen sind

fällt dir was auf  ?
die einheiten sind miilisekunden und sekunden
das ist ein unterschied von faktor 1000

einfachste lösung -> siehe bild im anhang

viel spass noch mit oscat....



[gelöscht durch Administrator]

Markus2

Danke peewit!

Ja, ist logisch, wenn man die Definitionen kennt. Für DT steht es ja in der OSCAT Anleitung.
Aber woher weiß ich, daß TOD in ms definiert ist? Bin halt Anfänger.

Um die Belastung der SPS gering zu halten, rufe ich den Baustein am besten über einen Timer auf?

peewit

nachdem sich das ergebnis nur einmal am tag ändern kann
würde ein einmaliger durchlauf pro tag reichen !

sobald YEAR_DAY sich ändert einmal ausführen

Markus2

Nochmals meine Frage: Aber woher weiß ich, daß TOD in ms definiert ist?
Wo kann ich daß nachlesen? Welche Lektüre empfiehlst Du?

peewit

das grundproblem ist das die ganzen zeit und datum datentypen in pcworx eigentlich nicht vorhanden sind.

die habe ich alle als datentype UDINT zusammengefasst.

dadurch kann man aber auch an sich verschiedene datentypen einfach verbinden
dann passieren dinge wie bei dir , das du verschiedene dinge verbindest die aber nicht zusammen passen






[gelöscht durch Administrator]

Markus2

Hi peewit,
nochmals meine Frage:

Wo kann ich daß nachlesen?
Welche Lektüre empfiehlst Du?
Aus welcher Quelle ist der zitierte Text?

peewit

siehe anhang - kapitel 10.11


[gelöscht durch Administrator]

Markus2

Hi Peewit

Zitat von: peewit in 28. Januar 2015, 07:21:20
nachdem sich das ergebnis nur einmal am tag ändern kann
würde ein einmaliger durchlauf pro tag reichen !
sobald YEAR_DAY sich ändert einmal ausführen
Ich habe gedacht, das mach ich mal eben und bin kläglich gescheitert, da ich mir die grundlegenden Programmierkentnisse fehlen. Ich programmiere nur in KOP.

Ich würde den Wert einer Variablen (letzter Wert RTC_DAY) mit RTC_DAY vergleichen und bei Ungleichheit die Variable neu beschreiben und den zuvor besprochenen Funktionsbaustein "Sonnenzeit" aufrufen bzw. den neuen Wert RTC_DAY zuweisen.

Aber wie mach ich das in KOP?
Kann mir bitte jemand etwas Hilfestellung geben?

Schon mal vielen Dank für Eure Mühe
Markus

Markus2

#11
So, ich habe weiter in PC WorX Express 6.30 programmiert.

Im "Main"-Programm wird der Ausgang "Sonnenzeit_DD_Last" geändert sobald ein neues Tagesdatum ansteht.
Meine Vermutung/Hoffnung war, dass nur dann der Funktionsnaustein "FB_Sonnenzeit2_1" aufgerufen wird. Ist das so richtig?
Wenn nein, wie programmiert man das (FB nur aufrufen wenn Bedibngung erfüllt ist)?

Bevor ich diese Änderung einfügt habe betrug die SPS Zykluszeit 5 ms.
Nach der Änderung beträgt die SPS Zykluszeit 15 ms.
Ich vermute, daß der Baustein ständig aufgerufen wird.

Kann mir jemand helfen?
Screenshots und Code sind angehängt.

Viele Grüße
Markus



[gelöscht durch Administrator]