19. Januar 2019, 22:02:46
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

 Ausgewählte Positionen anfahren


normal_post Autor Thema:  Ausgewählte Positionen anfahren  (Gelesen 2177 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

30. November 2009, 10:12:16
Gelesen 2177 mal
Offline

Netman86


Hallo,

stehe zurzeit vor folgendem Problem mit meinem Melfa Basic 5-Programm:

Der Roboter hält ein Teil mittels Greifhand in eine Messstation. Die Teile haben alle unterschiedliche Abmessungen. Anhand des Teiletyps muss ich also die richtige (vorher geteachte) Position ermitteln. Das ganze muss also variabel gestaltet sein, denn später können weitere Teile dazu kommen. Deshalb dachte ich an eine Art "Datenbank" oder Datei zum Lesen der Datensätze oder an ein Array mit Positionen. Nur wie kann ich das dann ansprechen? Massig IF oder CASE-Anweisungen sind ja auch nicht gerade elegant. Hat jemand einen Tipp für mich wie ich das Problem lösen kann?  

« Letzte Änderung: 30. November 2009, 10:48:14 von Netman86 »
  • gefällt mir    Danke

Heute um 22:02:46
Antwort #1

Werbung

Gast

Heute um 22:02:46
Antwort #1

Werbung

Gast

30. November 2009, 13:45:28
Antwort #1
Offline

Urmel

Global Moderator
Hallo,


also ich habe schon in mehreren Anwendungen tatsächlich eine Datenbank verwendet, natürlich auf einem zusätzlichen Industrie-PC.

Man kann auch auch dem Roboter Textdateien speichern und mit Input daraus lesen. Allerdings teilen die ihren Speicherplatz mit den Roboterprogrammen, da ist nicht so viel da.

Ansonsten kannst du schon mit Array arbeiten, so in der Art
Mov PStation(Teilnr)und die Auswahl mit Case oder so in einem Unterprogramm (GoSub).

Grüße

  Urmel
  • gefällt mir    Danke

30. November 2009, 14:46:38
Antwort #2
Offline

Netman86


Danke erstmal. Die Situation hat sich nochmal geändert ^^
Und zwar bekomme ich nun den Positionsname direkt als String übermittelt.
Mein bisheriger Code ist somit folgender:

INPUT #1, PMess1, PMess2, PMess3
MVS PMess1
'starte Messung
MVS PMess2
'starte Messung

Manchmal kann es allerdings sein, dass eine Messung entfällt, d.h. das z.b. PMess2 mal ein leerer String ist. Wie könnte ich das jetzt noch prüfen?

Mit
IF PMess2<>"" THEN

bekomme ich einen Fehler.


  • gefällt mir    Danke

30. November 2009, 14:56:06
Antwort #3
Offline

Urmel

Global Moderator
Das kann so gar nicht gehen. Eine Positionsvariable ist kein String.

Ein
Input #1, Px
Mvs Px

erwartet die Koordinaten einer Position als String, nicht den Namen einer Position. Also etwas in der Form "(123.45,456.78,789.01,0.12, 23.45, 67.89)".

Einen Variablennamen kann man in Melfa Basic nicht so übergeben. Das hatten wir hier erst letzte Woche ...
http://www.roboterforum.de/roboter-forum/mitsubishi_roboter/variablennamen_aus_wert_einer_zweiten_variable_zusammenstellen-t6613.0.html
  • gefällt mir    Danke

30. November 2009, 15:12:20
Antwort #4
Offline

Netman86


Wie könnte ich den Variablennamen sonst bekommen?
Ich kann mir also nur die Koordinaten übergeben lassen und in meine Positionsvariable speichern?
  • gefällt mir    Danke

Heute um 22:02:46
Antwort #5

Werbung

Gast

30. November 2009, 15:23:41
Antwort #5
Offline

Urmel

Global Moderator

Du kannst es in Melfa Basic ausprogrammieren. Da ist einiges an Arbeit

Input #1,PositionsName$

For i = 1 To AnzahlDerPositionen

  If ArrayMitNamen$(i) = PositionsName$ Then PositionsNummer = i

Next i

Mvs PositionsKopie(i)


Also zwei zusätzliche Arrays, eines mit Strings und eines mit Kopien der Positionswerte. Beide sind so sortiert, das im Stringarray der Name der Position auf dem gleichen Index steht, wie der Positionswert im anderen Array.

Das ist etwas mühsam, besonders wenn sich die Positionen ändern ...
  • gefällt mir    Danke

30. November 2009, 16:01:12
Antwort #6
Offline

Netman86


Danke, dann werd ich damit mal weiter probieren. Das "$"-Zeichen sagt doch nix andres aus als Zeichenkette oder? An den Stellen aus deinem Code, wo es steht bekomme ich immer einen Syntaxfehler, kann das an Melfa Basic 5 liegen dass er damit nix anfangen kann?

  • gefällt mir    Danke

30. November 2009, 16:06:01
Antwort #7
Offline

Urmel

Global Moderator
Ich hab das nur so runtergeschrieben. Die Variablennamen sollten verständlich sein. Ich glaube sie dürfen auch nicht so lang sein.

Stringvariablen müssen, wenn nicht über Def vereinbart, mit einem C beginnen, numerische mit M.
Also müsste es z.B. CName$ und Mi heißen.
  • gefällt mir    Danke

30. November 2009, 17:17:33
Antwort #8
Offline

Netman86


ok werde morgen weiter probieren. aber dann ist wohl die Variante mit
Mov PStation(Teilnr)

und mehreren CASE-Anweisungen die wesentlich einfacherere(wenn auch unkomfortablere), so mal ich ja mehrere verschiedene Positionen anfahren muss.


« Letzte Änderung: 30. November 2009, 17:32:06 von Netman86 »
  • gefällt mir    Danke

Heute um 22:02:46
Antwort #9

Werbung

Gast


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH