Roboterforum Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?
22. Mai 2012, 01:54:14
Übersicht Hilfe Suche Kalender Einloggen Registrieren
News: >> Roboterprogrammierer gesucht !? <<

Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  Adept Roboter (Moderatoren: titan72, Pitl, Wukies)  |  Thema: Emulation Mode 0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Emulation Mode  (Gelesen 442 mal)
Foxx
Neuling
*
Offline Offline

Beiträge: 3


« am: 01. Februar 2012, 17:50:37 »

Hallo,

ich programmiere im Rahmen meiner Bachelorarbeit unter der Verwendung der Software Adept ACE (Version 3.2.2.11)
einen Quattro s650H. Zurzeit noch im Emulation Mode, da der Roboter leider noch nicht betriebsbereit ist.

Momentan beschäftige ich mich mit den Befehlen für die Bildschirmausgabe, also TYPE und PROMPT. Der Befehl TYPE funktioniert auch ohne Probleme, aber mit dem  PROMPT-Befehl habe ich ein Problem. Das Programm läuft einfach weiter, obwohl es auf eine Eingabe warten müsste.

Beispiel:

PROMPT "Zyklen?", zyklen

Ich habe zyklen natürlich vorher auch deklariert.

Also warum funktioniert der PROMPT-Befehl bei mir nicht???
Gespeichert
Sunny
Neuling
*
Offline Offline

Beiträge: 9


« Antworten #1 am: 02. Februar 2012, 17:24:59 »

Hallo Foxx,

das ACE Monitor Fenster emuliert das frühere AdeptWindows Monitor Fenster, stellt allerdings nicht alle Funktionalität zur Verfügung. Für TYPE Befehle zum Debuggen ist es ok aber für Programmsteurung bzw. Werteeingabe würde ich es nicht nutzen. Insbesondere da es wenn es nicht explizit geöffnet ist die TYPE und PROMPT Ausgabe nicht durchführen kann und diese Befehle dadurch überspringen muss.

Da du ACE nutzt kannst du z.B. ein Graphical User Interface Objekt einfügen und dir eine kleines GUI mit ein paar Mausklicks zusammenbauen.
1. Ein eigener Ordner für das GUI ist übersichtlicher.
    Rechte Maustaste im Workspace Explorer und mit "New Folder" einen neuen Unterordner anlegen.
2. User Interface Form Objekt hinzufügen.
    Rechte Maustaste "New -Program - User Interface Form".
3. Ein Label hinzufügen welches als Text "Anzahl Zyklen ?" hat einfügen
    In der User Interface Form aus der "Toolbox" ein Label mit der Maus anklicken und auf die Form ziehen.
    Das Label anklicken und in den Properties unter "Appearance - Text" den Text "Anzahl Zyklen ?" eingeben.
4. Ein Textfeld hinzufügen welches mit der V+ Variablen "Zyklen" verlinkt ist.
    In der User Interface Form aus der "Toolbox" ein Textfeld mit der Maus anklicken und auf die Form ziehen.
    Das Textfeld anklicken und in den Properties unter "Property Links - Item Text" dein "V+ Global Variables" Objekt anklicken und die Variable zyklen auswählen.

Jetzt könnten wir die User Interface Form schon Kompilieren und Ausführen (Compile and Run) und sobald du einen Wert im Textfeld eingibst ändert sich auch der Wert in V+. Allerdings sollten wir das V+ Programm noch leicht modifizieren.
Zum Beispiel:

zyklen = 0
DO
    WAIT
UNTIL zyklen <> 0  ;hiermit warten wir darauf, dass im Textfeld ein Wert ungleich 0 eingegeben wird.

roboter.zyklen = zyklen    ;hat den Vorteil, dass sobald das Programm ausgefuehrt wird eine neue Eingabe im Textfeld unseren Schleifenendwert nicht veraendert
FOR i = 1 to roboter.zyklen   
   ;Roboterzyklus
END


Wenn du die User Interface Form noch etwas verschönern willst kannst du ein Start-Button hinzufügen.
5. Ein Toggle Button hinzufügen welcher mit einer neuen V+ REAL Variablen start.roboter verlinkt ist.
    In der User Interface Form aus der "Toolbox" ein Toogle Button mit der Maus anklicken und auf die Form ziehen.
    Den Toggle Button anklicken und in den Properties unter "Property Links - Item Text" dein "V+ Global Variables" Objekt anklicken und die Variable "start.roboter" auswählen.

Die User interface Form neu kompilieren und ausführen. Wenn du jetzt auf den Button klickst wird in V+ der Wert der Variablen start.roboter auf TRUE gesetzt. Wenn du loslässt wieder auf FALSE. Dein V+ Programm würde sich dann ändern in
zyklen = 0
DO
   WAIT
UNTIL start.roboter == TRUE     ; == TRUE kannst du auch weglassen wenn du moechtest

roboter.zyklen = zyklen    ;hat den Vorteil, dass sobald das Programm ausgefuehrt wird eine neue Eingabe im Textfeld unseren Schleifenendwert nicht veraendert
FOR i = 1 to roboter.zyklen   
   ;Roboterzyklus
END


Ich hoffe ich konnte dir weiterhelfen.


Gruß und viel Spaß
Sunny
Gespeichert
Foxx
Neuling
*
Offline Offline

Beiträge: 3


« Antworten #2 am: 07. Februar 2012, 11:07:31 »

Hallo,

zunächst vielen Dank für deine Antwort Sunny. Ich habe deine Anleitung befolgt und besitze nun ein funktionsfähiges GUI, das den PROMPT-Befehl sozusagen imitiert.

Nun habe ich noch ein paar weitere Fragen. Und zwar arbeite ich, wie vorher schon geschrieben, zurzeit im Emulation Mode und simuliere eine Pick and Place Aufgabe per 3D-Visualisierung. Leider stehen in der 3D-Visualisierung als Objekte nur Boxen und Zylinder zur Verfügung. Meine Frage ist jetzt, ob man vielleicht Objekte, die beispielsweise in Form von CAD-Daten zur Verfügung stehen, in ACE importieren kann. Dies interessiert mich sowohl für die Objekte, die gegriffen werden sollen, als auch für den Greifer selbst. Man kann sich zwar auch selbst einen Greifer generieren, dennoch würde gerne wissen, ob man einen fertigen Greifer integrieren kann.

Außerdem möchte ich gerne wissen, ob es möglich ist, dass sich die Objekte, die gegriffen werden, von der Pick- zur Placeposition mitbewegen. Momentan kann ich halt nur über die Signale mitverfolgen, ob ein Objekt gegriffen oder abgesetzt wird.

Mir ist klar, dass meine Fragen für die reine Programmierung eigentlich unnötig sind. Jedoch möchte versuchen, dass die Simulation optisch möglichst nah an den realen Versuchsstand rankommt.

Im Voraus schon einmal vielen Dank für eure Hilfe!

Gruß,
Foxx
Gespeichert
Sunny
Neuling
*
Offline Offline

Beiträge: 9


« Antworten #3 am: 09. Februar 2012, 17:25:04 »

Hallo Foxx,

ich befürchte viel kann ich dir hierbei nicht helfen.

Mir ist zur Zeit keine ACE Version bekannt welches es erlaubt CAD Daten zu importieren.

ACE erlaubt allerdings den Zugriff auf alle ACE Objekte per C# Scripting.

Ich hab dir einen kleinen ACE Workspace angehängt. Darin findest du ein V+ Programm und ein C# "Programm". Compiliere das C# Programm aus ACE heraus und dann starte das V+ Programm. Du solltest beobachten können wie der Adept Cobra s600 Roboter einen Zylinder aufnimmt und ihn zu einer Ablageposition bringt. Nicht perfekt aber immerhin etwas  Cool

Gruß
Sunny

Gespeichert
Foxx
Neuling
*
Offline Offline

Beiträge: 3


« Antworten #4 am: 23. Februar 2012, 11:36:43 »

Hallo Sunny,

ich habe versucht deinen ACE Workspace so zu ändern, dass er für meinen Quattro s650H verwendbar ist. Leider bekomme ich jetzt, wenn ich das V+ Programm laufen lasse, im C# Programm die Fehlermeldung "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt". Der Programmablauf stoppt dann im V+ Programm "def.schritt" in Zeile 37. Ich habe zwar rausgefunden, dass dann wohl eine Variable null ist und nicht auf ein Objekt verweist, aber leider weiß gar nicht, wo ich im C# Programm suchen soll, da bei der Fehlermeldung keine Zeile angegeben wird.

Außerdem habe ich das Problem, dass im meinen Testprogramm die Befehle DEPARTS und MOVES nicht mehr als V+ Befehle erkannt werden.

Ich habe meinen Workspace mal angehängt. Vielleicht hast du ja einen Tipp für mich.

Gruß
Foxx
Gespeichert
Sunny
Neuling
*
Offline Offline

Beiträge: 9


« Antworten #5 am: 23. Februar 2012, 17:21:16 »

Hallo Foxx,

der Syntax des MOVES und DEPARTS ist etwas anderst als der des APPROS. Oben im Programm ist der MOVES richtig geschrieben.

MOVES position
DEPARTS mm
APPROS position, mm

Der Fehler "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt" war gemein.   Denken
Dein SmartController Objekt hatte am Ende ein Leerzeichen. In C# macht das leider etwas aus. Ich hab es auch erst gesehen nachdem ich das Objekt nochmal in den Script gezogen habe. Hier die richtige und die falsche Zeile (auskommentiert).
                      //IQuattro650 quattro6501 = (IQuattro650) ace["/SmartController /R1 Quattro650"];
         IQuattro650 quattro6501 = (IQuattro650) ace["/SmartController/R1 Quattro650"];

Ich hab dir den Workspace wieder angehängt.

Gruß
Sunny

Gespeichert
Seiten: [1] Nach oben Drucken 
Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  Adept Roboter (Moderatoren: titan72, Pitl, Wukies)  |  Thema: Emulation Mode « vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS