TIA V15 Verwendung Wochenzeitschaltuhr FB_LGF_TimerSwitch

ronnystritzke

Level-2
Beiträge
84
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, bin dabei eine Bewässerungssteuerung mit TIA V15 zu realisieren. Nun habe ich mir den FB_LGF_TimerSwitch als Wochenschaltzeituhr im Mode 2 eingerichtet. Ich habe 4 Ventile die ich nach einer bestimmten Zeit an bestimmten Tagen ansteuern möchte. Das heißt Ventil 1 Montag von 21:00 - 21:10Uhr, Ventil 2 Montag 21:15-21:25Uhr..... Ventil 1 Dienstag von .......
usw.

Muss ich für jeden Tag und jedes Ventil jeweils 1 LGF_TimerSwitch DB anlegen oder unterscheidet er das bei mehrmaliger Verwendung anhand der Nummern für den Tag?


Mfg Ronny
 
Ich würde hier für jedes Ventil einen eigenen Bausteinaufruf erstellen.
Du kannst ja mit Mode 1 fahren, dann je nach Wochentag die Schaltzeiten verändern. Wenn du das gleich am Tagesanfang machst, sollte das funtionieren.
 
Du kannst doch anhand des Wochentages, den du aus der Steuerung bzw. vom Baustein auslesen kannst die Schaltzeiten flexibel gestalten.
Die Zeiten am Baustein müssen ja nicht statisch sein.

Wenn Wochentag ist Montag dann Stunde On ist 21
Wenn Wochentag ist Dienstag dann Stunde ON ist 20.... usw.
 
Das war ja die Frage ob ich den DB mehrmals verwenden kann und er das Anhand der Nummern für den Wochentag es selbst unterscheidet oder ob er mit der Mehrfachverwendung durcheinander kommt!? Derzeit habe ich für jedentag und jedes Ventil 1 DB erstellt, macht bei 4 Ventilen und 7 Tagen 28 DB´s, wenn es mit der Mehrfachverwendung klappen würde brauche ich nur 4
 
Muss ich den 4x ein FB erstellen, reicht es nicht wenn ich das in Netzwerke entsprechend erstelle? Sprich Netzwerk 1-7 für Ventil 1 Montag bis Freitag mit LGF_TimerSwitch Ventil 1_DB (DB1); dann Netzwerk 8-14 für Ventil 2 Montag bis Freitag mit LGF_TimerSwitch Ventil 2_DB (DB2); Netzwerk 15-21 für Ventil 3 Montag bis Freitag mit LGF_TimerSwitch Ventil 3_DB (DB3); Netzwerk 22-28 für Ventil 4 Montag bis Freitag mit LGF_TimerSwitch Ventil 4_DB (DB4)?

Mfg Ronny
 
redest du jetzt von irgendwelchen Global-DB oder von den Instanzen?
Wieso so viele, ich verstehe momentan nicht so ganz deine Gedankengänge.

Nochmals und dann bin ich erstmal raus:
- pro Ventil ein Aufruf des FBs mit einem zugehörigen Instanz DB
- die Eingangsbeschaltung des jeweiligen FBs kannst du doch flexibel gestalten, einfach die Variablen für ON und OFF vor dem Aufruf mit den passenden Werten abhängig vom Wochentag verschalten
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, aufgrund mancher Änderungen und Anpassungen wäre es schön wenn ich die On/Off Zeiten des LGF TimeSwitch auf dem HMI ändern könnte. Habe solche Parameter noch nicht mit dem HMI verknüft, ein DB ist im Projekt vorhanden. Gibt es da eine Anleitung?

Mfg Ronny
 
Welches HMI hast du denn? Die Zeiten liegen bereits in einem DB?

Aber grundsätzlich: Du erstellst im HMI ein E/A-Feld und verknüpfst dieses mit der Variable in deinem DB. In der Steuerung (Oder im HMI: Eigenschaften der Variable -> Grenzen) würde ich den Eingabewert noch auf Plausibilität prüfen, damit niemand auf die Idee kommt "26:89 Uhr" als Einschaltzeit einzugeben.
 
nein am LGF kann man die Zeiten direkt eingeben, allerdings kann man dort auch den DB Parameter verknüpfen. Jedoch muss man dann die Stunde und Minute jeweils einzeln eingeben bzw. einen Paramter versehen. Wenn ich das bei 5 Ventilen, jeden Tag verknüpfe, habe ich ja dann insgesamt 70 Parameter, das wird ja dann unübersichtlich. Habe derzeit noch für Jedentag einen LGF für jedes Ventil, um flexibel mit den Zeiten zu sein....

Mfg Ronny
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du meine Frage beantworten würdest, welches HMI du benutzt, könnte man dir genaueres sagen...

Bei einem Comfort Panel kannst du z.B. in der SPS einen Datentyp erstellen, der deine Schaltzeiten enthält und im HMI einen Bildbaustein, an den du diese Variable anbindest. Damit hast du einen DB, der deine Schaltzeiten übersichtlich strukturiert enthält und brauchst im HMI nur eine Variable pro Zeitschaltuhr.
 
Du kannst dir wie gesagt einen Anwenderdatentyp in der Steuerung erstellen:

Code:
TYPE "TimeSched"VERSION : 0.1
   STRUCT
      OnHour : USInt;
      OnMinute : USInt;
      OffHour : USInt;
      OffMinute : USInt;
   END_STRUCT;


END_TYPE

In einem DB legst du dann Variablen vom Typ TimeSched (in diesem Fall, du kannst den Datentyp benennen wie du willst) an.

LGF_mit_UDT.PNG
Und beschaltest damit deinen FB.

Im HMI erstellst du einen Bildbaustein-Typ mit 4 E/A-Feldern, diese Verknüpfst du mit der Schnittstelle und voila, du musst nur noch den Bildbaustein in einem Bild einfügen und diesen mit einer einzigen Variable beschalten.

Bildbaustein_LGF.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das erste mit dem UDT hab ich noch nicht ganz verstanden wie das geht aber trotzdem müsste ich die Grafik ja dann je Ventil für 7 Tage erstellen... sprich 35x....und das auf ein 15" Touch darstellen sieht bestimmt überladen aus....
 
Hallo, habe mit dem LGF TimeSwitch noch ein Problem. Undzwar verwende ich diesen auch dazu, die entsprechenden Pumpen für die Bewässerung zu steuern. Dazu steht der Baustein auf Mode 1 und eine entsprechende Zeit, zb. 6-18Uhr ist eingeben. In dieser Zeit ist auch der Zustand am Signalausgang des LGF TimeSwitch auf TRUE. Danach auf FALSE. Diesen Ausgangswert schreibe ich in einem DB und hole mir diesen im nächsten Netzwerk inkl. zusätzlicher Verriegelung zur Pumpenfreigabe. Jedoch bleibt dieses Signal vom LGF TimeSwitch auf TRUE obwohl der Ausgang des Bausteins bereits auf FALSE steht!?
Im DB ist die Remanenz nicht angewählt. Lade ich jedoch ausserhalb der eingestellten Zeit inkl. reinitialiseren der DB´s das Programm neu, wird dieser zurück gesetzt und alles ist gut...

Wo liegt hier der Fehler!? Könnte ich den ENO dafür verwenden!?

Mfg Ronny
 
Wie schreibst Du den Zustand des Signalausgangs in Deinen DB? Mit einer bedingten Anweisung alá "IF #MyTimerSwitch.signal = true THEN ..."? Oder rufst Du die TimerSwitch-Instanz nur manchmal auf? Du mußt den Zustand des Signalausgangs immer in Deinen DB kopieren.
Wie sieht Dein diesbezüglicher Programmteil aus?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich könnte das Programm gern zur Verfügung stellen...bekommt man das hier hochgeladen? Generell verwende ich den LGF Timeswitch 40x, je Ventil (5Stck) bereits 7x, macht 35x in einem FC und in einem weiteren FC 5x. Generell habe ich aber für den LGF nur ein DB, der selbst beim erstellen des LGF TimeSwitch FB10002 erstellt worden ist .... liegt hier viell. das Problem?

Signal greife ich direkt am Signal Ausgang ab, ohne Anweisung und schreibe direkt in den DB
 
Wenn Du je Ventil mehrere Schaltzeiten brauchst, dann mußt Du die mehreren Schaltsignale ODER-verknüpfen. Wenn Du die Signal-Ausgänge immer auf die selbe DB-Variable gibst, dann steht am Ende der Wert der zuletzt aufgerufenen Instanz in der Variable. Ist eigentlich Logisch, nicht wahr?
Am ODER direkt die Instanz-Ausgänge verknüpfen, oder bei der Instanz zunächst auf verschiedene Zwischenvariablen verschalten und dann die Zwischenvariablen ans ODER geben.
Code:
                        +-----+
                        | >=1 |
LGFTS_Instanz_1.signal--|     |
LGFTS_Instanz_2.signal--|     |
LGFTS_Instanz_3.signal--|     |
LGFTS_Instanz_4.signal--|     |
LGFTS_Instanz_5.signal--|     |--
                        +-----+
Für diese Variante müsste jede TimeSwitch-Instanz einen eigenen Instanz-DB bzw Multiinstanz haben. Vermutlich funktioniert der LGF_TimeSwitch aber auch alle Instanzen eines Ventils mit dem selben Instanz-DB - dann müsstest Du den signal-Ausgang bei jedem Aufruf auf eine andere Zwischenvariable verschalten, oder könntest hoffen/beobachten, daß/ob die ODER-Verknüpfung schon intern funktioniert. Vermutlich muß je Ventil ein anderer Instanz-DB verwendet werden, nur Aufrufe für das selbe Ventil können den selben IDB benutzen. Doch über solche Details läßt sich die Siemens-Dokumentation des Bausteins nicht aus - also kann man sich auf selbst beobachtetes Verhalten nicht verlassen und sollte den "sicheren" Weg gehen. Oder den Quelltext des Bausteins analysieren.

PS: um Programmteile zu zeigen kannst Du ein Screenshot-Bild an den Beitrag anhängen. Oder bei textuellen Programmiersprachen den Programmcode als Text hier posten. Ein ganzes TIA-Projekt anhängen ist meist nicht sinnvoll, würde aber gehen wenn man es in eine zip-Datei verpackt.

Harald
 
Zuletzt bearbeitet:
Ok danke für die Unterstützung.
Die VERODERUNG ist mir bewusst, habe ich auch so realisiert. Des weiteren musste ich bei den Ventilen auch 1x den ENO Ausgang nutzen damit es funktionierte weiß aber nicht mehr warum:

Montag Ventil 1.JPGDienstag Ventil 1.JPG

Beispiel ist für Ventil 1, wurde aber jeweils für Ventil 1 - 5 gemacht, alles im gleichen Baustein.

Am Ende des Bausteins, habe ich dann die jeweilige Freigabe aus dem DB, dem entsprechenden Ausgang das Ventil zugeordnet:

Ventil 1.JPG

Die Zuweisungen der Ventile passt auch soweit. In einem weiteren FC, FC 3 bestimme ich die Zuordnung der Pumpen auch anhand der Zeiten, Beispiel hier, die Kreiselpumpe läuft täglich von 8-22Uhr und dann nochmal 1-5:15Uhr. Wenn ich früh dann schaue, ist die Anforderung der Kreiselpumpe und noch einer weiteren Pumpe, die von 8-18Uhr laufen soll, weiterhin vorhanden. Sprich, der Signalausgang des jeweiligen LGF TimeSwitch ist nicht mehr TRUE sondern FALSE, jedoch im Netzwerk für die Ausgangsanforderung ist die erste Freigabe noch TRUE!?

Anforderung 1 Kreiselpumpe.JPG Anforderung 2 Kreiselpumpe.JPG
 
Zurück
Oben