16.01.2009, 14:12
hallo,
ich muss mir zurzeit Gedanken machen, wie ich ein bestimmtes Problem lösen kann. Ich möchte zwei Schleifen (später min 6) unabhängig voneinander also quasi parallel laufen lassen, nach n-Schritten soll eine Synchronisation erfolgen. Die Schleifen sind im Moment innerhalb eines Rahmens einer Sequenzstruktur untergebracht und dienen zur Ansteuerung mehrere Sondenverschiebegeräte mit jeweils zwei Achsen. Hierbei treten nun zwei Probleme auf. Aufgrund der gegegeben Struktur mit Sequenrahmen und einer While-Schleife können entweder alle gleichzeitg losfahren oder immer nur eine manuell pro Schleifendurchlauf. Hier sollen alle manuell und "quasi" parallel ansteuerbar sein (siehe hierzu das angehängte VI -Occurrence). Das viel größere Problem ist, dass es "schnelle" und "langsame" Sonden gibt. Im Moment wird mit jedem Durchlauf zunächst eine bestimmte Position mit der ersten Achse angefahren und im Anschluss die zweite Achse (Winkel) angesteuert. Schnelle Sonden fahren auf eine Höhe und einen Winkel und sind fertig, müssen aber im Moment auf die langsamen Warten, die sich ggf. in n-weiteren Schleifendurchläufen nach bestimmten Parametern ausrichten. In dieser Zeit könnte die schnelle Sonde schon weitere Winkel auf der selben Höhe anfahren, was aufgrund der gegebenen Programmstruktur nicht möglich ist, da darauf gewartet werden muss, dass die langsamen Sonden den Soll-Winkel auch wirklich (in mehreren Schritten, min. 2) erreicht haben. Meine Frage wäre nun, wie kann ich diese Probleme grundlegend am besten ändern. Die einzelnen Sonden müssen in eigenen Schleifen und nicht in einer großen angesteuert werden. Für die Synchronisation nach n-Schritten könnte ich Semaphoren oder Rendezvous-Elemente verwenden? Ich wäre für jeden Tipp dankbar.
In Bezug auf das manuelle und quasi parallele Ansteuern habe ich mich an Occurrence-Elementen versucht und hierbei das Problem, dass ich nur ein Ereignis zur Laufzeit generieren kann und demnach mein Zählbeispiel nicht erneut starten kann?! Des Weiteren kann ich bei dem VI nicht verhindern, dass die While-Schleifen das erste Mal durchläuft.
mfg

[attachment=16172]
ich muss mir zurzeit Gedanken machen, wie ich ein bestimmtes Problem lösen kann. Ich möchte zwei Schleifen (später min 6) unabhängig voneinander also quasi parallel laufen lassen, nach n-Schritten soll eine Synchronisation erfolgen. Die Schleifen sind im Moment innerhalb eines Rahmens einer Sequenzstruktur untergebracht und dienen zur Ansteuerung mehrere Sondenverschiebegeräte mit jeweils zwei Achsen. Hierbei treten nun zwei Probleme auf. Aufgrund der gegegeben Struktur mit Sequenrahmen und einer While-Schleife können entweder alle gleichzeitg losfahren oder immer nur eine manuell pro Schleifendurchlauf. Hier sollen alle manuell und "quasi" parallel ansteuerbar sein (siehe hierzu das angehängte VI -Occurrence). Das viel größere Problem ist, dass es "schnelle" und "langsame" Sonden gibt. Im Moment wird mit jedem Durchlauf zunächst eine bestimmte Position mit der ersten Achse angefahren und im Anschluss die zweite Achse (Winkel) angesteuert. Schnelle Sonden fahren auf eine Höhe und einen Winkel und sind fertig, müssen aber im Moment auf die langsamen Warten, die sich ggf. in n-weiteren Schleifendurchläufen nach bestimmten Parametern ausrichten. In dieser Zeit könnte die schnelle Sonde schon weitere Winkel auf der selben Höhe anfahren, was aufgrund der gegebenen Programmstruktur nicht möglich ist, da darauf gewartet werden muss, dass die langsamen Sonden den Soll-Winkel auch wirklich (in mehreren Schritten, min. 2) erreicht haben. Meine Frage wäre nun, wie kann ich diese Probleme grundlegend am besten ändern. Die einzelnen Sonden müssen in eigenen Schleifen und nicht in einer großen angesteuert werden. Für die Synchronisation nach n-Schritten könnte ich Semaphoren oder Rendezvous-Elemente verwenden? Ich wäre für jeden Tipp dankbar.
In Bezug auf das manuelle und quasi parallele Ansteuern habe ich mich an Occurrence-Elementen versucht und hierbei das Problem, dass ich nur ein Ereignis zur Laufzeit generieren kann und demnach mein Zählbeispiel nicht erneut starten kann?! Des Weiteren kann ich bei dem VI nicht verhindern, dass die While-Schleifen das erste Mal durchläuft.
mfg

[attachment=16172]