Programmieren einer Funktion unter Melfa Basic IV

  • 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

  • ANZEIGE
  • also möglich ist das.


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


    Haste so eines ?

    Menschen brauchen Roboter, aber auch Roboter brauchen Menschen.

    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.

    >> Abonniere meinen YouTube Roboterkanal <<

  • Hallo,


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


    Gruß, BrabusEV12 :)

  • 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

    Menschen brauchen Roboter, aber auch Roboter brauchen Menschen.

    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.

    >> Abonniere meinen YouTube Roboterkanal <<

    Einmal editiert, zuletzt von Werner Hampel ()

  • 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

    Menschen brauchen Roboter, aber auch Roboter brauchen Menschen.

    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.

    >> Abonniere meinen YouTube Roboterkanal <<

    Einmal editiert, zuletzt von Werner Hampel ()

  • 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.

  • 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:

    Menschen brauchen Roboter, aber auch Roboter brauchen Menschen.

    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.

    >> Abonniere meinen YouTube Roboterkanal <<


  • 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."

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden