Datums und Zeit Handling mit Phoenix contact ILC 130 ETH

RrBd

Level-1
Beiträge
97
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich arbeite mich gerade parallel zu einem anderen System, das ich langjährig bearbeite, in IEC 61131 Programmierung für die Phoenix SPS (für Nutzung Gebäudeautomatisierung Heizung / Klima 7 Lüftung) ein. Auffällig ist, dass ich mir jede Menge Funktionen, deren Bereitstellung durch die Programmierumgebung ich aufgrund meiner Erfahrung mit anderen Systemen vorausgesetzt hatte (Wochenzeitschaltuhr ...), erst selbst zusammen basteln muss. Im wesentlichen kein Problem, aber das Nutzen der Systemzeit für verschiedene Zwecke (hauptsächlich natürlich Zeitschaltprogramme) konnte ich bisher nicht lösen. Zum Beispiel brauche ich für Wochenzeitschaltuhranwendungen irgendwo her den aktuellen Wochentag, aber wie komme ich da 'ran?

OSCAT stellt eigentlich fast alles, was ich brauche, zur Verfügung, aber mein Problem ist, dass deren Bausteine nach meiner Recherche als Systemzeit-Eingang analog zur UNIX-Zeit eine Sekundenzählung ab 1970-01-01 00:00:00 Uhr benötigen, wenn ich diesen Wert "irgendwie" bekäme (oder eine alternative Darreichungsform. wäre mir sehr geholfen. Die SSS stellt einige Systemzeitvariablen zur Verfügung:
RTC_YEAR INT Systemzeit (Jahr)
RTC_MONTH INT Systemzeit (Monat)
RTC_DAY INT Systemzeit (Tag)
RTC_HOURS INT Systemzeit (Stunden)
RTC_MINUTES INT Systemzeit (Minuten)
RTC_SECONDS INT Systemzeit (Sekunden)

Weiß jemand Rat, wie ich daraus etwas passendes für den Eingang "DAY_OF_WEEK" aus OSCAT.333 zaubern kann? oder eine alternative Methode? Ich würde gern vermeiden, ohne OSCAT-Verwendung nun gleich noch einen Gregorianischen Kalenderbaustein erfinden zu müssen.

Vielen Dank schon mal

Rainer Bielefeld
 
Ich mach mir die UTC mit dem oscat FB SET_DT. Dieser baut die einzelnen Daten zu einem Wert zusammen.
Mit UTC_TO_LTIME kann man diesen noch wegen Sommerzeit/Winterzeit und Zeitoffset anpassen.

Wegen Zeitsync:
Schau dir einmal den FB CPU_CONTROL an.

Mit diesem kann man die Uhrzeit der SPS an einen SNTP Server abgleichen.

------------------------ xx
<CPU_Set_Value_Request>
02cb
xxxx
0001
0481
0003
c0a8
000c
003c
-------------------------xx

0x02cb CMD
0x0005 Parameter Count
0x0001 Variable Count
0x0481 Variable ID
0x0003 Flags (3 = SNTP-Dienst aktivieren)
0xc0a8 IP
0x000c IP
0x003c 60 min

192.168.0.12 - c0.a8.00.0c
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich mach mir die UTC mit dem oscat FB SET_DT.

Hallo,

danke, das hat mir sehr geholfen, funktioniert hervorragend. :D Manchmal ist man ja auch wie vernagelt, keine Ahnung, wie oft ich mir das OSCAT Handbuch durchgelesen habe, ohne die Funktion zu bemerken.

Den Zeit-Synchronisierungs-Tipp lege ich mir für später zurück.

Viele Grüße

Rainer
 
Hallo

es gibt von Phoenix auch eine Bibbliothek für Gebäude (BACL genannt)
da findest du auch Schaltprogramme
 
Hallo Oerw,

nach der hatte ich gefragt, die wird aber (angeblich - Supportauskunft) nicht mehr vertrieben.

Viele Grüße

Rainer
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Inzwischen habe ich ein Sync Programm fertig.
Dies holt sich über einen SNTP Server die UTC Time und setzt dann die RTC der ILC. Falls es jemand braucht kann ich es mal hochladen.

Es wird halt oscat dazu gebraucht.
 
Hallo Portisch,

Ich fände das ganz interessant, den Teil "RTC setzen" habe ich noch auf meiner ToDo liste, und "irgendwie" eine Zeit Synchronisation innerhalb des Netzwerkes will ich auch noch in angriff nehmen, wenn scheinbar Unabhängige teile der Gebäudeautomatisierung in eine Ereigniskette verwickelt sind, lässt sich mit wirklicher Einheitszeit leichter bestimmen, was nun Ei und was Henne ist. Ich bin immr genz froh, wenn ich ein Rad mal nicht neu erfinden muss, sondern abkupfern kann.

Viele Grüße

Rainer
 
Also hier einmal ein FB um von einem SNTP Server die Zeit einzulesen und dann an einem SNTP Server auf der SPS für das Netzwerk zur Verfügung zu stellen.

Mit dem Input Enable kann bei einer positiven Flanke die Zeit erneuert werden.
Mit dem Autorefresh kann ein Abstand in Stunden eingestellt werden wie oft sich der FB die Zeit selber holt.

An der Domain gibt man den SNTP Server an.
Der Gateway ist der Gateway des Routers (Netzwerkes).

Der FB setzt dann die RTC der SPS auf UTC Time.

Müsste so funktionieren!
SNTP_UPDATE.png
Anhang anzeigen UPDATE_UTC_BY_SNTP.zip

Edit: Habe noch die RTC vergessen... Jetzt sollte es passen!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Portisch

Ich hab mir auch deinen FB geholt. Nach der installation von Oscat Network 1.21 hab ich jetzt immer noch drei nicht erkannte Datentypen

arrAddError --> arr_Add_Error
arrSD --> arrSend_Array
arrRD --> arrReceive_Array

Wie komme ich zu diese Datentypen ??

Danke

LG
 
Zuletzt bearbeitet:
Habe die Datentypen vergessen!

Einfach im Projekt hinzufügen:
Code:
TYPE
 arr_Add_Error : ARRAY [0..1] OF WORD;
END_TYPE
TYPE
 arrSend_Array : ARRAY [0..99] OF WORD;
END_TYPE
TYPE
 arrReceive_Array : ARRAY [0..99] OF WORD;
END_TYPE
 
Hallo Portisch und andere,
ich versuche gerade den FB von Portisch (UPDATE_UTC_BY_SNTP.zip vom 06-09-2012) nachzubilden. Bekomme aber 33 Fehlermeldungen:
Unzulässige Syntax (IEC) in oder vor 'UPDATE_UTC_BY_SNTP'!
Unzulässige Syntax (IEC) in oder vor 'END_TYPE'!
Unzulässige Syntax (IEC) in oder vor ':'!
Unzulässige Syntax (IEC) in oder vor 'END_VAR'!
Unzulässige Syntax (IEC)! Ausdruck, Deklaration od. Anweisung unvollständig!
etc.

Ich bin Anfänger und weiß nicht weiter.
Ich arbeite mit PC WorX Express 6.30.
Neues Projekt erzeugt.
Bilbliothek importiert Oscat Network 1.21
neuen FB (ST) erzeugt
Text aus "UPDATE_UTC_BY_SNTP.ST" per copy & paste eingefügt
vergessene Datentypen ergänzt
Projekt neu erzeugt
=> Fehlermeldungen

Was mache ich falsch?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, die NetworkLib 1.21 ist zwar immer noch die aktuelle im Download-Bereich (so irre aktiv scheinen die Leute nicht zu sein), ich benutze aber schon sehr lange die Version 1.3, die viele Fehler aus der 1.21 ausgebügelt hat. Download hier!
Verrate doch mal ob schon irgendein Versuch mit der OSCAT Network-Lib bei dir funktioniert hat, stell ein Mini-Beispiel bereit, was weiß ich, so ist das Schwierig. Und vielleicht wäre das OSCAT-Forum der geeignetere Ort für die Diskussion?

Rainer
 
Versuch einmal den FB in PC Worx zu Importieren und nicht Copy&Paste.

Ein END_TYPE hat im FB auch nichts verloren. Das gehört zu den Typen definitionen. Kann jetzt nicht nachsehen, aber sollte sich finden lassen.
 
Habe gerade zur besseren Verständlichkeit meinen Beitrag von vorhin editiert und nach dem Speichern ist er futsch!!!
Jetzt seh ich ihn wieder.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Versuch einmal den FB in PC Worx zu Importieren und nicht Copy&Paste. Ein END_TYPE hat im FB auch nichts verloren. Das gehört zu den Typen definitionen. Kann jetzt nicht nachsehen, aber sollte sich finden lassen.

Ich arbeite mit PC WorX Express. Liegt da das Problem?
Wie bekomme ich die Datei UPDATE_UTC_BY_SNTP.ST importiert?
 
Hallo Markus2,

die Import Funktion gibt es leider in PC Worx Express nicht, dafür braucht man das "richtige" PC Worx.
Es ist sehr schwer aus einer ST Datei händisch den Baustein wiederherzustellen, wenn man nicht viel Erfahrung mit PC Worx hat. Vielleicht wäre es für dich einfacher wenn du dir PC worx installierst und es in der Demo Version nutzt. Diese hat zwar nur eine sehr beschränkte anzahl an Prozessdaten, du kannst dir dort aber den FB importieren (Logische POEs im Projektbaum Fenster auswählen und auf Datei -> Importieren klicken). Dann siehst du wie der FB aufgebaut ist und kannst ihn so einfacher in PC Worx Express nachbilden.

Oder aber du kaufst dir gleich PC Worx und sparst dir den Ärger ;)

Gruß
Mark
Gruß
Mark
 
Zuletzt bearbeitet:
Zurück
Oben