Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Funktion nur einmal täglich ausführen

  1. #1
    Registriert seit
    04.11.2014
    Beiträge
    14
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich wurde gerne für meine wago-sps eine Funktion einbauen die mir die tagesaktuellen Sonnenaufgangs/untergangszeiten berechnet. Zur Berechnung habe ich einen Baustein aus der OSCAT-Basic library. Wie kann ich jetzt in codesys (hab bislang mit FUP und ein kleines bisschen mit ST gebastelt).

    Gruß
    Zitieren Zitieren Funktion nur einmal täglich ausführen  

  2. #2
    Registriert seit
    16.11.2007
    Beiträge
    747
    Danke
    33
    Erhielt 146 Danke für 114 Beiträge

    Standard

    Zitat Zitat von Android_Garden Beitrag anzeigen
    Hallo zusammen,

    ich wurde gerne für meine wago-sps eine Funktion einbauen die mir die tagesaktuellen Sonnenaufgangs/untergangszeiten berechnet. Zur Berechnung habe ich einen Baustein aus der OSCAT-Basic library. Wie kann ich jetzt in codesys (hab bislang mit FUP und ein kleines bisschen mit ST gebastelt).

    Gruß
    Welche Version der oscat.lib?
    Welche SPS hast du denn?

    Was ist jetzt die eigentliche Frage?

  3. #3
    Android_Garden ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.11.2014
    Beiträge
    14
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,
    Ich habe eine wago 750-8202, wie oben bereits beschrieben setzte ich die oscat.lib basic v3.33 ein. Mit meiner wago realisiere ich gerade eine Hausautomation z.B. eine Rollo-Steuerung. Ich will das bei Sonnenuntergang die rollos runter fahren sollen dazu muss ich aber die Uhrzeit des Sonnenuntergangs berechnen lassen. In der doku von oscat heißt es nun bei dem Baustein zur Berechnung der Zeiten das dies nur einmal am Tag ausgeführt werden soll um CPU Leistung zu sparen. Nun ist meine Frage: wie kann ich es realisieren damit die Sonnenuntergangszeit nur einmal täglich berechnet wird. Gerade ist mir der Gedanke gekommen das ich das per if-clause in der plc_prg umsetzte. Also z.b. if Uhrzeit 3:00 dann starte Programm. Ist das so möglich?

  4. #4
    Registriert seit
    13.08.2013
    Beiträge
    69
    Danke
    0
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Klar geht das so, aber um es wirklich nur einmal auszuführen, muss noch eine Können Auswertung mit rein.
    Auf der anderen Seite hast du eine sehr fixe CPU. Ob es sich da lohnt, das bisschen rechnerei zu sparen?

    Gruß Otwin

  5. #5
    Registriert seit
    13.08.2013
    Beiträge
    69
    Danke
    0
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Blödes Handy! Flanken-Auswertung!!

    Gruß Otwin

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Muß dieses "nur einmal am Tag" zu einer bestimmten Uhrzeit stattfinden?
    Ich würde mir merken, an welchem Tag (vom Datum) ich die Funktion zuletzt ausgeführt habe, etwa so:
    Code:
    heute := Tag(Uhrzeit)
    WENN zuletzt_ausgeführt <> heute UND Uhrzeit >= geplante_Uhrzeit DANN
      zuletzt_ausgeführt := heute
      tue_was...
    ENDE_WENN
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #7
    Registriert seit
    13.08.2013
    Beiträge
    69
    Danke
    0
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Bei nur einmal am Tag sollten die Ergebnisse allerdings remanent sein, sonst hat man nach Programmänderungen für einen Tag keine Werte mehr.

    Wie wäre es mit einem eigenen Task im zB. 10 Minuten Takt?

    Otwin

  8. #8
    Android_Garden ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.11.2014
    Beiträge
    14
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hmm einen task kann ich ja über die taskstplanung in der Steuerungskonfig einstellen und den dann alle, ich sag mal 6h, ausführen lassen. So oft ändert sich ja die Sonnenuntergangszeit nicht am Tag

    Allerdings würde mich noch interessieren wie genau das mit der Flanken-Auswertung gemeint ist?

  9. #9
    Registriert seit
    13.08.2013
    Beiträge
    69
    Danke
    0
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Wenn du das Programm um 3:00 ausführst, dann wird es ja ausgeführt, solange es 3:00 ist. Also eine Minute lang.
    Wenn du es aber wirklich nur einmal ausführen willst, dann musst du nach dem Vergleich der Uhrzeit noch eine Flankenauswertung basteln, damit es nur mit der steigenden (oder fallenden) Flanke ausgfürt wird. R-TRIG also.
    Wenn deine Steuerung nur ein paar Rollos durch die Gegend fährt, würde ich mir wegen der CPU-Auslastung aber echt keine Gedanken machen, die langweilt sich ja sonst total

    Die Lösung mit dem eigenen Task ist aber wohl das einfachste.

    Die Zeit ändert sich freilich nicht so oft am Tag, aber mir ging es selber schon so, dass die CPU tagsüber mal in Stop geht beim Programmieren und dann hast du halt abends keine Sonnenuntergangszeit, wenn du die Funktion nur um 3:00 aufrufst.
    Deswegen vieleicht nicht allzu geizig mit der CPU-Zeit sein

    Gruß
    Otwin

  10. #10
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Android_Garden
    Ich würde mich an PN seinen Code halten, nur die Uhrzeit rausnehmen.
    Damit hast du keine Probleme mit der Remanenz von Variablen. Beim Starten der PLC ist "zuletzt_ausgeführt" = 0 und damit auf alle Fälle <> heute. Damit wird der Programmteil nach dem starten auf alle Fälle einmal ausgeführt. Ob das Programm um 0:00,01 Uhr oder um 3:00 Uhr ausgeführt wird, ist völlig egal, da der Sonnenstand sich nur auf das Datum bezieht und nicht auf die Uhrzeit der Berechnung.
    Grüsse Holger

    Code:
    WENN zuletzt_ausgeführt <> heute DANN   
    zuletzt_ausgeführt := heute   
    tue_was... 
    ENDE_WENN

Ähnliche Themen

  1. S7-400 Zähler läuft nur einmal
    Von caipi im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 07.12.2011, 22:53
  2. Antworten: 15
    Letzter Beitrag: 22.05.2011, 20:24
  3. Antworten: 5
    Letzter Beitrag: 18.08.2009, 14:11
  4. C Programm unter Linux nur einmal starten
    Von Merten1982 im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 12.06.2007, 09:26
  5. Erdung des Schirmes nur einmal?
    Von Schöni im Forum Schaltschrankbau
    Antworten: 1
    Letzter Beitrag: 04.10.2004, 01:41

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •