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

Ergebnis 1 bis 10 von 10

Thema: TOD nur bis Sekunde vergleichen

  1. #1
    Registriert seit
    24.07.2013
    Ort
    Güsten
    Beiträge
    23
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Ich bin gerade dabei für eine Kompressoranlage eine Steuerung zu Programmieren.
    Dazu möchte ich gern an einem bestimmten Wochentag zu einer bestimmten Uhrzeit ein Signal ausgeben/Merker setzen.
    Den aktuellen Wochentag ermittle ich mit dem SFC1 und dann den FC7. (alles klar)
    Nun möchte ich aber die eingestellte Uhrzeit von einem Leitbild mit der aktuellen Uhrzeit auf der SPS vergleichen. Beide Uhrzeiten liegen in einem DB als TOD vor. Ich möchte aber nicht bis in den Millisekundenbereich gehen. Es sollte schon nur bis zur Sekunde ein Abgleich vorhanden sein.
    Ich hatte mich im Forum schon einmal dazu etwas umgeschaut. Dort stand, dass man die Uhrzeit auch byteweise abgleichen kann. Jedoch klappt es nicht, wenn ich diese aus dem DB auslesen will. Da immer der "Typ der Variable" korrekt ist.
    Wer kann mir da helfen?

    mfG N8
    Zitieren Zitieren TOD nur bis Sekunde vergleichen  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Hallo,
    ich glaube, da schmeisst du etwas durcheinander.
    Das Format DT oder auch DATE_AND_TIME ist ein Byte-String, aus dem du dir Byte-BCD-weise die Einzel-Informationen herausholen kannst. Das kannst du in der Step7-Hilfe auch sehr schön nachlesen.
    TOD oder auch TIME_OF_DAY ist die Zeitspanne in Millisekunden, die seit Mitternacht vergangen ist.
    Du kannst dir natürlich mit einer Division (/ 1000) aus den Millisekunden dann Sekunden machen - das ist aber (glaube ich) nicht das, was du willst - das was du haben willst habe ich allerdings nicht verstanden ...

    Gruß
    Larry

  3. #3
    Registriert seit
    15.03.2013
    Beiträge
    187
    Danke
    6
    Erhielt 35 Danke für 30 Beiträge

    Standard

    Warum verwendest du nicht einfach einen Uhrzeitalarm? Damit kannst du an einem bestimmten Wochentag wöchentlich einen OB aufrufen lassen, in dem du deine Aktion programmiert hast.

  4. #4
    Nightwalker1987 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.07.2013
    Ort
    Güsten
    Beiträge
    23
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Da muss ich wohl wirklich was verwechselt haben.
    Noch mal zum veranschaulichen:
    Ich möchte ganz gerne 2 Kompressoren im wechseln laufen lassen (einer bringt Grundlast der andere wird bei Bedarf zugeschaltet).
    Die beiden Kompressoren sollen wöchentlich die Rollen tauschen.
    Um dies zu gewährleisten wollte ich den Wochentag über das Leitbild eingeben lassen, an welchem das passieren soll, sowie die Uhrzeit.
    Mit dem Wochentag hat alles so weit geklappt.
    Den Tausch alleine könnte ich auch jetzt schon realisieren. Jedoch sollen die Kompressoren entweder von Samstag bis Sonntag oder nur am Sonntag ausgeschaltet werden und dies jeweils zu bestimmten Zeiten.
    Hierzu wollte ich die Uhrzeit aus lesen und wenn diese erreicht ist ein Merker setzen.
    Die Einstellung der Tage und Uhrzeiten sollen variabel über das Leitsystem möglich sein.
    Hierzu lege ich diese in einen Datenbaustein ab.
    Den Tausch alleine könnte ich auch jetzt schon realisieren. Jedoch sollen die Kompressoren entweder von Samstag bis Sonntag oder nur am Sonntag ausgeaschaltet werden und dies jeweils zu bestimmten Zeiten.
    Hierzu wollte ich die Uhrzeit aus lesen und wenn diese erreicht ist ein Merker setzen.
    Die Einstellung der Tage und Uhrzeiten sollen variabel über das Leitsystem möglich sein.
    Hierzu lege ich diese in einen Datenbaustein ab.

    Ich hoffe, das veranschaulicht mein Vorhaben besser.

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    OK ... verstanden ...
    Du solltest allerdings beachten, dass du die Uhrzeiten sowieso nicht auf Gleichheit sondern besser auf >= vergleichen solltest. Dann spielen ggf. vorhandene Millisekunden auch schon keine Rolle mehr.
    Die andere Variante wäre, dass du dir ein eigenes Zeitformat erstellst, dass nur die Sekunden speichert. Für den Vergleich gelten dann aber trotz allem die gleichen Grundsätze ...

    Gruß
    Larry

  6. #6
    Nightwalker1987 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.07.2013
    Ort
    Güsten
    Beiträge
    23
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    gut!
    Jetzt ist nur noch die Frage, wie ich diesen Vergleich hinbekommen kann.
    Am liebsten wäre mir direkt aus den Datenbausteinen raus. oder ist dies eher nicht so optimal.
    Ich hatte am Anfang mir das in etwa so gedacht, dass ich erst den Wochentag vergleiche, dann die Stunden, dann Minuten, dann Sekunden. (ich dachte, dass ich TOD so aufdröseln könnte).
    Gibt es eine einfache Möglichkeit? Habe leider noch keinen Ansatz gefunden, mit dem ich die beiden TOD vergleichen kann.
    Gibt es dazu einen SFC oder so?

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    ... nicht so kompliziert ...
    Ein TOD ist erstmal nur ein DINT in einer besonderen Formatierung.
    Der Vergleich ginge dann z.B. so :
    Code:
    L #mein_System_TOD
    L #mein_Visu_TOD
    >= D
    = #mein_MeldungsBit
    oder wenn du mit einer Konstanten vergleichen willst :
    :
    Code:
    L #mein_System_TOD
    L TOD#12:34:56.789
    > = D
    = #mein_MeldungsBit2
    Gruß
    Larry
    Geändert von Larry Laffer (24.07.2013 um 14:43 Uhr)

  8. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Nightwalker1987 (25.07.2013)

  9. #8
    Nightwalker1987 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.07.2013
    Ort
    Güsten
    Beiträge
    23
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke nochmal!

    Ich weiß jetzt auch, warum meine ersten Versuche nicht klappten.
    Es lag bei mir einfach nur daran, dass ich in KOP programmiert habe. Dort meckert er aber immer, dass TOD nicht zu DInt-Vergleicher passt.
    In AWL hatte es gleich super geklappt.

    mfG N8

  10. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Du kannst auch die DINT-Vergleicher in KOP benutzen, wenn Du vorher den/die TOD per MOVE in (lokale) DINT-Variablen kopierst und dann diese Kopien vergleichst.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  11. #10
    Registriert seit
    21.01.2008
    Ort
    Lippe
    Beiträge
    317
    Danke
    43
    Erhielt 49 Danke für 46 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also bei unserer Anlage habe ich einfach die Tagesminute hochgezählt, da unsere Visu Felder dafür hatte in der man dann die Teilung dementsprechend eingestellt hat (60). Also z.B. für 6:30 Uhr Minute 390 ... Wenn gleich dann aktion
    ***************************************

    Sonnige Grüße online


    Wegen hübschen Frauen kaufen wir Bier, wegen häßlichen Frauen trinken wir Bier...

Ähnliche Themen

  1. Zähler Vergleicht nur bis 9!
    Von Krma1985 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 02.01.2012, 16:50
  2. FM 350-1 zählt nur bis 1...
    Von Smurf im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 16.07.2010, 15:32
  3. Zähler soll nur bis 11 zählen
    Von Benno1989 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 12.11.2009, 08:34
  4. Vergleichen bis der Arzt kommt....
    Von Lipperlandstern im Forum Simatic
    Antworten: 24
    Letzter Beitrag: 09.01.2007, 14:54

Lesezeichen

Berechtigungen

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