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!
So, jetzt bin ich wieder hier. Vielen Dank für die super Antworten und das sehr coole GUI. Damit werden wir noch weiterspielen müssen.
Ich sitze gerade an einem für mich unlösbaren Problem - aber vielleicht kann mir hier jemand weiterhelfen (ich vermute, es ist nichts großes).
Und zwar habe ich mir jetzt das anhängende vi als Basis für die Programmierung hergenommen.
Input sind 3 Strings und Output ein Textfeld.
Ich möchte daraus als Input 3 Integer machen und das Ergebnis in einem Array ablegen.
Denn dieses Array kann ich danach mit Hilfe der Sub-VIs des Roboters auslesen, die entsprechenden Koordinaten abfragen und die Schritte abfahren.
Soweit der Plan. Nur leider bekomme ich es nicht hin, die VI auf Zahlen umzustellen (jetzt dürft ihr mich belächeln).
Du musst als erstes die Elemente als Eingänge des VI definieren. Im Frontpanel oben rechts auf das Sysmbol rechtsklick und "Anschluss anzeigen". Mit dem Verdrahtungswerkzeug kannst du den möglichen Eingängen jetzt Elemente zuweisen. Wenn das gemacht ist ziehst du per Drag&Drop das Symbol in die VI-Rerferenzkonstante. Das ist notwendig, damit "Aufruf über Referenz" die Anschlüsse kennt.
Ich wünsche euch ein schönes neues Jahr!
Danke für die bisherigen Antworten noch einmal - ihr habt mir damit schon sehr weitergeholfen.
Allerdings stehe ich grade immer noch ziemlich doof da. Leider gibt es an unsere Hochschule keinerlei LabView-Ausbildung - und in 3 Monaten jede Woche ein paar Stunden nebenher LV lernen ist so ziemlich unmöglich.
Ich habe jetzt noch zwei Wochen bis zur Abgabe - bis dahin muss das Programm funktionieren oder ich hab ein dickes Problem:(ich hoffe, Ihr könnt mir dabei helfen - ich bin jetzt im letzten Semester und das ist das letzte Projekt im Studium, das darf mir einfach meinen Schnitt nicht versauen
Ich bin immer noch daran, die Werte aus der Rekursion in ein Array zu bringen - und zwar als Double.
Weil ich mir einbilde, dass meine VI vom Roboter das auslesen kann. Aber das ist ein anderes Thema.
Ich habe als Basis das Hanoi_LV9_rekursion.vi genommen. Meine Version ist die Hanoi_LV9_rekursion_CS-V1.vi
Die Anschlüsse habe ich dann umgemodelt auf die entsprechenden Formate, genauso die Eingangswerte.
Ziel ist es, am Ende eine Matrix zu erhalten (2 dimensionales Array ;-)), mit den Werten 1, 2 und 3 (Stange 1 bis 3).
In der ersten Spalte soll die Nummer der Ausgangsstande stehen und in der zweiten Spalte die Nummer der Zielstange [1;3] -> von 1 nach 3.
Das zweite Problem ist die Übergabe an die VI des Roboters. Dazu das bisher vorhandene Programm als Screenshot und als LV-Datei. Falls sich jemand die Denso Library herunterladen möchte, die hab ich mal hier hochgeladen: http://www.mac-vt.de/densolibrary_LV.zip
Der linke Abschnitt ist der Start des Roboters. Das eigentliche VI ist "DENSO Move by Position". Das erhält als Eingang die Bewegungsart (P) und die Variable der Position (53) (die werden im Handbedienteil des Roboters abgelegt und hier nur aufgerufen - das sind die eigentlichen Koordinaten).
"DIO Set Line" ist die Steuerung der I/O - 29 ist Greifer zu und 30 Greifer auf.
Die Herausforderung hier: Übergabe der "Züge" aus dem Eingangs erwähnten Array. Also im Array steht [1;3] also von 1 nach 3 und dann muss die Roboter VI folgendes tun:
Fahre über Stange 1 (Pos. 1), fahre runter an Stange 1 bis zur Scheibe 1 (Pos. 2), Hand auf + zu, fahren hoch über Stange 1 (Pos. 1), fahre zu Stange 3 (Pos. 3), fahren runter an Stange 3 (Pos. 4), öffne Hand.
Das klingt für mich unmöglich komplex.
Hat hier jemand eine Idee?
Wie gesagt, ich bin für jede Hilfe von einem LabView-Experten dankbar!!!
' schrieb:Ich habe jetzt noch zwei Wochen bis zur Abgabe - bis dahin muss das Programm funktionieren oder ich hab ein dickes Problem:(ich hoffe, Ihr könnt mir dabei helfen - ich bin jetzt im letzten Semester und das ist das letzte Projekt im Studium, das darf mir einfach meinen Schnitt nicht versauen
Ich bin immer noch daran, die Werte aus der Rekursion in ein Array zu bringen - und zwar als Double.
Weil ich mir einbilde, dass meine VI vom Roboter das auslesen kann. Aber das ist ein anderes Thema.
Ziel ist es, am Ende eine Matrix zu erhalten (2 dimensionales Array ;-)), mit den Werten 1, 2 und 3 (Stange 1 bis 3).
In der ersten Spalte soll die Nummer der Ausgangsstande stehen und in der zweiten Spalte die Nummer der Zielstange [1;3] -> von 1 nach 3.
Das zweite Problem ist die Übergabe an die VI des Roboters. Dazu das bisher vorhandene Programm als Screenshot und als LV-Datei. Falls sich jemand die Denso Library herunterladen möchte, die hab ich mal hier hochgeladen: http://www.mac-vt.de/densolibrary_LV.zip
Hallo Christoph
Das mit dem Schnittversauen solltest du im Forum nicht erwähnen, denn das Forum ist nicht dafür vorhanden!
Ich habe mich auch mal mit dem Problem TowerOfHanoi beschäftig, habe es aber "nur" aufgezeichnet mit dem "Vorbeispiel" von diesem Threat.
Ich möchte nicht das ganze Projekt hochladen, aber ich kann dir einpaar Bilder hochladen, wie ich die Bewegungen erstellt habe.
Den Algorithmus (Textablauf) bekommst du vom TowerOfHanoiCode.vi, welches auch hier im Threat vorhanden ist.
Dann wandelst den Text so um, dass das Array (z.B. left to right) [1;3] wird: 1 für left, 2 für middle, 3 für right!
Zitat:Fahre über Stange 1 (Pos. 1), fahre runter an Stange 1 bis zur Scheibe 1 (Pos. 2), Hand auf + zu, fahren hoch über Stange 1 (Pos. 1), fahre zu Stange 3 (Pos. 3), fahren runter an Stange 3 (Pos. 4), öffne Hand.
sieht wie ein normaler Ablauf einer Statemachine (Zustandsautomat) aus
lg Martin
11.01.2011, 17:05 (Dieser Beitrag wurde zuletzt bearbeitet: 14.01.2011 13:35 von Dennis.Moser.)
Ich verstehe Deine Bedenken zu meiner Aussage. Ich kann dir versichern, dass ich nicht der Typ "Student" bin, der es sich leicht machen möchte. Im Gegenteil - ich habe bereits ziemlich viele Stunden in das LV-Projekt hier gesteckt. Jedoch gibt es an unserer FH keinerlei Ausbildung in Sachen LV.
Niemand interessiert sich dafür. [gekürzt...]
Und so bleibt mir leider nichts anderes übrig, als mir Hilfe extern zu suchen. Das ist der Grund, weshalb ich hier bin. Und ich hoffe, dass das Forum dafür da ist. Ihr seid die LV-Experten. Ihr habt euch mit Sicherheit schon Ewigkeiten vor mir mit LabView beschäftigt - und ich verstehe es einfach nicht
Den Algorithmus habe ich doch, denke ich (TowerOfHanoiCode.vi finde ich hier nicht).
Ich kann die Ausgabe als String in ein Array hinbekommen, irgendwie. Wenn ich dann den Input in eine Zahl umwandle, habe ich eben lediglich eine Zahl als String, das könnte reichen.
Aber wie bringe ich dann meiner anderen VI bei, dass von 1 nach 3 bedeutet, dass er die besagten zwei Punkte anfährt (bzw. es sind eigentlich 1 + 1 aus 3 (unterschiedliche Höhe durch unterschiedliche Anzahl der Scheiben pro Stande))?
Ich glaube nicht, dass das ein Problem ist, das ich/man so einfach lösen kann...
Zitat:Fahre über Stange 1 (Pos. 1), fahre runter an Stange 1 bis zur Scheibe 1 (Pos. 2), Hand auf + zu, fahren hoch über Stange 1 (Pos. 1), fahre zu Stange 3 (Pos. 3), fahren runter an Stange 3 (Pos. 4), öffne Hand.
Also ich würde das so zerlegen:
Roboterbefehl: Bewege Scheibe Höhe X1 von Stange Y1 nach Stange Y2 und Höhe X2
- Fahre zu Stange Y (als SubVI)
- Fahre zu Postion X (als SubVI)
- Schließe Hand (als SubVI)
- Fahre zu Stange Y (...)
- Fahre zu Pos. X (...)
- Öffne Hand (als SubVI)
Um eine Scheibe zu bewegen, brauchst du also 4 Parameter und 4 SubVIs. Sieht nicht so wahnsinnig kompliziert aus... Die Stangenpositionen sind fest vorgegeben, die Höhenpositionen (bei gleicher Scheibendicke) auch. Also auch nur wenig Rechenarbeit nötig...
bei dem Problem bin ich noch gar nicht angekommen.
Anbei mein Versuch - es geht einfach nicht, das Ding in ein 2-dimensionales Array zu schreiben. Ich weiss nicht, warum ich das nicht schaffe.
Langsam drehe ich durch
Danach muss ich mich dann um die Sache mit den Schritten kümmern.
Es gibt in der Library ja die ganzen Sub-VIs für die einzelnen "Aktionen". Die Frage ist die:
Ich habe ein Array mit Start und Ziel-Nummern drin.
Dieses Array muss das Programm dann auslesen, und wenn z.B. 1 dransteht, in einer anderen Matrix die abzufahrenden Punkte abrufen.
Also fahre über Stange 1 (Pos. 1), fahre an Stange 1 runter zu Platte 1 (Pos. 2). Und wenn da nur noch eine Platte liegt, muss er irgendwoher wissen, dass der Punkt Pos. 2 ein anderer ist. D.h. ich habe dann eine Matrix mit 3 Punkten über den Stangen und 3x3 Punkten für die Platten.
Wie bringt man sowas logisch unter einen Hut?
12.01.2011, 09:26 (Dieser Beitrag wurde zuletzt bearbeitet: 12.01.2011 09:27 von GerdW.)
Solange du deine Zahlen in Strings umwandelst, wirst du immer nur ein 1D-Array of Strings erhalten. Arbeite doch direkt mit den Zahlen weiter, die brauchst du doch später sowieso noch... (Übrigens: um Integers mittels FormatIntoString in einen String umzuwandeln, sollte man %d als Format vorgeben. Der Formatstring gibt immer an, welche Werte man erwartet, und nicht, welche man gerne hätte)
Jetzt musst du noch deine Logik korrigieren, bisher kommt nur konstant "3"/"3" als Ausgabe heraus...
' schrieb:Ich verstehe Deine Bedenken zu meiner Aussage. Ich kann dir versichern, dass ich nicht der Typ "Student" bin, der es sich leicht machen möchte. Im Gegenteil - ich habe bereits ziemlich viele Stunden in das LV-Projekt hier gesteckt. Jedoch gibt es an unserer FH keinerlei Ausbildung in Sachen LV.
Ich wollte dich nicht "angreifen". Hilfe bekommst du hier immer.
Ich weiss wie dies ist, wenn man sich alles alleine beibringen muss....
Wegen den Höhen musst du entweder "vorprogrammiert" die Höhen abfragen (denke aber nur bei 3 Scheiben möglich) oder sonst anfahren (x1), kontrollieren und dann evt. zur nächsten Stufe (x2).