LabVIEWForum.de - Kanalnamen erstellen

LabVIEWForum.de

Normale Version: Kanalnamen erstellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich möchte aus einem numerischen Wert ein Signal erstellen und dieses in einer TDMS Datei erfassen. Später soll das Array natürlich über eine Schleife erzeugt werden aber z. Z. hab ich das Problem, dass die Kanalnamen als "Unbekannt" erfasst werden und ich es nicht hinbekomme ein ordentliches Signal zu erzeugen. Die Namen die ich an das VI "Signalverlaufsattribut" anschließe werden einfach als zusätzliche Spalte erfasst.

Also ich hätte gerne, dass ich ein fertige Signale mit frei definierbaren Kanalnamen, Kanalgruppen und Zeitstempeln in die Queue einspeise, ohne dass ich an das VI "TDMS schreiben" noch ein Array mit Kanalnamen anschließen muss - das ganze basierend auf den numerischen Variablen Anton, Berta .... etc.

Kann jemand helfen?

Gruß Titus
Hallo Titus,

einige TDMS Funktionen haben Eingänge für Gruppennamen und Kanalnamen. Diese musst du nutzen.
(30.10.2020 10:37 )Martin.Henz schrieb: [ -> ]Hallo Titus,

einige TDMS Funktionen haben Eingänge für Gruppennamen und Kanalnamen. Diese musst du nutzen.

Hallo,

ja ich weiß, dass das eine Möglichkeit ist, aber wenn ich über ExpressVI in Excel abspeichere habe ich das gleiche Problem. Warum kann ich denn kein vollständiges Signal erstellen?
Hallo Titus,

Zitat:Warum kann ich denn kein vollständiges Signal erstellen?
Du hast doch ein "vollständiges Signal" erstellt…

Schau dir das mal an:
[attachment=61369]
Im TDMS-File finden sich alle Informationen, die du so angegeben hast.
Dummerweise hast du aber den "name" nicht definiert, also nimmt LabVIEW eben den Defaultwert…

Was soll dieses Spielchen über Bande mit dem Eintragen dreier Werte in einen Cluster, um dann zwei dieser Werte wieder aus dem Cluster auszulesen und als Arrays mit einem Element zu verpacken?
Dieser Code macht das gleiche:
[attachment=61370]

Und so geht's richtig (zumindest das TDMS-Write):
[attachment=61372]

Zitat:wenn ich über ExpressVI in Excel abspeichere habe ich das gleiche Problem.
Wer verwendet denn schon ExpressVIs freiwillig? (Es gibt IMHO nur 2 sinnvolle ExpressVIs: FileDialog und ElapsedTime.)
Das übliche Problem mit ExpressVIs ist: sie sind für einen bestimmten Einsatzzweck gemacht. Wenn man an die Grenzen dieses Zweckes stößt, muss man eben selbst programmieren!

Abgesehen von meiner Abneigung ggü. ExpressVIs: wenn du die Waveforms korrekt definierst, könnte ich mir schon vorstellen, dass Signalnamen auch korrekt gespeichert werden. Mangels Lust (und aufgrund meiner Abneigung) werde ich das jetzt aber nicht weiter testen…

Allgemeine Anmerkung:
Bitte VIs (Frontpanel und Blockdiagramm) NICHT auf maximale Fenstergröße setzen, insbesondere wenn kaum etwas darin enthalten ist. Stört einfach beim Debuggen!
Hallo Gerd,

dann formuliere ich meine Frage um: Wie definiere ich die Kanalnamen korrekt? Ich versuche es jetzt schon Stunden und ich komme ich weiter. Ich habe mal einen Screenshot von einem HBM Treiber angehangen, die machen es auch "so" und das funktioniert einwandfrei, weiß nicht was ich da anders mache.



Zum Rest: Das "Spiel über Bande" kommt daher, dass es ein extrem reduziertes VI ist, der Cluster ergibt im Ganzen schon Sinn. Ich muss 200 Signale via CAN (NI-XNET Treiber) auslesen und der Treiber gibt einem nur ein numerisches VI aus, daher weise ich via Cluster den Elementen Namen zu. So hab ich alles gebündet und kann mir die benötigten Werte an den entsprechenden Stellen einfach ausleiten. Angeblich würde der NI Flex Logger da Anhilfe schaffen, konnte das Ding aber bisher nicht testen.
Hallo Titus,

Zitat:dann formuliere ich meine Frage um: Wie definiere ich die Kanalnamen korrekt? Ich versuche es jetzt schon Stunden und ich komme ich weiter.
Ich habe mal einen Screenshot von einem HBM Treiber angehangen, die machen es auch "so" und das funktioniert einwandfrei, weiß nicht was ich da anders mache.
Dann hättest du einfach nur das machen sollen, was die Programmierer bei HBM gemacht haben: den korrekten Attributnamen verwenden!
"NI_ChannelName" definiert nämlich den Namen einer Waveform - du dagegen hast stattdessen "Grupppe_XY" definiert…

Steht auch so in der LabVIEW-Hilfe, muss man einfach mal lesen

Zitat:Zum Rest: Das "Spiel über Bande" kommt daher, dass es ein extrem reduziertes VI ist, der Cluster ergibt im Ganzen schon Sinn. Ich muss 200 Signale via CAN (NI-XNET Treiber) auslesen und der Treiber gibt einem nur ein numerisches VI aus, daher weise ich via Cluster den Elementen Namen zu. So hab ich alles gebündet und kann mir die benötigten Werte an den entsprechenden Stellen einfach ausleiten.
Bei so vielen Signalen bietet sich eine Key-Value-Pairs-Tabelle an.
Früher hat man das mit Variantattributen erledigt, mittlerweile gibt es dafür Maps in LabVIEW…
(Außerdem findest du in VIPM noch ein paar andere KVP-Implementierungen…)
Zitat:Hallo Titus,
Steht auch so in der LabVIEW-Hilfe, muss man einfach mal lesen

Ok Tatsache, da hatte ich voreilig etwas anderes angenommen, jetzt funktioniert es. Danke.


Zitat:Bei so vielen Signalen bietet sich eine Key-Value-Pairs-Tabelle an.
Früher hat man das mit Variantattributen erledigt, mittlerweile gibt es dafür Maps in LabVIEW…
(Außerdem findest du in VIPM noch ein paar andere KVP-Implementierungen…)

Maps? Was soll das sein, finde ich nirgendwo. Mir wurde von NI selbst der FlexLogger empfohlen, konnte diesen aber bis dato noch nicht evaluieren.
Hallo Titus,

Zitat:Maps? Was soll das sein, finde ich nirgendwo.
Auch hier gilt: Anleitung lesen
(Ab S.12 stehen die Neuerungen in LV2019.)
(02.11.2020 08:32 )GerdW schrieb: [ -> ]Hallo Titus,

Zitat:Maps? Was soll das sein, finde ich nirgendwo.
Auch hier gilt: Anleitung lesen
(Ab S.12 stehen die Neuerungen in LV2019.)
Ok kann sein, dass ich mich da jetzt irre aber ich sehe da keinen großen Vorteil gegenüber einem Cluster.

Ich fange mit einem .dbc-File an und muss die im File definierten Signale einem Anzeigeelement zuführen. Ich kenne es, z. B. von dSPACE mit Matlab/Simulink, aber auch von von NI-Echtzeitsystemen wie PXI so, dass .dbc-Files direkt in Variablen umgewandelt werden, die ich mir ins Programm ziehen kann. Worum ich hier scheinbar nicht herum komme ist, dass ich mir die Anzeigeelemente händisch erstelle und dann ein "Zubringersystem" wie Cluster oder eben eine Map definiere. Aber beide Systeme haben ihre Vor- und Nachteile die sich m. M. n. nicht viel nehmen oder siehst Du das anders?
Referenz-URLs