ich bin gerade dran eine kleine Zeitschaltuhr zu Progr.
das ganze soll für ca. 15 Kanäle sein, jeder Tag sollte 3 Aus und Einschaltzeiten besitzen, das jeweils für Mo-FR und Sa-SO verschiedene.
habe mal einfach drauf los programmiert. Das ganze funktioniert für 1 Kanal, jetzt meine Frage was kan man besser machen.
Ich speichere die Schaltzeiten in Array's wie kann mann diese zur laufzeit über die Visu konfortabel ändern ? oder hat einer einen komplett neuen ansatz? bin für alles Dankbar.
Die Scheduler Lib habe ich gefunden weiß aber nicht ob meine Wago 841 für 15 Känale platz hat, es soll auch noch andere sachen darauf laufen.
mfg und Danke tiki
(* @NESTEDCOMMENTS := 'Yes' *)(* @PATH := '' *)(* @SYMFILEFLAGS := '2048' *)PROGRAMSpeicherVAR  K01:BOOL;  Zeit_K01_Mo_Fr:ARRAY[0..5]OFTOD:=TOD#06:00:00,TOD#07:00:00,TOD#09:00:00,TOD#10:00:00,TOD#11:00:00,TOD#12:00:00;  Zeit_K01_Sa_So:ARRAY[0..5]OFTOD:=TOD#07:00:00,TOD#22:00:00,TOD#09:00:00,TOD#10:00:00,TOD#11:00:00,TOD#12:00:00;  wday:INT;  dat:DATE;  dt_in:DATE;  daytime:TOD;  Echtzeit:DT;  dummy:BOOL;  aktuelleZeit:TIME;END_VAR(* @END_DECLARATION := '0' *)Echtzeit:=SysRtcGetTime(dummy);   (* Echtzeit lesen*)dat:=DT_TO_DATE(Echtzeit);daytime:=DT_TO_TOD(Echtzeit);wday:=WEEKDAY(dat);CASEwdayOF1..5:  (* Montags bis Freitags *)IF((daytime>=Zeit_K01_Mo_Fr[0])AND(daytime<=Zeit_K01_Mo_Fr[1]))OR((daytime>=Zeit_K01_Mo_Fr[3])AND(daytime<=Zeit_K01_Mo_Fr[3]))OR((daytime>=Zeit_K01_Mo_Fr[4])AND(daytime<=Zeit_K01_Mo_Fr[5]))THEN              (* Zeitkanal auswerten und schalten *)  K01:=TRUE;ELSE   K01:=FALSE;  END_IF;6..7:  (* Samstag und Sonntag*)IF((daytime>=Zeit_K01_Sa_So[0])AND(daytime<=Zeit_K01_Sa_So[1]))OR((daytime>=Zeit_K01_Sa_So[3])AND(daytime<=Zeit_K01_Sa_So[3]))OR((daytime>=Zeit_K01_Sa_So[4])AND(daytime<=Zeit_K01_Sa_So[5]))THEN              (* Zeitkanal auswerten und schalten *)  K01:=TRUE;ELSE   K01:=FALSE;  END_IF;END_CASE;END_PROGRAM
Tiki hat geschrieben:
Hallo Zusammen,
ich bin gerade dran eine kleine Zeitschaltuhr zu Progr.
das ganze soll für ca. 15 Kanäle sein, jeder Tag sollte 3 Aus und Einschaltzeiten besitzen, das jeweils für Mo-FR und Sa-SO verschiedene.
habe mal einfach drauf los programmiert. Das ganze funktioniert für 1 Kanal, jetzt meine Frage was kan man besser machen.
Ich speichere die Schaltzeiten in Array's wie kann mann diese zur laufzeit über die Visu konfortabel ändern ? oder hat einer einen komplett neuen ansatz? bin für alles Dankbar.
Die Scheduler Lib habe ich gefunden weiß aber nicht ob meine Wago 841 für 15 Känale platz hat, es soll auch noch andere sachen darauf laufen.
mfg und Danke tiki
(* @NESTEDCOMMENTS := 'Yes' *)(* @PATH := '' *)(* @SYMFILEFLAGS := '2048' *)PROGRAMSpeicherVAR  K01:BOOL;  Zeit_K01_Mo_Fr:ARRAY[0..5]OFTOD:=TOD#06:00:00,TOD#07:00:00,TOD#09:00:00,TOD#10:00:00,TOD#11:00:00,TOD#12:00:00;  Zeit_K01_Sa_So:ARRAY[0..5]OFTOD:=TOD#07:00:00,TOD#22:00:00,TOD#09:00:00,TOD#10:00:00,TOD#11:00:00,TOD#12:00:00;  wday:INT;  dat:DATE;  dt_in:DATE;  daytime:TOD;  Echtzeit:DT;  dummy:BOOL;  aktuelleZeit:TIME;END_VAR(* @END_DECLARATION := '0' *)Echtzeit:=SysRtcGetTime(dummy);   (* Echtzeit lesen*)dat:=DT_TO_DATE(Echtzeit);daytime:=DT_TO_TOD(Echtzeit);wday:=WEEKDAY(dat);CASEwdayOF1..5:  (* Montags bis Freitags *)IF((daytime>=Zeit_K01_Mo_Fr[0])AND(daytime<=Zeit_K01_Mo_Fr[1]))OR((daytime>=Zeit_K01_Mo_Fr[3])AND(daytime<=Zeit_K01_Mo_Fr[3]))OR((daytime>=Zeit_K01_Mo_Fr[4])AND(daytime<=Zeit_K01_Mo_Fr[5]))THEN              (* Zeitkanal auswerten und schalten *)  K01:=TRUE;ELSE   K01:=FALSE;  END_IF;6..7:  (* Samstag und Sonntag*)IF((daytime>=Zeit_K01_Sa_So[0])AND(daytime<=Zeit_K01_Sa_So[1]))OR((daytime>=Zeit_K01_Sa_So[3])AND(daytime<=Zeit_K01_Sa_So[3]))OR((daytime>=Zeit_K01_Sa_So[4])AND(daytime<=Zeit_K01_Sa_So[5]))THEN              (* Zeitkanal auswerten und schalten *)  K01:=TRUE;ELSE   K01:=FALSE;  END_IF;END_CASE;END_PROGRAM
Hallöchen,
habe eine Wochenzeitschaltuhr (Function) programmiert.Du kannst damit soviele
Ein.-Ausschaltenzeiten programieren wie Du willst oder dein CPU verkraftet.
Ein FB zum einstellen der CPU Time und Date ist auch dabei
Wenn Du sie haben möchtest sage Bescheid dann schiecke ich dir die Function in einem Beispiel.
Du wirst aber verstehen das ich das nicht so schnell machen kann wie Du es möchtest da ich nur eingeschränkt Zeit habe
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Tiki hat geschrieben:
Danke, der Timer_p4 sieht sehr gut aus.
Hast Du auch noch einen Tip wie ich das Array so speichern kann das ich nach einen Download die ganzen Zeiten nicht immer ändern muss?
evtl. auch wie ich es einfach in eine Visu packe ?
mfg TIKI
schreibe deine Variable einfach in die Watch und Rezepturverwalter rein dann kannst Du sie schnell online auf die CPU schieben ohne das Du die Variable neu eingeben musst.
So kannst du die aktuellen Variable auch aus der CPU holen und in der Watchliste speicher.Damit kannst Du die aktuellen Daten immer in die CPU schieben
siehe Beispiel
.Jahr_einstellen:=2008
.Minute_einstellen:=56
.Monat_einstellen:=5
.Stunde_einstellen:=8
.Tag_einstellen:=21
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo Zusammen,
ich bin gerade dran eine kleine Zeitschaltuhr zu Progr.
das ganze soll für ca. 15 Kanäle sein, jeder Tag sollte 3 Aus und Einschaltzeiten besitzen, das jeweils für Mo-FR und Sa-SO verschiedene.
habe mal einfach drauf los programmiert. Das ganze funktioniert für 1 Kanal, jetzt meine Frage was kan man besser machen.
Ich speichere die Schaltzeiten in Array's wie kann mann diese zur laufzeit über die Visu konfortabel ändern ? oder hat einer einen komplett neuen ansatz? bin für alles Dankbar.
Die Scheduler Lib habe ich gefunden weiß aber nicht ob meine Wago 841 für 15 Känale platz hat, es soll auch noch andere sachen darauf laufen.
mfg und Danke tiki
SPEICHER.EXP [1.41 KiB]
Related
Talk.ru: 1
Talk.ru: 3
Talk.ru: 5
Hallöchen,
habe eine Wochenzeitschaltuhr (Function) programmiert.Du kannst damit soviele
Ein.-Ausschaltenzeiten programieren wie Du willst oder dein CPU verkraftet.
Ein FB zum einstellen der CPU Time und Date ist auch dabei
Wenn Du sie haben möchtest sage Bescheid dann schiecke ich dir die Function in einem Beispiel.
Du wirst aber verstehen das ich das nicht so schnell machen kann wie Du es möchtest da ich nur eingeschränkt Zeit habe
eine universell programmierbare und beliebig kaskadierbare zeitschaltuhr findest du in der oscat lib, auch im source code.
die kann 16 kanäle und beliebige ein aus zeiten
du findest die lib unter w www.oscat.de w
der entsprechende baustein ist der timer_p4
im manual ist auch beschrieben wie du 4 bausteine kaskadieren musst um einen 16 kanal baustein zu erhalten
Danke, der Timer_p4 sieht sehr gut aus.
Hast Du auch noch einen Tip wie ich das Array so speichern kann das ich nach einen Download die ganzen Zeiten nicht immer ändern muss?
evtl. auch wie ich es einfach in eine Visu packe ?
mfg TIKI
Hi
Hast du einen Wago 750-841 dann z.b. in eine Datei speichern.
Diese lässt sich mit dem ftp-Befehle auch sichern.
Ich denke, dass auch etliche "andere" Steuerungen Datei-zugriff haben.
Ja ich habe eine Wago 841.
Datei ? hast Du ein vieleicht ein Beispiel ?
mfg TIKI
Schau doch mal auf meine Homepage.
Da gibt es Examples.
das array kannst du auch als retein abspeichern
deklariere die variable als var retain persisitent oder nur var retain
schreibe deine Variable einfach in die Watch und Rezepturverwalter rein dann kannst Du sie schnell online auf die CPU schieben ohne das Du die Variable neu eingeben musst.
So kannst du die aktuellen Variable auch aus der CPU holen und in der Watchliste speicher.Damit kannst Du die aktuellen Daten immer in die CPU schieben
siehe Beispiel
.Jahr_einstellen:=2008
.Minute_einstellen:=56
.Monat_einstellen:=5
.Stunde_einstellen:=8
.Tag_einstellen:=21