Expert Programmierung

  • Hallo


    Ich bin nun dabei bei meiner KRC3 ein kleinen Programm zu schreiben. Mittels der Inlineformulare war das auch kein Problem, nur schien mir dort der Befehlssatz etwas begrenzt zu sein.
    Jetzt habe ich mir das Experten-Handbuch mal angeschaut und wollte dort paar Bsp. ausführen. Teilweise ging das auch aber ich bin auf paar kleine Probleme gestossen.


    1. Wenn ich ein Projekt NEU anlege, werde ich nach einer Template gefragt. Welches nimmt man da üblicherweise?
    Bei Modul kann ich nur über Inlineformulare etwas eingeben und bei Expert muss ich noch alles per Hand eingeben (def test() ....END)


    2. Wenn ich Expert gewählt habe, dann nervt es mich das ich am Anfang die ganzen Geschwindigkeiten,Beschleunigungen usw. eingeben muss. Dafür gibt es doch ein Unterprogramm namens Bas(), welches mir diese Werte auf Standardwerte setzt oder?? Wie und Wo muss ich dieses einbindet damit es funktioniert?


    3. Wenn ich einen Punkt teache dann wird dieser in der DAT. -Datei gespeichert. Wofür brauche ich die Dat.- Datei noch??


    Ich hoffe ihr könnt mir da etwas weiterhelfen.


    MFG Stackus

  • zu 1.
    es ist vollkommen egal welches template du auswählst.
    am ende kannst du durch deine eigene programmierung alles genauso machen wie du es willst, ohne einschränkungen...
    der unterschied zwischen expert und normalem modul liegt nur in den parametern vor der def- zeile, welche sich darum kümmern ob dein programm z.b. sichtbar für anwender oder ähnliches ist.
    danach kannst du hier im forum suchen...


    die templates liegen übrigens in deinem c:\krc... ordner. also irgendwo darunter.
    wo genau weiß ich jetzt nicht.
    und die kannst du selber anpassen wie du es magst..
    ---> z.B. das expert modul mit bas aufruf


    du kann in exp und anw. modulen via inline oder manueller programmierung programmieren ,dort gibt es keine einschränkungen in abhängigkeit der modultypen.
    zu 2.
    die frage hat sich ja mit 1. schon erledigt.
    erstelle dir ein normales modul nimm daraus was du brauchst und programmiere den rest dann wie du magst.
    btw: in dem anwendermodul wird die bas mit gewissen parametern gestarten.
    gleicher funktionsaufruf bewirkt gleiches auch in einem expermodul.
    zu 3.
    manche leute würden sagen, ja das frag ich mich auch.
    also in der dat kannst du selbst auch variablen definieren.
    manche vars z.b. global variablen oder aufzählungstypen müssen sogar in der dat deklariert werden.
    das ist in der src nicht möglich.
    steht jedoch im handbuch bei den variablen auch explizit geschrieben...

  • Guck einfach mal, was im "ini" steht und den Folds der Bewegungssaetze.
    Bas.src musst du gar nicht einbinden - global gueltig.


    Wichtig ist BAS(#initmov,0) und die Declaration vom Stop_mess - interrupt (und den auch einschalten), sonst laeuft das Programm z.B. bei Not-Aus weiter.


    Gruss Stefan

  • Ja stimmt, ich habe es heute gefunden. Wenn ich den Fold INI öffne dann steht dort alles schon da.


    Ich habe Heute versucht verschiedene Punkte ohne Inline zu teachen. Da steht im Handbuch etwas von 3 Möglichkeiten.


    1. man schreibt: ptp ! -nun den Punkt anfahren und über "Touch up" würden automatisch die Koordinaten für den Platzhalter eingetragen.


    2. man schreibt: ptp startpunkt -nun fährt man den Punkt an und drückt "Ändern" und "Var", welche man auswählen kann, und es wird der PKT Startpunkt automatisch deklariert.


    3. man benutzt das Inline formular und speichert den Punkt ab. Und später kann man ihn mit: ptp xp1 verwenden.


    Bei den ersten beiden Methoden kommt immer als Fehlermeldung "ungültiges Modul". Was ist damit gemeint bzw. was mache ich falsch?? :huh:

  • Hallo,


    vermutlich hast du expert tech nicht installiert. Das ist kostenpfichtig.
    Zum Probieren kannst du den Punkt anfahren, Tool, Base und IP_mode von hand setzten und mit Anzeige Variable "Teachpunkt" -> neuer Wert "$pos_act" teachen.
    Zugegeben sehr umstaendlich.


    Gruss Stefan

  • Klingt zwar wirklich sehr umständlich aber ich werde es mal versuchen. Vielleicht habe ich die Software sogar irgendwo mitbekommen, immerhin ist das ja ein komplett Neuer Roboter mit allen was dazugehört.


    Desweiteren habe ich noch ein Fehler beim Überschleifen endeckt.


    Programm:


    lin xPunkt1
    $apo.cdis=25
    lin xPunkt2 c_dis
    $apo.cdis=75
    lin xPunkt3 c_dis
    lin xPunkt4


    Dann müsste er doch zu den 1.Punkt Linear fahren, dann auf den Weg zum 2.Punkt nach 25mm mit überschleifen beginnen und bei den 3. Punkt nach 75mm und weiter zu Punkt 4 fahren oder???

  • Wenn ich Ihn die Bahn jetzt abfahren lasse dann beginnt er aber viel zu spät mit dem Überschleifen und es wird auch nicht besser wenn ich den Wert (Abstand) erhöhe. Er hält ab einen bestimmten Wert immer den gleichen Abstand ein.
    Ist der Abstand vielleicht irgendwo begrenz auf ein Maximum????



    PS: Kann man irgendwo die Tastatur auf Deutsch stellen??

  • HALLO


    Das Ueberschleifen beginnt hier 25 mm vor dem zu ueberschleifenden Punkt.


    Das KCP hat nun mal eine Querty Tastatur. Eine externe kannst du in der Systemsteuerung umstellen - wenn du danach aber das KCP anfasst kriegts du einen Vogel.


    ..Stefan

  • Hallo.


    es gibt auch noch eine Obergrenze. Überschleif ist auf den halben Abstand zwischen den Punkten begrenzt.


    Gruss DiDi

  • Wie oder mit was für einen Befehl kann ich denn weiter als nur die Hälfte Überschleifen???
    Oder kann man die Begrenzung aufheben???

  • Was sollen denn so grosse Ueberschleifwege fuer einen Sinn machen??
    Da musst Du dir dann halt mit mehr Zwischenpunkten helfen.


    Gruss Stefan

  • Ich hab mal ein Bild von der Bewegung rangehangen. Der Robi hat im Greifer einen Stift und soll damit die blaue Linie abfahren. Das ist eine Übung für verschiedene Bahnbewegungen.
    Ich weiß das es leichter wäre mit noch mehr Hilfpunkten aber es sind nur diese 4 Punkte dort eingezeichnet, darum denke ich es muß auch so gehen.
    Eventuell könnte ich noch etwas mit circular und einen bestimmten Winkel (CA) machen.

  • Ist da nicht mal ein Kreisradius gegeben? Dann ist das vielleicht bloß ne allgemeine Übung zum Überschleifen, bei der die Kreise was groß gemalt sind?

    If you and DEAD people can read Hex, how many people can read Hex?

  • Nein das Bild ist so auf einen Tisch gedruckt und man soll die Bahn abfahren.
    Ich habe auch keine Anleitung oder irgendwelche Angaben dazu.
    Das sind irgendwelche Kuka College Zellen, daher dachte ich wenn jemand den Kuka-Kurs gemacht hat, dann wurde das dort auch gezeigt?

  • hi,


    wenn der Radius zwischen P1 und P2, sowie P3 und P4 nicht groesser ist als 100 mm, muss das gehen.


    $APO.CDIS = 100 ; ueberschleifen lin 100 mm
    ptp pAnfahr
    lin xP1 ; da bleibt´s halt kurz steh´n
    lin xP2 c_dis
    lin xP3 c_dis
    lin xP4 ; da bleibts auch kurz steh´n


    Gruss Stefan

  • Die 100mm müssten schon reichen. Die Punkte 1,2 und 3,4 liegen ca. 5cm auseinander.
    Die Punkte 2,3 ca. 10cm.


    Das Problem ist das er auf dem Weg von Punkt 1-2 nicht kurz darauf mit Überschleifen beginnt sondern erst minimal ab der halben Distanz zwischen beiden Punkten, auch wenn ich $apo.cdis=45 eingegeben habe.
    Mir komt das so vor als ob das wirklich irgendwo auf die Halbe Distanz begrenzt ist!

  • Hallo,


    so wie es gezeichnet ist, geht es nicht. Halber Abstand zwischen den Punkten in frühester Überschleifbeginn. Da lohnt kein weiteres probieren.


    Gruss DiDi

  • Ich habe mir jetzt eine Neue Aufgabe vorgenommen. Der Roboter holt sich mittels Greifer einen Würfel und legt ihn in eine Palette.
    Ich habe es jetzt soweit programmiert das er sich den Würfel holt und auf die 1. Stelle der Palette legt.
    Jetzt wollte ich mir eine Schleife bauen sodass der Roboter diese Bewegung 3mal ausführt und jeweils die 1. Position um den Y-Wert vesetzt.


    Mein Programm:
    DEF Palette()


    DEC INT I


    INI Pos_Y={Y -44}


    PTP HOME
    FOR I=0 TO 3
    Bewegungsablauf usw.
    PTP (VP_Pos1 + ([I] * Pos_y))
    LIN (Pos1 + ([I] * Pos_y))
    ENDFOR


    END


    Jetzt würde er aber nur immer wieder zur 1. Pos fahren und die Addition nicht ausführen. Liegt da vielleicht mein Fehler schon bei der Initialisierung oder Deklaration?? Bzw. wie schreibe ich die Addition zweier Koordinaten?

  • Ich sehe das ich noch einen Fehler beim abschreiben habe. Natürlich kommt vor den Pos_y noch die Variable I


    PTP (VP_Pos1 +([I] * Pos_y))


    Wie würdet ihr so eine Verschiebung in Y-Richtung machen??? :hilfe: