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 

Türme von Hanoi rekursiv programmieren?



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!

17.11.2010, 11:15
Beitrag #11

Crizzel Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Oct 2010

9.0
-
de

72458
Deutschland
Türme von Hanoi rekursiv programmieren?
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ächelnWink).

Weiss hier jemand Rat?

Vielen Dank & Grüße aus Albstadt,
Christoph


Angehängte Datei(en)
Sonstige .vi  LV9_TowerOfHanoi_CS1.vi (Größe: 9,12 KB / Downloads: 159)

Sonstige .vi  LV85_TowerOfHanoi_Original.vi (Größe: 17,81 KB / Downloads: 175)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
17.11.2010, 11:45
Beitrag #12

Martin Heller Offline
LVF-Stammgast
***


Beiträge: 250
Registriert seit: Feb 2010

2011 SP1
2008
EN

5232
Schweiz
Türme von Hanoi rekursiv programmieren?
Hi

versuch mal es mit Format into String-Link

Ich habe mal einwenig mit dem Zeichnen-VI herumgespielt, ist ein sehr trickiges Thema.

LabVIEW-Versionen sind immer so ne Sache, kannst es inlv85oderlv86hochladen, dann könnte ich mal reinschauen...

lg

Edit: meinst du sowas?

Sonstige .vi  StringToDbl.vi (Größe: 5,8 KB / Downloads: 154)

Edit2: sorry,Lv86_img
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.11.2010, 21:55
Beitrag #13

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Türme von Hanoi rekursiv programmieren?
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.
Lv09_img2
Sonstige .vi  LV9_TowerOfHanoi_CS1_2_Integer.vi (Größe: 13,18 KB / Downloads: 173)

   
   
   

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.01.2011, 16:36 (Dieser Beitrag wurde zuletzt bearbeitet: 21.01.2011 14:13 von Y-P.)
Beitrag #14

Crizzel Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Oct 2010

9.0
-
de

72458
Deutschland
Türme von Hanoi rekursiv programmieren?
Hallo Forum!

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 versauenSad

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!!!

Viele Grüße,
Christoph


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .vi  Hanoi_LV9_rekursion.vi (Größe: 1,61 MB / Downloads: 141)

Sonstige .vi  Hanoi_LV9_rekursion_CS_V1.vi (Größe: 96,16 KB / Downloads: 131)

Sonstige .vi  Roboteransteuerung_final_altesProjekt.vi (Größe: 250,61 KB / Downloads: 139)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.01.2011, 08:32
Beitrag #15

Martin Heller Offline
LVF-Stammgast
***


Beiträge: 250
Registriert seit: Feb 2010

2011 SP1
2008
EN

5232
Schweiz
Türme von Hanoi rekursiv programmieren?
' 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 versauenSad

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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.01.2011, 17:05 (Dieser Beitrag wurde zuletzt bearbeitet: 14.01.2011 13:35 von Dennis.Moser.)
Beitrag #16

Crizzel Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Oct 2010

9.0
-
de

72458
Deutschland
Türme von Hanoi rekursiv programmieren?
Hallo Martin,

danke für Deine Antwort.

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 nichtSad

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...

LG
Christoph
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.01.2011, 17:17
Beitrag #17

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Türme von Hanoi rekursiv programmieren?
Hallo Christoph,

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...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.01.2011, 22:40
Beitrag #18

Crizzel Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Oct 2010

9.0
-
de

72458
Deutschland
Türme von Hanoi rekursiv programmieren?
Hallo Gerd,

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 durchSad

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?


Angehängte Datei(en)
Sonstige .vi  TowerOfHanoi_LV2009_versuch3.vi (Größe: 13,83 KB / Downloads: 149)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.01.2011, 09:26 (Dieser Beitrag wurde zuletzt bearbeitet: 12.01.2011 09:27 von GerdW.)
Beitrag #19

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Türme von Hanoi rekursiv programmieren?
Hallo Christoph,

anbei mal eine neue Version (Lv09_img2).

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ätteSmile)

Jetzt musst du noch deine Logik korrigieren, bisher kommt nur konstant "3"/"3" als Ausgabe heraus...


Angehängte Datei(en)
Sonstige .vi  TowerOfHanoi_LV2009_versuch3.vi (Größe: 13,13 KB / Downloads: 152)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.01.2011, 12:47 (Dieser Beitrag wurde zuletzt bearbeitet: 14.01.2011 13:41 von cb.)
Beitrag #20

Martin Heller Offline
LVF-Stammgast
***


Beiträge: 250
Registriert seit: Feb 2010

2011 SP1
2008
EN

5232
Schweiz
Türme von Hanoi rekursiv programmieren?
' 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).

lg
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
  Programmieren im Formelknoten DrHoas 9 12.674 26.06.2021 23:22
Letzter Beitrag: Martin.Henz
  Tic Tac Toe Programmieren OenerSer 3 2.950 11.05.2021 09:26
Letzter Beitrag: OenerSer
  Labview Memory Programmieren OenerSer 5 3.735 27.04.2021 13:05
Letzter Beitrag: GerdW
  Statemachine programmieren… Granit 8 10.779 30.04.2017 16:42
Letzter Beitrag: Granit
  Übersichtliches Programmieren LabVIEW cobain2004 2 4.336 29.10.2015 17:57
Letzter Beitrag: IchSelbst
  Automatischen Ablauf programmieren Freaky29 3 4.966 03.02.2015 11:27
Letzter Beitrag: Freaky29

Gehe zu: