LabVIEWForum.de
Einlesen Auslesen von Daten - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: Einlesen Auslesen von Daten (/Thread-Einlesen-Auslesen-von-Daten)



Einlesen Auslesen von Daten - regis57 - 01.06.2012 15:01

Hallo,

Meine Frage betrifft die Erfassung von binären Daten.

Darstellung meinen System:
Ich habe in LabVIEW ein Programm erstellt mit dem ich binäre Eingänge einer SPS ausgebe und die Ausgänge der SPS zurücklese. Für die Eingänge sende ich einen binären Wert für jeden Kanal, zB DI1.1, DI1.2 etc. .. über eine task zu und für die Ausgabewerte lese ich die Binärwert zB DO1.1, etc. .. DO1.2 zurück.
Um dies zu tun habe ich eine Labview Umgebung die mit I/O Karte PXI-6528 verbunden sind (3 insgesamt) die in einem Gehäuse PXI-1044 was die Schnittstelle zu der SPS darstellt.
Die Werte der Eingangskanäle werden in einer Excel-Datei in form einer Tabelle geschrieben und die Excel Datei wird in eine TDMS Datei umgewandelt. Die TDMS-Datei wird von einem selbst gemachten VI gelesen und die Eingangswerte werden über eine Schreibe Task zu der SPS übermittelt.
Zum Lesen des Status der Ausgangskanäle der SPS lese ich die Ausgangszustände über eine Lese Task zurück. Sobald die Task abgeschlossen sind (Schreiben und Lesen) kann ich das Programm beenden. Nach dem beenden wird die TDMS Datei in eine Excel Datei umgeschrieben. Die Excel Datei ist abgelegt und auf meinen Rechner verfügbar.
Die Schreibe und Lese Task werden durch ein Log ausgelöst die Werte der SPS in eine TDMS Datei geschrieben.

Meinen Problem:
in der Excel-Datei bzw. TDMS Datei werden die Eingabewerte einen einzigen binären Eingangsport (8Kanäle) von einer der drei Input-Karten wird zweifach geschrieben (Werten werden in zwei Zeilen geschrieben) was seltsam scheint ist das für die anderen Eingänge der gleiche Karte werden die normal geschrieben (nur auf eine Zeile, wie es sein soll)

Frage 1:
- Ich finde nicht raus warum diese Werte doppelt geschrieben werden, kann mich jemanden helfen? Man hat mir empfohlen die TDMS Datei zu überprüfen,

Frage 2:
- weiß jemand wie man eine TDMS Datei auslest? Ich habe diesen Link gefunden aber die .exe Datei lässt sich nicht installieren. http://zone.ni.com/devzone/cda/epd/p/id/2944 Anbei finden SIe einen Screen shot von meinen Programm

Danke im Voraus für die Hilfe
Sorry für die Sprachfehlern ich bin nicht Deutsch.


RE: Einlesen Auslesen von Daten - jg - 02.06.2012 09:19

(01.06.2012 15:01 )regis57 schrieb:  Frage 1:
- Ich finde nicht raus warum diese Werte doppelt geschrieben werden, kann mich jemanden helfen? Man hat mir empfohlen die TDMS Datei zu überprüfen,
Dazu wäre ein Blick auf den Source-Code hilfreich. Also: VI hochladen?!
(01.06.2012 15:01 )regis57 schrieb:  Frage 2:
- weiß jemand wie man eine TDMS Datei auslest? Ich habe diesen Link gefunden aber die .exe Datei lässt sich nicht installieren. http://zone.ni.com/devzone/cda/epd/p/id/2944 Anbei finden SIe einen Screen shot von meinen Programm
Wo ist denn der Screenshot? Aber noch besser wäre: s. oben

Gruß, Jens


RE: Einlesen Auslesen von Daten - regis57 - 14.06.2012 16:40

Hallo

ich habe meinen Problem eingeschränkt,aber leider noch nicht gelöst!
die Daten die ich an die SPS sende und zurücklese stimmen überein,also vermute ich stark dass der Fehler an die Umwandlung der TDMS Datei in Excel liegt.

Der Fehler ist ein bisschen anders:
Jeden Schreib Zyklus (50ms) werden die Daten von jeweils ein Kanal in eine Zeile der zugehörigen Kanalspalte geschrieben (Normal Fall)
Aber,
die Daten der Port7.1 zu Port7.8 und Port8.1 bis Port8.2 werden nicht in 16 Spalten und 1 Zeile geschrieben (Wie es sein sollte) sondern in 8Spalten und 2 Zeilen sodass es am Ende der Erfassung ein Versatz der Spalten gibt.


Anbei einen Ausdruck meinen VI und der VI der die Umwandlung der Tdms Datei in Excel macht.

Zur Ergänzung der Funktion,
Im Teil1 schreibe ich die Excel Datei in der TDMS Datei, die Vorgegebene Daten werden in der Registerkarte Tabelle geschrieben
Teil2 wird die TDMS Datei eingelesen dann werden die DI und DO Werte der SPS in der Registerkarte Prozesswerte geschrieben
Teil3 wird die TDMS Datei in der XLS Datei umgewandelt und eine Makro wird durchgespielt wenn man die Datei speichert.

Frage:
Kann der Fehler möglicherweise im Teil3 liegen?(in der VI TDMS zu .xls)

Kann ich die TDMS Datei auslesen?wie?wo ist die zu finden?

Vielen Dank, Merci!


RE: Einlesen Auslesen von Daten - jg - 14.06.2012 16:49

Nur kurz zum letzten Teil deiner Frage: Hier gibt es das TDM-Excel Add-In:
http://zone.ni.com/devzone/cda/epd/p/id/2944
Damit kannst du tdms-Dateien direkt in Excel öffnen.

Gruß, Jens



EDIT: Weitere Fragen: Welche deiner Digital-Tasks sind den Port 7.1-7.8 & Port 8.1-8.8? Vermutlich die DI_dev7 und DI_dev8, aber woher sollen wir das sicher wissen?
Wieviele DIs enthält Taks DI_Dev6?
Wie groß sind die AC160-Digital-Arrays?
[attachment=40230]

Passt das dann mit dem Array der Kanalnamen am TDMS-Write überein?
[attachment=40231]

Ich glaube nicht, dass das Problem am hochgeladenen VI liegt, das dieses auf den ersten Blick genau das verlinkte Excel-Add-In verwendet, um die TDMS-Datei einzulesen.

Gruß, Jens


RE: Einlesen Auslesen von Daten - regis57 - 15.06.2012 09:51

Hallo danke erstmal für die Antwort,

Nur kurz zum letzten Teil deiner Frage: Hier gibt es das TDM-Excel Add-In:
http://zone.ni.com/devzone/cda/epd/p/id/2944
Damit kannst du tdms-Dateien direkt in Excel öffnen.
-- Ich habe diesen Link schonmal ausprobiert aber es lässt sich bei mir nicht installieren?!

Weitere Fragen: Welche deiner Digital-Tasks sind den Port 7.1-7.8 & Port 8.1-8.8?
-- Port 7.1-7.8 enstprechen Kanale 1 und Kanale 8 des Gerätes 3
Port 8.1-8.8 enstprechen Kanale 9 und Kanale 16 des Gerätes 3
Jede Task enthält 24Kanäle soviel Kanäle wie es auf einen DI oder DO Karte gibt
Die Kanäle sind in drei Port von 8Kanäle unterteilt.

Frage: Vermutlich die DI_dev7 und DI_dev8, aber woher sollen wir das sicher wissen?
--Ich habe dass in meinen Max Explorer so konfiguriert.
Eine Karte enthält eigentlich 24 DI und 24 DO deswegen steht task dev7 einmal für das Digital einlese task und einmal für das digital auslese task


Frage: Wieviele DIs enthält Taks DI_Dev6?
-- 24DI (Kanäle)

Frage: Wie groß sind die AC160-Digital-Arrays?
-- Die sind nicht begränzt es ist eine Array von Boolsche Werte (in Variable bibliothek konfiguriert) ich sehe da keine Begrenzung.

Also wo du die roten Kreis gezeichnet hast kommen genau 24*3=72 Werte für die DI Seite und 72 für die DO Seite.
Bis an deine Roten Kreis stimmt alles ich habe es mit der Sonde tool nachgeprüft.



Passt das dann mit dem Array der Kanalnamen am TDMS-Write überein?
--Ich schaue dass noch aber zurzeit verstehe ich die Frage noch nicht.

Gruß Regis


RE: Einlesen Auslesen von Daten - jg - 15.06.2012 10:30

(15.06.2012 09:51 )regis57 schrieb:  Passt das dann mit dem Array der Kanalnamen am TDMS-Write überein?
--Ich schaue dass noch aber zurzeit verstehe ich die Frage noch nicht.
Das Array der Kanalnamen muss genauso groß sein wie die Anzahl der Kanäle die du schreiben willst, ansonsten macht das TDMS-Write ein Interleave daraus (s. Hilfe).

Gruß, Jens


RE: Einlesen Auslesen von Daten - regis57 - 18.06.2012 08:11

Hallo

Zitat:Passt das dann mit dem Array der Kanalnamen am TDMS-Write überein?
--Ich schaue dass noch aber zurzeit verstehe ich die Frage noch nicht.
Das Array der Kanalnamen muss genauso groß sein wie die Anzahl der Kanäle die du schreiben willst, ansonsten macht das TDMS-Write ein Interleave daraus (s. Hilfe).

Gruß, Jens
Das Array der Kanalnamen muss genauso groß sein wie die Anzahl der Kanäle die du schreiben willst, ansonsten macht das TDMS-Write ein Interleave daraus (s. Hilfe).

Das stimmt überein, es gibt soviele Kanäle vordefiniert wie ich schreibe.

Gruß Régis


RE: Einlesen Auslesen von Daten - regis57 - 19.06.2012 13:12

Hallo
mein Problem ist geregelt es lag nämlich an die Kanäle Zuordnung (für die TDMS Datei geschriben)

Gruß
Régis