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

Ergebnis 1 bis 5 von 5

Thema: Datum(tt.mm.jjjj) aus CSV mit Systemzeit vergleichen

  1. #1
    Registriert seit
    18.10.2013
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo SPS-Forum,

    ich bin Anfänger und stehe vor der Aufgabe eine WAGO SPS mit CoDeSys zu programmieren und habe dazu eine Problem für das ich leider noch keine Lösung finden konnte und zudem ich euch gerne befragen würde:

    Ich habe eine CSV Datei mit 4 Spalten die Datum(tt.mm.jjjj), Uhrzeit(ss:mm) und einen Wert der entweder 1 oder 0 ist beinhaltet. Diese möchte ich gerne in ein Array einlesen (mittels SysLibfile) und dann das Datum mit dem der Systemzeit (die hole ich mir mit der SysLibRTC) vergleichen, um die Werte am aktuellen Tag zu erhalten.

    Mein Problem ist, dass ich nicht weiß wie ich das vorliegende Datum der Form tt.mm.jjjj mit der Systemzeit in DT oder DATE vergleichen kann. Hat da jemand einen Tipp für mich?

    Vielen Dank und viele Grüße,

    Nils
    Zitieren Zitieren Datum(tt.mm.jjjj) aus CSV mit Systemzeit vergleichen  

  2. #2
    Registriert seit
    07.10.2013
    Beiträge
    96
    Danke
    7
    Erhielt 11 Danke für 10 Beiträge

    Standard

    Hallo Nils,
    die Spalten in der*.csv, die das Datum und Uhrzeit beinhalten wurden von dir als STRING definiert ?
    wenn ja, baue es dir ein DT-String (sehe CONCAT) und wandle den DT Format auch in String, danach ist der Vergleich moeglich.

    Irek

    (Fall du mir eine Vorlage besorgst, kann ich fuer das Forum paar Zeilen Code schreiben.)

  3. #3
    Nilsflo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.10.2013
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Irek,

    vielen Dank, die Idee finde ich sehr gut. Mein Problem ist aber, dass ich das Datum nicht in das STRING Format bekomme, hast du eine Idee dazu?

    Was meinst du mit Vorlage? Die CSV-Datei sieht zum Beispiel wie folgt aus: 01.01.1970; 00:00; 01:00; 0;
    01.01.1970; 01:00; 02:00; 0;
    01.01.1970; 02:00; 03:00; 1;
    Vielen Dank und viele Grüße,

    Nils

  4. #4
    Registriert seit
    07.10.2013
    Beiträge
    96
    Danke
    7
    Erhielt 11 Danke für 10 Beiträge

    Standard

    Zitat Zitat von Nilsflo Beitrag anzeigen
    Hallo Irek,

    vielen Dank, die Idee finde ich sehr gut. Mein Problem ist aber, dass ich das Datum nicht in das STRING Format bekomme, hast du eine Idee dazu?

    Was meinst du mit Vorlage? Die CSV-Datei sieht zum Beispiel wie folgt aus: 01.01.1970; 00:00; 01:00; 0;
    01.01.1970; 01:00; 02:00; 0;
    01.01.1970; 02:00; 03:00; 1;
    Vielen Dank und viele Grüße,

    Nils
    Hi,

    fuer Beckhoff gilt das, wenn andere Controller am Werk sollte es auch funktionieren.
    Wichtig ist nur wo ich es bekomme.
    Wenn du den Prinzip mit CONCAT verstanden hast, kannst du dir alles nach wunsch "zusammenbauen"
    Wenn mit dem Datum funktioniert, dann brauchen wir ein Array (denke an die Menge der Eintraege) wo alles reinkommt.
    Wird ein Struct definiert mit Datum, Uhrzeit und dem Zustand, dann kann man das Blockweise speichern (1x Stunde) und geordnet wieder einlesen.
    Schreib doch bitte in paar Zeilen wie das Programm funktionieren soll, also was zuert und was danach.
    Du wirst dich wundern, wie schnell man dann vorankommt.

    FUNCTION_BLOCK FB_PLC_Systemtime
    VAR_INPUT
    END_VAR
    VAR_OUTPUT
    DT_String:STRING(20);
    XML_Datum:STRING;
    XML_Time:STRING;
    END_VAR
    VAR
    (* 1s Timer for internal logging based of Systemtime and sync with SNTP*)
    fbTime :FB_LocalSystemTime:=( bEnable := 1, dwCycle := 1 );
    logTimer : TON := ( IN :=1, PT := T#1000ms );(* 1s Clock for logging Timebase = 1x pro sec wird Zeit aktualisiert*)
    Year:STRING(6);
    Month:STRING(4);
    Day:STRING(4);
    Hour:STRING(4);
    Minute:STRING(4);
    Sec:STRING(4);
    XML_Year:STRING(6);
    XML_Month:STRING(4);
    XML_Day:STRING(4);
    XML_Hour:STRING(4);
    XML_Minute:STRING(4);
    XML_Sec:STRING(4);
    END_VAR
    (* PLC Time => GV PLC_Systemtime:STRING(20); !*)




    MAIN
    fbTime();(*Das ist der Baustein fuer interne Systemzeit b. Beckhoff*)
    Year:=WORD_TO_STRING( fbTime.systemTime.wYear);(*Einfach das Jahr(Systemintern als WORD) in String umwandeln*)
    Month:=WORD_TO_STRING( fbTime.systemTime.wMonth);(*Genauso*)
    IF fbTime.systemTime.wMonth < 10 THEN(* 9 wird als 09 ausgegeben, will heissen immer konstante Breite*)
    Month:=CONCAT(STR1:='0',STR2:=Month);
    END_IF;
    Day:=WORD_TO_STRING( fbTime.systemTime.wDay);(*wenn kleiner 10 dann mach daraus "09" *)
    IF fbTime.systemTime.wDay < 10 THEN
    Day:=CONCAT(STR1:='0',STR2:=Day);
    END_IF;
    Hour:=WORD_TO_STRING( fbTime.systemTime.wHour);
    IF fbTime.systemTime.wHour < 10 THEN
    Hour:=CONCAT(STR1:='0',STR2:=Hour);
    END_IF;
    Minute:=WORD_TO_STRING( fbTime.systemTime.wMinute);
    IF fbTime.systemTime.wMinute < 10 THEN
    Minute:=CONCAT(STR1:='0',STR2:=Minute);
    END_IF;
    Sec:=WORD_TO_STRING( fbTime.systemTime.wSecond);
    IF fbTime.systemTime.wSecond < 10 THEN
    Sec:=CONCAT(STR1:='0',STR2:=Sec);
    END_IF;
    (************************************************************************)

    XML_Year:=CONCAT(STR1:='D_',STR2:=Year);(* Und "D_2013 *)
    XML_Month:=CONCAT(STR1:='_',STR2:=Month);(* "D_2013_10" *)
    XML_Day:=CONCAT(STR1:='_',STR2:=Day);(* "D_2013_10_20" = Datum als String*)
    XML_Hour:=CONCAT(STR1:='T_',STR2:=Hour);(* "T_20" *)
    XML_Minute:=CONCAT(STR1:='_',STR2:=Minute);(*"T_20_30" *)
    XML_Sec:=CONCAT(STR1:='_',STR2:=Sec);(*"T_20_30_59" = Zeit *)

    Year:=CONCAT(STR1:=Year,STR2:='-');(*Eine andere Variante*)
    Month:=CONCAT(STR1:=Month,STR2:='/');
    Day:=CONCAT(STR1:=Day,STR2:='/');
    Hour:=CONCAT(STR1:=Hour,STR2:=':');
    Minute:=CONCAT(STR1:=Minute,STR2:=':');

    DT_String:=CONCAT(STR1:=Day,STR2:=Month);
    DT_String:=CONCAT(STR1:=DT_String,STR2:=Year);
    DT_String:=CONCAT(STR1:=DT_String,STR2:=Hour);
    DT_String:=CONCAT(STR1:=DT_String,STR2:=Minute);
    DT_String:=CONCAT(STR1:=DT_String,STR2:=Sec);




    XML_Datum:=CONCAT(STR1:=XML_Year,STR2:=XML_Month);
    XML_Datum:=CONCAT(STR1:=XML_Datum,STR2:=XML_Day);
    XML_Time:=CONCAT(STR1:=XML_Hour,STR2:=XML_Minute);
    XML_Time:=CONCAT(STR1:=XML_Time,STR2:=XML_Sec);



    Irek
    Geändert von Irek (20.10.2013 um 22:04 Uhr)

  5. #5
    Nilsflo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.10.2013
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Irek,

    vielen Dank für deine ausführliche Hilfe! Ich habe die Lösung mit den STRING jetzt einsetzen können.

    Viele Grüße,

    Nils

Ähnliche Themen

  1. Datum(tt.mm.jjjj) aus CSV mit Systemzeit vergleichen
    Von Nilsflo im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 18.10.2013, 12:20
  2. Datum vergleichen ?
    Von Pusher im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 02.07.2009, 13:01
  3. Einsatz EEProm bzw Datum vergleichen
    Von leonhard_II im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 23.12.2006, 12:53
  4. Datum und Uhrzeit vergleichen mit einer CPU 318
    Von uwemiess im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 22.04.2005, 09:35

Stichworte

Lesezeichen

Berechtigungen

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