INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

[split] Eigenschaftsknoten / DAQmx Kanäle skalieren



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

28.05.2021, 09:08
Beitrag #1

scheichkind Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jan 2020

2019
2010
DE

4730
Belgium
Nachträglich programmatisch Kanäle im Task reduzieren
Hallo zusammen,

ich habe ein vermutlich triviales Problem: Ich möchte gerne aus einem bestehenden (im NI-MAX erzeugten) globalen Task mit 16 Kanälen programmgesteuert durch den Benutzer nur einen Bereich der Kanäle auswählen lassen (bspw. nur Kanal 0-3 o.ä.).

Wie muss ich vorgehen? Ich habe das bereits über Eigenschaftsknoten versucht und dachte, das richtige gefunden zu haben: Über die Eigenschaft "Zu lesende Kanäle" kann ich nur einen Kanal auswählen, allerdings nicht mehrere (was der Plural der Eigenschaft eigentlich suggeriert). Warum ist die Eigenschaft hier nicht ebenfalls als Array ausgeführt? Auch ein mehrfacher Aufruf per Schleife o.ä. führt dazu, dass nur der letzte gewählte Kanal genutzt wird.

Jemand eine Idee?

Viele Grüße
Dirk


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.05.2021, 09:37
Beitrag #2

scheichkind Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jan 2020

2019
2010
DE

4730
Belgium
RE: Nachträglich programmatisch Kanäle im Task reduzieren

Akzeptierte Lösung

Eine Lösung habe ich nun schon selbst gefunden: Das VI "Kanal-String serialisieren" war der Schlüssel zum Erfolg. Warum das Ganze erschließt sich mir nicht, und ob das die gescheiteste Lösung ist, weiß ich auch nicht. Blink

Insofern: Bin für weitere Vorschläge offen... Smile


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.05.2021, 07:01
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 16.988
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 20)
1995
DE_EN

10×××
Deutschland
RE: Nachträglich programmatisch Kanäle im Task reduzieren
Hallo scheichkind,

Zitat:Bin für weitere Vorschläge offen...
Definiere den Task doch gleich programmatisch, dann musst du garnicht erst Kanäle hinzufügen, die du später wieder löschen musst…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.06.2021, 10:47
Beitrag #4

scheichkind Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jan 2020

2019
2010
DE

4730
Belgium
[split] Eigenschaftsknoten / DAQmx Kanäle skalieren
Hallo zusammen,

ich hoffe, es ist okay, wenn ich diesen alten Thread noch einmal reaktiviere. Ich hänge schon seit geraumer Zeit vor genau dem gleichen Problem: Ich möchte gerne den Kanälen eines Tasks, den ich zuvor global im NI MAX erstellt habe, eine benutzerdefinierte Skalierung zur Laufzeit zuweisen können. Außerdem sollen die tatsächlich genutzten ( = "Zu lesenden Kanäle") zur Laufzeit vom Benutzer festgelegt werden können. Letzteres funktioniert auch soweit.

Zur Zuweisung der benutzerdefinierten Skalierungen... folgendes funktioniert NICHT (siehe relevanten Blockdiagramm-Ausschnitt): In der Schleife behandle ich die Kanäle einzeln und weise ihnen die vom Benutzer gewählte Skalierung zu (die Berechnungsformeln passen so, sind also nicht das Problem). Der Eigenschaft "Aktive Kanäle" im 1. Eigenschaftsknoten (habe auch schon versucht, diese Eigenschaft mit im 2. Knoten zu setzen - kein Unterschied) weise ich in jedem Schleifendurchlauf den Namen eines einzelnen Kanals zu (im Debugging überprüft - werden auch korrekt übergeben). Offensichtlich wird das aber komplett ignoriert, stattdessen erhalten am Ende immer alle Kanäle des Tasks (auch die nicht zu lesenden!) die Skalierung des letzten Schleifendurchlaufs! Warum ist das so? Was mache ich falsch?

Gibt es eine andere Möglichkeit, konkret jedem einzelnen Kanal eines bereits existierenden Tasks mit virtuellen Kanälen eine individuelle Skalierung zuzuweisen? Das grundsätzliche Verfahren, die Kanäle über den zuvor im MAX erstellten Task zu wählen, möchte ich aber gerne beibehalten, um nicht dem Benutzer einen Dialog zur Auswahl der Hardware-Kanäle präsentieren zu müssen (sind immerhin 16). Ich weiß, wenn die virtuellen Kanäle zur Laufzeit dynamisch erstellt werden, funktioniert das mit den individuellen Skalierungen. Das habe ich schon mehrfach gemacht. Aber es muss doch auch so gehen!?!

Beste Grüße
Dirk


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.06.2021, 10:58
Beitrag #5

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.774
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Eigenschaftsknoten / DAQmx Kanäle skalieren
Hallo Dirk,

wie Gerd schon in deinem anderen Thread geschrieben hat, fang doch lieber damit an, den Task selber programmatisch zu definieren:

https://www.labviewforum.de/Thread-Nacht...#pid199248

Dieses nachträgliche Umdefinieren von NI-MAX-Tasks ist den Aufwand IMHO nicht wert.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.06.2021, 11:15
Beitrag #6

scheichkind Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jan 2020

2019
2010
DE

4730
Belgium
RE: Eigenschaftsknoten / DAQmx Kanäle skalieren
Hallo Jens,

das hat in meinen Augen einen klaren Nachteil: entweder muss ich wie oben geschrieben dem Benutzer die Auswahl der physikalischen Kanäle überlassen oder ich mache das "festverdrahtet" im Programm mit dem großen Manko, dass ich das auf dem Zielsystem oder bei geänderter Hardware jeweils wieder anpassen muss.

Verstehe das einfach nicht, ich möchte doch nur die Skalierung eines bzw. jedes bereits existierenden virtuellen Kanals innerhalb eines Tasks ändern. Das muss doch gehen. Wofür sind die beschreibbaren Eigenschaftsknoten sonst da?

Gruß Dirk
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
02.06.2021, 19:02 (Dieser Beitrag wurde zuletzt bearbeitet: 02.06.2021 19:04 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 16.988
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 20)
1995
DE_EN

10×××
Deutschland
RE: [split] Eigenschaftsknoten / DAQmx Kanäle skalieren
Hallo Dirk,

ich habe deine Beiträge wieder zusammengefasst, erscheint mir sinnvoller als einen 14 Jahre alter Thread wiederzuerwecken…

Deine ursprüngliche Frage:
Zitat:Ich möchte gerne aus einem bestehenden (im NI-MAX erzeugten) globalen Task mit 16 Kanälen programmgesteuert durch den Benutzer nur einen Bereich der Kanäle auswählen lassen (bspw. nur Kanal 0-3 o.ä.).

Jetzt heißt es:
Zitat:muss ich wie oben geschrieben dem Benutzer die Auswahl der physikalischen Kanäle überlassen

Du willst doch, dass der User sich die Messkanäle (und deren Skalierung) auswählen kann, oder!?

Da ist es meiner Meinung nach deutlich einfacher, einen Task nach Bedarf neu anzulegen als einen bestehenden aus MAX zu modifizieren!
Vorteile:
- Du bist bisher von einer korrekten Definition des Tasks in MAX abhängig, das fälllt dadurch weg. Was machst du, wenn der User diesen Task mutwillig verändert/löscht/umbenennt?
- Wo ist der Unterschied im Aufwand, einen Task neu zu definieren oder die gleichen Properties bei einem bestehenden Task zu verändern?
- Die nötige DAQ-Hardware kann man auch programmatisch abfragen und so Typbezeichnungen und Seriennummern herausfinden…

Zitat:das hat in meinen Augen einen klaren Nachteil: … ich mache das "festverdrahtet" im Programm mit dem großen Manko, dass ich das auf dem Zielsystem oder bei geänderter Hardware jeweils wieder anpassen muss.
Wo ist der Nachteil? Wenn sich deine DAQ-Hardware ändert, musst du den Task auch in MAX anpassen…
Der Nachteil ist mMn eher, dass die MAX-Database auf jedem Zielrechner anders aussehen kann - auch da musst du den Task (in MAX) jedesmal korrekt definieren…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.06.2021, 09:26 (Dieser Beitrag wurde zuletzt bearbeitet: 07.06.2021 09:27 von scheichkind.)
Beitrag #8

scheichkind Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jan 2020

2019
2010
DE

4730
Belgium
RE: [split] Eigenschaftsknoten / DAQmx Kanäle skalieren
@GerdW: Vielen Dank für's Zusammenfassen und Deine Antwort!

Meine beiden Zitate widersprechen sich nicht. Es geht um folgenden Konfigurationsdialog für die Kanäle:
   

Die Auswahl der Geräte habe ich jetzt nachträglich hinzugefügt, damit ich die benötigten virtuellen Kanäle darauf basierend dynamisch aufbauen kann. Ich hätte das gerne weggelassen. Die Situation ist folgende: Ich werde den/die Messrechner einrichten (somit bei Bedarf auch die Tasks im NI-MAX anlegen etc.), danach sollte das Programm am besten einfach laufen. Die Benutzer werden nur meine Anwendung starten und sehen, insofern dürfen die Tasks im NI-MAX als unveränderlich betrachtet werden. Wink

Leider ist es so aber den Anwendern im Programm direkt möglich, die physikalischen(!) Kanäle - auch falsch - auszuwählen, was ich gerne verhindert hätte! Zudem sagen die Kanal- / Gerätenamen den Anwendern hier im Hause meist nichts.

Insofern: Ich frage mich weiterhin, WARUM es nicht möglich ist, die Skalierung eines bereits bestehenden virtuellen Kanals zu verändern? Oder noch besser: Wer hätte eine programmatische Lösung hierfür? Warum gibt es diese Eigenschaftsknoten, wenn die zugewiesenen Werte ignoriert werden?

Beste Grüße
Dirk
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.06.2021, 10:06 (Dieser Beitrag wurde zuletzt bearbeitet: 07.06.2021 10:06 von GerdW.)
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 16.988
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 20)
1995
DE_EN

10×××
Deutschland
RE: [split] Eigenschaftsknoten / DAQmx Kanäle skalieren
Hallo scheichkind,

Zitat:Leider ist es so aber den Anwendern im Programm direkt möglich, die physikalischen(!) Kanäle - auch falsch - auszuwählen, was ich gerne verhindert hätte!
Wie kann der User in deinem VI Kanäle "falsch" auswählen? Du zeigst doch gerade diesen Dialog zum Auswählen der Kanäle an?
Warum verhinderst du nicht programmatisch eine "falsche" Auswahl?

Zitat:Zudem sagen die Kanal- / Gerätenamen den Anwendern hier im Hause meist nichts.
Warum zeigst du dann diese Gerätenamen dem User überhaupt an?

Irgendwie verstehe ich deine Problematik nicht…
Du zeigst Gerätenamen zur Auswahl an, obwohl der User damit nichts anfangen kann!?
Du bietest eine Kanalauswahl an, in der User dann Kanäle "falsch" auswählen können!?

Zitat:Insofern:…
Ich finde es immer noch deutlich einfacher, einen Task programmatisch anzulegen als einen vorhandenen hinterher (korrekt) zu modifizieren:
   
Die Prüfstände hier erlauben bis zu 128 AI-Kanäle verschiedenen Typs…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.06.2021, 10:58
Beitrag #10

scheichkind Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jan 2020

2019
2010
DE

4730
Belgium
RE: [split] Eigenschaftsknoten / DAQmx Kanäle skalieren
Hm, vielleicht reden wir aneinander vorbei oder ich habe einen generellen Denkfehler Angel_not

Ich benötige doch, um virtuelle Kanäle zu definieren die Angabe eines physikalischen Kanals, auf dem das laufen soll. Richtig?

OK, dann habe ich m.W. 2 Möglichkeiten: Entweder ich reserviere die entsprechenden Kanäle im NI-MAX und definiere dort einen Task oder ich mache das im Programm. Woher bekomme ich im Programm die passenden Gerätenamen auf verschiedenen Systemen, wenn ich sie nicht im Programm zur Auswahl anbiete? Klar, ich kann die Namen der vorhandenen Geräte auch abfragen, aber woher weiß ich, welches das "richtige" ist?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  DAQMX Kanäle zusammenführen in Datei Herri 4 1.440 29.11.2019 09:11
Letzter Beitrag: Herri
  DAQmx: Zwei Kanäle lesen und speichern _Markus_ 5 2.448 02.01.2019 17:06
Letzter Beitrag: GerdW
  [split] Phasenverschiebung: zwei Eingangssignale tomi2107 5 4.381 19.09.2013 20:34
Letzter Beitrag: GerdW
  AI Spannung Einheit skalieren Aktuatormann 2 2.992 21.01.2013 10:15
Letzter Beitrag: Aktuatormann
  DAQmx - 2 Kanäle mit 2 Frequenzen KaFlip 1 3.522 02.03.2011 20:58
Letzter Beitrag: thomas.sandrisser
  Globale virtuelle Kanäle vs. NI-DAQmx-Tasks verschiedene Messwerte steffenm 3 6.327 12.10.2010 20:41
Letzter Beitrag: VIs

Gehe zu: