Bahnprogrammierung ohne INLINE Form

  • Hallo zusammen


    Meine Programme basieren alle auf INLINE Formularen. Jetzt möchte ich effizienter und übersichtlicher programmieren.


    Roboter KR 16, KRC 2, 5.5.12


    Was muss ich alles definieren um eine lineare bzw. zirkulare Bahn zu fahren?


    Das habe ich bereits:


    In der *.dat:
    .....
    DECL FRAME stern[5]
    stern[1]={x 5, y 5, z 0, A -45, B 45, C 80}
    stern[2]={x 10, y 10, z 5, A -45, B 45, C 80}
    stern[3]={x 15, y 15, z 10, A -45, B 45, C 80}
    stern[4]={x 20, y 20, z 15, A -45, B 45, C 80}
    stern[5]={x 25, y 25, z 20, A -45, B 45, C 80}
    ....


    In der *.src:


    ...
    ; Verschiebung der ersten BASE
    $BASE=BASE_DATA[1]:{x 100,y 100, z 100,a 0, b 0, c 0}
    LIN stern[1]
    LIN stern[2]
    LIN stern[3]
    LIN stern[4]
    LIN stern[5]
    ....




    Wie kann ich jetzt die Geschwindigkeit, Beschleunigung, Überschleifen, Orientierung usw programmieren?



    Leider finde ich solche Sachen nicht in der Dokumentation. Die beschreibt nur ein wenig mehr als INLINE Formulare.




    Danke für die Hilfe


    Gruss Casmen

  • Schritt für Schritt zum Roboterprofi!
  • ein Möglichkeit


    öffne mal ein INLINE Formular, dann siehst ziemlich viel und ist immer gut zum nachlesen.

    Ich wollte allerdings mal ein Programm so aufbauen, bis dann aber immer wieder alles drin hast, nur schon das continue, wurde das alles schnell wieder unübersichtlich und unpraktisch, so dass ich wieder mit InlineFormularen arbeite.


    Es gibt noch andere möglichkeiten das Programm übersichtlich zu machen

  • am besten schaust du mal das programmierhandbuch durch, dort solltest du die nötigen variablennamen finden.

    „Welten, regiert von künstlichen Intelligenzen,<br />mußten oftmals ihre schmerzlichen Erfahrungen machen.<br />Logik kennt keine Gefühle.“

  • Daran bin ich auch...die einzige Doku, die ich finden kann ist die KUKA System Software 5.5, Bedien- und Programmieranleitung. Hier sind die einzelnen Parameter auf verschiedene Seiten aufgeteilt. Ich hatte mir erhofft ein Programmbeispiel für eine manuell programmierte Bahn zu erhalten. Hier im Forum hatten ja schon viele nach einer effektiven KRL Syntax Doku gefragt aber leider keine nützlichen Angaben erhalten...


    Wenn jemand ein Beispielprogramm hat, wäre ich sehr dankbar..


    Gruss Casmen

  • Die Liste der Systemvariablen könnte dir da weiter helfen.
    Dort steht auch einiges über die Geschwindigkeit und welche Variablen man nimmt ($Vel).


    Es gibt eine 400 Seiten Anleitug für Systemintegratoren, allerdings ist die 15 MB groß und kann nicht hier im Forum angehängt werden. :down:
    Allerdigs steht da auch nicht genau das drin was du suchst.


    Inlineform Bewegung auseinander nehmen und schauen was die Einzeleile bedeuten ist eine gute Möglichkeit, die ja schon vorgeschlagen wurde.

    Dateien

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • Hi,


    wobei auch zu bedenken ist das sich Arraypositionen ohne die Option ExpertTech nicht teachen lassen!

  • wie bereits erwähnt, um nochmal auf dein Ziel zu kommen:
    Übersichtlichkeit
    Wenn du da mit $VEL, $ACC, CONTINUE usw vor jeder Position oder von mir aus vor jeder 2ten wird das nicht übersichtlich. (ist ja auch ne persönliche Meinung) Ich hab das auch mal versucht und nacher alles wieder rausgeworfen und mit INLINE programmiert.
    Es gibt auch andere Möglichkeiten, es übersichtlich zu machen:
    Unterprogramme - lokal oder Global - und im Hauptprogramm nur noch Logik. Manche treiben das sogar auf die Spitze und trennen Bewegung komplett von der Logik.
    Dann kannst auch die Logik Übersichtlich gestalten. Kann dann aber irgendwann wieder das Gegenteil bewirken


    Mich würde auch mal interessieren wie andere Ihre Programme aufbauen, da kann man bestimmt noch was lernen

  • Noch kurz eine Frag:


    Wenn ich folgendes programmiere:
    ...
    INLINE FORM für eine LIN oder Circ Bewegung (inkl. Definition aller Kinematikparameter)
    LIN Punkt Bewegung
    LIN Punkt Bewegung
    CIRC Bewegung
    usw...
    ...


    Bleiben die Kinematikparameter für die Lin bzw Circ Bewegungen aktiv aus den INLINE Formular oder nimmt der Roboter diese aus einer anderen Datei (Standartwerte)?



    Danke, Gruss Casmen

  • gruß.


    meiner erfahrung nach müsste das funktionieren, da der kuka immer die zuletzt geladenen parameter verwendet.


    ansonsten, ich habe das auch schon gemacht und bin damit gut gefahren.
    ich habe mir dazu die parameter in einem dat-file global deklariert, zb so:


    ;DAT Parameter
    ;FDATs (Base und Tool)
    DECL GLOBAL FDAT F_KALIBRIEREN = {TOOL_NO 11, BASE_NO 12, IPO_FRAME #BASE}
    DECL GLOBAL FDAT F_SCAN = {TOOL_NO 11, BASE_NO 11, IPO_FRAME #BASE}
    DECL GLOBAL FDAT F_SCHWEISSEN = {TOOL_NO 10, BASE_NO 17, IPO_FRAME #BASE}


    ;LDATs (Parameter fuer LIN-Bewegungen)
    DECL GLOBAL LDAT CP_KALIBRIEREN = {VEL 2.0, ACC 100.0, APO_DIST 100.0, APO_FAC 50.0, ORI_TYP #VAR}
    DECL GLOBAL LDAT CP_SCAN = {VEL 2.0, ACC 100.0, APO_DIST 100.0, APO_FAC 50.0, ORI_TYP #VAR}
    DECL GLOBAL LDAT CP_SCHWEISSEN = {VEL 0.1, ACC 100.0, APO_DIST 100.0, APO_FAC 50.0, ORI_TYP #VAR}


    ;PDATs (Paramter fuer PTP-Bewegungen)
    DECL GLOBAL PDAT PTP_KALIBRIEREN = {VEL 100.0, ACC 100.0, APO_DIST 100.0}
    DECL GLOBAL PDAT PTP_SCAN = {VEL 100.0, ACC 100.0, APO_DIST 100.0}
    DECL GLOBAL PDAT PTP_SCHWEISSEN = {VEL 100.0, ACC 100.0, APO_DIST 100.0}


    und bin dann in einem src-file so verfahren:


    :Laden der Parameter für PTP-Bewegungen
    PDAT_ACT = PTP_KALIBRIEREN
    FDAT_ACT = F_KALIBRIEREN
    BAS(#PTP_PARAMS, 100.0)


    PTP Home_40


    ;Laden der Parameter für LIN-Bewegungen
    LDAT_ACT = CP_SCAN
    FDAT_ACT = F_SCAN
    BAS(#CP_PARAMS, 2.0)


    LIN HILFPOS
    LIN STARTPOS


    ;doppelte Programmschleife zum Abrastern des Teils
    ;Schleife x-Richtung
    FOR m = 1 TO ScanSpuren
    ;Schleife y-Richtung
    FOR n = 1 TO ScanSchritte


    LIN_REL Schritt


    ENDFOR


    LIN_REL Zurueck
    LIN_REL Spur


    ENDFOR


    das programm ist stark gekürzt und es fehlen alle deklarationen, kommunikationen etc, aber ich denke das prinzip wird klar.


    die punkte habe ich natürlich vorher im dat-file deklariert (ähnlich wie du ganz oben) bzw live im programm errechnet.
    ich habe das damals gebraucht weil ich in kleinen schritten eine große fläche "gerastert" abfahren musste.


    ich hoff mal, dass dir das hilft.


    mfg speed

    200% Override ... irgendwas klingt hier komisch ... und irgendwie riecht es auch ...<br /><br />Abkühlzeit Bremsen Achse 2: 57 Sekunden :D

    Einmal editiert, zuletzt von SpeedFreak ()

  • unabhängig von der lösung. ich/wir haben uns ein up geschrieben mit parameterübergabe(ähnlich dem/der bas), so dass ich vor jeder bewegung ohne inlineformular einfach den programmaufruf;

    Code
    ;;            (Base,	Tool,	OvProLim,	Acc, Vel)
    	Movesettings (0     ,0     ,0             ,100,zVelSafe)


    starte. im up setze ich dann die parameter dementsprechend!


    edit: bevor fragen kommen hier das up:

    Den Roboter "in seinem Lauf hält weder Ochs noch Esel auf!"

    Einmal editiert, zuletzt von AtoK09 ()

  • Hallo AtoK09
    Vielen Dank für den Code. Ich hatte schon lange sowas gesucht.
    Zwei Fragen noch.
    - Was macht der Parameter "nOvProLim"? wozu ist er und wie wendest du ihn an?
    - Wieso teilst du die Geschwindigkeit durch 50? "nVel/50"


    Vielen Dank
    mlstefan

  • ist das ein problem? wenn ja dann kann ich das auch lassen...


    du siehst das bei fast allen kukas die ich bis dahin gemacht habe, weiterhin habe ich das nie als MEINEN code ausgegebn!

    Den Roboter "in seinem Lauf hält weder Ochs noch Esel auf!"

    Einmal editiert, zuletzt von AtoK09 ()

  • Hallo Robotnik
    Deine Reaktion enttäuscht mich. Jetzt hat mal jemand den Code einer guten Idee veröffentlicht und schon wird eitel gemotzt. Bei dieser unausgereiften Programmiersprache welche Kuka liefert schreiben tausende von Programmierern auf der ganzen Welt dieselben Hilfsprogramme und Hilfsfunktionen. Es gibt Roboterhersteller welche wenigstens solche Funktionen aufnehmen und dann mit der Standardsoftware allen zur Verfügung stellt. Die Fahrbefehle beim Kuka sind verglichen z.B. mit ABB sowas von Steinzeit! Da bin ich froh wenn man sich untereinander hilft.
    Bravo AtoK09


    Gruss
    mlstefan


  • - Was macht der Parameter "nOvProLim"? wozu ist er und wie wendest du ihn an?
    - Wieso teilst du die Geschwindigkeit durch 50? "nVel/50"


    nOvProLim macht die geschwindigkeiten vom eingestellen programmoverride abhängig. wie es sich genau auswirkt, kann ich nicht sagen, da hab ich mich noch nicht tiefer hineingedacht.


    nVel/50, da die geschwindigkeit von linearbewegungen in "m/s" (0-2) angegeben wird und nicht in "%".
    somit kannst du das up komplett mit prozentwerten aufrufen und es wird duch das teilen durch 50 aur die nötige größe runterskaliert.

    „Welten, regiert von künstlichen Intelligenzen,<br />mußten oftmals ihre schmerzlichen Erfahrungen machen.<br />Logik kennt keine Gefühle.“

  • Die nOvProLim gibt eine Mindestgeschwindigkeit vor, bei Null ist es deaktiviert.


    AtoK09 Der Code ist deshalb auf jedem Roboter weil ich dieses Programm deinem Kunden zur Verfügung gestellt habe. Das das nun als Standard verwendet wird und überall im Konzern benutzt wird gibt Dir noch lange nicht das Recht, Codeteile die nicht von Dir erstellt wurden zu veröffentlichen.


    Ich hätte Dir die freigabe bestimmt gegeben, oder das Programm selber veröffentlicht. Hier geht es ums prinzip.


  • AtoK09 ... Hier geht es ums prinzip.


    da kann ich mich an mind. ein gespräch mit dir erinnern, in welchem du darauf hingewiesen hast, dass die programme aller rob. programierer mehr oder minder freier code wären... so ändern sich die zeiten.
    ich will garnicht rumdiskutieren. ich bin im bilde und werde mich danach verhalten!

    Den Roboter "in seinem Lauf hält weder Ochs noch Esel auf!"

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