Beiträge von stefanM

    Hallo,


    niedrigste Prioritaet hat Windows. Es wird ein Interrupt ausgeleoesst, welcher das Windows wieder zum Zuge kommen laesst.
    Frueher war das ein NMI, der von einem Taktgeber auf der MFC ausgeloesst wurde, heute ist es vermutlich Software.


    Waere der Roboter zu 100% ausgelastet, bekaeme Windows gar keine Rechenzeit mehr.
    D.H. da wird zwischen Windows und VxWork geswitcht.


    Roboterinterpreter und Submit Interpreter werden von einem Taskscheduler, der unter VxWorx laeuft, verwaltet.


    Die Performance von SPS.Sub und Bof sind daher nicht vergleichbar.


    Gruss Stefan

    Hallo,


    der Interrupt wirkt fkankengetriggert. Zudem laueft das Progamm ja gar nicht, wenn der Schuesselschalter von Ext auf was anderes gerdreht wird - das machen die Instandhalter vermutlich nachdem der Roboter gestoppt wurde.
    Wenn sie bei laufendem Progarmm drehen hat dein Interupt auch keine wirkung, weil der Roboter im stopmess Interrupt ist - der hat vermutlich eine hoehere Prioritaet (3).


    Moeglichkeit wo ich sehe: im IR_StopM.src einen Resume programmieren und und im aufrufenden Programm die Roboterposition checken ($in_home, oder wie auch immer).


    Gruss Stefan

    Hallo,


    das mit dem Zugriff auf E/as hat keinen Einfluss.
    Die vermutung hatte ich auch mal.
    Hab dann alles in ein Prozessabilod kopiert und im Ablauf den Mist wieder aus Arrays rausklamuesert
    resultat -> noch viel langsamer.


    Hintergrund ist vermutlich, das Submit Interpreter und Roboter Interpreter Zeilenorientiert arbeiten.
    D.h. eine Anweisung je IPO-Takt. Zudem hat der Submitinterpreter eine niedrigere Prioritaet.


    Gruss Stefan

    Hallo,


    prinzipiell hab ich es bissher auf immer so aehnlich geloesst, wie Christian vorgeschlagen hat.
    Habe in meinem Programmen auch immer ziemlich viele Timer verwendet - irgendwann verliert da jeder den Ueberblick.


    Ich kann mir auch sowas vorstellen:



    Gruss Stefan

    Hallo Robotnik,


    wird im Prinzip darauf rauslaufen, dass du dein UP aehnlich strukturieren musst, wie den Bas.SRC.


    Select Case Anweisung halt.


    Anweisungen wie

    Code
    PTP P1 ...


    sind keine Prozeduren oder Funktionen, sondern Praeprozessor-Direktiven, die der Compiler kennen muss.



    Gruss Stefan

    Hallo,


    wenn es nur Maschinendaten und Anwenderprogramme sind, liesse sich das aus einem Archiv Gleicher SW-Stand wiederherstellen.
    Vermutlich steckt aber noch mehr dahinter - irgendwelche Eintreage in der Registrierdatenbank.


    Gruss Stefan

    Hallo,


    was das Greifer Oeffnen vom Programm aus angeht, gebe ich meinem Vorposter recht.
    Das Setzen des Ausgangs von hand kannst da aber nicht verhindern.


    Loessung, die ich sehe, ein Relais zur Freigabe des Greifers.
    Zyklisches Flag oder SPS.Sub zieht dir ein Relais an, wenn du in Position bist (code in etwa, das was Loipe vorgeschlagen hat).
    Das Relais schaltet dann deinen Ausgang fuer den Greifer durch.
    Kann aber zur Verwirrung fuehren, wenn du den Ausgang setzt, wenn du nicht in Position bist, dann faehrts du in die naehe einer erlaubten Position und der Greifer geht auf.


    Gruss Stefan

    AutInt mode ist eine sehr kreative Wortschoefpung - da wirst du nichts drueber finden.


    Du kannst Automatik exten auch im SPS.Sub progarmmieren. Du brauchst nur eine Handvoll E/A´s.


    Move_enable = 24V
    Conf_mess (Fehler Quitieren)
    drives_on (antriebe ein)
    Ext_start (Progarmm start)


    kannst du mal mit ein paar Drahtbruecken probieren


    - Move_enable statisch TRUE
    - Schluesselschalter in extern stellen
    - Irgedein programm anwaehlen (muss nicht Cell sein)
    - "Fahrfriegabe gesammt" mit conf_mess quitieren
    - mit drives On die Antriebe einschalten
    - mit extstart das Programm starten (sak fahrt in T1T2 erforderlich annst du ignorieren, einfach start signal anstehen lassen)
    Vermutlich habe ich jetzt was vergessen - gibt es aber schon jede menge Stoff dazu hier im Forum.


    Gruss Stefan

    Hallo,


    langsame Zykluszeiten im SPS.SUB hatte ich auch schon - Sekunden hatte ich aber definitiv noch nie. Da ist was anderes faul.


    Ich vermute eher, das dein SRC in einer kurzen Schleife rumhuepft und sich die Bedingung darin andert.
    Dein Sps.sub hat eine langere Zykluszeit und die bedingung ist nur alle schaltjahr mal true.
    Sollte in deinem SRC nicht was wie

    Code
    Bedingung = TRUE
    while Bedingung
    endwhile


    programmiert sein, bin ich auch ueberfragt und stell mir die Frage, was ihr da alles in den sps.sub reinpackt.


    Gruss Stefan

    Hallo,


    Soweit ich es noch weiss, wird mit pal_mode nur Achse 4 festgesetzt. Waere somit ein 5-Achser.
    PTP ist eine Achsinterpolation, Damit das funktioniert, mussten Achse 2,3 und 5 gekoppelt sein - probieren macht schlau.


    Gruss Stefan

    Hallo,


    Im Anwendermodus nur T2 Betrieb musst du progarmmieren.
    Alternative waere ein zusaetlicher Schluesselschalter. Auf dem X11 sind Kontakte fuer die Schalterstellung am KCP.
    Zusaetzlich gibt es noch zwei Kontakte fuer externe Zustimmung . Mit zwei Relais kann man was basteln.


    Wenn die Anwender den Roboter tatsaechlich oefter von Hand verfahren muessen, kannst du dich auf ein ganz schones Genoergel gefasst machen. Musste ich auch mal machen, nach ein paar Wochen ist die Sache wieder rausgeflogen.


    Gruss Stefan

    Hallo,


    konfiugurationsproblem ist nicht auszuschliessen - aber erstmal Hardware.


    Ueberpfuefe mal Motorleitung ubd Datenleitung.
    Speziell, ob Pins zuruckgeschoben oder lose sind - kann zu diesem Effekt fuehren.

    Hallo,


    jetzt mal zur urspruenglichen Frage zurueck.


    der Status im Unterprogramm waere #declared, wenn die uebergebene Variable nicht inittialisiert wird.


    Bin mir nicht sicher, ob das nicht beim Laden schon mucken machen wurde (...von Laufzeit Variablen nicht zulaessig).
    Steh grad ein bisschen auf dem Schlauch.


    Du hast fuer deinen Enum #disabled vorgesehen, da kannst du dann im aufrufenden Programm die Variable doch auch so initialisieren?


    Gruss Stefan

    Hallo Rainer,


    eigentlich habe ich es grad andersrum gemeint.


    CWRITE - cWrite ist wie betaetigen der Stopptaste am KCP.
    Bei Brake ohne weitere Bedingung wuerde die Bewegung anhalten aber sofort fortgesetzt, oder mit der naechsten weitergemacht werden.
    Ich wollte damit eigentlich nur sagen, das es einen Unterschied gibt.


    Gruss stefan

    Hallo,


    $Varstate ist meiner Erfahrung nach sehr langsam.


    Ich habe lediglich die These aufgestellt, dass es aufgrund der Gesschwindigkeit der Abarbeitung zum Vorlaufstop kommt.
    Ich sehe keinen logischen Grund, warum Kuka hier gewollt einen Vorlaufstop ausloessen sollte.


    Interpolationstakt ist fix, erhoehen von $advance wird nix bringen - den Beweiss bleibe ich also schuldig.


    Gruss Stefan