Vision Builder nach LV exportieren: Problem mit Variablen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Module (/Forum-LabVIEW-Module) +---- Forum: LabVIEW Vision (/Forum-LabVIEW-Vision) +---- Thema: Vision Builder nach LV exportieren: Problem mit Variablen (/Thread-Vision-Builder-nach-LV-exportieren-Problem-mit-Variablen) |
Vision Builder nach LV exportieren: Problem mit Variablen - HiWi0815 - 31.07.2012 11:15 Hallo zusammen, ich habe folgendes Problem: Mein Kollege hat mit dem NI Vision Builder ein Bildverarbeitungsprogramm erstellt, welches mit Hilfe einer Kamera die Position eines rechteckigen Objektes auf einer begrenzten Fläche detektiert (also 2-dimensional). Das Objekt hat ein genau definiertes Muster, welches als Bezugspunkt gilt. Anhand dessen werden x-Position, y-Position und der Drehwinkel in der xy-Ebene bestimmt und in globale Variablen geschrieben. Soweit so gut. Ich habe derweil mit LabView2011 ein VI erstellt, dass auf diese 3 globalen Variablen zugreift und einen Roboter exakt auf diese Position mit dem entsprechenden Winkel steuert. Das funktioniert auch alles ohne Probleme in egal welcher Position des Objektes. Da das aber etwas unschön ist, zwei Programme parallel laufen zu lassen bzw. zwei verschiedene Programmfenster geöffnet sind, wollten wir das Programm aus dem Vision Builder nach LabView exportieren und in mein VI integrieren. Dazu gibt es ja die Funktion "Migrate Inspection to LabView", die man auswählen kann und automatisch ein ganzes Netz von VIs erstellt wird. Das Kamerabild haben wir auch ziemlich fix auf mein VI bekommen, allerdings haben wir nun ein großes Problem mit den Variablen: Beim Starten des Programms fährt der Roboter immer eine bestimmte Position an, egal wo das Objekt liegt, d.h. die Bildverarbeitung speichert die Werte nun nicht mehr in die globalen Variablen, auf die unser VI zugreift. Irdgendwo ist das ja auch logisch, weil globale Variablen nicht mehr notwendig sind, da wir ja alles lokal nach LabView exportiert haben. Auf welche Variablen nun zugegriffen wird, ist ja im Endeffekt egal und kann schnell angepasst werden, nur tappen wir komplett im Dunkeln wo und in welchen Variablen die drei Werte nun abgespeichert werden nach dem Exportieren. Wir haben jegliche VIs, die beim Export erstellt wurden, durchsucht und einfach nicht gefunden, wo unsere Variablen reingepackt wurden. Ich weiß, dass es sich recht kompliziert anhört und habe deswegen versucht, das Problem so simpel wie möglich zu erläutern. Weiß auch nicht, inwieweit das Sinn macht die ganzen erstellten VIs des Exports hochzuladen, da es ungemein viele sind. Vielleicht ist ja jemand dabei, der sich mit dem Vision Builder auskennt und weiß, was mit globalen Variablen passiert, wenn man sie nach LabView exportiert. Schonmal vielen Dank! Bin gerne bereit bei Unklarheiten das ein oder andere noch zu erläutern. RE: Vision Builder nach LV exportieren: Problem mit Variablen - Y-P - 01.08.2012 07:14 Das hört sich nicht kompliziert an. Du hast das Problem gut verständlich erklärt. Wenn das nur jeder so tun würde. Mit Vision kenne ich mich aber leider nicht aus. Aber wenn Du VIs erstellen lassen hast, dann kannst Du doch dort nachvollziehen, wohin nun die erfassten Werte geschrieben werden, oder nicht. Kannst Du bitte mal die entsprechenden VIs oder Screenshots dazu hochladen. Gruß Markus (31.07.2012 11:15 )HiWi0815 schrieb: Ich weiß, dass es sich recht kompliziert anhört und habe deswegen versucht, das Problem so simpel wie möglich zu erläutern. RE: Vision Builder nach LV exportieren: Problem mit Variablen - HiWi0815 - 01.08.2012 12:51 Hallo Markus, dachte mir auch, dass das nicht so schwer sein kann das nachzuvollziehen. Der Vision Builder hat ja auch ein Main-VI erstellt, dass auf die ganzen Sub-VIs zugreift. Wollte die Stelle im Blockdiagramm ausfindig machen, an der die Variablen geschrieben werden und mir dieses Sub-VI dann genauer angucken, um die Variablen zu finden. Aber bei meinen bescheidenen LabView-Kenntnissen ist das leichter gesagt als getan Die Werte werden in keinem der VIs angezeigt - es sei denn ich bin ein Blindfisch - daher hab ich versucht, die Blockdiagramme der Sub-VIs nachzuvollziehen, aber auch da bin ich nicht fündig geworden. Ich habe also mal das Main-VI "Bildverarbeitung" und dessen Sub-VIs hochgeladen. Die Variablen heißen "xcamera", "ycamera" und "anglecamera". Einstellungen und Parameter der Variablen habe ich aufindig gemacht, aber die dazugehörigen Werte partout nicht... Vielen Dank schonmal für deine Hilfe! RE: Vision Builder nach LV exportieren: Problem mit Variablen - HiWi0815 - 14.08.2012 12:31 LÖSUNG DES PROBLEMS: Es gab nie wirklich eins, zumindest keins mit den Variablen Die Variablen wurden auch in LabVIEW schön brav an die gleiche globale Stelle gespeichert wie im Vision Builder. Allerdings hat es aus einem anderen Grund nicht funktioniert: Der Vision Builder generiert beim Exportieren in LabVIEW ein Main-VI und viele dazugehörige Sub-VIs. Im Prinzip kann man das Block-Diagramm des Main-VIs einfach in sein Programm kopieren und die Bildverarbeitung sollte ganz normal laufen. Das Main-VI hat allerdings eine Eigenschaft, auf die man aufpassen muss. Öffnet man es und klickt auf "Play", funktioniert alles wunderbar. Um sie zu stoppen, darf allerdings NICHT der Stop-Button von LabVIEW oben links verwendet werden, sondern der Stop-Button der Bildverarbeitung, der sich auf dem VI befindet! Dieser sorgt dafür, dass das letzte Kamerabild gelöscht wird und somit bei einem Neustart die Bildvariable leer ist und mit einem neuen Kamerabild gefüllt werden kann. Beendet man es aber falsch, also mit dem Button in der LabVIEW-Leiste oben links, so wird das Bild nicht geleert und bei einem erneuten Klick auf "Play" funktioniert das VI nicht mehr und es muss geschlossen und komplett neu geöffnet werden. Bei uns war das Problem, dass wir das Block-Diagramm des Main-VIs einfach in unser Block-Diagramm eingefügt haben, ohne darauf zu achten, dass es evtl. falsch beendet wird aufgrund unserer Programmschleife bzw. nicht ordnungsgemäß zurückgesetzt wird. Wir haben nämlich ein Einricht-Programm, dass zu Beginn abläuft, in dem der Roboter das Objekt zunächst in den Kamera-Bereich legt. Parallel lief bereits die Bildverarbeitung, obwohl wir sie noch garnicht brauchten. Nach dem Einrichten stoppt das VI zunächst und die Bildverarbeitung wurde somit falsch beendet und funktionierte beim erneuten Starten, bei dem das Objekt abgeholt werden sollte, nicht mehr. Wir dachten dann, dass die Variablen nicht richtig erkannt bzw. an eine andere Stelle geschrieben werden, dabei lag es daran, dass das Bild nicht geleert war. Lässt man das Einrichten weg und legt das Objekt per Hand in den Kamera-Bereich, funktioniert alles einwandfrei. Mit einer einfachen Case-Structure haben wir dann die Bildverarbeitung beim Einrichten deaktiviert und alles läuft optimal. FAZIT: Bildverarbeitungen vom Vision Builder in LabVIEW zu exportieren ist doch viel einfacher, als man glaubt. Im Endeffekt kann man sagen, dass es super funktioniert |