Roboterforum Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?
09. Februar 2012, 08:09:32
Ü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: Programmieren einer Funktion unter Melfa Basic IV 0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Programmieren einer Funktion unter Melfa Basic IV  (Gelesen 5232 mal)
BrabusEV12
Gast
« am: 29. März 2006, 19:27:08 »

Hallo alle zusammen!!

Ich habe 2 Fragen:
1. Kann mir einer sagen, ob es möglich ist, Funktionen oder Unterprogramme, in denen Argumente übergeben und verarbeitet werden, in Melfa Basic IV zu programmieren?

Wenn das möglich ist, wäre für ein kleines Beispiel zur Demonstration sehr dankbar!

2. Kann man mit MB4 Matrizen erstellen und Rechenoperationen, wie z.B. Multiplikationen, durchführen?
 
Gruß, BrabusEV12
Gespeichert
Werner Hampel
Administrator
Forenjunkie
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1476



WWW
« Antworten #1 am: 31. März 2006, 17:50:25 »

also möglich ist das.

Hab aber leider den Syntax net immer im Kopf, muss da auch im Handbuch nachschaun.

Haste so eines ?
Gespeichert

Roboter sichern die Arbeitsplätze und den Fortschritt der Industrieländer, da sie kostengünstig und qualitativ hochwertig produzieren.
Ohne Automatisierung mit Robotern werden unsere Produkte in Billiglohnländern hergestellt.
BrabusEV12
Gast
« Antworten #2 am: 31. März 2006, 21:26:41 »

Hallo,

ich habe nur das, was man auf der Homepage von Mitsubishi herunterladen kann.
Habe dazu aber leider kein passendes Beispiel gefunden.

Gruß, BrabusEV12 Smile
Gespeichert
Werner Hampel
Administrator
Forenjunkie
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1476



WWW
« Antworten #3 am: 03. April 2006, 12:21:28 »

ja, an Programmbeispielen mangelt es generell.
Aber bei den anderen Roboterherstellern ebenso...

Zur Erklärung, warum selten Roboterprogramme weitergegeben werden ist:
- Die Roboterprogramme gehören unseren Kunden und wir wollen / dürfen sie deshalb nicht veröffentlichen.
- Roboterprogramme zu schreiben benötigt ein bisschen Zeit und muss vor Ort getestet werden.

Ich fang da im Prinzip auch immer von vorne an, so aufwendig is die Programmierung bei Melfa Basic ja eh nicht.

im Prinzip so:

Roboterprogramm 1 mit .mb4 und .pos Datei erstellen:
1.mb
1.pos


Dann in die 1.MB Dein Programm reinschreiben.

Zum Beispiel so:
(schnell zusammenkopiertes altes Programm)

1 '*************************************************************************
2 ' MB4 Beispielprogramm ROBTEC GmbH
3 '*************************************************************************
4 ' letzte Aenderung 03.04.2006 12:30
5 ' Werner Hampel / ROBTEC GmbH
6 ' Tel.: 0871 2763 110 (von 7:00 h - 20:00 h)
7 '*************************************************************************
13 '
14 ' Origin Werte (nach Kalibrierung hier neu eintragen !)
15 '  1.Original 2.aktuell (Datum: 03.04.02)
16 ' D    06U84F    06U5#7
17 ' J1   Z2Y6L6    Z2Y6AL
18 ' J2 YZU@DQ    YZU@DI
19 ' J3 Z2V?@1    Z2V@2D
20 ' J4 Z2OUHK    Z2OTDA
21 ' J5 Z2XNO&    Z2XQ?&
22 ' J6 Z2V8FM    Z2V8LJ
23 '*************************************************************************
24 ' Definition Eingänge
25 '*************************************************************************
26  DEF IO IGETL    = BIT,6  'Eingang Freigabe 1
27  DEF IO ISETL    = BIT,7  'Eingang Freigabe 2
28  DEF IO IGETR    = BIT,8  'Eingang Freigabe 3
30  DEF IO IGOHOME  = BIT,9  'Startbefehl gehe in Homeposition
34  DEF IO IKLEBRDY = BIT,11 'Eingang Station 1 bereit
44 '
98 '*************************************************************************
100 ' Definition Ausgänge
102 '*************************************************************************
104 '
106 DEF IO OSETRDY  = BIT,8  'Ausgang Freigabe 1
108 DEF IO OROBEIN  = BIT,6  'Roboter bereit
110 DEF IO OROBERR  = BIT,7  'Roboter gestört
112 DEF IO OGETRDY  = BIT,5  'Teil 1 geholt
114 DEF IO OROBHOM  = BIT,9  'Roboter in Grundstellung
146 DEF IO OSP1  = BIT,27 'Spanner 1 schließen
148 DEF IO OSP2  = BIT,28 'Spanner 2 schließen

98 '*************************************************************************
100 ' Positionsmerker
102 '*************************************************************************
200 DEF INTE POSI    'Merker letzte Position
201 '            0      Homeposition
202 '            1      vor Homeposition
203 '            10      Applikationspositionen
204 '            100      Vorposition 1
205 '            101    Holen 11
206 '            102    Holen 12
207 '            105    Holen 13
210 '            200    Vorposition 2
211 '            201    Holen 21
212 '            202    Holen 22
213 '            300    Vorposition 3
214 '            301    Holen 31
215 '            302    Holen 32
263 '            600      Position Mülleimer


300 DEF INTE TIMER    'Variable TIMER für Überwachungszeit


999 FINE 220     'Genaue Positionierung fordern
1000 SERVO ON
1005 OVRD 10
1010 GOSUB *INIT    'Variablen initialisieren
1020 IF M_SVO <> 1 THEN GOTO 1020 'Warten bis Servo ON
1030 GOSUB *MUELL
1040 'IF IGRC0O = 0 THEN GOSUB *MUELL 'Wenn ein Greifer nicht offen > zum Mülleimer
1090 NTEIL% = 0
1100 IF IGETL = 1 THEN GOSUB *GETL
1110 IF ISETL = 1 THEN GOSUB *SETL
1120 IF IGETR = 1 THEN GOSUB *GETR
1130 IF ISETR = 1 THEN GOSUB *SETR
1140 IF IGOHOME = 1 THEN GOSUB *GOHOME
1150 GOTO 1100
1196 '
1197 '*************************************************************************
1198 ' Unterprogramm Homeposition anfahren
1199 '*************************************************************************
1200 *GOHOME
1201 CNT 0
1202 FINE 0       'Genaue Positionierung deaktivieren
1203 IF ITROPR = 0 THEN GOTO 1203 'Warten bis Tropschutz rueck
1204 IF POSI% = 0   THEN GOTO 1664
1206 IF POSI% = 1   THEN GOTO 1664
1208 IF POSI% = 10  THEN GOTO 1346
1210 IF POSI% = 11  THEN GOTO 1336
1212 IF POSI% = 12  THEN GOTO 1342
1214 IF POSI% = 100 THEN GOTO 1664
1216 IF POSI% = 101 THEN GOTO 1360
1218 IF POSI% = 102 THEN GOTO 1352
1220 IF POSI% = 103 THEN GOTO 1380
1222 IF POSI% = 104 THEN GOTO 1372
1224 IF POSI% = 105 THEN GOTO 1392
1226 IF POSI% = 200 THEN GOTO 1664
1228 IF POSI% = 201 THEN GOTO 1448
1230 IF POSI% = 202 THEN GOTO 1456
1332 IF POSI% = 600 THEN GOTO 1664
1334 HLT       'Unbekannte Position
1336 GOSUB *TOOL_CV
1338 MVS PKLEBCVV
1340 GOTO 1346
1342 GOSUB *TOOL_CV
1344 MVS PKLELCVV
1346 GOSUB *TOOL_0
1348 MOV PHKLEB
1350 GOTO 1664
1352 OGRC0 = 1      'Greifer auf
1354 GOSUB *TOOL_C0
1356 MOV PBCL0,-10
1358 GOTO 1366
1360 OGRC0 = 1      'Greifer auf
1362 GOSUB *TOOL_C0
1364 MOV PACL0,-10
1366 GOSUB *TOOL_0
1368 MOV PHCL0
1370 GOTO 1664
1372 OGRC2 = 1      'Greifer auf
1374 GOSUB *TOOL_C2
1376 MOV PBCL2,-10
1378 GOTO 1386
1380 OGRC2 = 1      'Greifer auf
1382 GOSUB *TOOL_C2
1384 MOV PACL2,-10
1386 GOSUB *TOOL_0
1388 MOV PHCL2
1390 GOTO 1664
1392 OGRC1 = 1      'Greifer auf
1394 GOSUB *TOOL_0
1396 MOV PHCL1
1398 GOTO 1664
1400 OGRC0 = 1      'Greifer auf
1402 GOSUB *TOOL_C0
1404 MOV PBCR0,-10
1406 GOTO 1414
1408 OGRC0 = 1      'Greifer auf
1410 GOSUB *TOOL_0
1412 MOV PHACR0
1414 GOSUB *TOOL_0
1416 MOV PHCR0
1418 GOTO 1664
1420 OGRC2 = 1      'Greifer auf
1602 GOTO 1700
1604 OGRC2 = 1      'Greifer auf
1606 GOSUB *TOOL_C2
1608 MVS PSETCR2,-10
1610 GOSUB *TOOL_C2
1612 MOV P1SETCR2
1614 GOSUB *TOOL_C2
1616 MOV P2SETCR2
1618 GOSUB *TOOL_0
1620 MOV PHSETCR2
1622 GOTO 1700
1624 OGRCM = 1      'Greifer auf
1626 GOSUB *TOOL_CM
1628 MVS PSETCRM,-10
1630 GOSUB *TOOL_CM
1632 MOV P1SETCRM
1634 GOSUB *TOOL_CM
1636 MOV P2SETCRM
1638 GOSUB *TOOL_0
1640 MOV PHSETCRM
1642 GOTO 1700
1644 OGRCV = 1      'Greifer auf
1646 GOSUB *TOOL_CV
1648 MOV P4SETCRV
1650 GOSUB *TOOL_CV
1652 MOV P2SETCRV
1654 GOSUB *TOOL_CV
1995 '
1996 '*************************************************************************
1997 ' Unterprogramm Clips holen
1998 '*************************************************************************
1999 '
2000 *GETL
2005 GOSUB *GOHOME
2007 OVRD 100
2010 OROBHOM = 0
2016 OTROPFR = 1    'Tropfschutz rueck EIN
2017 IF ITROPR = 0 THEN GOTO 2017 'Warten bis Tropschutz rueck
2018 OTROPFR = 0    'Tropfschutz rueck AUS
2020 IF NTEIL% <> 0 THEN GOTO *ERROR4 'Hat schon Clips geholt
2025 GOTO 2065
2030 *GETR
2040 GOSUB *GOHOME
2042 OVRD 100
2045 OROBHOM = 0
2050 IF NTEIL% <> 0 THEN GOTO *ERROR4 'Hat schon Clips geholt
2051 OTROPFR = 1    'Tropfschutz rueck EIN
2052 IF ITROPR = 0 THEN GOTO 2052 'Warten bis Tropschutz rueck
2053 OTROPFR = 0    'Tropfschutz rueck AUS
2055 GOTO 2105
2065 NTEIL% = 2       'Merker hole linke Clips
2066 IF ICL0RDY = 0 THEN GOTO 2066
2067 IF ICL1RDY = 0 THEN GOTO 2066
2068 IF ICL2RDY = 0 THEN GOTO 2066
2069 IF ICMRDY = 0 THEN GOTO 2066
2070 IF ICVRDY = 0 THEN GOTO 2066
2071 GOSUB *GETCL0
2075 GOSUB *GETCL1
2080 GOSUB *GETCL2
2085 GOSUB *GETCM
2090 GOSUB *GETCVL
2095 GOTO 2135
2100 '
2105 NTEIL% = 1       'Merker hole rechte Clips
2106 IF ICR0RDY = 0 THEN GOTO 2106
2107 IF ICR1RDY = 0 THEN GOTO 2106
2108 IF ICR2RDY = 0 THEN GOTO 2106
2109 IF ICMRDY = 0 THEN GOTO 2106
2110 IF ICVRDY = 0 THEN GOTO 2106
2111 GOSUB *GETCR0
2115 GOSUB *GETCR1
2120 GOSUB *GETCR2
2125 GOSUB *GETCM
2130 GOSUB *GETCVR
2135 OGETRDY = 1      'Meldung Clips geholt
2140 OROBWORK = 0
2145 IF IGETL = 1 THEN GOTO 2145
2150 IF IGETR = 1 THEN GOTO 2145
2155 OGETRDY = 0
2160 RETURN
2195 '
2196 '*************************************************************************
2197 ' Unterprogramm Clips setzen
2198 '*************************************************************************
2199 '
2200 *SETL
2205 IF NTEIL% = 0 THEN GOTO *ERROR5 'Habe keine Clips
2210 GOSUB *KLEBERL
2211 OTROPFR = 1    'Tropfschutz rueck EIN
2212 IF ITROPR = 0 THEN GOTO 2212 'Warten bis Tropschutz rueck
2213 OTROPFR = 0    'Tropfschutz rueck AUS
2217 CNT 1
2218 MOV PVHSET1
2220 MOV PHSET
2225 GOTO 2270
2235 *SETR
2240 IF NTEIL% = 0 THEN GOTO *ERROR5 'Habe keine Clips
2245 GOSUB *KLEBERR
2246 OTROPFR = 1    'Tropfschutz rueck EIN
2247 IF ITROPR = 0 THEN GOTO 2247 'Warten bis Tropschutz rueck
2248 OTROPFR = 0    'Tropfschutz rueck AUS
2251 CNT 1
2252 MOV PVHSET1
2255 MOV PHSET1
2260 GOTO 2295
2270 IF NTEIL% <> 2 THEN GOTO *ERROR6
2275 OROBWORK = 1
2280 GOSUB *SETCLNK      'Setze linke Clips
2285 GOTO 2315
2295 IF NTEIL% <> 1 THEN GOTO *ERROR6
2300 OROBWORK = 1
2305 GOSUB *SETCRECH     'Setze rechte Clips
2315 NTEIL% = 0       'Greifer leer
2320 MOV PHSET1  'Bei Test Kleben ohne Einsetzen auskommentieren
2325 GOSUB *GOHOME 'Bei Test Kleben ohne Einsetzen auskommentieren
2330 OROBWORK = 0
2335 OSETRDY = 1      'Meldung Setzen fertig
2340 IF ISETL = 1 THEN GOTO 2340
2345 IF ISETR = 1 THEN GOTO 2340
2350 OSETRDY = 0
2355 RETURN
2995 '
8995 '
8996 '*************************************************************************
8997 ' Unterprogramm Mülleimer
8998 '*************************************************************************
8999 '
9000 *MUELL
9002 OVRD 20
9004 GOSUB *GOHOME    'Gehe in Homepüosition
9006 OVRD 50
9008 GOSUB *TOOL_0
9010 CNT 0
9012 MOV PMUELL
9014 POSI% =600     'Positionsmerker ROB in Mülleimer
9016 OGRC0 = 1     'Greifer 1 auf
9018 OGRC1 = 1     'Greifer 2 auf
9020 OGRC2 = 1     'Greifer 3 auf
9022 OGRCM = 1     'Greifer 4 auf
9024 OGRCV = 1     'Greifer 5 auf
9051 DLY 0.1
9052 OGRC0 = 0     'Greifer 1 zu
9054 OGRC1 = 0     'Greifer 2 zu
9056 OGRC2 = 0     'Greifer 3 zu
9058 OGRCM = 0     'Greifer 4 zu
9060 OGRCV = 0     'Greifer 5 zu
9087 DLY 0.1
9088 OGRC0 = 1     'Greifer 1 auf
9090 OGRC1 = 1     'Greifer 2 auf
9092 OGRC2 = 1     'Greifer 3 auf
9094 OGRCM = 1     'Greifer 4 auf
9096 OGRCV = 1     'Greifer 5 auf
9196 NTEIL% = 0       'Merker Greifer leer
9198 GOSUB *GOHOME
9200 CNT 1
9202 RETURN
9495 '
9496 '*************************************************************************
9497 ' Unterprogramm Variablen initialisieren
9498 '*************************************************************************
9499 '
9500 *INIT
9501 VERH = 0.01
9502 VERB = 0.6
9503 VERR = 0.3
9504 TIMER% = 0
9505 OKLHSTA = 0    'Kleber H Start  AUS    'Kleber H Start AUS
9506 OKLBSTA = 0    'Kleber B Start AUS
9507 OKLBSTO = 1    'Kleber B Stop
9508 OKLHSTO = 1    'Kleber H Stop
9509 OSP1 = 0       'Spanner 1 schließen AUS
9510 OSP2 = 0       'Spanner 1 schließen AUS
9511 OSP3 = 0       'Spanner 1 schließen AUS
9512 OSP4 = 0       'Spanner 1 schließen AUS
9513 OSP5 = 0       'Spanner 1 schließen AUS
9554 OROBWORK = 0
9556 FINE 220     'Genaue Positionierung fordern
9558 IF IGETL = 1 THEN GOTO 9558 'Warten bis alle Startbefehle auf 0
9560 IF ISETL = 1 THEN GOTO 9558
9562 IF IGETR = 1 THEN GOTO 9558
9564 IF ISETR = 1 THEN GOTO 9558
9565 OVRD 100
9566 OGRC0 = 1     'Greifer 1 auf
9567 OGRC1 = 1     'Greifer 2 auf
9568 OGRC2 = 1     'Greifer 3 auf
9569 OGRCM = 1     'Greifer 4 auf
9570 OGRCV = 1     'Greifer 5 auf
9590 RETURN
9596 '
9597 '*************************************************************************
9598 ' Unterprogramm Überwachungszeit
9599 '*************************************************************************
9600 *ZEIT
9605 DLY 0.1
9610 IF TIMER% = 0 THEN GOTO 9620  'Timer ist schon 0
9615 TIMER% = TIMER% - 1
9620 RETURN
9696 '
9697 '*************************************************************************
9698 ' Unterprogramm Fehlernummer setzen
9699 '*************************************************************************
9700 *ERROR1
9702 OERRB0 = 1   'Fehlernummer 1 GREIFER STÖRUNG
9704 OERRB1 = 0
9706 OERRB2 = 0
9708 HLT
9710 *ERROR2
9712 OERRB0 = 0   'Fehlernummer 2  KLEBER STÖRUNG
9714 OERRB1 = 1
9716 OERRB2 = 0
9718 HLT
9750 *ERROR6
9752 OERRB0 = 0   'Fehlernummer 6 Habe falsche CLIPS
9754 OERRB1 = 1
9756 OERRB2 = 1
9758 HLT
9896 '*************************************************************************
9897 ' Unterprogramm Tooldaten anfahren
9898 '*************************************************************************
9900 *TOOL_0
9902 TOOL (+0.00,+0.00,+0.00,+0.00,+0.00,+0.00)
9904 RETURN
9906 *TOOL_C0
9908 TOOL (+0.00,+0.00,+0.00,+0.00,+0.00,+0.00)
9910 TOOL (-22.00,-82.00,+130.00,+15.00,+0.00,+72.00) 'Clip 0
9912 RETURN
9914 *TOOL_C1
9916 TOOL (+0.00,+0.00,+0.00,+0.00,+0.00,+0.00)
9918 TOOL (+72.00,-45.00,+90.00,+0.00,+0.00,+144.00) 'Clip 1
9920 RETURN
9922 *TOOL_C2
9924 TOOL (+0.00,+0.00,+0.00,+0.00,+0.00,+0.00)
9926 TOOL (+72.00,+45.00,+90.00,+0.00,+0.00,-144.00) 'Clip 2
9928 RETURN
9930 *TOOL_CM
9932 TOOL (+0.00,+0.00,+0.00,+0.00,+0.00,+0.00)
9934 TOOL (-22.00,+90.00,+85.00,+0.00,+0.00,-72.00) 'Clip Metall
9936 RETURN
9938 *TOOL_CV
9940 TOOL (+0.00,+0.00,+0.00,+0.00,+0.00,+0.00)
9942 TOOL (-100.00,+0.00,+110.00,+0.00,-30.00,+0.00) 'Verbinder
9944 RETURN
Gespeichert

Roboter sichern die Arbeitsplätze und den Fortschritt der Industrieländer, da sie kostengünstig und qualitativ hochwertig produzieren.
Ohne Automatisierung mit Robotern werden unsere Produkte in Billiglohnländern hergestellt.
tam
Neuling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 4



« Antworten #4 am: 15. Mai 2006, 21:07:26 »

Hallo,

Zu 1.) Unterprogramme mit Parametern aufrufen siehe PCALL
Zu 2.) Matrizen sind zweidimensionale Arrays, das geht problemlos. Die Rechenoperationen lässt Du dann mit einer Schleife "durch das Array" laufen.
Gespeichert
Werner Hampel
Administrator
Forenjunkie
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1476



WWW
« Antworten #5 am: 19. Mai 2006, 10:23:56 »

jo, TAM is nun ein echter Mitsubishi Spezialist.  applaus
Kennt schon mehr Befehle wie ich  kopfkratz

Wir kämpfen grad gemeinsam an einer recht kniffligen Aufgabe mit einem RP 1-AH.

Hoffe, nächste Woche schaffen wirs  supi
Gespeichert

Roboter sichern die Arbeitsplätze und den Fortschritt der Industrieländer, da sie kostengünstig und qualitativ hochwertig produzieren.
Ohne Automatisierung mit Robotern werden unsere Produkte in Billiglohnländern hergestellt.
tam
Neuling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 4



« Antworten #6 am: 20. Mai 2006, 19:41:50 »

jo, TAM is nun ein echter Mitsubishi Spezialist
Jetzt übertreib mal nicht so maßlos.

Zitat
Hoffe, nächste Woche schaffen wirs  supi
Wir müssen erst noch das Transportband für die Trackinggeschichte umbauen, Vielleicht kannst Du bei Mitsubishi mal wegen diesem calibration jig nachfragen:

(Zitat aus dem tracking manual)
"Also, a calibration jig is required to teach the robot the positions on the conveyor. This jig can be made by the customer, or can be loaned from us if requested. If the customer wishes to loan the jig from us, please contact our dealer."
Gespeichert
Seiten: [1] Nach oben Drucken 
Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  Mitsubishi Roboter (Moderatoren: Werner Hampel, Urmel)  |  Thema: Programmieren einer Funktion unter Melfa Basic IV « 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