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 

Gleichzeitiges Lesen und Ausgeben von Spannungen - verstehe Fehlermeldung nicht



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!

27.02.2014, 19:16 (Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2014 19:24 von Dron.)
Beitrag #1

Dron Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Feb 2014

2011
2012
DE_EN



Gleichzeitiges Lesen und Ausgeben von Spannungen - verstehe Fehlermeldung nicht
Hallo zusammen,

ich schreibe die Software für einen Prüfstand in Labview. Es gibt bis jetzt einen Task, der mehrere Spannungen einliest und zwei Tasks, die eine Spannung ausgeben. Die Tasks sind jeweils SubVis. Das funktioniert in der im letzten Bild gezeigten Programmversion sehr gut. Als nächsten Schritt möchte ich nun den Ausgabetask "Drehmoment Soll" in eine Casestruktur bringen, da es hier verschiedene Anwendungsfälle gibt. Sobald ich die Casestruktur jedoch einfüge, bekomme ich abwechselnd an allen Tasks die Fehlermeldung: "Der Task kann keine Kanäle mit dem angegebenen Kanaltyp enthalten, da der Task bereits Kanäle eines anderen Kanaltyps enthält". Der in der Casestruktur versteckte Task wurde in diesem Fall noch gar nicht aktiviert. Ich verstehe nicht, was das Problem ist. Vielleicht kann hier jemand Licht ins Dunkel bringen Wink Zum besseren Verständnis habe ich noch das Hauptprogramm mit Casestruktur und Fehlermeldung (erstes Bild) und die SubVis "Messen" (zweites Bild), "Drehmoment Soll" (drittes Bild) und "Durchfluss Soll" (viertes Bild) angehangen.
Würde mich freuen, wenn mir jemand weiterhelfen kann.

MfG Dron


Angehängte Datei(en) Thumbnail(s)
                   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.02.2014, 20:34 (Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2014 20:35 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Gleichzeitiges Lesen und Ausgeben von Spannungen - verstehe Fehlermeldung nicht
Hallo Dron,

du willst uns hoffentlich nicht weismachen, dass du diese ganzen Tasks ständig neu anlegst, einmal Werte liest/schreibst und dann sofort wieder löscht? Dauernd?

Hast du dir mal die mit LabVIEW mitgelieferten Beispiel-VIs angeschaut, wie die sowas machen?

Zum Problem:
Die Fehlermeldung scheint doch eindeutig, da ist ein unpassender Kanal im Task. Leider hast du nicht die volle Fehlerbeschreibung gezeigt, das wäre jetzt hilfreich gewesen…
Anscheinend willst du in einem AI-Task irgendwelche AOs unterbringen (oder umgekehrt)!

Sonst so:
- Was soll es bringen, einen PID-Regler mal eben über ein Messwert-Array rennen zu lassen und dann die Stellwerte einen nach dem anderen ausgeben zu lassen? Funktioniert ein Regler üblicherweise auf diese Art?
- Warum erstellst du nicht ebenso nur einen AO-Task (mit mehreren Kanälen) wie du auch nur einen AI-Task hast?
- VIs anhängen ist meist sinnvoller als nur irgendwelche Bilder…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.02.2014, 00:37
Beitrag #3

Dron Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Feb 2014

2011
2012
DE_EN



RE: Gleichzeitiges Lesen und Ausgeben von Spannungen - verstehe Fehlermeldung nicht
Hallo GerdW,

danke für deine Antwort. Damit der Task nicht ständig neu erstellt und wieder gelöscht wird, würde ich normalerweise eine while-Schleife um das Lesen/Schreiben-VI ziehen. Da ich jedoch innerhalb eines Sub-VI keine while-Schleife benutzen kann, siehe mein anderes Thema http://www.labviewforum.de/Thread-Spannu...enausgabe, ist hier der gesamte Task innerhalb der Schleife. Ich verstehe dass das keine sehr schöne Lösung ist, habe jedoch keine bessere Idee, um eine kontinuierliche Messung zu erhalten. Was ist dein Vorschlag? Die SubVI-Struktur ist zur Übersichlichkeit wichtig, da noch ein PWM und eine digitale Ausgabe sowie eine Drehzahlmessung hinzukommen.

Zum Problem: Ich habe verstanden, dass ein unpassender Kanaltyp im Task ist. Nur, wo kommt dieser her? Meine Tasks sind doch eindeutig voneinander getrennt.

Morgen kann ich auch die VIs noch hochladen.

Zum Regler: Ich regle damit eine Drehmomentbremse, deren Kennlinie nicht linear ist. War das die Frage?

Und zum AO-Task: Meine USB-Karte hat zwei analoge Ausgänge, wovon einer immer gebraucht wird, um einen Gasdurchflussregler anzusteuern. Mit dem zweiten soll entweder die Drehmomentbremse oder eine elektrische Last gesteuert werden, deswegen auch die Case-Struktur. Zwei Tasks habe ich aus rein praktischen Gründen gemacht, um nicht bei den jeweiligen Cases immer wieder den Gasdurchflussregler dabei zu haben. Ist es nicht sehr gut, gleichzeitig zwei AO-Tasks zu haben? Leider gibt es sehr wenig Beispiele mit mehreren Tasks. Gibt es vielleicht irgendwo eine Wissenssammlung dazu?

MfG Dron
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.02.2014, 07:41
Beitrag #4

Clyde Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 71
Registriert seit: May 2012

2012
2009
EN


Sonstige
RE: Gleichzeitiges Lesen und Ausgeben von Spannungen - verstehe Fehlermeldung nicht
Hi Dron,

das Thema While-Schleife hatten wir doch schon einmal..
http://www.labviewforum.de/Thread-Spannu...#pid163097
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.02.2014, 08:56
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Gleichzeitiges Lesen und Ausgeben von Spannungen - verstehe Fehlermeldung nicht
Hallo Dron,

Zitat:habe jedoch keine bessere Idee, um eine kontinuierliche Messung zu erhalten.
Dir wurde doch schon in deinem anderen Thread angeraten, sowas aufzusplitten in 3 Teile: ein subVI für's INIT, eines zum Werte lesen/schreiben, eines zum Aufräumen.
Und die While-Loop gehört um die Hauptroutine herum…

Zitat:Ich habe verstanden, dass ein unpassender Kanaltyp im Task ist. Nur, wo kommt dieser her?
Wie soll man das anhand von Bildern klären? Hmm

Zitat:Zum Regler: Ich regle damit eine Drehmomentbremse, deren Kennlinie nicht linear ist. War das die Frage?
Nein.
Es ist mir unklar, wieso man mehrere Messwerte durch einen Regleralgorithmus jagt, wenn dessen Stellwert(e) erst wesentlich später ausgegeben werden!

Zitat:Und zum AO-Task: Meine USB-Karte hat zwei analoge Ausgänge, wovon einer immer gebraucht wird, um einen Gasdurchflussregler anzusteuern. Mit dem zweiten soll entweder die Drehmomentbremse oder eine elektrische Last gesteuert werden, deswegen auch die Case-Struktur.
Ich gehe davon aus, dass beide Geräte einen eigenen Anschalter/Sicherung/Freigabe besitzen. Es sollte deshalb unproblematisch sein, ständig zwei Analogwerte auszugeben. Notfalls kannst du ja den zweiten Analogwert auf Null setzen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.02.2014, 10:52 (Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2014 10:52 von Dron.)
Beitrag #6

Dron Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Feb 2014

2011
2012
DE_EN



RE: Gleichzeitiges Lesen und Ausgeben von Spannungen - verstehe Fehlermeldung nicht
Hallo,

Zitat:Wie soll man das anhand von Bildern klären? Hmm

ich habe mal meine VIs angehangen.

Ich sollte vielleicht dazu sagen, dass dies mein erstes LabVIEW-Programm. Ich überarbeite ein Programm, was ein Kollege vor 2 Jahren geschrieben hat, ohne SubVIs.

Danke soweit für die Hilfe, ich werde nun erstmal die Lösungsvorschläge abarbeiten.

Zitat:wenn dessen Stellwert(e) erst wesentlich später ausgegeben werden!

Das war mir gar nicht bewusst. Ich muss mich wohl noch mehr mit der Thematik auseinandersetzen. Kannst mir kurz erklären, warum das so ist? Das wäre sehr hilfreich für mich. Ich messe doch kontinuierlich ein Sample, und gebe kontinuierlich Samples wieder aus?

Zitat:Ich gehe davon aus, dass beide Geräte einen eigenen Anschalter/Sicherung/Freigabe besitzen. Es sollte deshalb unproblematisch sein, ständig zwei Analogwerte auszugeben. Notfalls kannst du ja den zweiten Analogwert auf Null setzen…

Darin sehe ich auch kein Problem. Aber kann ich denn in einem Task zweimal den selben Kanal haben?




Hier noch der verwendete Regler.


Angehängte Datei(en)
11.0 .vi  Benutzeroberflaeche_Pruefstand2.vi (Größe: 29,72 KB / Downloads: 200)

11.0 .vi  Datenverarbeitung_Analog.vi (Größe: 72,96 KB / Downloads: 206)

11.0 .vi  Messen_Analog.vi (Größe: 41,58 KB / Downloads: 209)

11.0 .vi  Durchfluss_Soll.vi (Größe: 45,55 KB / Downloads: 199)

11.0 .vi  Steuern_Analog.vi (Größe: 60,69 KB / Downloads: 196)

11.0 .vi  simple_PID.vi (Größe: 11 KB / Downloads: 178)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.02.2014, 11:07 (Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2014 11:13 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Gleichzeitiges Lesen und Ausgeben von Spannungen - verstehe Fehlermeldung nicht
Hallo Dron,

Zitat:Ich messe doch kontinuierlich ein Sample, und gebe kontinuierlich Samples wieder aus?
Ja, das fiel mir jetzt auch auf. Aber warum verwendest du dann als Datentyp Waveforms, wenn es sich immer nur um Einzelwerte (pro Kanal) handelt?
Und warum verwendest du dann bei den DAQmx-Zugriffen den Modus "N Kanäle, N Samples" statt dort "N Kanäle, 1 Sample" einzustellen?

Ich habe erste Vereinfachungen an den VIs vorgenommen, siehe Attachment.

Was du noch selbst machen musst:
- Wie oben beschrieben, die ganzen DAQmx-Zugriffe aufteilen in einzelne INIT, READ/WRITE, CLOSE-subVIs. In der Hauptschleife werden dann nur READ/WRITE aufgerufen!
- Momentan wird dein AI-Lesen zweimal aufgerufen, einmal im Haupt-VI und einmal in der Regelschleife. D.h. die Regelschleife bekommt nur jeden zweiten Messwert mit!
Deshalb sollte die Regelschleife den aktuellen Messwert vom Haupt-VI mitgeteilt bekommen und diesen nicht extra abfragen!
- Ich halte es für ungünstig, im "Messen-VI" die ganzen Messwerte auf einzelne Charts aufzudröseln. Ein subVI sollte eine genau umrissenen Aufgabe haben, hier das Erfassen der Messwerte. Welcher Messwert wie und wo weiterverwendet wird, entscheidet sich an anderer Stelle im Programm und braucht das Messen-VI nicht zu interessieren. Außerdem wird das ConnectorPane dann deutlich aufgeräumter!

Zitat:Darin sehe ich auch kein Problem. Aber kann ich denn in einem Task zweimal den selben Kanal haben?
Wieso zweimal? Der Task besteht aus den Kanäle ao0 und ao1! Nur über deine externe Verdrahtung entscheidest du doch, was mit dem Wert von ao1 dann angesteuert wird…


Angehängte Datei(en)
11.1 .zip  LVF.zip (Größe: 122,26 KB / Downloads: 213)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.02.2014, 13:05
Beitrag #8

Dron Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Feb 2014

2011
2012
DE_EN



RE: Gleichzeitiges Lesen und Ausgeben von Spannungen - verstehe Fehlermeldung nicht
Hallo GerdW,

Ich habe nun eine neue Programmstruktur nach deinem Vorschlag, sie gefällt mir viel besser, danke dafür! Nun gibt es jedoch ein neues Problem. Ich habe einen AO-Task mit 2 Kanälen erstellt, bekomme jedoch keinen Output. Im Anhang das Programm...


Angehängte Datei(en)
0.0 .zip  neu.zip (Größe: 115,77 KB / Downloads: 214)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.02.2014, 14:26
Beitrag #9

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
RE: Gleichzeitiges Lesen und Ausgeben von Spannungen - verstehe Fehlermeldung nicht
Du legst den AO Task nur mit einem Kanal an, deshalb meckert die DAQmx Write Funktion:
Error -200524 occurred at Prüfstand.vi

Possible reason(s):

Write cannot be performed, because the number of channels in the data does not match the number of channels in the task.

When writing, supply data for all channels in the task. Alternatively, modify the task to contain the same number of channels as the data written.

Number of Channels in Task: 1
Number of Channels in Data: 2

Task Name: _unnamedTask<3>


D.h. ändere dein Ini_Ausgabe analog zu Ini_Messen ab und es sollte funktionieren.
Zusätzlich:
In den beiden VIs sollten die Schieberegister an den FOR-Schleifen für Task und Fehlercluster initialisiert werden, leere Konstanten reichen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.02.2014, 15:25
Beitrag #10

Dron Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Feb 2014

2011
2012
DE_EN



RE: Gleichzeitiges Lesen und Ausgeben von Spannungen - verstehe Fehlermeldung nicht
Jetzt gehts, danke. LabVIEW erstellt die Schieberegister nicht automatisch, weshalb ich es mit dem Array indizieren probiert hatte...

Vielen Dank an dieses tolle Forum! Ich werde mein gesamtes Programm hochladen, sobald es fertig ist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  USB-6001 und Messung differentieller Spannungen Nilawa 2 4.244 04.07.2019 14:37
Letzter Beitrag: Nilawa
  Fehlermeldung - Nicht genügend Speicher zum Abschließen dieser Operation Mr.LabView 2 5.013 02.05.2017 09:15
Letzter Beitrag: Mr.LabView
  Einlesen mehrerer Spannungen Timo86 5 5.104 16.10.2013 08:28
Letzter Beitrag: GerdW
  Datenerfassung für Spannungen - Einige Fragen bumbumquietsch 7 6.501 06.06.2013 16:17
Letzter Beitrag: bumbumquietsch
  Parallel Ausgeben und Lesen mit PXI-6071E dtea 2 3.202 22.10.2012 09:01
Letzter Beitrag: dtea
  Gleichzeitiges Ansteuern HS-Kameras und Drucksensor eeigm 2 4.396 16.01.2012 17:54
Letzter Beitrag: eeigm

Gehe zu: