1. Dashboard
    1. Dashboard
    2. Suche
  2. Forum
    1. Unresolved Threads
  3. Members
    1. Recent Activities
    2. Users Online
    3. Team
    4. Search Members
  4. Jobs
  5. Articles
  6. Calendar
    1. Upcoming Events
    2. Map
  7. Shop
    1. Orders
    2. Shipping Costs
  • Login or register
  • Search
Roboterprogrammierer finden
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Events
  • Files
  • Products
  • More Options
  1. Roboterforum.de - die Industrieroboter und Cobot Community
  2. Forum
  3. Industrieroboter Support
  4. KUKA Roboter
Your browser does not support videos Handwerk automatisieren - ich schaffs mit KUKA
besuche unseren Partner
Roboterschulung Online
Online Roboterschulung
Werbung schalten Roboter
Advertise in Robotics
Der Roboterkanal
Deutscher Robotikverband
Werben in Robotik
Werben für Robotik

Frame im Unterprogramm als Basis nutzen

  • Lukas Braun
  • November 7, 2023 at 9:57 AM
  • Thread is Resolved
  • Lukas Braun
    Points
    65
    Posts
    11
    • November 7, 2023 at 9:57 AM
    • #1

    Hallo zusammen,

    Ich brauche nochmal eure Hilfe.
    ich möchte einen berechneten Frame als Basis verwenden. Aktuell ist es so, dass ich die Basis die ich berechnen möchte, immer wieder überschreibe.

    BASE_DATA[Base_Nr] = CALCBASE(Ursprung, PunktX, PunktY)
    BAS(#Base,Base_Nr)

    Schöner wäre es aber, wenn ich einen FRAME berechne:

    DECL FRAME Basis_Neu
    Basis_Neu = CALCBASE(Ursprung, PunktX, PunktY)

    Und diesen dann verwende:
    BAS(#Base,Basis_Neu)

    Kann ich einen Frame Zeitweise als Basis verwenden? Und wie gebe ich das dann an?

  • Schritt für Schritt zum Roboterprofi!
  • Online
    Sliwka
    Reactions Received
    33
    Points
    708
    Posts
    134
    • November 7, 2023 at 10:28 AM
    • #2

    Basis_Neu = CALCBASE(Ursprung, PunktX, PunktY)

    BASE_DATA[2] = BASE_NEU

    BAS(#Base,2)

    Hoffe verstehe dein Problem richtig, aber so sollte es gehen

    Kannst die Bases/Frames immer zuweisen, wie du es brauchst.

    zB.
    IF XXX THEN

    BASE_DATA[2] = BASE_DATA[BaseNr]

    ELSE

    Basis_Neu = CALCBASE(Ursprung, PunktX, PunktY)

    BASE_DATA[2] = BASE_NEU

    ENDIF

  • Lukas Braun
    Points
    65
    Posts
    11
    • November 7, 2023 at 10:36 AM
    • #3

    Sorry, meine Erklärung war nicht Ideal.

    Naja, ich möchte ja den Frame als Base verwenden. Also die BASE_DATA[] gar nicht überschreiben. (Zumindest nicht in dem Programm)

    Bisher ist es also so gemacht worden:

    DECL FRAME Basis_Neu

    Basis_Neu = CALCBASE(Ursprung, PunktX, PunktY)

    BASE_DATA[1] = Basis_Neu

    BAS(#Base,1)

    Jetzt steht in 1 meine neue Basis drin, mit der ich nun verfahren kann. Läuft bei CALCBASE aber etwas falsch, dann stehen die falschen Daten auch drin.

    Daher möchte ich direkt im FRAME verfahren, ohne die BASE_DATA[] zu beschreiben.

    DECL FRAME Basis_Neu

    Basis_Neu = CALCBASE(Ursprung, PunktX, PunktY)

    BAS(#Base,Basis_Neu)

  • Online
    Sliwka
    Reactions Received
    33
    Points
    708
    Posts
    134
    • November 7, 2023 at 11:19 AM
    • #4

    Ein Roboter brauch eine Base, auch wenns ein Nullframe ist.

    Dann musst du prüfen, ob deine Baseberechnung plausibel ist, bevor du diese zuweist.

    zB durch Eingrenzungen:

    IF Base_Neu.x > 5000 ... THEN

    Fehler

    WAIT FOR FALSE

    ENDIF


    Was hast du denn generell vor?

    Reicht dir eine Base Schiebung? Durch einen Doppelpunktoperator?

  • Lukas Braun
    Points
    65
    Posts
    11
    • November 7, 2023 at 12:45 PM
    • #5

    Mithilfe eines Programms möchte ich mir eine neue Basis einmessen.

    BASE_DATA[BaseNumber] = TEACHBASE(BaseNumber, ToolNumber,....)

    In dem Programm soll der Roboter jedoch Verfahren werden. Um es mir etwas leichter zu machen, berechne ich zunächst eine grobe Basis und schiebe mir die dann zurecht, bis sie exakt wird.

    Eigentlich möchte ich mir aber die BASE_DATA eben erst überschreiben, wenn das Programm durch ist. Um den Roboter zu Verfahren möchte ich aber auf die groben Basen zugreifen. Bricht das Programm aber zwischendurch ab, so ist eine der groben Basen hinterlegt.

    Klar brauche ich immer eine Basis, diese ist jedoch im Aufbau auch nur ein Frame. Dementsprechend könnte es ja sein, das ich statt einer Basis eben direkt einen Frame nutzen kann.

  • fubini
    Reactions Received
    73
    Points
    4,728
    Trophies
    2
    Posts
    924
    Location
    München
    • November 7, 2023 at 12:51 PM
    • #6
    Code
    $BASE = "Was für ein Frame auch immer du verwenden willst". 

    Also z.B.

    Code
    $BASE = {X 0.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0} 

    setzt das Base auf die Welt (oder $NULLFRAME wenn du so willst). Schau dir einfach mal den Code im bas.src an. Da steht genau drin was bei dem Aufruf BAS(whatever) passiert.

    Funktioniert solange es sich um ein statisches Base handelt, dass also fest im Raum stehen bleibt.

    Sobald du auf einem bewegten Base unterwegs bist (z.B. auf einem Base, dass sich mit einem Dreh-Kipptisch mitbewegen soll) musst du EK(...) verwenden. Bei Roboteam wäre es LK(...) und bei Conveyor EB(...).


    Fubini

  • Programmiersklave
    Reactions Received
    104
    Points
    6,299
    Posts
    1,203
    About Me

    neuerdings freigelassen

    Location
    märk. Sauerland
    Occupation
    Roboter- und SPS-Programmierer
    • November 7, 2023 at 3:52 PM
    • #7

    Bitte beachten: wenn Du $BASE direkt überschreibst (was problemlos funktioniert) geht bei den jüngeren Systemen (weiss nicht ab welcher Version) das Teachen in diesem Base nicht mehr. Es wird dann nicht in dem gleichen Frame geteacht, wie der, in dem gefahren wird, was unter ExpertTech u. U. gefährlich wird.

    Je nachdem, was Du vorhast, ist es daher die bessere Idee, BASE_DATA[16] oder so als temporäres Berechnungsergebnis zu überschreiben und das dann zu verwenden, auch wenn es ein Schritt mehr ist.

    Automatisierung mit dem geflügelten Walross aus dem Sauerland

  • Lukas Braun
    Points
    65
    Posts
    11
    • November 7, 2023 at 4:31 PM
    • #8

    Vielen Dank fubini,

    Das hatte ich gesucht.

    Eigentlich logisch mit $BASE zu arbeiten, bin noch nicht so lange als Kuka Programmierer unterwegs.

    Danke auch für die Infos zu den bewegten Basen.

  • Lukas Braun
    Points
    65
    Posts
    11
    • November 7, 2023 at 4:41 PM
    • #9
    Quote from Programmiersklave

    Bitte beachten: wenn Du $BASE direkt überschreibst (was problemlos funktioniert) geht bei den jüngeren Systemen (weiss nicht ab welcher Version) das Teachen in diesem Base nicht mehr. Es wird dann nicht in dem gleichen Frame geteacht, wie der, in dem gefahren wird, was unter ExpertTech u. U. gefährlich wird.

    Je nachdem, was Du vorhast, ist es daher die bessere Idee, BASE_DATA[16] oder so als temporäres Berechnungsergebnis zu überschreiben und das dann zu verwenden, auch wenn es ein Schritt mehr ist.

    Ok, danke.

    Ja so etwas hatte ich befürchtet.

    Klar könnte ich einfach irgendeine BASE_DATA nehmen, falls die aber doch mal wer benutzt, wird diese von meinem Programm überschrieben. Das gefällt mir nicht.

    Was ist wenn ich nach der vollständigen Berechnung wieder $BASE = BASE_DATA[BaseNumber] schreibe?

    Bzw mit BAS(#BASE,BaseNumber) wieder den aktuellen Datensatz übertrage?

    Dann müsste ich nur noch eine Lösung für den Fehlerfall finden.

    In meinem Programm selbst benötige ich keine Teachpunkte. Nach der Ausführung meines Programms soll aber die BASE_DATA aktualisiert sein und von anderen Programmen genutzt werden können. Diese haben ja aber sowieso immer BAS(#BASE,...) am Anfang stehen.

  • Programmiersklave
    Reactions Received
    104
    Points
    6,299
    Posts
    1,203
    About Me

    neuerdings freigelassen

    Location
    märk. Sauerland
    Occupation
    Roboter- und SPS-Programmierer
    • November 7, 2023 at 8:13 PM
    • #10

    Wenn Du da nichts teacht kannst Du mit $BASE machen was Du willst. Und hinterher auch wieder in eine der vorbestimmten Datenschachteln schreiben.

    Hat man ja gelegentlich, dass man komplizierte Messungen machen muss und dann irgendwelche Verschiebungen und Verdrehungen bekommt, die man als Zwischenergebnis benutzt, um auf diesem Base dann wieder weitere Verschiebungen und Verdrehungen zu messen.

    Ich hatte mir nur zwischendurch angewöhnt, bei komplizierterem Kram BAS(#BASE,...) gar nicht mehr zu benutzen und nur noch direkt zu berechnen und zuzuweisen, gerne auch mit der Doppelpunkt-Frame-Verknüpfung. Das ging dann vor ein paar Jahren plötzlich in die Hose...

    Quote from Lukas Braun

    falls die aber doch mal wer benutzt, wird diese von meinem Programm überschrieben. Das gefällt mir nicht.

    Das ist aber ein grundsätzliches Problem. Man kann dem Base ja einen aussagekräftigen Namen geben. Wer es dann trotzdem benutzt, braucht sich nicht wundern.

    Automatisierung mit dem geflügelten Walross aus dem Sauerland

  • Hermann
    Reactions Received
    168
    Points
    12,178
    Trophies
    8
    Posts
    2,380
    Location
    Baden-Württemberg
    • November 8, 2023 at 6:26 AM
    • #11

    Wen man $base direkt zuweist, dann sollte man keine 'normalen' (sollen heißen die Standard folds) Bewegingsbefehle mehr benutzen, da wird sonst die base wieder überschrieben. Sollte klar sein, will nur nochmal drauf hinweisen. ;)

  • Lukas Braun
    Points
    65
    Posts
    11
    • November 8, 2023 at 7:56 AM
    • #12

    Alles klar,

    Vielen Dank, Ihr habt mir sehr weitergeholfen.

Tags

  • 1
  • 33
  • 2
  • ABB
  • ABB Roboter
  • ABS
  • base
  • constant
  • CP_PARAMS
  • Dialog
  • EX
  • fanuc
  • Fehler
  • FRAMES
  • INIT
  • INITIALIZED
  • INITMOV
  • IRC5
  • joint
  • KRC2
  • KRC4
  • kuka
  • new
  • NONE
  • notify
  • PATH
  • PGNO_GET
  • profinet
  • PTP_DAT
  • PTP_PARAMS
  • P_ACTIVE
  • P_FREE
  • P_RESET
  • P_STOP
  • Quit
  • Roboter
  • RobotStudio
  • Schweißen
  • Sps
  • Sync
  • T1
  • t2
  • tcp
  • Tool
  • VALUE
  • VAR
  • vel_cp
  • vel_ptp
  • Yaskawa
  • YRC1000
AD
Your browser does not support videos autonome mobile Roboter von KUKA
Einloggen für weniger Werbung

gesponserte Artikel

  • Gebrauchtroboter kaufen - Was ist zu beachten. Die Checkliste zum kauf von gebrauchten Robotern

    August 11, 2019 at 7:02 PM
  • Was macht ein Roboterprogrammierer genau und was verdient er?

    August 21, 2019 at 8:17 AM
  • Vernetzen, referenzieren, kollaborieren: Das B2B Portal für die Produktionsautomatisierung

    June 2, 2021 at 11:29 AM

Job Offer

  • Sie wollen Ihr Stellenangebot im Roboterforum schalten? Ab 149€

    Werner Hampel June 17, 2021 at 9:52 AM
  • Werde Roboterprogrammierer bei ROBTEC GmbH in Mainburg / Bayern

    Werner Hampel April 5, 2023 at 7:13 PM
Werbung auf Roboterseite
Roboter programmieren lernen
Banner Robotik

Tags

  • kuka
  • Basis Koordinatensystem
  • Koordinatensystem
  • BAS
  • base
  • FRAMES

Wieviele Mitglieder waren heute eingeloggt?

Logge Dich ein, um hier zu lesen wer in den letzten 24h Online war und um weniger Werbung zu sehen.

  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™ 6.0.22
Roboterforum.de - die Industrieroboter und Cobot Community in the WSC-Connect App on Google Play
Roboterforum.de - die Industrieroboter und Cobot Community in the WSC-Connect App on the App Store
Download