Beiträge von Z750

    Hi,

    du schreibst, dass es kein Programmabarbeitungsfehler sein kann weil das Programm noch gar nicht läuft. Wenn ich in Doku schaue liegt hier wohl dein Problem denn das Signal wird erst dann zurückgesetzt.



    PS: Mit dem Eingang "Reset Execution Error" kannst du nur den Ausgang "Execution Error" zurücksetzen. So wie es aussieht aber NICHT den "Production Execution Error".

    Ich habe in Robotstudo mal ein Test-System mit RW6.13 erstellt und siehe da....


    Trotzdem kann ich in der Doku zu 6.13. nichts davon finden. In der Doku zu 7.5, die ich hier noch habe, ist es drin.

    Hier aus den ReleasNotes RW13


    1.4 System output for P P moved to MainSystem output for P P moved to Main

    The system output PP Moved can be configured to only be set when PP is moved to main. It will be set and not pulsed. It will be reset when execution starts and cycle on is set.


    Kannst du mir sagen wo das zu finden ist? Ich habe in der Doku Systemparameter 6.13 nichts dazu finden können.

    Aber du könntest es als eine Art Rückmeldung für den PPtoMain verwenden. Wenn du den Ausgang in der SPS abfragst nachdem du den PPtoMain gesendet hast könntest du wenigstens sehen ob die Anforderung von PPtoMain erfolgreich war d.h. der PZ verschoben wurde.

    So interpretiere ich das jetzt.

    Vorrausgesetzt der PPMoved wird, wie Loipe geschrieben hat, auch wirklich aktiviert wenn der PZ über den Systemausgang verschoben wird.

    Ich kenne das nur von Yaskawa. ABB hat da, auch in der aktuellen RW, nichts


    Das einzige das ich kenne ist das:

    Code
    IF IsStopStateEvent (\PPToMain) THEN
    ! PP has been moved to main routine during the last program stop
    ENDIF

    Kann man dann z.B. in das StartEvent packen. Ich selbst habe das aber noch nie verwendet. Kann also nicht sagen wie die Feinheiten in der Verwendung aussehen

    Hallo,

    geht bestimmt auch eleganter aber das fällt mir spontan dazu ein.

    Aus dem Bauch heraus würde ich sagen, dass es da eine Überschneidung in der Kommunikation mit der SPS gab. SPS schickt z.B. ein StartAtMain obwohl das Programm noch läuft.

    Ist aber ohne den Log bzw. Fehlernummern reine Spekulation.

    Der unterschied ist hauptsächlich der:

    Entweder hast du zwei getrennte Signale(PPtoMain und dann Start) oder du hast nur eins das beides macht (StartATMain).


    Der Schlüssel ist, wie die Kollegen schon geschrieben haben, dass du dir mit dem SPSler einig sein musst wie der Ablauf ist. z.B.

    1. Warten auf Signal

    2. Roboter->SPS: sendet Signal Timeout

    3. SPS->Roboter: Systeminput StartAtMain


    Wenn du so vorgehst kannst du ohne Probleme das Beispiel aus Post 4 nehmen

    Von der Programmierung her würde das funktionieren. Allerdings solltest du dir im Klaren sein wie sich dieses Programm verhält.

    Das "Break" aus meinem Beispiel mach hier z.B. keinen Sinn mehr da es das Programm abbricht. Außerdem solltest du daran denken was passiert wenn er das Signal "di_SchraubeAbgeworfen" nicht bekommt. In deinem Fall würde er das Programm nämlich einfach weiter abarbeiten als ob er das Signal "di_GoAbwurfPosition" bekommen hätte.

    Wie immer führen viele Wege nach Rom, aber man sollte immer an "was ist wenn" denken.

    wir haben das bisher immer über die SPS gemacht. So kann man das sauber in den Zyklus integrieren und zum Beispiel mit Tür-Anforderung usw. verwurschteln

    Hallo,

    sofern du die Möglichkeit hast, logge doch das Ergebnis von "CyclicBrakeCheck_w_diagnosisrgebnis" ins Log oder eine Datei mit. Dann kannst du wenigstens eingrenzen ob der Test immer erfolgreich war und wie oft er tatsächlich ausgeführt wird.

    Ich habe zwar noch nie einen Kunden erlebt der etwas übertreibt um schnelleren Service zu bekommen ( ;) ^^ ) aber Kontrolle ist besser.

    Ich bin mir gerade nicht ganz sicher ob die "Offs" Funktion die Record-Arrays gut findet.

    Wenn ja dann könnte das so aussehen:

    Code
    pAktPos:=RelTool(pDispencePath_2{nAktPosNr}, Messwerte_2{nAktPosNr}.Offset_X, Messwerte_2{nAktPosNr}.Offset_Y, Messwerte_2{nAktPosNr}.Offset_Z);


    Wenn nicht, musst du deine Werte einmal zwischenspeichern (fände ich auch übersichtlicher):

    Code
    num Offs_X := Messwerte_2{nAktPosNr}.Offset_X;
    num Offs_Y := Messwerte_2{nAktPosNr}.Offset_Y;
    num Offs_Z := Messwerte_2{nAktPosNr}.Offset_Z;
    
    pAktPos:=RelTool(pDispencePath_2{nAktPosNr},Offs_X ,Offs_Y ,Offs_Z);


    Grundsätzlich ist es aber schwer zu helfen wenn man nicht genau weiß woran es genau hapert.

    Hallo,

    kurz gesagt bedeutet /OV dass der Punkt außerhalb des Arbeitsbereiches liegt. Genauer, außerhalb des Bewegungsbereichs des P-Punkts (Drehpunkt Achse 5).

    Mit dem ///LIMIT ON/OFF kann ich gerade auch nichts anfangen. Evtl. hat der Ersteller des Programms damit temporär die Softlimits deaktiviert.

    Mit Konsole meine ich die Eingabeaufforderung von Windows also "Win+R -> cmd". Ich bin mir aber nicht zu 100% sicher ob das auch funktioniert wenn der PC am Serviceport hängt oder nur wenn der Roboter im localen Netzwerk ist.

    Ansonsten hat AlexH ja schon eine Alternative geschrieben