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

Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 46

Thema: Meldung mit Date and Time in DB schreiben

  1. #1
    Registriert seit
    14.03.2019
    Beiträge
    17
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich arbeite seit kurzem mit dem TIA Portal V15.1.
    Derzeit versuche ich mich an der Analogwertverarbeitung/skallierung.
    Ich habe mir bereits meinen Wert 4-20mA (0-30m3/h) skaliert, nun wollte ich gern wenn es zum Max wert also 30m3/h kommt. Das mir dies mit Datum und Uhrzeit in einem DB geschrieben wird.
    Leider klappt dies nicht.


    Danke schon mal im Voraus
    Zitieren Zitieren Gelöst: Meldung mit Date and Time in DB schreiben  

  2. "hier mal was. ungetestet.
    den db_neuer_eintrag musst du natürlich noch mit daten versorgen."


  3. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    13.294
    Danke
    1.077
    Erhielt 3.925 Danke für 3.168 Beiträge

    Standard

    Zitat Zitat von Byte0815 Beitrag anzeigen
    Leider klappt dies nicht.
    Aha, meine Glaskugel sagt, Du weißt nicht wie man den Wert auf 30m³/h vergleicht?

    Oder wie man Datum + Uhrzeit kopiert?
    Soll in dem DB nur Datum + Uhrzeit des letzten Ereignisses stehen oder soll das eine Art Logbuch sein? Mit mehreren Einträgen wie in einem Meldearchiv?
    Was genau ist Dein Problem?
    Welche CPU hast Du?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #3
    Byte0815 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.03.2019
    Beiträge
    17
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich arbeite mit einer 1212 DC/DC/DC

    Denn Baustein zum Vergleichen habe ich denke ich gefunden

    Genau mein Problem ist das ich nicht weiß wie ich das jetzt in ein Meldearchiv oder Logbuch einfügen soll. Damit mir Zeit und Datum angezeigt werden wenn es zur Überschreitung kommt.
    Ich will Quasi irgendwo sehen wann mein Wert „Max“ erreicht wurde

  5. #4
    Registriert seit
    06.11.2008
    Beiträge
    256
    Danke
    28
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Moin Byte0815,

    Zitat Zitat von Byte0815 Beitrag anzeigen
    Genau mein Problem ist das ich nicht weiß wie ich das jetzt in ein Meldearchiv oder Logbuch einfügen soll. Damit mir Zeit und Datum angezeigt werden wenn es zur Überschreitung kommt.
    Ich will Quasi irgendwo sehen wann mein Wert „Max“ erreicht wurde
    was jetzt? Meldearchiv oder DB? Oder beides?

    VG

    MFreiberger
    _____________________________________________
    "Von nichts kommt was" von B. Trüger

  6. #5
    Byte0815 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.03.2019
    Beiträge
    17
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ob Meldearchiv oder Datenbaustein wäre mir egal.
    Wenn ich beides hinbekommen würde wäre das auch super. Aber die Hauptsache wäre wenn eins von beiden realisiert würde

  7. #6
    Registriert seit
    06.11.2008
    Beiträge
    256
    Danke
    28
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Moin Byte0815,

    vielleicht erst einmal in einen DB.

    Soll immer nur ein Ereignis eingetragen werden oder willst eine Anzahl an Ereignissen (z.B. in einem Ringpuffer) speichern?

    VG

    MFreiberger
    _____________________________________________
    "Von nichts kommt was" von B. Trüger

  8. #7
    Byte0815 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.03.2019
    Beiträge
    17
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Theoretisch würde ein Eintrag reichen. Aber ich denke das ganze gleich als Ringpuffer anzulegen wäre wohl am besten.
    Bräuchte immer wenn mein Grenzwert Überschritten wird einen Eintrag mit Datum und Uhrzeit

  9. #8
    Registriert seit
    06.11.2008
    Beiträge
    256
    Danke
    28
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Moin Byte0815,

    eigentlich brauchst Du ja nur Datum/Uhrzeit. Das die Eintragung von der Grenzwertüberschreitung herrührt ist ja klar.
    Du könntest den DB entsprechend benennen (z.B. "Limit_OF" (Limit Overflow).

    Ließt Du irgendwo schon Datum und Uhrzeit aus? Es gibt die Systemzeit der CPU (bezieht sich auf die UTC) und die Lokalzeit (UTC+1 (für Deutschland (Berlin, etc.)) und Sommer-/Winterzeitumstellung). Zur Sommer-/Winterzeitumstellung gibt es einen entsprechenden Baustein (SET_TIMEZONE) in der CPU.
    Ansonsten für das Auslesen der Uhrzeiten:
    RD_LOC_T für die Lokalzeit (also mit UTC+1 und Sommer-/Winterzeit)
    RD_SYS_T für Systemzeit (also UTC)

    für weitere Anwendungen usw. würde ich die Uhrzeiten immer zyklisch lesen und in einem DB (den Du z.B. "CLOCK" nennst ablegen).
    Uhrzeit dann mit dem Datentyp DT (Date_and_Time) deklarieren.

    So. Jetzt immer wenn Dein Grenzwert überschritten wurde eine positive Flanke erzeugen. Damit kannst Du dann die Eintragung in Deinem Ringpuffer vornehmen.

    Empfehlung: mache Dir eine Anwenderkonstante (z.B. LimitCnt). Die kannst Du dann sinnvoll so einsetzen:

    DB "Limit:OF":

    Lfd_Nr int
    TimeStamp Array[0.."LimitCnt"] of DT


    Programm:

    if "Triggerflanke" then
    TimeStamp[Lfd_Nr] := "CLOCK".LocalTime;
    Lfd_Nr := Lfd_Nr + 1;
    Lfd_Nr := Lfd_Nr MOD (LimitCnt + 1);
    end_if;


    Dann enthält der Ringpuffer so viel Einträge wie LimitCnt + 1. Damit hast Du ja auch dein Array deklariert, also musst Du nichts weiter beachten, wenn Du die Ringpuffergröße änderst (das geht NICHT zur Laufzeit. UND: wenn du die Ringpuffergröße änderst, muss der DB neu initialisiert werden!).

    Zu MOD (Modulo):
    Das ist ja die Restdivision. Also bei 5 Einträgen:

    5 MOD 0 = 0
    5 MOD 1 = 1
    5 MOD 2 = 2
    5 MOD 3 = 3
    5 MOD 4 = 4
    5 MOD 5 = 0 > hier geht es also wieder (automatisch) von vorne los

    Deshalb auch LimitCnt +1, da das Array bei 0 anfängt bzw. anfangen muss.


    VG

    MFreiberger
    _____________________________________________
    "Von nichts kommt was" von B. Trüger

  10. #9
    Byte0815 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.03.2019
    Beiträge
    17
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Geht das auch in FUP umzusetzen oder nur in SCL ?

  11. #10
    Registriert seit
    04.11.2013
    Beiträge
    180
    Danke
    17
    Erhielt 39 Danke für 29 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du kannst z. B. mit RD_LOC_T die CPU-Uhr auslesen, diesen Wert (DTL) anschliessend mit T_CONV DTL TO Date und T_CONV DTL TO Time_Of_Date in Datum und Uhrzeit wandeln. Zum Speichern in einen DB erstellst du einen UDT aus Arrays [0...x Einträge] der entsprechenden Datentypen (Date; Time_of_day; Int, Real oder was auch immer für deinen Wert).

    Zum Eintragen eines Wertes schiebst du zuerst per MOVE_BLK alle Einträge in den UDT-Arrays um 1 Position weiter und überträgst anschliessend die neuen Daten in die jeweiligen Arrays an die Stelle 0.

    Edit: Das geht auch in FUP
    Geändert von Gleichstromer (15.03.2019 um 12:21 Uhr)

  12. Folgender Benutzer sagt Danke zu Gleichstromer für den nützlichen Beitrag:

    Byte0815 (15.03.2019)

Ähnliche Themen

  1. Step 7 In AWL Date and Time mit Pointer im DB speichern.
    Von tommylik im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 28.09.2017, 20:25
  2. Antworten: 4
    Letzter Beitrag: 14.02.2017, 17:27
  3. Step 7 Date and Time Variable selber schreiben möglich?
    Von Chrisxx8 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 05.02.2016, 12:32
  4. TIA Date and Time mit x Monaten addieren
    Von rr_zx im Forum Simatic
    Antworten: 19
    Letzter Beitrag: 25.11.2014, 13:06
  5. Antworten: 0
    Letzter Beitrag: 13.11.2014, 14:59

Lesezeichen

Berechtigungen

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