Frage nach Datenlogger

fish78
2008-02-11
2008-02-22
  • fish78 - 2008-02-11

    Hallo zusammen

    habe ich IPC 750-841 und werde alle Daten in Datenlogger schreiben und spät lesen.

    Habe ich schon CF Karte und RS232 (Datenlogger),und noch eine Bibliotheke bei Wago ML03100d (Bausteinbeschreibungen für die Anbindung eines RS232 Datenlogger der Fa. Avisaro).

    Es gibt eine schon fertige Visualisierungstemplate "CFMA_VISU_FILE",und habe ich schon mit Baustein CFMA_VISU verbunden.

    Aber wie kann man mit anderem Baustein z.B (CFMA_OpenFile für Öffnen einer Daten ) verbinden?

    Hat jemand Tipps oder Erfahrung?

    Vielen Dank

     
  • Uwe - 2008-02-11

    Hallo fish78,

    im Anhang findest du ein Beispiel in dem

    die Bausteine Create, Write, und Close aufgerufen

    werden.

    Uwe

    Example_CF_Writer_02.pro [49.27 KiB]

     
  • fish78 - 2008-02-11

    Hi Uwe

    Vielen Dank

    Ich probiere mal.

    Und hast du etwas mit RS232 getan?

     
  • Uwe - 2008-02-12

    Hallo

    was willst du tun ?

    Was ist dein Ziel ?

    Für einfache, transparente Kommunikation mit den seriellen Schnittstellen im 841 empfehle ich die Bibliothek "Serial_Interface_01.lib".

    Bibliothek und Beschreibung findest du hier

    http://www.wago.com/wagoweb/documentati ... 9mpl_d.htm

    Uwe

     
  • fish78 - 2008-02-12

    Hi Uwe

    ich habe einen Projekt "Raumtemperatur Controller".

    Damit alle Temperatur von Räume einfach messen und lesen kann.

    Ich wird alle Werte durch Befehle von Visualisierungsseite in Datenlogger speichern.

    Z.B mit "creat new file" wird Datei speichern und mit "open for read"wird eine bestimmte Datei öffnen und lesen.

    Aber bei deinem Beispiel ,gibt es eine Variable "Start",dass in PLC_PRG selbe definiert wird.

    Aber "Start" hat keine Kontakt oder Verknüpf mit Visualisierungsdatei.

    Wie kann ich den "start" einen Befehl in Visualisierungsseite geben ,damit "start " auf 1 ist.

    oder ist die Visualisierungsdatei CFMA_VISU_FILE nur für Anschauen?

    Ins Beispeil wenn ich "creat new file" klicke,gibt es keine Reaktion.

     
  • Uwe - 2008-02-12

    Hallo fish,

    nun wird's kompliziert.

    Ich fürchte wir müssen ganz vorne anfangen

    In dem Beispiel ist eine Visualisierung die alle

    fast alle Möglichkeiten des Loggers unterstützt.

    Auch Dateien neu anlegen.

    Man sollte allerdings die Funktionsweise der Befehle

    aus dem Handbuch des Loggers entnehmen.

    z.B. Braucht Create new File einen Dateinamen der unter Name eingegeben wird.

    Wenn dieser Name schon vorhanden ist

    (entweder als Dateiname oder als Verzeichnisname) gibt es eine Fehlermeldung

    in der Statuszeile (unterste Zeile).

    Der Baustein CFMA_VISU kapselt alle Funktionen und die Instanz dieses Bausteins

    wird als Parameter an das Visu-Template übergeben.

    Im PLC_PRG wird eigentlich nur das erste Netzwerk benötigt.

    Das zweite Netzwerk dient nur als Beispiel wie du die einzelnen Funktionen der

    Bibliothek selbst aufrufen kannst.

    Die Variable Start mußt du natürlich selbst noch abhängig von deinen Bedingungen auf TRUE

    schalten und auf TRUE halten bis die Variable Ready auf TRUE steht.

    Durch diesen Vorgang erzeugst du in dem Beispiel die Datei "myFile.txt" mit dem Inhalt

    'Hallo Welt !$R$N' auf dem Logger.

     
  • fish78 - 2008-02-13

    Hi Uwe

    Das Beispiel habe ich verstanden.

    Aber gibt noch Frage.

    Habe ich in CoDeSya eine Tabelle und ein Trend zwei Visualisierungsseiten.

    Kann die beide auch speichern?weil die Trend noch Bilder und Kurve darin hat.

    Oder kann nur die Werte in Datenlogger schreiben?

    hast du MSN oder können wir durch MSN kurz verbinden?

    Habe ich ganz Programm fast fertig geschrieben,es ist der letzte Schritt.

     
  • Uwe - 2008-02-14

    Hallo fish,

    du kannst keine Tabellen, Trends oder sonstigen Visualisierungsobjekte

    direkt auf dem Datenlogger speichern.

    Man kann nur Variablenwerte aus der SPS auf dem Datenlogger speichern.

    Diese Daten stehen dann in einer Datei auf der Speicherkarte.

    Hierbei bleibt es dir als Programmierer überlassen in welchem Format

    und welcher Strukturierung du die Daten in der Datei speicherst.

    (binär / ASCII / mit Trenner / ohne Trenner / dezimal / hexadezimal / ... )

    Uwe

     
  • fish78 - 2008-02-20

    Hi Uwe

    noch mal Danke.

    schade,dass man keine Tabellen, Trends oder sonstigen Visualisierungsobjekte direkt speichern kann.

    Und momentam habe ich noch etwa Fragen über Datenlogger.

    Ich habe eine LogBuffer geschrieben.

    Ich werde jede 10 Minuten die alle Werte (Z.B Außentemperatur,Raumtemperatur )messen und speichern.

    bei Baustein CFMA_CreateFile,

    muss ich für den Name und xEnable verknüpfen.

    1. Habe ich globale Variablen day, mounth und year,die sind von System ausgelesene Datum.

    Ich werde jeden Tag eine File automatisch erzeugen und der Name ist unsere Datum.

    Kann ich die Variablen day.mounth.year direkt mit sFileName verbinden oder soll "day.mounth.year" schreiben oder "day"."mounth"."year" schreiben?(Zeichen "" muss man schreiben,vielleicht soll zu String umwandeln ).

    2.Das LogBuffer hat 144 Reihen,ist genau für einen Tag.(10 Minuten für einmal)

    Wenn ich alle Werte für ganzen Tag speichern will,soll ich die Variabel xEnable von Baustein CFMA_CreateFile und CFMA_WritePackage immer auf TRUE setzen,oder vielleicht nur um 23:59:59 einmal TRUE zu xEnable liefern?

     
  • Uwe - 2008-02-21

    Hi fish,

    deine globalen Variablen day, month, year

    welchen Datentyp haben die ?

    Zuerst würde ich diese jeweils in einen String wandeln

    Anschl. musst du diese 3 Strings formatieren (soll ja schön aussehen)

    Also Zahlenwerte 0 bis 9 mit einer führenden 0 auffüllen.

    Danach diese 3 Strings aneinander ketten (concat)

    und die Dateiextension anhängen (concat).

    Hierbei die Namenskonvention für Dateinamen beachten (8.3)

    Als Ergebnis solltest du einen String in der Form

    "010308.dat" erhalten.

    Den kannst du als Dateinamen nehmen

    Ich würde mir hierfür eine Funktion schreiben.

    Dieses Rad hat aber bestimmt schon einer der anderen Forumsteilnehmer erfunden.

    Vielleicht OSCAT ?

    Zu deiner Frage "Wann speichern ?"

    xEnable immer auf TRUE geht nicht.

    Wenn keine Flanke am Eingang xEnable erkannt wird,

    dann wird auch nicht gespeichert.

    xEnable am Eingang von Create soll solange TRUE bleiben

    bis hinten beim Close am Ausgang xDone ein TRUE

    rauskommt.

    Dann sollte xEnable wieder auf FALSE gesetzt werden.

    Create erzeugt in jedem Fall eine neue Datei.

    Vorhandene Dateien werden überschrieben.

    Also ich würde morgens um 0:10 Uhr ein Create machen

    und dann alle 10 Minuten ein Append und nur die neuen Daten

    anhängen.

    Du sammelst die Daten ja schon in einem Array.

    Du kannst die Daten also einmal um 23:59 Uhr schreiben

    wenn das Array die Daten auch bei z.B. Spannungsausfall behält.

    Sonst sind die Daten weg

    Alle 10 Minuten alles schreiben ist auch nicht so toll.

    Wenn du zwischendurch einen Spannungsausfall hast und danach die Daten weg sind,

    dann schreibst du anschließend noch die nicht vorhanden Daten über die brauchbaren

    Daten auf dem Logger ;-(

    Uwe

     
  • fish78 - 2008-02-22

    Hi Uwe

    Zuerst würde ich diese jeweils in einen String wandeln

    Anschl. musst du diese 3 Strings formatieren (soll ja schön aussehen)

    Also Zahlenwerte 0 bis 9 mit einer führenden 0 auffüllen.

    habe ich einfach mit Baustein BYTE_TO_STRING getan.

    aber wie kann man (Zahlenwerte 0 bis 9 mit einer führenden 0 auffüllen.

    ) realisieren?

    ansonst ist alles schon erledig.

     
  • Oberchefe - 2008-02-22

    Zitat:
    aber wie kann man (Zahlenwerte 0 bis 9 mit einer führenden 0 auffüllen.

    Die Zahlenwerte sollten entweder 1-stellig oder 2-stellig sein.

    • Prüfen der Stringlänge

    • wenn Stringlänge 1 (also 1-stellig) dann concat '0' und einstelliger String

     

Log in to post a comment.