Beiträge von Thilbi

    Hallo Dragon,


    Definiere einfach vor der Schleife eine Variable und null diese ab. In der For-Schleife kannst du dann einfach bei jedem Durchlauf diese erhöhen (Incr nZaehler;) und mit dieser arbeitest du dann.


    nZaehler:=1;
    for i from 1 to 6 do
    nWert:= ARRAY{1};
    nWert:= jonts.robax.i;
    Incr nZaehler;
    endfor


    Gruß
    Thilbi

    Morgähn,


    so groß finde ich den Programmieraufwand jetzt nicht. Ist doch, wenn das Ausgangmodul 0-20mA liefern kann, nur ein Dreisatz und ein bishen drumrum.


    Auf die Schnelle würde ich das dan so schreiben:


    PROC Setze_mA(num nStrom)
    !Max Int-Wert: 32768
    !Max Ausgangstrom: 20mA
    !
    !Eingabewert: nInput = Gewünschter Ausgangstrom in mA
    !
    VAR num nWert_GO;
    CONST num nMaxInt:=32768;
    CONST num nStrombereich:=20;

    !Berechne Intergerwert für Gruppenausgang
    nWert_GO:=(nStrom*nMaxInt)/nStrombereich;
    !Abschneiden evtl. Nachkommastellen
    nWert_GO:=Trunc(nWert_GO);
    !Setze Gruppenausgang
    SetGO goAO_1,nWert_GO;
    ENDPROC


    Aufrufen der Routine dann z. B. mit Setze_mA(10);


    Natürlich kann man es noch komfortabler machen, aber für den Anfang ein Ansatz.


    Gruß
    Thilbi

    Das hat doch WolfHenk schon geschrieben


    PR[1,1] = GI[1] <- damit liest du von deinem Gruppeneingang 1 den X-Wert in das Positionsregister 1
    PR[1,2] = GI[2] <- damit liest du von deinem Gruppeneingang 2 den Y-Wert in das Positionsregister 1


    R[1] = GI[3] <- damit liest du von deinem Gruppeneingang 3 den Wert in das Register 1
    R[2] = GI[3] <- damit liest du von deinem Gruppeneingang 3 den Wert in das Register 2


    usw.



    Gruß
    Thilbi

    Sollen auch negative Werte übertragen werden kann man das z. B. damit realisieren, dass du den Gruppeneingang nur 15 Bit breit machst. Das 16. Bit ist für die Vorzeicheninformation reserviert. 16. Bit = 1 dann negativer Wert. In deinem TP-Programm frägt du das Vorzeichenbit ab und wenn es gesetzt ist wird der Wert im Register mit -1 multipliziert.


    Gruß
    Thilbi

    Wow,


    da hast du dir aber eine schöne Aufgabe geben lassen.
    Einen Roboter einzubauen der gut und gerne 15-20 Jahre alt ist. Da wird es schon schwierig Programmierer bzw. Hardwareplaner zu finden die sich damit noch auskennen.


    Leider kann ich dir auch nicht wirklich weiterhelfen da die Steuerung nur vom sehen kenne und aus guten Grund meine Finger davon lasse.



    Gruß
    Thilbi

    Hallo Chilli,


    gefunden hatte ich diese Auflistung schon mal. Nur leider gerade nicht mehr greifbar.
    Für eine andere Anwendung habe ich die GI bzw GO mal so abgefragt


    if (IOType = io_gpin) then ...
    bzw.
    if (IOType = io_gpout) then ...


    wobei IOType als Integer deklariert ist.
    Probiere es doch einfach mal damit und suche mit dem Variablennamen io_gpin in der Doku ob da eine Tabelle zu finden ist.



    Gruß und schönes Wochenende
    Thilbi

    Hallo Chilli,


    kann es sein dass du deine PowerOn Routine nicht in die Event-Routine eingetragen hast?


    Dazu musst du in die Systemparameter reingehen und die PowerOn eintragen. Ich versuche die Schritte mal aus dem Kopf raus zusammenzubringen
    1. Systemparameterfenster öffnen
    2. Typ "Controller" auswählen
    3. Event Routine auswählen
    4. Alle anzeigen drücken
    5. Hinzu drücken
    6. Bei Event PowerOn auswählen
    7. Bei Routine "PowerOn" eintragen
    8. Bei Task deinen aktuellen Task auswählen
    9. Ok drücken
    10. Neustart ausführen


    Danach wie von Sven beschrieben den Joystick kurz auslenken und es sollte funktionieren.


    Gruß
    Thilbi

    Die Fehlermeldung bein kompalieren kannst du ignorieren, da in dem Schlusssatz die magischen Worte "Translation successful" auftauchen. Was man bei dem Kompalieren des Programmes noch beachten muss ist dass das Programm in deinem virtuellen TeachPanel nicht angewählt sein darf. Das gilt aber für jedes Programm, egal ob Karel od. TP bzw. LS.
    Der Rest der Warnmeldung kannst du bei Gelegenheit zum Üben versuchen herauszubekommen ;)


    Für das Beispiel von rob76 können die Werte in deinen Registern so aussehen:
    R[1] = 3 ;Verweis auf das Register mit dem Ursprungswert
    R[2] = 4 ;Verweis auf das Register für das Ergebnis
    R[3] = 30 ;Ursprungswert
    R[4] = hier schreib Karel das Ergebnis rein.


    Mag jetzt etwas umständlich sein, wie beinahe alles an Karel. Zum üben aber hilfreich.
    Was die einzelnen Befehle in dem Beispielprogramm machen musst du eben in deinem Handbuch nachlesen.


    Gruß
    Thilbi

    Wenn du dieses Programm aufrufen möchtest muss der Aufruf so aussehen:
    CALL sinus("Register 1","Register 2")


    Für "Register 1" setzt du die Registernummer ein in dem den Ausgangswert steht.
    Für "Register 2" setzt du die Registernummer ein in das das Ergebnis geschrieben werden soll.


    Die Fehlermeldung kommt davon das das Karelprogramm zwei Übergabeparameter erwartet, du aber nur einen angegeben hast. Wie du sicherlich weißt kann man einen zweiten Übergabeparameter mit aufrufen wenn man bei der Programmierung im TP nochmals auf CHOICE drückt.


    Gruß
    Thilbi

    Hallo Dirk,


    ich versuche es mal.


    1. Du erstellt eine neue Zelle oder nimmst eine vorhandene
    2. Im Cell-Explorer gehst du auf RobotControler1-Dateien
    3. Rechte Maustaste - Neue Datei - Karel-Source
    4. in das leere Fenster fügst du z. B. ein kleines Beispielprogramm aus dem Karel Reference-Manual ein
    5. Speichere die Datei ab, der Dateiname muss dabei gleich sein wie der Programmname in der ersten Zeile
    6. Mit der rechten Schaltfläche (Build) kannst du das Programm kompalieren und direkt in Roboguide testen
    7. Wen alles pass, auf den Roboter spielen.


    Sollten dir die Programme in dem Handbuch zulang sein, hier ein kleineres Programm, allerdings ohne Kommentare. Wie der Name schon sagt berechnet es aus einem Übergabewert den dazugehörigen Sinus.


    PROGRAM sinus
    %NOLOCKGROUP


    VAR
    -------------------------------------------------------------
    --TPE Parameter Fetch Variables
    -- Cannot be used to store paramter data.
    -- Other operations may fail.
    -------------------------------------------------------------
    param_no : INTEGER
    par_typ : INTEGER
    par_int : INTEGER
    par_real : REAL
    par_str : STRING[80]
    bool_val : BOOLEAN
    paramok : BOOLEAN
    realflag : BOOLEAN
    Winkel_real : REAL
    sinu : REAL
    --------------------------------------
    regnr,
    regnr2,
    Winkel_int,
    status : INTEGER


    BEGIN


    status=0


    param_no=1
    get_tpe_prm(param_no,par_typ,par_int,par_real,par_str,status)
    IF (par_typ=1) AND (status=0) THEN --INTEGER
    regnr=par_int
    ENDIF

    param_no=2
    GET_TPE_PRM(param_no,par_typ,par_int,par_real,par_str,STATUS)
    IF (par_typ=1) AND (STATUS=0) THEN --INTEGER
    regnr2=par_int
    ENDIF
    -- IF (par_typ=2) AND (status=0) THEN --REAL
    -- ENDIF
    -- IF (par_typ=3) AND (status=0) THEN --STRING
    -- ENDIF


    get_reg(regnr,realflag,winkel_int,winkel_real,status)
    if (realflag=false) And (status=0) THEN
    sinu = SIN(Winkel_int)
    endif
    IF (realflag=TRUE) AND (STATUS=0) THEN
    sinu = SIN(winkel_real)
    endif


    SET_REAL_REG(regnr2,sinu,STATUS)




    END sinus



    Viel Erfolg und bei Fragen einfach wieder melden.



    Gruß
    Thilbi

    Hallo Dirk,


    ich habe noch kein Karel-Handbuch in Deutsch gesehen. Darum arbeite ich immer mit dem englischen.
    Theoretisch kannst du Karel mit jedem Editor schreiben.
    Ich persönlich nehme immer Roboguide, hier habe ich eine Syntax-Hervorhebung und kann damit das Programm auch kompilieren und ggf. die Fehler korrigieren.
    Danach das kompilierte Programm nehmen und auf den Roboter kopieren. Entweder über USB-Stick od. Ethernet.


    Gruß
    Thilbi

    Hallo Alex,


    also das nächste Mal besser aufpassen wenn der Meister was erzählt oder gleich mitschreiben.
    Bei eigentlich jedem Roboterhersteller und -modell gibt es fünf Koordinatensysteme mit ihren unterschiedlichen Ursprüngen. Der Ursprung ist ja dort wo sich alle Achsen treffen. Von Hersteller zu Hersteller unterscheiden sich nur die Namen, das Prinzip ist das gleiche.
    Zusätzlich kann jeder Roboter nur mit seinen Einzelachsen bewegt werden.


    Bei Fanuc werden die unterschiedlichen Koordinatensysteme bzw. Achsen über die Taste "COORD" umgeschaltet.
    JOINT - Es werden die Einzelachsen J1 - J6 über die Tasten verfahren, J1 = Achse 1
    JGFRM - Ist i. d. R. identisch mit dem World-Koordinatensystem und der Ursprüng liegt im Drehpunkt der 1. Achse. Es können andere Ursprünge definiert werden
    WORLD - Ist i. d. R. identsch mit dem FRAME und immer im Drehpunkt der 1. Achse
    TOOL - ToolFrame = Koordinatensystem für das Werkzeug. Ohne Definition befindet sich der Ursrpung im Drehpunkt der 6. Achse.
    USER - UserFrame = Koordinatensystem für das Werkstück. Ohne Definition befindet sich der Ursprung im Drehpunkt der 1. Achse.


    In welche Richtung du mit X, Y, Z fährst hängt also auch mit der Definition der Koordinatensysteme zusammen. Wenn man die Richtung nicht kennt, nimmt man den Override runter und probiert es aus. Der Override wird mit den +% und -% Tasten eingestellt.


    Ansonsten, keine Scheu vom Fragen, auch gegenüber dem Meister od. Kollegen. So eine Maschine kann viel kaputt machen. Daher gibt es keine überflüssigen oder zuviele Fragen. Wenn man einen Grundkurs bei Fanuc bucht dauert dieser min. 3 Tage, wenn du nun erst einen Tag daran arbeitest kannst du wohl noch nicht zuviel wissen.


    Gruß
    Thilbi

    Ne, gibt es nicht.
    Wenn du RobotStudio auf dem neuen Rechner installiert hast, wählst du als Lizenzierungsmethode manuell aus. Dann erzeugt er ja eine txt-Datei. Die schickst du dann an die angegebene mail-Adresse mit der Begründung dass du das Programm auf einem anderen Rechner installiert hast und auf dem alten deinstallieren wirst. Dann bekommst du normalerweise einen neuen Key.
    Mit dieser Vorgehensweise habe ich mal eine Neuinstallation lizenziert bekommen


    Gruß
    Thilbi

    Hallo,


    mit der Fanuc-Paintsoftware kenne ich mich nicht aus und habe auch keine. Ich kann dir das Programm nur in der Handlings-Software neu kompilieren.


    In der Datei Backdate.dt steht oben eine Versionsnummer drin. In einer Datensicherung von mir steht
    Version: V7.70P/14/None



    Gruß
    Thilbi

    Hallo paintrobotics,


    hier hast du mal ein Karelprogramm für die Wurzelberechnung.
    Die Endung noch von .txt in .pc umbennen dann in die Steuerung laden und in einem TP-Programm aufrufen.


    Aufrufen musst du es folgerndermaßen:


    CALL Wurzel(Quellregister,Zielregister)


    z. B. CALL Wurzel(1,2) und R[1]=4 dann steht nach dem Call im R[2]=2



    Viel Spaß beim Ausprobieren.