Jump to content

Andu

Members
  • Gesamte Inhalte

    17
  • Benutzer seit

  • Letzter Besuch

Andu's Achievements

Newbie

Newbie (1/14)

0

Reputation in der Community

  1. Hallo, also mir wäre ein genaueres Bricklet lieber. Für meine Anwendung (die Arbeit) ist mir dann auch der Preis egal, kann aber nachvollziehen das für andere der Preis wichtiger ist. Zum Messbereich sollen halt die standartmäßigen 0-10V sein. Gruß Andu
  2. Hallo alleine, was genau hast du denn vor? Das Beispiel "Robuster Ansatz" stellt nach einem Verbindungsabbruch automatisch eine neue Verbindung her. In VB.net hast du ja deine Userform, wenn du, während dein Programm läuft, die Verbindung verlierst könnte man das ganze in einem Try-Catch Block machen. Der Spring dann, bei verlorener Verbindung, in den den Fehler Zweig und stellt eine neue Verbindung her. Aber ob das Sinn macht hängt natürlich davon ab was du anstellen willst. Gruß Thomas
  3. Immer her mit den Tipps^^ das mit dem Is und IsNot kannte ich noch nicht, hab mich nur immer gewundert warum der Compiler zweimal in den Get-Zweig der Property reinspringt... If Not Portal.inBewegung AndAlso i <= 5 Then ... ist also die Lösung Den Stringvergleich benötige ist eigentlich erst später für die Anwendung da ich dort mind. sieben Positionen habe die ich immer wieder anfahren muss. Da hab ich gedacht wenn meine Psotitionen Klartext Namen haben lässt sich der Code einfacher lesen. Der Punkt mit den Umlauten geht an dich^^ Das ANDALSO hab schonmal gesehen, macht aber hier Sinn ja, danke.... Ich habe aber schon wieder das nächste Problem: Wenn ich jetzt im Dauertest die drei Achsen immer wieder hin und her fahren lasse, verliert der PC irgendwann (bis her bei 15,27 und 99 Durchläufen) die Verbindung zum Master. Im BrickViewer kann ich sehen wie alle Bricks verschwinden, dann kommt nur der Masterbrick wieder (die drei Stepper fehlen), nach einier Zeit warten sind aber auch die Stepper wieder da. Die Versorgungsspannung am Step Down ist stabil, die Temperaturen der einzelnen Bricks ist im Bereich von 50°C(gemessen auf dem Kühlkörper). Induktive Lasten (wo das Problem bei einigen im Forum ja schon auftrat) werden nicht geschaltet. Jemand noch eine Idee was einen Reset auslösen kann? MFG
  4. So um das Thema hier mal zu schließen meine Lösung die funktioniert (ganz ohne Sleeps und DoEvents^^) zum starten des ganzen: i = 0 Portal.Bewege(Länge_X, 20000, Länge_Y, 20000, Länge_Z, 20000) schickt das Portal los und aktiviert den Callback im Event wird dann Entschieden in welche Richtung gefahren werden soll und wie oft noch gefahren wird: If Portal.inBewegung = False And i < 20 Then If Position = "Anfang" Then Position = "Ende" i += 1 Portal.Bewege(0, 20000, 0, 20000, 0, 20000) Else Position = "Ende" i += 1 Portal.Bewege(Länge_X, 20000, Länge_Y, 20000, Länge_Z, 20000) End If End If jetzt kann der Dauertest kommen. Danke für eure Hilfe
  5. Hi Jörg, danke erstmal für die Tipps, ich hab zwar noch keine Ahnung was du mir sagen willst aber ich denke mit den Stichworten und Google, MSDN und ein paar Bücher komm ich da hoffentlich schon weiter... Das DoEvents für .NET schlecht sind weiß ich das war auch eigentlich mehr Verzweiflung. Das mit den Invokes hab ich schon gemacht um auf dem GUI einen Radio Button anzusprechen der mit anzeigt ob sich das Portal noch bewegt. Jetzt nochmal für mein Verständnis: Du meinst also das meine Schleife den Hauptthread blockiert (wegen DoEvents) und deswegen der Hauptthread sozusagn das Event "Position Reached" der einzelnen Motoren verpasst? Gruß Andu
  6. Mit gleichzeitig meine ich nicht parallel, die 1ms stört micht nicht. Im Moment bewegt sich zB. die Y-Achse erst wenn die X-Achse an ihrer Zielposition angekommen ist. Obwohl alle drei Achsen nacheinander angesprochen werden. Ja du liest den Code richtig, nachher in der Anwendung muss ich auf Daten von Messgeräten warten und dann mit der Achse wieder verfahren, da ich aber je nach Probe zu einer anderen Position muss kann ich das nicht über ein Event machen (glaube ich). Ich verstehe bei deinem Vorschlag nicht genau wie du den Code in eine erneute Prüfung der If-Abfrage zwingst wenn er einmal da angekommen ist.
  7. @Nic: Genau das mache ich in den Motorklassen, ich habe für jeden Motor eine Variable Motor.inBewegung, für Portal.inBewegung werde die einfach or verknüpft. Mein Problem ist auch nicht das die Schleife nicht 5 mal ausgeführt wird, sondern das die Achsen sich nicht gleichzeitig bewegen sondern nacheinander. Das ist im ersten Posting wohl nicht ganz deutlich geworden sorry. Also alle Achsen bewgen sich 5 mal hin und her aber halt nicht gleichzeitig.
  8. Mit Portal.inBewegung frage ich genau diese Callbacks ab, der Wert wird nur True wenn alle Motoren ihre Position erreicht haben. Die Sleeps sind da auch nur aus Verzweiflung drin, falls einer von den Callbacks verschluckt wird oder so. Eigentlich wollte ich die leere Schleife durchlaufen bis dieser Wert True ist.
  9. Das längste was ich getestet hab waren 1000ms, werde morgen mal etwas längeres testen. Nein hatte bishern ur ein DoEvents in der Schleife, auch das werde ich morgen früh gleich testen. Danke schonmal Update: So 5sec Pause und ein DoEvents vor und nachher ändern auch nichts an meinem Problem...
  10. Hallo, ich arbeite gerade an einer Art 3-Achs Portalroboter für ein Probenhandling. Dabei wird für jede Achse mit einem Schrittmotor über eine Gewindespindel auf einer Linearführung verschoben, dass ganze wird mit einem Stepperbrick gesteuert. Ich habe also einen Stapel aus PowerSupply, darüber einem Master und dann drei Stepper Bricks. Am Master sind noch zwei Joysticks und an jeweils einem Stepper ein I/O Bricklet um die Endschalter auszulesen. Die Programmierung funktioniert soweit ich habe nur ein Problem: Wenn ich alle drei Motoren gleichzeitig in einer Schleife immer wieder hin und her fahren lasse (sollte ein Dauertest werden, ob irgendetwas warm wird) bewegt sich das Portal beim ersten Durchlauf wie gewünscht. Danach bleibt immer eine Achse stehen oder fährt nicht genügend Schritte. Welche Achse das ist ist leider nicht reproduzierbar. Hier mal der dazugehörige Programmcode: For n = 0 To 5 Portal.Bewege(Länge_X / 10, 20000, Länge_Y / 10, 20000, Länge_Z / 10, 20000) Do While Portal.inBewegung = True Application.DoEvents() Loop 'MsgBox("hin") Threading.Thread.Sleep(500) Portal.Bewege(0, 20000, 0, 20000, 0, 20000) Do While Portal.inBewegung = True Application.DoEvents() Loop 'MsgBox("zurück") Threading.Thread.Sleep(500) Next zur Erklärung: Portal.Bewege ist selbst geschrieben und übergibt die Anzahl der Schritte und die Geschwindigkeit an den jeweiligen Motor, das ganze für alle drei Achsen. Portal.inBewegung wird über die Callbacks gesteuert und wird auf False gesetz sobald alle Achsen ihre Zielposition erreicht haben. Wenn ich wie im Beispiel eine MassageBox einbaue läuft alles wie gewollt. Die Pause zwischen den Schritten lös das Problem allerdings nicht. Habe ich jetzt Programm technisch etwas falsch gemacht, oder kommt der Master mit der Kommunikation mit den Steppern nicht hinterher? Vielen Dank fürs lesen und für eure Tipps Andu
  11. ArcaneDraconum und Nic beide richtig das hab ich vor. Sowas wir die Stepper grupieren meinte ich, dann muss halt die kompliziertre mechanische Lösung her. Danke an alle
  12. Na das ist ja schonmal eine Ansage. Dann werd ich mal was basteln um das zu messen und dann berichten... Andu
  13. Hi, hast du denn Erfahrungen damit ob die Verzögerung immer gleich ist?. Andu
  14. Hallo, für das Projekt was ich im Moment bearbeite, brauche ich die Mechanik einer Protalfräse (ich bewege aber nur Proben unter einem Gramm Masse), nur das die X -Achse bei mir ca. 3m Verfahrweg haben muss. Die Z und Y Achse haben ich mit jeweils einem Schrittmotor und einem Spindelantrieb konstruiert. Bei der X- Achse habe ich allerdings das Problem, dass durch die Länge der Y- Achse (500 mm), ich entweder Lineaführungen verwenden muss die eine höhere Steifigkeit haben und damit enen höheren Verschiebewiderstand, was mich zu stärkeren Motoren bringen würde (was ich gerne vermeiden würde). Oder aber ich steuer beiden Seiten der X-Achsen Linearführung mit einem Motor an, dieses müssten dann aber um mechanische Belastungen zu vermieden synchron laufen. Hat da jemand schonmal Erfahrungen damit gemacht wie synchron man Motoren in einen Stapel ansteuern kann oder gibt´s spezielle Befehle für Java (die ich noch nicht gefunden habe) um mehere Motoren gleichzeitig laufen zu lassen zur Verdeutlichung noch ein Bild eines ähnlichen Aufbaus: Vielen Dank Andu
  15. so Problem gelöst. Danke das nenn ich mal fix. andu
×
×
  • Neu erstellen...