OSCAT Forum

Home Automation => SPS-Programmierung => Thema gestartet von: chekker91 am 18. Januar 2017, 22:28:51

Titel: Wecker bzw. Zeitschaltuhr mit Codesys Visualisierung
Beitrag von: chekker91 am 18. Januar 2017, 22:28:51
Hallo Zusammen,

ich versuche schon länger einen FB zu finden der Eine in der Visu eingestellte Zeit mit der Tageszeit vergleicht und dann eine Funktion ausführt.
z.B. die Jalousien hochfährt.

Es soll so ähnlich wie auf dem Bild aussehen.

Hat jemand so was schon realisiert?

Hardware: RaspberryPi - Beckhoff EK1100 - DI/DO Klemmen


[gelöscht durch Administrator]
Titel: Re: Wecker bzw. Zeitschaltuhr mit Codesys Visualisierung
Beitrag von: Blauprinz am 26. September 2018, 11:52:20
Hallo chekker91,

ich habe solch eine Wochenplan-Lösung schon mehrmals realisiert.
Welche Steuerung und welche Codesys-Version verwendest du denn?
Es gibt eine SysRtc.lib, welche eine Funktion Namens "SysRtcGetTime" beinhaltet.
Die Funktion gibt eine DT-Variable aus, welche die aktuelle Uhrzeit/Datum deiner Steuerung wieder gibt.
Damit kannst du Zeit und Datum entsprechend in einem Syntax mit deinen Sollwerten vergleichen.

Gruß
Titel: Re: Wecker bzw. Zeitschaltuhr mit Codesys Visualisierung
Beitrag von: Airuei am 30. November 2018, 09:16:31
For these data, we think that it is good information to get more knowledge.
Titel: Re: Wecker bzw. Zeitschaltuhr mit Codesys Visualisierung
Beitrag von: Fensinee am 17. Dezember 2018, 04:43:50
We are very pleased to recommend this to your friends.
Titel: Re: Wecker bzw. Zeitschaltuhr mit Codesys Visualisierung
Beitrag von: Blauprinz am 04. Mai 2020, 20:17:57
Hallo Zusammen,

auf Anfrage von Sven werde ich mich gerne zu diesem Thema äußern:

["...kannst du mir vielleicht eine kleines Beispiel geben, wie du den Vergleich machst und daraus eine Aktion wird?
Ich will in eine Ablaufsteuerung (Rapsberry SPS mit CODESYS) uhrzeitgesteuerte Elemente einbauen.
Das wäre sehr nett.
Vielen Dank für den Fall, dass Du mir helfen möchstest!
MfG
Sven
"]

@Sven, damit ich dir helfen kann benötige ich genauere Infos. Es führen schließlich viele Wege nach Rom.  ;)
Kannst du denn folgende Bibliothek in deiner Codesys-Umgebung finden: "SysRtc23" ?
Wenn nicht, dann müssten wir uns mit der "SysTimeRtc" beschäftigen.

Gruß
Titel: Re: Wecker bzw. Zeitschaltuhr mit Codesys Visualisierung
Beitrag von: Blauprinz am 06. Mai 2020, 11:41:58
Hallo Sven,

hier also mal ein abgespecktes Beispiel für die SysRtc23.lib:

Deklarations-Editor:

VAR
dt_Systemzeit :DT;

i_actuStunde :INT;
i_actuMinute :INT;
i_actuSekunde :INT;
i_actuWochentag :INT;
i_actuTag :INT;
i_actuMonat :INT;
i_actuJahr :INT;

dt_Soll_Datum :DT:=DT#2020-5-6-12:00:00; (* <-- Initialwert entspricht 06.05.2020 - 12:00:00 Uhr *)

i_Soll_Stunde :INT;
i_Soll_Minute :INT;
i_Soll_Sekunde :INT;
i_Soll_Wochentag :INT; (* 1=Mo, 2=Di, 3=Mi, 4=Do, 5=Fr, 6=Sa, 7=So *)
i_Soll_Tag :INT;
i_Soll_Monat :INT;
i_Soll_Jahr :INT;

x_ZeitgesteuertesEreignis_1 :BOOL;
x_ZeitgesteuertesEreignis_2 :BOOL;
END_VAR

(*
Referenzierte Bibliotheken:
- SysRtc23.lib
- Oscat_Basic.lib
*)


Programm-Editor:

//Bereitstellung bzw. Erfassung Systemzeit der Zielsteuerung:
dt_Systemzeit:=SysRtcGetTime(TRUE);
//DT-Variable aufsplitten:
i_actuStunde :=OSCAT_BASIC.HOUR_OF_DT(dt_Systemzeit);
i_actuMinute :=OSCAT_BASIC.MINUTE_OF_DT(dt_Systemzeit);
i_actuSekunde :=OSCAT_BASIC.SECOND_OF_DT(dt_Systemzeit);
i_actuWochentag :=OSCAT_BASIC.DAY_OF_WEEK(DT_TO_DATE(dt_Systemzeit));
i_actuTag :=OSCAT_BASIC.DAY_OF_MONTH(DT_TO_DATE(dt_Systemzeit));
i_actuMonat :=OSCAT_BASIC.MONTH_OF_DATE(DT_TO_DATE(dt_Systemzeit));
i_actuJahr :=OSCAT_BASIC.YEAR_OF_DATE(DT_TO_DATE(dt_Systemzeit));

//Variante 1 Ereignissteuerung --> per Vergleich DT-Variablen:
IF dt_Systemzeit = dt_Soll_Datum THEN
x_ZeitgesteuertesEreignis_1:=TRUE;
END_IF;

//Variante 2 Ereignissteuerung --> per Vergleich Einzel-Sollwerte:
IF
i_actuStunde = i_Soll_Stunde AND  
i_actuMinute = i_Soll_Minute AND 
i_actuSekunde = i_Soll_Sekunde     AND
i_actuWochentag = i_Soll_Wochentag AND
i_actuTag = i_Soll_Tag     AND
i_actuMonat = i_Soll_Monat     AND
i_actuJahr = i_Soll_Jahr     THEN
x_ZeitgesteuertesEreignis_2 :=TRUE;
END_IF;


Hier hast du 2 Varianten um ein zeitgesteuertes Ereignis auszuführen.
Sicherlich würde ich persönlich hier mit Arrays und Strukturen arbeiten, aber zur Veranschaulichung sollte das erstmal ausreichen.
Für das Aufsplitten der DATE_OF_TIME habe ich die vorgefertigten Oscat-Funktionen verwendet.
Dies setzt natürlich voraus, dass du die Oscat_Basic.lib im Codesys implementiert hast.  ;)

Gruß
Titel: Re: Wecker bzw. Zeitschaltuhr mit Codesys Visualisierung
Beitrag von: Svenner am 21. Mai 2020, 07:34:20
Hallo Rick,

jetzt hat es vor ein paar Tagen mit der Aktivierung geklappt. Ich habe auch jetzt erst Deine Beispiele gesehen. Danke dafür. :D Ich werde es die Tage mal ausprobieren und melde mich dann wieder.
LG
Sven