Zeitschaltuhr realisieren (dringend)

JMK

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Erst mal ein hallo an alle in die Runde (erstes und bestimmt nicht letztes Posting)

Nun zum Problem:

CPU: S7-312C
Step7 V5.2

Neben dem eigentlichen Programm (was bereits fertig ist und getestet ist) brauche ich eine Funktion bzw. Möglichkeit eine Pumpe jeden Abend von 22:30 bis 23:00 laufen zu lassen.

Neben meiner Recherche im Internet setz ich ein wenig die Hoffnung hier in das Forum.

Auf der Siemens Seite habe ich folgendes gefunden
https://support.automation.siemens....seus&aktprim=4&extranet=standard&load=content

Wenn man sich da die Dokumentation anschaut sieht man das der FB120 genau die Funktion ist die ich brauche. Aber ich hab keine Ahnung wie ich die in dem runterladbaren "Code Zeitschaltfunktionsbausteine" bentuzen kann. Mir ist zwar klar wie ich aus dem OB1 den FB120 aufrufen kann aber wie ich die Parameter setzten muss is mir leider Schleierhaft.
siemensfunktion.jpg

Auch den DB120 find ich nicht in dem runerladbaren Code Paket


Für Tips wäre ich sehr dankbar.

EDIT: Sorry das ich so nervig dringend daneben geschrieben hab aber ich muss morgen fertig sein o_O
 
Zuletzt bearbeitet:
Geh doch nochmal auf die Siemensseite, da sind doch auch Beispiele dabei, schau dir zuerst die mal an, anhand der Beispiele kannst du dann viel besser deine Fragen präzisieren.

PS. Dringend ist es doch immer, oder? ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich kenne den beschriebenen FB nicht, aber grundsätzlich ...:
Du legst innerhalb des aufrufenden Bausteins im TEMP-Bereich 1 Variable Einschaltzeit und 1 Variable Ausschaltzeit vom Typ UDT6 an. Diese Variablen trägst du an den FB120 als Parameter. Vorher musst du ssie natürlich noch passend zuweisen, aber das muss sich eigentlich aus dem UDT6 ergeben ...

Warscheinlich :
Code:
L 12
T Einschaltzeit.Stunde
L 30
T Einschaltzeit.Minute
L 0
T Einschaltzeit.Sekunde

oder so ... probier mal. Ansonsten bräuchte ich mehr Info's ...
 
Also erst mal danke an alle für die schnellen Antworten:

@Ralle
Das Beispiel von der Siemens Webseite hab ich mir runtergeladen und es hat mich kein Stück weitergebracht.

@Larry (und alle anderen)
https://support.automation.siemens....E_v201.zip?func=cslib.csFetch&nodeid=23780844
Hier findet man das Codepaket von dem ich rede
UDT6 is dabei aber ich weiß net wie bzw. wo ich die Werte zuordnen kann.

@Steve81
ich vermute fast das DB120 dem im Codepaket zu finden DB20 entsprechen soll. was hab ich den davon wenn ich einen leeren DB generiere?


Problemstellung:
Alles was ich will ist einen Merker (zB M2.0) der in der Zeit von 22:00-23:00 den Wert 1 hat.



Hätte nie gedacht das das so kompliziert ist.

Hoffe das ihr mir da helfen könnt.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
...
@Steve81
ich vermute fast das DB120 dem im Codepaket zu finden DB20 entsprechen soll. was hab ich den davon wenn ich einen leeren DB generiere?
...

Da brauchen wir aber einen [Aua] Knopf.

Lese mal in der Hilfe unter Instanzen nach.

Bitte sag jetzt nicht das man Dich auf einen Kunden los gelassen hat.
 
Da brauchen wir aber einen [Aua] Knopf.

Lese mal in der Hilfe unter Instanzen nach.

Bitte sag jetzt nicht das man Dich auf einen Kunden los gelassen hat.

Ok dann drück den [Aua] Knopf, wenn du dich dann besser fühlst. :confused:


Ich habs in der Hilfe nachgelesen was eine Instanz ist und wenn ich das in Kombination zusammen mit deinem Kommentar versuche zu deuten, dann verwaltet sich der DB also selbst.

Tut mir leid das ich erst anfange SPS-Programmieren zu lernen. Aber jeder fängt irgendwann mal an.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK
aber das eignetliche Problem besteht immer noch:

Alles was ich will ist einen Merker (zB M2.0) der in der Zeit von 22:00-23:00 den Wert 1 hat.

was muss ich tun ?
 
...
Ich habs in der Hilfe nachgelesen was eine Instanz ist und wenn ich das in Kombination zusammen mit deinem Kommentar versuche zu deuten, dann verwaltet sich der DB also selbst.
...

Ja und nun geht es weiter: Lese mal nach was ein UDT ist.

Damit Du den Satz von Siemens auch verstehst.

SIEMENS schrieb:
Eckdaten/Parametrierbarkeit:
Arbeitsspeicherbedarf:
day: 760 Bytes
Instanz-DB: 52 Bytes
Der Parameter „Time_To_Check“ ist eine Struktur vom Typ „day_udt“
(UDT1). Es ist enthalten:
• Startstunde, Startminute, Startsekunde zusammengefasst als „starttime“
mit Struktur vom Typ „times“ (UDT6)
• Endestunde, Endeminute, Endesekunde zusammengefasst als „endtime“
mit Struktur vom Typ „times“ (UDT6)

Der FB Day (FB120) wirkt doch da recht simpel.

Man Baut sich einen day_udt aus zwei times_udt.
 
Zuletzt bearbeitet:
...
Wenn die Sache zu schwierig wird :
ich weiß, dass wir im Forum unter "Zeitschaltuhr" oder so das Thema erst hatten. Dort hatte Kai (soweit ich weiß) einen schönen Baustein kreiert. Vielleicht wäre die Such-Funktion es wert, einmal bemüht zu werden ...
;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie weit bist Du denn?
Hast du den enstprechenden FB in deinem Programm aufgerufen?
Hast Du den Instanz DB erzeugen lassen?
Sind die entsprechenden UDTs rüberkopiert?
Wo willst Du denn die Schaltzeiten vorgeben (Datenbaustein, Visualisierung,etc.)?
Das ganze schon in der CPU / unter PLCSIM angesehen?

Nur Dringend, ohne Infos - so klappt das nicht
 
Larry hat recht, der Siemens-FC scheint hier eh mit Kanonen auf Spatzen zu schießen. Sieh mal in die Standard-Library bei den IEC-Functions nach und hier im Forum unter "Zeitschaltuhr", oder "Uhrzeit". Es geht auch ganz bodenständig. Die aktuelle Zeit würde ich aus dem OB oder mit dem dafür vorgesehenen SFC lesen. Die Zeit wird ja intern im Format ms seit Mitternacht gespeichert (bei den Zeitinfos aus dem OB1 kannst du diese auch in ms umrechnen), so daß du deine Vorgabezeit lediglich in ms umrechnen mußt und dann über zwei Vergleicher ermittelst, ob die aktueller Uhrzeit zwischen den beiden Vorgabezeiten (Start, Ende) liegt. Wenn ja, schaltest du einen Merker auf True.
 
Ob10

Hallo,

die 312C beherrscht den OB10. Täglich 22:00 aufrufen, aktiv setzen und im OB10 sowas wie: UN Mxx.x | SMxx.x eintragen.
Dann im OB1 oder sonstwo mit Mxx.x einen Timer ausschaltverzögert 1h starten und den Merker xx.x zurücksetzen.
Nachteil: die CPU-Zeit ist nicht gepuffert und muss anderweitig überwacht werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...
Wenn die Sache zu schwierig wird :
ich weiß, dass wir im Forum unter "Zeitschaltuhr" oder so das Thema erst hatten. Dort hatte Kai (soweit ich weiß) einen schönen Baustein kreiert. Vielleicht wäre die Such-Funktion es wert, einmal bemüht zu werden ...
;)

Danke.

Der Kai is mein persönlicher Held des Tages.

http://www.sps-forum.de/showthread.php?t=13911

Die Suche hatte ich eigentlich schon vorher bemüht, habe halt nur die falschen Suchbegriffe benutzt.

Danke an alle die sich bemüht haben mir Anfänger zu helfen.
 

Anhänge

  • OB1.pdf
    3,7 KB · Aufrufe: 1.607
  • FC100.pdf
    4,8 KB · Aufrufe: 1.609
  • FC110.pdf
    4,1 KB · Aufrufe: 1.390
  • Schaltuh.zip
    32,8 KB · Aufrufe: 1.248
  • STEP 7 VAT.jpg
    STEP 7 VAT.jpg
    161,9 KB · Aufrufe: 1.144
Hier mal ein kurzes Programmbeispiel von mir. :)

Zu der Schaltuhr siehe auch diesen Beitrag:

http://www.sps-forum.de/showpost.php?p=85874&postcount=21

Gruß Kai

Hallo,
Habe mir die Freiheit genommen und den FC110 in mein Programm
übernommen. funktioniert. ... aber warum ???????

wenn ich irgendwelche vergleichs- oder rechenvorgänge mit dem
Format TOD machen will, bekomme ich immer die Meldung
"Aktualdatentyp TOD passt nicht zum formalen Typ DINT des Formalparameters"
(z.b. bei einem vergleich: <=D)

Irgendjemand eine Ahnung ? Vielen Dank ! Andreas.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
vermutlich hat Kai die Typprüfung abgeschaltet - wo genau, weiss ich jetzt nicht auswendig, da ich AWL programmiere und daher nie Probleme damit habe, es sei denn, ich irre mich über den Typ, den ich gerade verwende. aber irgendwo bei Optionen ... da müsste es schon sein.
 
Zurück
Oben