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

Ergebnis 1 bis 7 von 7

Thema: Codesys - Einen Text mit Erstellen

  1. #1
    Registriert seit
    22.09.2008
    Beiträge
    24
    Danke
    7
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebe Community,
    ich habe mal wieder ein Problem wo ich nicht weiterkomme und ihr mir bestimmt wieder helfen könnt.

    Da ich keine Experte auf dem Gebiet "SPS" bin sondern eher hobbymäßig rumspiele, würde ich euch bitten eure Antworten so zu formulieren, dass ein leihe (wie ich) sie verstehen kann.

    Zu meinem Problem:

    Ich habe ein 750-841 mit dem ich Messdaten sammel und per Email verschicken möchte.

    Mein Problem ist das Abspeichern der Daten. Die Daten sollten alle 5 min abgespeichert werden (Ich habe 10 Messpunkte) und mit einem Zeitstempel versehen werden. Also quasi wie eine Tabelle aus , Datum/Uhrzeit, Text und Messwert.

    z.B. : 10:36 - 05.11.09 Temperaturfühler1: 23.45 °C

    Die Messwerte sollen dann alle untereinander geschrieben als Email versendet werden.

    Die Messwerte sollten nicht lokal in eine txt Datei gespeichert werden, sondern nur innerhalb der Codesys.



    Grüße Pepper
    Zitieren Zitieren Codesys - Einen Text mit Erstellen  

  2. #2
    Registriert seit
    19.10.2009
    Beiträge
    194
    Danke
    8
    Erhielt 50 Danke für 44 Beiträge

    Standard

    Hi Pepper,

    unter Benutzung der Oscat könnte das Bilden der Texte so aussehen:
    Code:
    VAR
        loop: INT;
        dtAktDatumUhrzeit: SDT;
        arrMesswerte: ARRAY[1..10] OF REAL;
        arrMesswerteKlartext: ARRAY[1..10] OF STRING;
    END_VAR
    FOR loop:= 1 TO 10 DO
        (* Textzeile bilden: Zeitstempel Messstelle Wert Einheit CRLF, Vorgabe: 10:36 - 05.11.09 Temperaturfühler1: 23.45 °C *)
        arrMesswerteKlartext[loop]:= DWORD_TO_STRF(dtAktDatumUhrzeit.HOUR, 2);
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], ':');
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], DWORD_TO_STRF(dtAktDatumUhrzeit.MINUTE, 2));
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], ' - ');
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], DWORD_TO_STRF(dtAktDatumUhrzeit.DAY, 2));
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], '.');
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], DWORD_TO_STRF(dtAktDatumUhrzeit.MONTH, 2));
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], '.');
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], DWORD_TO_STRF((dtAktDatumUhrzeit.YEAR MOD 100), 2));
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], ' ');
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], 'Temperaturfühler');
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], INT_TO_STRING(loop));
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], ': ');
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], REAL_TO_STRF(arrMesswerte[loop], 1));
        arrMesswerteKlartext[loop]:= CONCAT(arrMesswerteKlartext[loop], ' °C$N');
    END_FOR
    Ich kann dir leider nicht sagen, wie man auf der 750-841 eine Email versendet.

    Gruß,
    witkatz

  3. Folgende 2 Benutzer sagen Danke zu witkatz für den nützlichen Beitrag:

    Ganz (10.07.2011),Pepper (09.11.2009)

  4. #3
    Pepper ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.09.2008
    Beiträge
    24
    Danke
    7
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo Witkatz,
    erstmal vielen Dank für deine Mühe. Deine Lösung hat mich schon mal ein ganzes Stück weitergebracht. Leider wird bei mir der Zeitstempel nicht richtig angezeigt. Ich habe dazu mal ein Bild angehängt. Alles was ich vom Zeitstempel bekomme ist: "009". Leider komme ich nicht drauf wo das Problem liegt. Ich benutze die neuste Version von Oscat.

    Mein Emailproblem habe ich mittlerweile gelöst bekommen mit der WagolibMail_02.

    Grüß Pepper
    Angehängte Grafiken Angehängte Grafiken

  5. #4
    Pepper ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.09.2008
    Beiträge
    24
    Danke
    7
    Erhielt 2 Danke für 2 Beiträge

    Standard

    hm, da war ich ein bisschen voreilig mit meiner Antwort . Wenn ich das Programm direkt auf der Steuerung laufen lasse funktioniert es einwandfrei. Nur im Simulationsmodus bekomme ich den beschriebenen Fehler.

    Gruß Pepper

  6. #5
    Pepper ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.09.2008
    Beiträge
    24
    Danke
    7
    Erhielt 2 Danke für 2 Beiträge

    Standard

    So, ich habe nochmal ein paar Tests gemacht und bin zu der Erkenntnis gekommen, das ich meinen Text-String am besten in ein "Array of Byte" (ASCII) schreiben sollte um diesen dann zu in einer txt zu verschicken. Dann hätte ich keine Probleme mehr mit der Formatierung.
    Hat jemand ne Idee oder eine Lösung wie ich sowas anstellen könnte.

    Ich hatte ja oben schon mal meinen Code gepostet. Dort erstelle ich einen String. Kann man diesen eventuell umschreiben, sodass ich meinen Text direkt in ein Bytearray scheiben kann? Oder gibt es irgendwelche interessanten Convert-funktionen? (Hab bisher leider keine gefunden)

    Interessant wär auch eine Funktion, die meinen kompletten String in ein Byte Array schreibt.

    Ich bin gespannt auf eure Vorschläge

  7. #6
    Registriert seit
    19.10.2009
    Beiträge
    194
    Danke
    8
    Erhielt 50 Danke für 44 Beiträge

    Standard

    Hallo Pepper,

    hast du in deiner Umgebung die Funktion MEMCPY? Du könntest die Daten aus dem Text in dein Array of Byte per Memcpy übertragen.

    Gruß,
    witkatz

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

    Pepper (13.11.2009)

  9. #7
    Pepper ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.09.2008
    Beiträge
    24
    Danke
    7
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke für den Tip witkatz,
    Das bringt mich schon wieder ein ganzes Stück weiter an mein Ziel.

    Da ich gerade erst angefangen habe in ST zu programmieren, bin ich leider noch nicht ganz so fit.

    Ich kann jetzt also mein String in ein ASCII-Byte umwandeln. Aber wie sage ich dem Byte-Array ab wann er den String dahinter setzen soll und nicht ersetzen?

    Ich habe jetzt meine Messdaten nicht mehr in in "ARRAY OF STRING" geschrieben, sondern in ein "STRING". Dieser String bekommt jetzt alle t#n ms einen neuen Text reingeschrieben. Ich möchte, das die ASCII-Werte bei veränderung des "Text-Strings" hinten (am Byte-Array) angefügt werden. So wie bei CONCAT nur eben für "Byte-Arrays".

Ähnliche Themen

  1. In Protool einen Zähler erstellen?
    Von Claudia1990 im Forum HMI
    Antworten: 12
    Letzter Beitrag: 30.05.2011, 18:59
  2. CoDeSys 2.3.9.26 Bibliotheken erstellen
    Von Eisbaer_vw im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 13.04.2011, 10:15
  3. Fehler beim erstellen einer Bibliothek in Codesys
    Von The Big B. im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 12.04.2011, 11:28
  4. PI Regler in CoDeSys erstellen
    Von j.g. im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 11.01.2010, 20:18
  5. Einen FB erstellen!
    Von Domi55 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 19.03.2009, 18:03

Lesezeichen

Berechtigungen

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