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 

PI Motor



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!

18.08.2008, 11:34
Beitrag #11

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
PI Motor
Gabs ist doch weiblich (laut Profil)?!UnsureBlush

Gruß Markus

' schrieb:Sie?

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2008, 11:51
Beitrag #12

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
PI Motor
' 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 EXTREMPccrash 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

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2008, 11:55
Beitrag #13

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
PI Motor
' schrieb:Gabs ist doch weiblich (laut Profil)?!UnsureBlush

OK...haste recht...ich hab nur nach dem kleinen Icon im Beitrag geguckt...ich dachte "orange" sind männlein und "pink" sind weiblein...aber das ist wohl nur in der User-Übersicht so...

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.08.2008, 11:03 (Dieser Beitrag wurde zuletzt bearbeitet: 19.08.2008 13:43 von Gabs.)
Beitrag #14

Gabs Offline
LVF-Grünschnabel
*


Beiträge: 41
Registriert seit: Jan 2005

7.1 ... 2009
1995
EN

76XXX
Deutschland
PI Motor
Hallo,
also nachdem ja nun die Männlein-Weiblein Frage geklärt ist (gelle? - jetzt sogar mit Avatar, um künftigen Verwechslungen vorzubeugen...) Wink und der Vorschlag, erst das Problem hier zu posten und mir anschließend eine PM zu senden damit ich's mitbekomme (solange es den Suchagenten noch nicht gibt), wirklich gut ist,
hier nun die fachliche Antwort auf Achims Frage.

Deine Vermutung ist ganz richtig. Das Configuration_Setup.vi definiert alle erforderlichen Parameter, die der Treibersatz später benötigt, so auch die Anzahl und Benamsung der angeschlossenen Achsen. Dadurch brauchst Du Dich um irgendwelche Umrechnungsfaktoren, Steigungen, Counts, Signalpegel usw usf. nicht zu kümmern - Du wählst nur die Verstellernamen für die angeschlossenen Achsen und den ganzen Rest macht das VI alles automatisch. Wenn Du in der Entwicklungsumgebung arbeitest, bleiben diese Informationen erhalten, solange LabVIEW bzw. das Configuration_Setup.vi nicht geschlossen werden. Bei der Exe ist das anders - hier wird ja die Runtime beim Beenden der Exe zurückgesetzt und damit sind auch alle Einstellungen weg. Zudem wird damit bei jedem Neustart der Exe eine neue Instanz der (zumindest im Fall der C-843) darunterliegenden DLL erzeugt, so daß auch hier die entsprechenden Informationen verloren gehen.

Zum Hintergrund der Referenzierung:
Die Referenzierungsprozedur ist notwendig, wenn anschließend absolute Bewegungen (MOV) kommandiert werden sollen, ohne dabei Gefahr zu laufen dabei in den Endschalter zu fahren. Dazu muß LabVIEW wissen, an welcher Position sich die Stage momentan befindet. Die Versteller haben dazu entweder Referenz-, oder Limitschalter. Das Configuration_Setup.vi bestimmt automatisch, ob ein Referenzschalter vorhanden ist und nutzt dann das Kommando REF oder FRF, je nach Version. Ist kein Referenzschalter vorhanden, aber dafür Limitschalter, so kann im Configuration_Setup.vi zusätzlich gewählt werden, ob der "rechte" oder "linke" Limitschalter zur Referenzierung genutzt werden soll (Kommandos NLM/FNL, PLM/FPL). Nach einem dieser Schritte kennt die Software die aktuelle Position des Verstellers und ab da kann die Stage absolut kommandiert werden (MOV). Wie gesagt, wählt das Configuration_Setup automatisch die beste Variante.

Dieser Schritt ist jedoch nur zu Beginn der Applikation erforderlich. Wird LabVIEW jedoch geschlossen (bzw. die EXE beendet), wird die Kommunikation mit der Karte neu aufgebaut und damit ist wie oben schon erwähnt auch die Referenzierungsinformation verloren. Wenn der Versteller jedoch dazwischen nicht aus Versehen (oder, bei senkrecht stehenden Verstellern ohne Bremse, aufgrund seines Eigengewichtes) bewegt wurde, kann die Referenzierung beim nächsten Programmstart ausgeschaltet werden, NICHT jedoch das Configuration_Setup komplett übergangen werden (da sonst wie gesagt die restlichen Informationen wie Achsidentifier, Controllername usw. nicht richtig gesetzt werden).

Das macht man so:
- Man verbindet 2 Arrays an die "RON affected axes" und "Reference Mode" Connectoren des Configuration_Setup.vi. (Rechtsklick auf die jeweiligen Connectoren, Create Constant, Anzahl der gezeigten Elemente auf Anzahl der zu kommandierenden Achsen erhöhen). Im "RON affected axes" array schreibt man die Achsen rein, die nicht neu referenziert werden sollen. Das "Reference Mode" array muß dann die entsprechende Anzahl an Elementen enthalten, die auf FALSE (off) zu schalten sind. Bei diesem Aufruf des Configuration_Setup.vi werden dann diese Achsen nicht referenziert und werden NaN als Positionswert zurückgeben.

Nachteil: nun können diese Achsen nur noch relativ bewegt werden mit MVR. Um trotzdem wieder absolut bewegen zu können, kann anschließend (NACH beendetem Configuration_Setup, dazu einfach die Error in und out Leitungen der VIs verbinden) die Position mit POS.vi auf einen bekannten Wert gesetzt werden. Somit wird der Karte gesagt, wo sich der Versteller momentan befindet - wird dabei ein falscher Wert angegeben, so kann der Versteller anschließend natürlich in den Hard Stop gefahren werden, also Vorsicht mit den angegebenen Werten (Details und Warnungen dazu finden sich im GCS_LabVIEW Manual unter POS.vi und RON.vi).

Die beste und einfachste Lösung ist also: Beim 1. Programmstart referenzieren, dann nach der letzten Bewegung vor dem Beenden des Programmes die aktuelle Position auslesen und in ein File abspeichern, beim nächsten Starten das Configuration_Setup mit wie oben beschrieben ausgeschaltener Referenzierung aufrufen, anschließend Positionswerte aus dem File laden und mit POS.vi setzen. Funktioniert natürlich nur, wenn die Versteller zwischendurch nicht bewegt wurden - in dem Fall muß aber beim nächsten Programmstart sowieso neu referenziert werden.

Ich hoffe, das löst Dein Problem auf einfach umsetzbare Art und Weise. Das Filehandling hast Du ja schon implementiert, jetzt brauchst Du es nur noch wie beschrieben anzupassen.
Bei weiteren Fragen einfach fragen Cool
Viele Grüße,
Gabs



' schrieb:OK...haste recht...ich hab nur nach dem kleinen Icon im Beitrag geguckt...ich dachte "orange" sind männlein und "pink" sind weiblein...aber das ist wohl nur in der User-Übersicht so...
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
  Servo-Motor mit Labview ansteuern über Arduino fakeshow 9 16.849 08.02.2017 13:19
Letzter Beitrag: fakeshow
  Motor ausschalten beim Anschlag lola2014 3 5.722 03.06.2014 11:09
Letzter Beitrag: Kasi
  Lego Servo Motor ansteuern ohne NXT FloKun 3 11.652 01.09.2010 08:47
Letzter Beitrag: Y-P

Gehe zu: