Beiträge von LaserRobi

    [size=4]Steuerung: KRC2 V4.1.5 & Roboter KR30L15[/size]
    [size=4] [/size]
    [size=4]Hi Zusammen,[/size]
    [size=4]ich hab wieder einmal ein kleines Problem bei dem mir ein paar Ratschläge gut weiterhelfen würden.
    Die Kurzfassung ist erstmal das ich eine vorhandene Beckhoff SPS um eine analoge Ausgangsbaugruppe erweitert habe, aber nur 1von2 neuen Ausgängen zum laufen kriege.?[/size]
    [size=4]Ausgangszustand:[/size]
    [size=4]Meine Kuka Steuerung wurde vor langer Zeit schon um eine Beckhoff SPS erweitert,
    konkret BEC BK5220 mit Buskoppler und eine 2-kanalige analoge Ausgangsbaugruppe KL4002.
    Das funktioniert soweit.[/size]
    [size=4]Unter dem Menü-Punkt Konfig.-> E/A-Treiber-> Konfigur. Bearbeiten [/size][size=4]Ist u.a. folgendes eingetragen[/size]
    [size=4]
    [CONFIG][/size]
    [size=4]Version=2.00[/size]
    [size=4][DRIVERS][/size]
    [size=4]MFC=0,mfcEntry,mfcdrv.0[/size]
    [size=4]DEVNET=2,dnInit,dndrv.0
    ...
    [/size]
    [size=4][DEVNET][/size]
    [size=4];------DEVICENET MACID 5-----[/size]
    [size=4]ANOUT1=5,0,16,3 CAL 32767 ;BECKHOFF[/size]
    [size=4]ANOUT2=5,2,16,3 CAL 32767 ;BECKHOFF[/size]
    [size=4] [/size]
    [size=4]Die neue Ausgangsbaugruppe habe ich getestet, es funktionieren beide Analog-Ausgänge. Hab also die Baugruppe erweitert und folgendes hinzugefügt:[/size]
    [size=4]ANOUT3=5,4,16,3 CAL 32767[/size]
    [size=4]ANOUT4=5,6,16,3 CAL 32767[/size]
    [size=4] [/size]
    [size=4]Der ANOUT3 funktioniert, Nr4 nicht. WARUM?[/size]
    [size=4]Habs auch mit ANOUT4=5,8,16,3 … gestestet, geht auch nicht.[/size]
    [size=4]Sollte ich vielleicht die neure Treiber Variante dn2drv versuchen? Und falls ja, wie mache ich das?[/size]
    [size=4]Weitere Infos: [/size]
    [size=4]Datei devnet.ini [/size][size=4] Log-Datei isosy[/size]
    [size=4][krc] driver DNDRV information[/size]
    [size=4]Baudrate=500 object file[/size]
    [size=4][1] driver ready 1[/size]
    [size=4]macid=5 driver version 021b[/size]
    [size=4] function entry[/size]
    [size=4] input objects0[/size]
    [size=4] output objects3[/size]

    Für diejenigen die vielleicht irgendwann nochmal über diese thread stoßen.
    Mein Programm zur Lösung der wegabhängigen dynamischen Ausgangsteuerung:
    ….
    Strecke=100
    Umax=6
    Umin=4
    trigger when path = -100 delay=0 do uprog1() Prio=1
    trigger when path=-0.1 delay=0 do uakt1=false
    lin_rel {X 100}


    def uprog1()
    while (uakt1)
    $ANOUT[2]=(((UXmax-UXmin)/10)/Strecke)*(Strecke+$DIST_NEXT)+(UXmin/10)
    Endwhile
    END

    Erklärungen:
    Trigger… -0.1; wenn man 0 eisetzt kommt eine Fehlermeldung, Division durch 0 nicht möglich
    Umax & Umin als REAL deklariert
    Geteilt durch 10 weil, ein wert von 1 laut kuka 100% also 10V sind. Man könnte auch einfach gleich 0,6 eintragen und damit 6V meinen, das finde ich aber verwirrender
    DIST_NEXT ist immer negativ, deswegen steht da Strecke + Dist_next, wenn man ein minus dazwischen setzt -> minus*minus=plus, d.h. der Wert wird größer 100(=Strecke). Und bei einem Plus dazwischen kleiner!

    Hallo Zusammen,
    vielen Dank für Eure Antworten!
    das sieht ja schon nach fertigen Lösungen für mich aus :laugh:


    Das mit dem Unterprogramm gefällt mir sehr und die $Distance Variablen kannte ich gar nicht, die sind ja optimal dafür.
    Ich mach mich nächste Woche wieder ans programmieren und verarbeite eure Vorschläge in mein Programm.
    Wird aber etwas dauern, muss noch haufenweise Nebentätigkeiten erledigen.


    Falls noch Fragen auftauchen würde ich mich wieder melden und wenn nicht poste ich zumindest mal meine Lösung,
    irgendwann sucht sicher wieder eine Laie wie ich nach einem ähnlichem Problem und freut sich.



    Danke nochmal und ein schönes Wochenende noch

    Hallo fubini,


    die Befehle "trigger when path ... do .. " kenne ich und benutze ich auch schon für andere Sachen.
    Aber, wie ändere ich damit den Analogwert dynamisch?


    Soweit mir einfällt kann man das grundsätzlich über "ANOUT Signalvariable = Faktor * Variable..."
    Aber, geht das auch wenn mein Wert nicht bei 0V beginnt sondern eben beliebige, z.B. AOUT2 =0.42


    Und wie kann ich eine beliebige Verfahrstrecke, also z.B. die Strecke von 100mm in X, in eine Variable schreiben lassen
    die sich ständig ändert?
    damit ich diese dann im ANOUT Befehl verwenden kann. bzw. ist das überhaupt der richtige Ansatz?


    Ein kleines Beispiel wäre da sehr hilfreich.

    [size=3]Hallo Zusammen,[/size]



    [size=3]erstmal Danke, ich habe in meiner Einarbeitungszeit viel in eurem Forum gestöbert und mir viele gute Infos raus ziehen könne! :) [/size]
    [size=3]Heute ist es aber so weit, dass ich nicht weiter weis, und meine erste Frage an die Community hab. [/size]
    [size=3]Steuerung: KRC2 V4.1.5 & Roboter KR30L15[/size]



    [size=3]Meine Problemstellung:[/size]
    [size=3]Ich möchte zwei analoge Ausgänge dynamisch ändern und zwar am besten abhängig vom Weg.[/size]
    [size=3]Also z.B.[/size]
    [size=3]$AOUT1= 0.5[/size]
    [size=3]$AOUT2= 0.2[/size]
    [size=3]LIN_REL (X 100) [/size]
    [size=3]Und jetzt von X=0 bis X= 100 gleichmäßig den AOUT1 um 1V erhöhen und AOUT2 um 2V[/size]
    [size=3]wie mache ich das am besten/einfachsten?[/size]
    [size=3] [/size]
    [size=3]Alternativ wäre es auch Ok, auch wenn nicht so schön, es über die Zeit zu machen, da ich immer eine Konstante Geschwindigkeit fahre und mir die Zeit für eine bestimmte Strecke ja ausrechnen kann.[/size]