Wöchentliche Umschaltung

Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo helfer

ich habe volgendes problem:
ich soll mit einer CPU 312 eine pumpen-steuerung realieren. ich habe 2 pumpen, welche abwechslungsweise je eine woche laufen sollen. die umschaltung von pumpe 1 auf pume 2 (oder umgekehrt) sollte immer montags um 00.00 Uhr erfolgen.

da ich lediglich ein paar einfache steuerungen in FUP (und, oder und ein paar timer) programiert habe, haben mir die AWL-beispiele in diesem forum nicht sehr geholfen...
ich wollte dies zuerst über eine ausschaltverzögerung löse, aber die gehen ja bei der s7 ja nur bis 2h43min...:(

gibt es da eine eifache lösung? (timer mit grösseren wertebereichen, oder so?)

mfg
freizeitphilosoph
 
Wenn du immer montags umschalten sollst, dann lese doch die
aktuelle Uhrzeit aus und vergleiche auf Tag und Uhrzeit
Oder suche hier im Forum mal nach Zeitschaltuhr
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit dem SFC1 oder in den Variablen des OB1 kannst du die aktuellen Datumsdaten auslesen, auch den Wochentag. Diesen überwachen, auch Änderung (Flanke) von So zu Mo (Ich glaube von 1 nach 2) und damit dann die Pumpe umschalten.
 
Für genau solche Zwecke, also einmalige oder wiederkehrende Zeitpunkte gibt es die sogenannten Uhrzeitalarm-OBs (OB10-OB17).
Die 312 hat davon zwar nur einen, aber das sollte ja ausreichen.

Die Einstellungen für einen Uhrzeit-OB (in diesem Falle OB10) können entweder in der HW-Konfig vorgenommen werden oder programmtechnisch mit den System-Funktionen SFC 28 bis SFC 31
· stellen (SFC 28 "SET_TINT")

· stornieren (SFC 29 "CAN_TINT")

· aktivieren (SFC 30 "ACT_TINT")

· abfragen (SFC 31 "QRY_TINT").

Ausführliche Info hierzu findet sich z.B. im Simatic Manager in der Hilfe für OBs und SFCs.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich hatte da mal einen FC den man im OB1 aufruft, OB1_Date_Time übergeben und schwupps... Jahr, Monat, Tag, Stunde, Minute, Sekunde und Wochentag gab es als INT zurück.:ROFLMAO:

...nur mal so als denkanstoss.:ROFLMAO:
 
Ja aber vergesst nicht: Die CPU 312 hat nur eine Softwareuhr ohne Speicherung!
Also bei einem Spannungsausfall geht nichts mehr mit der Internen Uhr!

Ich würde dir für solche Sachen eine CPU 313C oder CPU 314 empfehlen da ist eine Hardwareuhr drinn die gepuffert ist!

godi
 
Aber auch daran denken, dass die 312 keine gepufferte Uhrzeit hat.
Spannungsversorgung aus = Uhr steht.
Das bedeutet, Du musst dann in irgendeiner Form, die Uhr wieder stellbar machen (über OP oder halt mit der S7-Software.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich hatte da mal einen FC den man im OB1 aufruft, OB1_Date_Time übergeben und schwupps... Jahr, Monat, Tag, Stunde, Minute, Sekunde und Wochentag gab es als INT zurück.:ROFLMAO:

...nur mal so als denkanstoss.:ROFLMAO:
Mit diesem Baustein kann man die Uhrzeit lesen, auch ohne die OB1_Date_Time zu übergeben (weil er die SFC1 nutzt).
Einfach irgendwo im Programm aufrufen und glücklich sein.:-D
 

Anhänge

  • Read-clock.zip
    17,2 KB · Aufrufe: 52
Man kann auch einfach mit der Systemfunktion SFC1 READ_CLK die Systemzeit (DATE_AND_TIME) aus der SPS auslesen und mit der IEC-Funktion FC7 DT_DAY aus der Systemzeit (DATE_AND_TIME) den Wochentag (INT) auslesen.

Code:
FUNCTION "FC_SYSTEMZEIT" : VOID
TITLE =Systemzeit
AUTHOR : KAI
FAMILY : SPSFORUM
NAME : SYSTZEIT
VERSION : 1.0
 
VAR_OUTPUT
  WOCHENTAG : INT ; 
END_VAR
VAR_TEMP
  SYSTEMZEIT : DATE_AND_TIME ;  
  READ_CLK_RET_VAL : INT ;  
END_VAR
BEGIN
NETWORK
TITLE =SYSTEMZEIT (DATE_AND_TIME)
//SFC 1 READ_CLK
//
//Die Systemfunktion SFC 1 liest die Uhr in der CPU aus. Man erhält das aktuelle 
//Datum und die aktuelle Uhrzeit im Datenformat DATE_AND_TIME. 
//   
      CALL "READ_CLK" (
           RET_VAL                  := #READ_CLK_RET_VAL,
           CDT                      := #SYSTEMZEIT);
      NOP   0; 
NETWORK
TITLE =SYSTEMZEIT (DATE_AND_TIME) => WOCHENTAG (INT) 
//FC 7 DT_DAY
//
//Die IEC-Funktion FC 7 liest den Wochentag aus dem Format DATE_AND_TIME. 
//Der Wochentag liegt im Datenformat INTEGER vor:
//
//1 = Sonntag
//2 = Montag
//3 = Dienstag
//4 = Mittwoch
//5 = Donnerstag
//6 = Freitag
//7 = Samstag
//   
      CALL "DT to DAY" (
           IN                       := #SYSTEMZEIT,
           RET_VAL                  := #WOCHENTAG);
      NOP   0; 
END_FUNCTION

Gruß Kai
 

Anhänge

  • FC200.pdf
    3,6 KB · Aufrufe: 51
hallo helfer

ich habe volgendes problem:
ich soll mit einer CPU 312 eine pumpen-steuerung realieren. ich habe 2 pumpen, welche abwechslungsweise je eine woche laufen sollen. die umschaltung von pumpe 1 auf pume 2 (oder umgekehrt) sollte immer montags um 00.00 Uhr erfolgen.

da ich lediglich ein paar einfache steuerungen in FUP (und, oder und ein paar timer) programiert habe, haben mir die AWL-beispiele in diesem forum nicht sehr geholfen...
ich wollte dies zuerst über eine ausschaltverzögerung löse, aber die gehen ja bei der s7 ja nur bis 2h43min...:(

gibt es da eine eifache lösung? (timer mit grösseren wertebereichen, oder so?)

mfg
freizeitphilosoph

Hallo ,
mal abseits vom Problem der Programmierung.
Das umschalten mit gleicher Laufzeit hat man früher immer gemacht,
das wird aber heutzutage nicht mehr empfohlen.
Die Pumpenrotation wurde eingeführt um redundante Pumpsystem nicht einrosten zu lassen. Bei der gleichwertigen Belastung der Pumpen, ist die Wahrscheinlichkeit , das beide Pumpen im gleichen Zeitraum ausfallen wesentlich höher. Ich kenne das in neuen Anlagen nur noch mit azyklischen Laufzeiten z.B. Pumpe 1 mo-do und Pumpe 2 fr-so.
In den letzten Pflichtenheften wurde immer 1:7 oder ähnliches verlangt.

Ein anderer Ansatz, wäre die reine Laufzeit zu messen, und in einem DB zu sicheren, da wäre das Datum aussen vor.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich kenne das meistens so das die Pumpen immer eine automatische Vertauschung haben, wenn Pumpe 1 gelaufen ist und abgeschaltet hat kommt dann Pumpe 2 wenn der Einschaltbefehl kommt, je nach anforderung vom Kunden kommt entweder nach einer bestimmten Zeit oder einem weiteren Einschaltbefehl die 2. Pumpe auch noch rein....


Gruß IceBear
 
Danke an alle!

ich hätte nie gedacht, dass es so viele lösungen gibt...
mein chef hat mir jedoch gesagt, dass ich eine stundenzähler programmieren soll... halte ich zwar für keine so gute lösung, aber es funktioniert!

mfg Freizeitphilosoph
 

Anhänge

  • Stundenzähler.doc
    1,1 MB · Aufrufe: 53
hallo helfer

ich habe volgendes problem:
ich soll mit einer CPU 312 eine pumpen-steuerung realieren. ich habe 2 pumpen, welche abwechslungsweise je eine woche laufen sollen. die umschaltung von pumpe 1 auf pume 2 (oder umgekehrt) sollte immer montags um 00.00 Uhr erfolgen.
Das wirst Du aber mit dem Stundenzähler nicht vernünftig realisieren können.
Du kommst IMHO um die Auswertung der Systemuhr nicht herum. Wobei da eben, wie in anderen Beiträgen schon erwähnt, die CPU312 nicht die beste Wahl ist weil sie, wie gesagt, keine Hardwareuhr besitzt.
 
Zuletzt bearbeitet:
Zurück
Oben