GSI Forum
GSI Helmholtzzentrum für Schwerionenforschung

Home » LVUG » LVUG - Technische Fragen » Einlesen aus komplexeren ASCII Dateien usw...
icon5.gif  Einlesen aus komplexeren ASCII Dateien usw... [message #1127] Fri, 05 November 2004 20:11 Go to next message
Tino Gaebel is currently offline  Tino Gaebel
Messages: 5
Registered: November 2004
Location: Munich
occasional visitor
From: *RZ.UniBw-Muenchen.de
Ich bin gerade an einer Studienarbeit, und zwar stellt das Institut
die komplette Messanlage auf Labview um , das Vorgängerprogramm war in C programmiert.

Ich habe die Aufgabe die Benutzeroberfläche zu entwerfen, sämtliche Konfigurationsdateien mit Labview zu erstellen, Bsp. Versuchsaufbaudaten usw....
Weiterhin besteht die Hauptarbeit darin die Messwertdateien einzulesen, Konfigurationsdaten einzulesen usw.
Danach anhand der Messwerte und Bedingungen verschiedene Berechnungen durchzuführen.
Diese Ergebnisse dann graphisch darzustellen und in Dateien zu schreiben die dann weiterverarbeitet werden können zum Beispiel mit Tecplot.
Nun fehlt mir einfach der Ansatz komplexe Dateien einzulesen, das eigentliche Problem liegt darin das mir der C-Code vorliegt und auch alle Dateien die mit dem alten Programm erstellt wurden.
Nur finde ich es zu aufwendig 60000 Zeilen C-Code zu durchforsten und alles genaus so umzusetzen, denn Labview ist doch schon besser optimiert.
Ich hänge mal eine Beispiel Messdatei der alten Form an und vielleicht hat jemand einen Tipp wie solche Dateien mit Labview zu handeln sind und ich das auslesen kann was ich brauche.
Weiterhin programmiert eine Firma die gesamte Messwertermittlung und Gerätesteuerung, inwiefern wird sich denn eine Messdatei dann wohl unterscheiden zu der im alten Programm erzeugten, und wie habe ich mir das vorzustellen wenn der Programmierer die Messwerte (ungefähr 200 Messkanäle) mit globalen Variablen übergeben will, ist das denn überhaupt ratsam, in Dateiform wäre das doch eigentlich ökonomischer, allerdings soll auch ein Echtzeitverlaufsdiagramm gezeichnet werden zum Verfolgen des Versuchs.
Ich weiß etwas zu viel vielleicht auf einmal aber ich brauche einfach mal Ansätze aus größeren Anwendungen, denn 2 Spalten aus einer Datei auszulesen ist kein Problem für mich nur in dieser Form fehlt mir noch der nötige Weitblick.
Weiterhin die FRage inwiefern es einfacher geht komplexere Kanalbelegungen in Konfigurationsdateien zu schreiben, mein Beispiel funktioniert ganz gut nur ist ein Tabellenstring auch nicht so übersichtlich in einer Configdatei, vielleicht hat da auch jemand einen Vorschlag das es wie eine vom C-Programm erstellte Datei aussieht, siehe dazu Config-Labview und C-config im Vergleich siehe die PSI-9816_Belegung.

Danke schon mal falls jemand sich die Mühe macht..
Bis dahin sage ich mal weiter probieren geht über studieren

Gruezi
icon1.gif  Re: Einlesen aus komplexeren ASCII Dateien usw... [message #1141 is a reply to message #1127] Tue, 09 November 2004 21:51 Go to previous messageGo to next message
Oliver Frank is currently offline  Oliver Frank
Messages: 14
Registered: January 2004
occasional visitor
From: *catv.wtnet.de
Hi Tino Gaebel,

ziemlich verwirrend, deine Frage/n.
Ich versuche einmal ein paar herauszukitzeln. Wenn ich was vergessen habe zu erwähnen/beantworten erinnere mich nocheinmal daran.

Quote:

Ich habe die Aufgabe die Benutzeroberfläche zu entwerfen, sämtliche Konfigurationsdateien mit Labview zu erstellen, Bsp. Versuchsaufbaudaten usw....

Sollst du die alten Konfigurationsdateien mittels neuen LabVIEW Routinen erzeugen bzw. auslesen?
Wenn nicht, dan schlage ich XML als Format vor. So werden Konfigurationen, Versuchsaufbaudaten oder auch Meßergebnisse strukturiert (wäre deine Aufgabe) abgelegt. Aufgrund der Lesevorschrift auch erweiterbar. (Frage bei Interresse nach...)

Quote:


Weiterhin besteht die Hauptarbeit darin die Messwertdateien einzulesen, Konfigurationsdaten einzulesen usw.

Ok - fangen wir bei der Messwertdatei "0811_131_60_200_V3.MES" an:
Die Datei ist Strukturiert worden (ohne nähere Infos zu haben) in:
1. [98RK-Kalibrierkoeffizienten]
2. [Ergebnisse für DV-Messung]
3. [98RK Druck- und Spannungswerte]
4. [SDIU-Spannungen]
5. [Vorkammer-Temp. nach SDIU-Messung]

Über die Funktion "Functions/String/Match Pattern" zerlegst du dir die Datei in die 5 Hauptstrukturen.
Den ersten Teil (98RK-Kalibrierkoeffizienten) kannst du in einer for-Schleife abarbeiten:
1. suche nach der fortlaufenden Kanalnummer umgeben von einem leerzeichen
2. suche nach dem Zeilenende
3. konvertiere den herausgeschnittenen (spreadsheet)string in ein array um...
Bleibt die Spalte Modul für dich...
Die anderen Teile sind dann auch kein Problem mehr.

Quote:

Danach anhand der Messwerte und Bedingungen verschiedene Berechnungen durchzuführen.
Diese Ergebnisse dann graphisch darzustellen und in Dateien zu schreiben die dann weiterverarbeitet werden können zum Beispiel mit Tecplot.

Vorgaben, die dir gestellt werden müßen.

Quote:

Ich hänge mal eine Beispiel Messdatei der alten Form an und vielleicht hat jemand einen Tipp wie solche Dateien mit Labview zu handeln sind und ich das auslesen kann was ich brauche.

s.o.
Du sprichst hier von der "alten" Form. Hier noch mal der Hinweis auf XML (siehe Anhang "0811_131_60_200_V3.xml" und öffne sie mit einem Browser und Texteditor).

Quote:

Weiterhin programmiert eine Firma die gesamte Messwertermittlung und Gerätesteuerung, inwiefern wird sich denn eine Messdatei dann wohl unterscheiden zu der im alten Programm erzeugten

Entnimmst du den Vorgaben der Firma. Daran müssen sie sich halten. Eine Absprache und Test sind aber immer sinnvoll.

Quote:

und wie habe ich mir das vorzustellen wenn der Programmierer die Messwerte (ungefähr 200 Messkanäle) mit globalen Variablen übergeben will, ist das denn überhaupt ratsam

*Schluck* Das Thema Globale Variable spaltet die Programmierer in zwei Lager. Ich gehöre zu den Gegnern und komme seit über vier Jahren als LabVIEWprogrammierer (fulltime) immernoch ohne aus.
Um ein Problem zu nennen: Du hast keine Kontrolle, wer wann und von wo aus auf die Variablen verändernd zugreift, auch während du sie gerade liest. -> Viel Spaß beim Debuggen... Very Happy
Ich würde eine Queue für den Datentransport zwischen der Steuerung und der Anzeige/Speicherung vorschlagen. Event. noch mit Zeitstempel.

Quote:

Weiterhin die FRage inwiefern es einfacher geht komplexere Kanalbelegungen in Konfigurationsdateien zu schreiben, mein Beispiel funktioniert ganz gut nur ist ein Tabellenstring auch nicht so übersichtlich in einer Configdatei, vielleicht hat da auch jemand einen Vorschlag das es wie eine vom C-Programm erstellte Datei aussieht, siehe dazu Config-Labview und C-config im Vergleich siehe die PSI-9816_Belegung.

Willst du die Konfig Datei nachbilden (sonst wieder mein Vorschlag, diese in XML zu schreiben)?
Dann mußt du dein Array der Tabelle mit "Function/String/Array to Spreadsheet String" "schöner" umformen (siehe Connector "Delimiter (Tab)" ).

Quote:

Danke schon mal falls jemand sich die Mühe macht..

eine Stunde verstehen und nach einfachen Worten ringen...

Bei Unklarheiten frage ruhig wieder nach...

mfg
Oliver


LabVIEWjahrgang '98

www.LabVIEWForum.de - Das Forum für LabVIEW Entwickler
Re: Einlesen aus komplexeren ASCII Dateien usw... [message #1145 is a reply to message #1141] Thu, 11 November 2004 10:51 Go to previous messageGo to next message
Tino Gaebel is currently offline  Tino Gaebel
Messages: 5
Registered: November 2004
Location: Munich
occasional visitor
From: *RZ.UniBw-Muenchen.de
Hallo!

Danke schon mal für die rasche Antwort, ich finde die Idee mit XML nicht schlecht, zumindest das auffinden eines ganz bestimmten Wertes ist dann ja echt ein Kinderspiel, nur hab ich mich noch nicht näher damit auseinandergesetzt.
Nur sehe ich einen Nachteil das die Dateien nicht mehr so einfach zu lesen sind wenn man jetzt zum Beispiel eine Zusammenfassung drucken will aus Ergebnissen und Messwerte, und natürlich Protokollkopf, inwiefern lassen sich denn XML zum Beispiel mit Excel einlesen oder wie würdest Du das machen.
Welche Vorteile hat das Format denn noch?

Wäre gut wenn Du ein Beispeil mir zur Verfügung stellen kannst was über das aus der Vi.llb von Labview stammende hinausgeht oder einen link, werd mal bei NI schauen ob ich etwas finde.

Die Struktur ist gut wenn es um das wiederfinden geht aber welche Vorteile bietet mir das noch wenn ich die Werte mit anderen Programmen weiterverarbeite, vielleicht bringst Du ja noch Eindrücke aus Deiner Programmierarbeit warum XML auf Dauer wohl ratsam ist, oder nutzt Du es gar nicht in größeren Applikationen?

Gibt es denn noch andere Alternativen außer ASCII,XML-Format?

Na denn ich meld mich falls ich noch speziellere Fragen haben sollte.

Gruß Tino
Re: Einlesen aus komplexeren ASCII Dateien usw... [message #1147 is a reply to message #1145] Thu, 11 November 2004 12:16 Go to previous message
Oliver Frank is currently offline  Oliver Frank
Messages: 14
Registered: January 2004
occasional visitor
From: fire.gkss.de
Hi Zino Gaebel,

Quote:

Nur sehe ich einen Nachteil das die Dateien nicht mehr so einfach zu lesen sind wenn man jetzt zum Beispiel eine Zusammenfassung drucken will aus Ergebnissen und Messwerte, und natürlich Protokollkopf, inwiefern lassen sich denn XML zum Beispiel mit Excel einlesen oder wie würdest Du das machen.


Die Daten von deiner XML-Datei kann mit XSL in einem Browser in der gewünschtenform dargestellt werden. Trägst Du diese XSL Datei in deiner XML Datei im Kopf mit ein, so reicht ein einfacher Doppelclick zur gewünschten Ansicht im Browser aus.
Mittels XSLT kannst du Die XML Daten in ein beliebiges Format transformieren.
Es ist zwar keine LabVIEW Lösung, aber der Vorteil ist - jeder Versteht es - sowohl den Aufbau, als auch die Art der Konvertierung.
Wer sich in XML oder XSL bzw. XSLT nicht auskennt kann dies erlernen, da es sich um einen offenen Standard handelt.

Quote:

Welche Vorteile hat das Format denn noch?

Ich arbeite im Forschungsbereich. Bei uns ist die Auflage Daten lange zu bevoraten. D.h. auch nach 10 Jahren soll man noch in der Lage sein, das Format zu lesen. Ich bin aber realistisch genug, zu wissen, das meine Steuerung nicht 10 Jahre laufen wird. Sei es weil die Anlage agebaut wurde, oder es eine neue Rechnergeneration gibt, etc.
Dann wäre man nicht mehr in der Lage irgendein Binärformat zu lesen, was ich mir ausgedacht habe...
ASCII wohl schon...
Und da Speicherplatz nichts mehr kostet, zieht auch das Argument des Speicherverbrauches nicht mehr.

Quote:

Wäre gut wenn Du ein Beispeil mir zur Verfügung stellen kannst was über das aus der Vi.llb von Labview stammende hinausgeht oder einen link, werd mal bei NI schauen ob ich etwas finde.

Was meinst du? Eine mögliche XML-Messdatei habe ich schon beigefügt.
NI hat in Sachen XML leider wenig gemacht.
Die Tags solltest du schon sinnvoll bezeichnen, sonst war es das mit der Lesbarkeit.
Also selbst programmieren.

Quote:

Die Struktur ist gut wenn es um das wiederfinden geht aber welche Vorteile bietet mir das noch wenn ich die Werte mit anderen Programmen weiterverarbeite, vielleicht bringst Du ja noch Eindrücke aus Deiner Programmierarbeit warum XML auf Dauer wohl ratsam ist, oder nutzt Du es gar nicht in größeren Applikationen?

Zugegeben das einlesen ist umfangreicher als beispielsweise eine binärdatei zu lesen. Aber ändere mal in einer binärdatei etwas oder füge etwas hinzu. Dann können alle bisherigen Programme diese nicht mehr lesen und du mußt sie anpassen.
Um eine ASCII oder XML Datei zu lesen solltes du dir eine lese und eine schreib Routine programmieren, die du dann ggf. nur anzupassen brauchst. Die alten Programme lesen dann halt nur die neue Informationen nicht aus.
Eine einfache ASCII Datei verleitet nur dazu die Zahlen an festen Positionen zu lesen. Bei einer XML Datei sollst du aber durch den Baum gehen, um die notwendigen Informationen zu lesen. Wenn dazwischen mehr oder weniger steht ist dir das egal.


Quote:

Gibt es denn noch andere Alternativen außer ASCII,XML-Format?

Ja - Datenbanken
Sie haben den Vorteil, das du dich nicht um die Speicherung kümmern brauchst, dir die gewünschten Daten in bruchteilen einer Sekunde zurückgeben, Auswertungen über mehrere Jahre zusammengefasst einfach werden...

Gruß
Oliver Frank


LabVIEWjahrgang '98

www.LabVIEWForum.de - Das Forum für LabVIEW Entwickler
Previous Topic: griechische Buchstaben für Beschriftungen
Next Topic: Auslesen aus Excelfile
Goto Forum:
  


Current Time: Mon Apr 29 10:19:55 CEST 2024

Total time taken to generate the page: 0.00831 seconds