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 

Kalibrator Omicron CMC 256 - Wert halten



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!

19.06.2013, 06:17
Beitrag #1

hammerheadbene Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Oct 2011

12.0.1
2011
DE


Deutschland
Kalibrator Omicron CMC 256 - Wert halten
Hallo liebe Gemeinde,

ich stoße gerade auf ein Problem, wo ich nicht weiter weiß.

Mit Hilfe einer Applikation (angehängt als vi) steuere ich den Kalibrator CMC 256 von Omicron an und kann die verschiedenen Werte für Spannung, Strom und Phasenwinkel einstellen. Dies funktioniert alles soweit wunderbar, so lange ich die Applikation unter LabVIEW oder unter der generieierten .exe ausführe. Ich möchte jedoch aus dem vi eine .NET Interop-Assembly (DLL) erstellen - an sich kein Problem, habe das nun auch schon öfters für andere Geräte gemacht.
Aber bei der Ansteuerung eines Kalibrators ist der entscheidende Unterschied, dass die Werte gehalten werden sollen und nicht nur einmal gelesen wie bei einem Mutimeter bspw. In LabVIEW realisiere ich dies über die while-Schleife. Diese kann ich jedoch in der DLL nicht verwenden, da ich sonst erst in den nächsten Programmschritt komme, wenn das vi abgearbeitet ist. Nehme ich einfach die while-Schleife raus, wird das vi beim Aufruf im Programm zwar komplett abgearbeitet, aber die Ausgänge auch wieder am Ende zurückgesetzt - die Werte an den Ausgängen bleiben somit nicht stehen.

Wie kann ich also realisieren, dass die Werte dauerhaft an den Ausgängen anstehen und zeitgleich das vi aber geschlossen/komplett abgearbeitet wird.

Hoffe das ist halbwegs verständlich Blink


Angehängte Datei(en)
11.0 .vi  Omicron_initialize_2.vi (Größe: 27,84 KB / Downloads: 215)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.06.2013, 19:08
Beitrag #2

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
RE: Kalibrator Omicron CMC 256 - Wert halten
Um sicher zu gehen das ich dein Problem verstanden habe hier nochmal eine stichpunktartige Zusammenfassung:
  • VI funktioniert in der Entwicklungsumgebung in der hochgeladenen Form
  • Ausgabe der Werte ist solange aktiv bis du mit dem "Stop"-Button dein VI beendest
  • Die exportierte Funktion in der Assembly stellt das gezeigte VI dar (ggf. ohne While-Schleife)
  • Weglassen der While-Schleife führt in der Assembly dazu, dass die Ausgabe beendet wird

Dazu ergibt sich meinerseits die Frage ob beim Weglassen der While-Schleife auch bei Ausführung in der Entwicklungsumgebung die Ausgabe beendet wird.

Meine Vermutung wäre, wenn alle Angaben korrekt sind und die Frage mit Ja beantwortet wird, das der ActiveX-Treiber beim Close alle Ausgaben anhält und die Verbindung deinitialisiert. Die Lösung wäre entsprechend zumindest das "Close" als eigenständige Funktion zu exportieren und erst aufzurufen wenn du die Ausgabe stoppen willst.

Eine Frage am Rand ist natürlich noch woher kommt eigentlich die Globale Variable mit den Daten und welche Bedeutung hat das? Ist die Schleife eigentlich nur drin um das Close zu verhindern oder gibst du zyklisch neue Werte vor?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.06.2013, 08:01
Beitrag #3

hammerheadbene Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Oct 2011

12.0.1
2011
DE


Deutschland
RE: Kalibrator Omicron CMC 256 - Wert halten
Hallo Holy,

deine Zusammenfassung ist genau richtig und alle Punkte kann ich mit "ja" beantworten.

Wenn ich die While-Schleife weglasse dann wird auch in der Entwicklungsumgebung die Ausgabe beendet -> das ist ja genau mein Problem.
Das man das Close als eigenständige Funktion iwie exportieren und dann in der Entwicklungsumgebung auch extra ansteuern muss, habe ich mir auch schon so gedacht. Aber genau hier liegt der Hund begraben, wie mache ich dies? Und selbst wenn ich nur das close weglasse - sobald die VI-Kette abgearbeitet ist, wird der Ausgang deaktiviert. Dies verhindert eben die While-Schleife, die mich wiederum in der Entwicklungsumgebung stört - Teufelskreis.

Die globale Variable ist dafür da, um zyklisch immer die verschiedenen Werte (Spannung, Strom und Phasenwinkel) dem Kalibrator vorgeben zu können. Die Schleife hat dementsprechend beide Wirkungsfunktionen. Einmal um das close zu verhindern und zum anderen um Werte zyklisch anzupassen.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.06.2013, 09:31 (Dieser Beitrag wurde zuletzt bearbeitet: 24.06.2013 09:34 von Lucki.)
Beitrag #4

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Kalibrator Omicron CMC 256 - Wert halten
Habe das Vi mal angeschaut. Nur kleiner Tip: dieses häßliche Strickmuster
   
läßt sich so ersetzen,
   
wobei bei den hier noch leeren Arraykonstanten für obere und untere Grenzwerte natürlich noch die richtigen Werte gesetzt werden müssen. (Für nicht zu setzende Grenzwerte "-Inf" und "Inf" verwenden.)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.06.2013, 19:43
Beitrag #5

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
RE: Kalibrator Omicron CMC 256 - Wert halten
(24.06.2013 08:01 )hammerheadbene schrieb:  Hallo Holy,

deine Zusammenfassung ist genau richtig und alle Punkte kann ich mit "ja" beantworten.

Wenn ich die While-Schleife weglasse dann wird auch in der Entwicklungsumgebung die Ausgabe beendet -> das ist ja genau mein Problem.
Das man das Close als eigenständige Funktion iwie exportieren und dann in der Entwicklungsumgebung auch extra ansteuern muss, habe ich mir auch schon so gedacht. Aber genau hier liegt der Hund begraben, wie mache ich dies? Und selbst wenn ich nur das close weglasse - sobald die VI-Kette abgearbeitet ist, wird der Ausgang deaktiviert. Dies verhindert eben die While-Schleife, die mich wiederum in der Entwicklungsumgebung stört - Teufelskreis.

Die globale Variable ist dafür da, um zyklisch immer die verschiedenen Werte (Spannung, Strom und Phasenwinkel) dem Kalibrator vorgeben zu können. Die Schleife hat dementsprechend beide Wirkungsfunktionen. Einmal um das close zu verhindern und zum anderen um Werte zyklisch anzupassen.

Rein programmiertechnisch ist der korrekte Ansatz für dein LabVIEW-Testprogramm der selbe wie für dein .NET Programm. Du aktualisierst die Ausgabedaten wenn diese sich ändern und rufst Close auf wenn du das Programm beenden möchtest. Das nach Ende der "VI-Kette" der Ausgang deaktiviert wird, auch ohne Close, liegt vermutlich an einer automatischen Freigabe des Objektes. Ich halte es für eher unwahrscheinlich, dass der ActiveX Treiber dir Ausgabe deaktiviert wenn du nicht zyklisch die Ausgabe aktualisierst.

Das Close als eigenständige Funktion zu exportieren kannst du in einer Buildspezifikation. Kannst du in der Kategorie "Quelldateien" (Source Files) alles einstellen.
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
  Problem bei Datenerfassung: Wert "halten" bzw. zwischenspeichern Mario1989 5 5.446 06.04.2008 07:41
Letzter Beitrag: Achimedes

Gehe zu: