Beiträge von MrPinkXY

    Hi,
    also eine Funktion hat einen Rückgabewert. Beispiel:


    ***
    DEFFCT INT AddIntegers(a: in, b: in)
    int a, b
    return (a+b)
    ENDFCT
    ***


    Beispiel Aufruf im KRL Programm:
    DEF MyProg
    int c
    c = AddIntegers(4,8)
    ;MachwasMit(c)
    END
    ***
    Verwendung z.B. falls du des öftereren wie in diesem Beispiel die Funition nutzen möchtest.


    Jetzt könntest Du sagen, dann nehme ich halt ein KRL-Modul als "Vorlage/Funktion" um zwei Zahlen zu addieren. Ja das geht auch, aber wo schreibst du denn das Ergebnis dann hin? Dazu benötigst / "verbrauchst" du dann z.B. eine globale Variable oder einen OUT Parameter.


    "Ich möchte nun aber mehr mit Funktionen arbeiten" ist wo möglich nicht immer der richtige Ansatz. Mann sollte sich immer überlegen, was man machen möchte und dann die passende Architektur auswählen. Wenn ich eine "Funktion" habe und ich keinen Rückgabewert benötige dann macht es keinen Sinn. Denn es muss ein Wert zurückgegeben werden. Wenn ich dann immer z.B einen Dummywert TRUE zurück gebe, dann könnte das der Aufrufer falsch interpretieren.


    z.B.:
    DEFFCT BOOL CheckState(a: in, b: in)
    ;Copyright Mr.Wrong
    bool a
    IF (a==b) THEN
    WHILE TRUE
    HALT
    MsgQuit("Fehler im Programm! Programm abwählen)
    ENDWHILE
    ENDIF
    RETURN TRUE ;Weil ich irgendetwas zurück geben muss und ansonsten wieder der Compiler meckert :)
    ENDFCT


    DEF MyProg()
    ...
    IF (CheckState(a, b) THEN
    ;Fahre zu Punkt 1
    else
    ;Fahre zu Punkt 2
    ENDIF


    Er wird den Punkt 2 nie anfahren. Aber der Benutzer der Funktion denkt dass er das macht ;)


    Viele Grüße

    Sollte aber. Nach dem Anhaken ist ein Neustart notwendig. Der Hinweis steht aber auch nach der Übertragung des WoV Projektes im Meldungsfenster.

    Hi Jason,
    wenn Du die Option SmartHMI Eintrag in WorkVisual im HMI Easy Editor anhackst, kannst du die View dann über das SmartHMI Menü öffnen?
    Ist im Ordner C:\KRC\User\HMI Easy eine Datei mit dem Namen HMIEasyAllgemeinR1.xml vorhanden?
    VG

    Hi Jason,
    kannst du dein Problem etwas genauer beschreiben? Kannst Du über das SmartHMI Menü keinen Menüeintrag zu deiner HMI Easy Anzeige finden, oder möchtest Du die Anzeige über ein KRL Event öffnen?
    VG

    Frag doch mal bei KUKA nach KUKA.HMI Easy. Mit dieser Software kannst du einfach per Drag&Drop deine Views z.B mit einem DropDown Element in WorkVisul zusammen bauen. Die View kann man auch dynamisch per KRL Code im Programmablauf aufrufen.


    Das Technologiepacket ist es seit kurzem erhältlich.

    Hallo,
    in WorkVisual gibt es die Möglichkeit unter Editoren -> Zusätzliche Steuerungseinstellungen in Anzahl der Tools einzustellen.
    Diese Vorgehensweise würde ich bevorzugen.


    Viele Grüße

    Guten Morgen,


    viele Wege führen nach Rom... Ein Vorschlag:


    DECL AXIS DREHWINKEL
    DECL E6POS pos_schiene
    DECL E6AXIS neuePos


    neuePos=$AXIS_ACT
    ;__Mit A1 und E1 aus Tabellenwert
    neuePos.e1=LAGER[PLNR,11]
    neuePos.a1=LAGER[PLNR,12]
    PTP neuePos


    Viele Grüße

    Hi,
    also mit dem sps.sub bist Du hier auf dem Holzweg. Im sps.sub könnte man das ganze auch realisieren über die Funktion rob_Stop() (siehe Doku für Systemintegratoren).
    Wenn Du das über einen Interrupt lösen möchtest, dann musst Du schon die Brake F Anweisung im Roboterinterpreter ausführen.
    Die Interrupt Deklaration steht normalerweise im Initialisierungsbereich deiner Anwendung.
    Die Aktivierung erfolgt eine Ebene tiefer, da nach der Abarbeitung des Interrupts der Rücksprung in die Ebene, in der der Interrupt deklariert wurde erfolgt (RESUME Anweisung).
    Wenn der Interrupt z.B. im UP1 ausgelöst wird, steht der Satzzeiger nach der Abarbeitung des Interrupts auf UP2().


    Beispiel:


    DEF Hauptprogramm()
    INTERRUPT DECL 1 WHEN $IN[17]==FALSE DO KOLLISION()
    LOOP
    UP1()
    UP2()
    ENDLOOP
    END


    DEF UP1()
    INTERRUPT ON 1
    PTP XHOME
    PTP P1
    PTP XHOME
    INTERRUPT OFF 1
    END


    DEF UP2()
    INTERRUPT ON 1
    PTP XHOME
    PTP P2
    PTP XHOME
    INTERRUPT OFF 1
    END


    DEF KOLLISION()
    INTERRUPT OFF 1
    BRAKE F
    WAIT FOR $T1
    PTP XHOME
    INTERRUPT ON 1
    RESUME
    END


    Natürlich gibt es auch andere Implementierungsmöglichkeiten.


    Viele Grüße
    MrPink

    Servus Makro,


    die IP 172.31.1.147 ist die Standard IP vom Roboter. Wenn diese nicht verändert wurde und du die selbe am PC verwendest, wird die Kommunikation nicht funktionieren.


    Teile uns doch bitte mal die Netzwerkeinstellungen deines Roboters ebenfalls mit.


    Viele Grüße

    Ich muss SJX natürlich recht geben. Ich habe ein wenig vergessen die elektrischen Komponenten zu betrachten. Vielleicht wäre es die bessere Lösung eine neuen KR6-2 zu kaufen und den alten inkl. Steuerung zu verkaufen.


    Viele Grüße

    Hallo,
    der KR6-2 ist kein Denso Roboter. Für diesen Robotertyp gibt es auch ein Katalogelement in WorkVisual. Die Umrüstung sollte möglich sein.
    Aufwand hängt je nach Anwendung, Software, Schnittstellen, usw. ab. Hält sich aber in den meisten Fällen in Grenzen.
    Am besten mal bei KUKA nachfragen. Die beraten oder unterstützen dich auch gerne bei der Umrüstung.


    Viele Grüße

    KUKA bietet hierfür die Lösung mittels ForceTorqueControl an. Dies ist ein Optionspaket von KUKA mit dem du in Zusammenhang mit einem Kraft-Momenten-Sensor, den KUKA ebenfalls mit anbietet, eine komplette Lösung für deine Aufgabenstellung erhältst.