Roboterforum Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?
08. Februar 2012, 16:35:39
Übersicht Hilfe Suche Kalender Einloggen Registrieren
News: English and international Robotsupport now on Robot Forum. Also Supported by the Moderators of the roboterforum.de

Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  Mitsubishi Roboter (Moderatoren: Werner Hampel, Urmel)  |  Thema: Ansteuerung über LabVIEW 0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: 1 [2] Nach unten Drucken
Autor Thema: Ansteuerung über LabVIEW  (Gelesen 9959 mal)
Urmel
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 743


« Antworten #15 am: 16. Januar 2008, 14:14:16 »

Da fällt mir noch gerade was ein:

Was für eine Betriebssystemversion hat den dein Roboter ?
Eventuell hilft ein Update ...

Gespeichert
vogster
Stammgast
**
Offline Offline

Beiträge: 35


« Antworten #16 am: 16. Januar 2008, 14:53:04 »

Hallo Urmel!

Zitat
"Ich nehme an, der Roboter bleibt in der Zeile mit dem INPUT stehen und wartet ?
(Man kann mit der "CHNG DISP"-Taste auf dem Controller die Zeilennummer anzeigen
lassen.)"

Ja, das ist so korrekt!

Ich werde mir die Thematik mit XRUN, XLOAD jetzt mal anschauen und mich dann an die Umsetzung machen. Da ich das System mehr oder weniger durch "Fernwartung" betreue, kann ich noch keine Tests am Roboter direkt machen. Das kommt dann etwas später.

Die genaue SW-Version kann ich auch deshalb nicht nennen. Sie ist aber vor ca. 6 Monaten von einem Mitsubishi - Techniker aufgespielt worden. Dieses war nötig, um die neue Teachbox (mit Display, irgendwie XX45TB oder ähnlich) betreiben zu können. Der Roboter ist auch erst 1 Jahr alt.

Vielen Dank für die Mühe, Du hast mir sehr geholfen!
Vogster
Gespeichert
vogster
Stammgast
**
Offline Offline

Beiträge: 35


« Antworten #17 am: 23. Mai 2008, 16:38:27 »

Hallo zusammen!

Ich habe in den letzten Tagen den Programmcode für meine neue Schnittstelle LabVIEW -> Roboter fertiggestellt.
Getestet habe ich den Code auch schon, es scheint ganz gut zu klappen. Zumindest sind keine Fehler aufgetreten.
Allerdings war im Test nur ein Roboter direkt über Crosslink mit dem PC verbunden.

Zuerst mein Startprogramm (star.mb4):
Code:
10  'START - PROGRAMM
20  CLOSE
30  DLY 1.0
40  M_00# = 0 ' Startvariable für Unterprogramme
50  M_01# = 0 ' Startvariable für Roboterschritt
60  M_02# = 0 ' Daten für Roboterschritt wurden empfangen
70  M_03# = 0 ' Roboter arbeitet Schritt ab
80  M_04# = 0 ' Zeitmessung aktiv
90  M_05# = 0 ' Satusveriable für die Servos
100 C_00$ = "" ' Variable mit den zu sendenden Daten
110 C_01$ = "" ' Variable mit den eingelesenen Daten
120 C_02$ = "" ' Variable mit den Parametern
130 XLOAD 2, "SSER.MB4"
140 XLOAD 3, "LSER.MB4"
150 XLOAD 4, "SICH.MB4"
160 XLOAD 5, "HAUPT.MB4"
170 DLY 1.0
180 XRUN 2
190 XRUN 3
200 XRUN 4
210 XRUN 5
220 HLT

SSER.MB4 ist für das Senden von Daten zuständig, LSER.MB4 für das Lesen. SICH.MB4 überwacht den kontinuierlichen Datenempfang, im Programm HAUPT.MB4 sind die verschiedenen Roboteraktionen als Schritt hinterlegt.

Hier als erstes das Programm LSER.MB4:
Code:
10  ' LESEN - SERVER
20  DEF INTE LAENGE
30  LAENGE%  = 0
40  OPEN "COM2:" AS #1
50  INPUT #1, C_01$
60  IF C_01$ = "STA" THEN M_00# = 1 ELSE GOTO 90
80  GOTO 50
90  IF C_01$ = "ARB" THEN GOTO 100 ELSE GOTO 120
100 IF M_04# = 0 AND C_02$ <> "" THEN M_01# = 1
110 M_04# = M_04# + 1
120 LAENGE% = LEN (C_01$)
130 IF LAENGE% = 18 AND M_01# = 0 THEN GOTO 140 ELSE GOTO 50
140 C_02$ = C_01$
150 M_02# = 1
160 GOTO 50
Zeile 60: Wenn LabVIEW das Datenwort "STA" sendet, dann fangen die anderen Unterprogramm auf dem Robbi an zu laufen.
Zeile 90: Solange der Roboter die Abarbeitung fortsetzten soll, muss er von LabVIEW das Datenwort "ARB" empfangen. Empfängt der Robbi "ARB" zum ersten Mal, wird im Programm "SICH" die "Zeitmessung" aktiviert. Der Zähler M_04 wird inkrementiert, dazu später mehr.
Zeile 120: Wird weder "STA" noch "ARB" empfangen, dann müssten es Parameter für den Robbi sein. Diese haben von LabVIEW immer die Datenlänge 18.
Zeile 130: Ist die Länge wirklich 18, dann werden die Daten umkopiert und im Programm "SSER" zur Absicherung an LaBVIEW zurückgeschickt.

Hier das Programm SSER.MB4:
Code:
10  ' SENDEN - SERVER
20  IF M_00# = 1 GOTO 30 ELSE GOTO 20
30  OPEN "COM3:" AS #2
40  IF M_03# = 1 THEN C_00$ = "AKTIV" ELSE GOTO 70
50  M_02# = 0
60  GOTO 90
70  IF M_05# = 1 THEN C_00$ = "IDLEON" ELSE C_00$ = "IDLEOFF"
80  M_04# = 0
90  IF M_02# = 1 THEN PRINT #2, C_01$ ELSE GOTO 120
100 DLY 0.5
110 GOTO 40
120 PRINT #2, C_00$
130 DLY 0.5
140 GOTO 40

Zeile 20: Wird "ARB" empfangen, dann startet diese Programm.
Zeile 30: Solange der Robbi arbeitet, wird "AKTIV" gesendet.
Zeile 70: Wenn er nicht arbeitet, dann IDLEON wenn Servos an, sonst IDELOFF wenn Servos off. Der Status wird im Programm "HAUPT.MB4" ermittelt.
Zeile 90: Wenn die Datenlänge 18 war (M_02 = 1), dann werden diese Daten (C_01) gesendet. Wenn nicht, dann wird n
Zeile 120 "IDLEON", IDLEOFF" oder "AKTIV" gesendet.

Hier das Programm SICH.MB4:
Code:
10  'Programm zur Überwachung des Empgangs
20  DEF INTE ZV
30  IF M_04# > 0 AND M_03# = 1 THEN GOTO 40 ELSE GOTO 30
40  ZV% = M_04#
50  DLY 1.0
60  IF ZV% = M_04# THEN GOTO 80
70  GOTO 20
80  SERVO OFF

Zeile 30: Wenn "ARB" empfangen wurde, dann wird der aktuelle Wert von M_04 in ZV gespeichert (Zeile 40).
Zeile 60: Nach einer Pause von einer Sekunde wird verglichen, ob in der Zwischenzeit ein weiteres Mal "ARB" empfangen wurde, ob M_04 sich in der Zwischenzeit geändert hat. Wenn ja, dann ist alles OK und es erfolgt ein Rücksprung. Wenn nein, denn erfolgt ein Sprung in Zeile 80.
Zeile 80: Dieser Befehl ist hier falsch und führt beim Robbi zu einer Fehlermeldung. Dann wird der Programmablauf gestoppt. Hat jemand an dieser Stelle eine bessere Idee?

Hier das Programm HAUPT.MB4:
Code:
10  ' STEUERUNG ROBOTER
20  GETM 1
30  DEF INTE SCHRITT, GESCHW, BESCHLB, BESCHLA
40  IF M_00# = 1 GOTO 100 ELSE GOTO 40

100 M_03# = 0
110 SCHRITT% = 0
120 GESCHW%  = 0
130 BESCHLB% = 0
140 BESCHLA% = 0

200 IF M_01# = 1 THEN GOTO 230
210 M_05# = M_SVO(1)
220 GOTO 200
230 M_01# = 0
240 M_03# = 1
250 SCHRITT% = VAL(MID$(C_02$,2,3))
260 GESCHW%  = VAL(MID$(C_02$,6,3))
270 BESCHLB% = VAL(MID$(C_02$,11,3))
280 BESCHLA% = VAL(MID$(C_02$,16,3))
290 C_02$ = ""

400 IF SCHRITT% =  0 THEN GOTO  100
410 IF SCHRITT% =  1 THEN GOTO  1000
420 IF SCHRITT% =  2 THEN GOTO  2000

999  '*************************
1000 'Schritt 1
1010 OVRD GESCHW%
1020 ACCEL BESCHLB%,BESCHLA%
1030 CNT 0
1040 MOV P1
1045 MOV P2
1050 GOTO 100
1999 '*************************

2000 'Schritt 2
2010 OVRD GESCHW%
2020 ACCEL BESCHLB%,BESCHLA%
2030 CNT 0
2040 MOV P1
2042 MOV P2
2043 MOV P3
2050 GOTO 100
2999 '*************************
Zeile 40: Wenn "STA" empfangen wurde, dann startet diese Programm.
Zeile 200: LabVIEW sendet ARB, dann geht M_01 auf 1, die Abarbeitung eines Schrittes kann beginnen!
Ab Zeile 250: Das 18-stellige Datenwort wird in die Bestandteile Schritt, Geschwindigkeit, Beschleunigungen aufgeteilt.
Ab Zeile 400: Der abzuarbeitende Schritt wird überprüft und dann entsprechend gesprungen.
Zeile 1050 oder 2050: Nach der Abarbeitung gehts zurück zum Start zur Zeile 200 (vorher werden noch Variablen zurückgesetzt ab Zeile 100).


Die Programmierung in LabVIEW ist so, dass bei Timout - Verletzungen die Verbindungen zu Port 10002 (COM2) und zu Port 10003 (COM3) neu aufgebaut werden. LabVIEW sendet Daten im 300ms Takt, so können fehlerhafte Nachrichten kompensiert werden. Der Robbi sendet immer Daten (IDELON, IDLEOFF, AKTIV oder das Datenwort der Form S001G010B+100B-100 (Schritt 1, Geschwindigkeit 10, Beschleunigung Losfahren 100, Beschleunigung Abbremsen 100). Der PC sendet nur, wenn Aktionen anstehen oder weiterlaufen sollen.

Falls wirklich jemand die Lust hat, sich in mein Modell einzudenken, über Kommentare, Tipps, ... würde ich mich sehr freuen.
Falls etwas unklar ist, bitte nachfragen.

Viele Grüße, Dank an Urmel für die Mithilfe und ein schönes Wochenende!
Vogster
Gespeichert
Urmel
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 743


« Antworten #18 am: 23. Mai 2008, 17:21:21 »

Hallo vogster,

danke für Deine Rückmeldung.  blumen

Das sieht doch gut aus. Es ist zwar von der Struktur her anders als meine Programme,
aber ich denke ich verstehe, wie es funktioniert.

Gut finde ich die Aufteilung in mehrere Programme, dass hält das ganze übersichtlich.
In Melfa Basic kann man ja schnell mal den Überblick verlieren.  pfeif

Das ist der Grund warum ich meine Programme immer möglichst klein halte und viel mit dem Steuerungsprotokoll oder der Echtzeitsteuerung arbeite.  Cool

Zu Deiner Frage wegen dem SERVO OFF. Das gibt wahrscheinlich einen Fehler, weil der Task der die Servos ausschalten will, nicht der ist, der die Bewegungen ausführt. Eventuell ist der ERROR Befehl eher das geeignete, damit kann man benutzerdefinierte Fehlermeldungen erzeugen. Abhängig von der Fehlernummer werden auch die Servos ausgeschaltet.

Schönes Wochenende

  Urmel
Gespeichert
Netman86
Stammgast
**
Offline Offline

Geschlecht: Männlich
Beiträge: 45



« Antworten #19 am: 08. Mai 2010, 23:25:40 »

Hole den thread nochmal raus weil ich zu folgendem Zitat ne Frage hab:

"Ich verwende in der Regel mindestens zwei TCP-Verbindungen zum Roboter. Eine zum Programm starten und überwachen mit dem R3-Protokoll und eine zweite mit ausgeschaltetem Protokoll für die PRINT/INPUT-Datenübertragung."

Wie müssen die zwei Verbindungen genau konfiguriert sein? Wir verwenden nämlich bisher fürs Starten des Programms und für Data Link die selbe Leitung (IP), nur haben wir oftmals Probleme damit, deshalb frag ich. Die IP des Roboters ist z.b. 192.168.0.1. und die des PC's 192.168.0.2. Wenn ich jetzt ne extra Leitung nur fürs Starten des MB-Programms einrichten will, müsste die doch auch im 0er Netz sein oder?







Gespeichert
Urmel
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 743


« Antworten #20 am: 09. Mai 2010, 09:41:29 »

Meine Güte, ich meine doch nicht zwei Kabel. Wenn du zwei Internetseiten gleichzeitig aufmachst, nimmst du auch nicht zwei DSL-Anschlüsse.

Ich meine ich nehme z.B. den Port 10001 auf dem Roboter für das R3-Protokoll und den 10002 für den Datalink. Sonst muss ich bei den Antworten vom Roboter ja dauernd sortieren, woher die Antwort kommt.

Mehrere Kabel gibts nur bei RV-SQ mit mehreren Roboterarmen auf einen Q-Bus. Aber da auch nur zwischen den Roboter-CPUs und dem Netzwerkswitch, zu den PCs geht jeweils nur ein Kabel.

Wie äußern sich denn die Probleme ? (Bitte im Zweifelsfalle einen neuen Thread aufmachen.)
Gespeichert
Seiten: 1 [2] Nach oben Drucken 
Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  Mitsubishi Roboter (Moderatoren: Werner Hampel, Urmel)  |  Thema: Ansteuerung über LabVIEW « 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