' schrieb:Generell: wenn Fragen zur LabVIEW-Ansteuerung von Komponenten von PI (Physikinstrumente) auftreten, könnt Ihr mich auch gerne direkt per PN kontaktieren, da ich aus Zeitmangel recht selten nach entsprechenden Postings suche.
Da will ich doch gleich mal die Gelegenheit nutzen...
Wie schon gesagt, arbeiten wir hier an nem Prüfstand mit der C-843 und einem XYZ-Achsensystem (M-531.PD, M531.PD, M-531.DDP). Im Handbuch steht, das man das "C843_Configuration_Setup.vi" beim Start der eigenen Applikation aufrufen soll. Schön...wenn ich das mache, muss ich aber bei jedem Programm-Neustart meine Achsen referenzieren, da diese Information dann verloren geht...
Gut, hab ich mir gedacht, mach ich eine einmaliges "Auto-Setup" beim Neustart des Rechners. Dazu hab ich mir ne kleine Applikation geschrieben, die mir eine Dummy-Datei über den Aufruf im Autostart von der HD löscht. In meiner eigentlichen Applikation frage ich dann das Vorhandensein dieser Datei ab. Nach einem Neustart des PC ist die Datei weg, also soll ein Setup der Achsen durchgeführt werden. Bei diesem Setup sorge ich dafür, dass die Datei erzeugt wird. Wird meine Applikation geschlossen/beendet und später noch mal gestartet (ohne PC-Neustart) ist die Datei vom vorherigen Setup noch vorhanden und ein weiterer Setup ist nicht nötig, damit geht mir auch die Referenzierung nicht flöten.
Leider ist es nun aber so, dass das nur in Entwicklungsumgebung funktioniert! Wenn ich eine Exe aus meiner Appliktion mache, sagt mir eine beliebige Funktion aus der GCS-Bibliothek "Fehler 100 Commanded axes not connected 123".
Ich bin folgendermaßen vorgegangen:
1. PC gestartet
2. Im Autostart eine Batchdatei aufgerufen, diese löscht erst die leere Dummy-Datei "config.pi" von der Festplatte und startet danach meine Applikation "Pruefstand.exe"
3. Innerhalb der Pruefstand.exe wird geprüft, ob "config.pi" vorhanden ist. Wenn nicht, wird ein Auto setup durchgeführt inkl. Erzeugung von "config.pi", und danach eine Referenzierung der Achsen
4. Alles läuft prima...
5. Irgendwann beende ich Pruefstand.exe, fahre aber weder nen PC runter noch schalte ich die Spannungsversorgung der Achsen aus
6. Neustart von Pruefstand.exe...die Datei "config.pi" ist noch vorhanden (da nicht über Batch-Datei gelöscht)...folglich wird der Setup nicht durchgeführt und - wichtig -ich muss deshalb auch nicht neu referenzieren (was "ewig" dauert und die Achsen natürlich von der vorhergehenden Position wegfahren)
7. Beim ersten Aufruf einer beliebigen Funktion (z.B. "move relative" MVR) kommt dann aber besagte Fehlermeldung...
Wenn ich die ganze Geschichte aber in der LV-Entwicklungsumgebung mache, dann funktioniert es.
1. siehe oben
2. Start von "Pruefstand.vi"
3. s. o.
4. s. o.
5. Beenden von "Pruefstand.vi", aber nicht von LabVIEW.exe, PC bleibt an, Spannung bleibt an
6. Neustart von "Pruefstand.vi", Setup wird nicht durchgeführt und eine Referenzierung ist nicht nötig
7. Aufruf von MVR...alles läuft prima!
Ich habe den Verdacht, das der Controller auf der C-843 irgend ein Handle zur aufrufenden Applikation erzeugt und dies nur für diese spezifische Instanz der Applikation gültig ist und dann auch nur "Befehle" aus dieser Instanz (mit der auch der Setup durchgeführt wurde) als "gültig" erkannt werden. Wird eine neue Instanz geöffnet, hat er keinen Bock mehr. Darum funktionierts wohl auch in der Entwicklungsumgebung, weil die LabVIEW-Instanz ja die gleiche ist (LV wurde ja nicht beendet, sondern nur mein VI).
Ist das so? Kannn man das irgendwie umgehen? Es ist nämlich wirklich EXTREM
lästig, wenn man jedes mal neu referenzieren muss...Ich hab jetzt mal vor dem Beenden meiner Applikation eine nochmalige Abfrage eingebaut, ob wirklich beendet werden soll, damit der User wenigstens noch ne kleine Warnung hat, bevor er zwangsläufig beim Neustart wieder referenzieren muss...
Gruß
Achim