Beiträge von HansAlbrecht

    Hallo liebes Forum,

    wir haben zwei Extrakarten für Safety-IO in unserem YRC1000 Controller verbaut, um ein paar Safety-Ventile zu steuern. Die grundsätzliche Safety Verbindung zur SPS haben wir nach Handbuch scheinbar hinbekommen, denn in der SLC SIGNAL DISPLAY Übersicht sehen wir Eingangssignale.


    Wie können wir diese Signale FSBIN etc. in einem Job verwenden? Welche Ausgänge sind die, die auf dem Terminal Block landen?


    LG

    Hans Albrecht

    Ich habe nun einen fast funktionierenden Code zur Umrechnung, der nur leider nicht bei negativen Koordinatenwerten funktioniert:

    Beim Schreiben der High-Bytes von LI00X auf LB00X bekomme ich einen "OVER VARIABLE LIMIT" Fehler, weil in die Byte-Variable kein negativer Wert darf.

    Hat jemand eine kreative Idee, wie ich das lösen kann?

    Perfekt, das auslesen aus den Registern klappt schon mal. Jetzt hab ich nur das Problem, dass ich Integer scheinbar nicht mit DOUT auf eine Output Group schreiben kann, da kann ich nur eine Byte-Variable auswählen. Gibts da einen Trick? ja klar kann ich auf eine ein Byte breite Gruppe nur Bytes schreiben...

    Der Wert sollte tatsächlich nie größer als 100 werden.


    Ich habe nirgends die Gruppendefinitionen gefunden, aber jetzt wo dus gesagt hast, habe ich entdeckt, dass die vordefiniert sind und quasi die PAGEs des GPO sind.


    So sollte es funktionieren, danke!


    *edit: Ja, das klappt:

    SET OG#(98)  EXPRESS B016

    Hallo,

    ich habe einen Integer-Wert auf I016 meiner YRC1000-Steuerung liegen, den ich für die PLC lesbar auf den General Purpose Output 10980-10987 legen muss.


    Mit LADDER kann ich nicht auf den General Purpose Bereich zugreifen, da geht nur der External Output auf >30000:

    Code
    SYS JOB:
    SETREG MREG#(246) I016
    
    LADDER:
    STR #70017
    MOV M246,#31000

    Dort bringt mir der Integer aber leider nichts, der muss auf 10980-10987.


    Gibt es da eine elegante Möglichkeit, das zu bewerkstelligen?


    Beste Grüße

    Hans Albrecht

    Wir haben den Support von Yaskawa gebeten, unser Programm mit ENWAIT zu testen, da es bei unserem Roboter ja noch nicht aktiviert ist (In unserem simulierten Roboter in MotoSim ist es schon verfügbar, aber da funktioniert die Anwendung ja sowieso). Leider haben wir dazu keine Rückmeldung mehr erhalten.


    Da es mit NWAIT auch nicht geklappt hat, habe ich für ENWAIT aber sowieso nicht viel Hoffnung gehabt.


    Wir haben mittlerweile aber eine andere Lösung gefunden: Der Roboter bleibt nicht stehen, wenn zwischen den Bewegungsinstruktionen ausschließlich mit lokalen Variablen gearbeitet wird. Einen Zähler mit INC LB000 zu realisieren war also möglich. Die lokale Variable wird nun beim Programmstart mit dem Wert einer globalen Variable initialisiert und beim Verlassen des Programms zurück in die globale Variable geschrieben.

    Ahh, jetzt hab ichs gefunden.

    Verstehe ich das richtig, dass NWAIT gleich zu Beginn der zugehörigen Bewegung ausgeführt wird, und ENWAIT am Ende der Bewegung? Dann wäre ENWAIT genau das, was wir brauchen.

    Die IF-Blöcke sollen erst verarbeitet werden, wenn der Roboter den Zielpunkt der darüberliegenden Bewegungsanweisung erreicht hat, daher ist NWAIT eigentlicht nicht das, was wir suchen. Wenn die Pfadplanung ohne NWAIT nicht über die IF-Blöcke hinwegplanen kann, dann können wir uns an diese Limitation aber anpassen.

    Trotzdem: Mit NWAIT in der Bewegungsinstruktion haben wir es im Beisein eines YASKAWA-Trainers schon erfolglos versucht, allerdings ohne CWAIT, weil ja der gesamte IF-Block bis zur nächsten Bewegungsinstruktion auf einmal ausgeführt werden soll. Wir könnten noch mit einem CWAIT direkt vor der Bewegungsinstruktion testen.


    Was macht ENWAIT? Dazu konnte ich in meiner Dokumentation nichts finden.

    Hallo,

    danke für die schnelle Antwort! Für die geplante Funktionalität sind die IF-Blöcke und auch die Labels leider unumgänglich. Wir haben auch mit SWITCH-CASE getestet, mit dem gleichen Ergebnis.

    Stehen zwischen den Bewegungsanweisungen keine IF-Conditions sondern nur Labels und Kommentare, funktioniert der Bewegungsablauf rund.

    Die Werte für PL haben wir schon einmal nachgesehen, die sind auf Default (125mm für PL4? bin mir jetzt nicht sicher).


    CR oder PD haben wir tatsächlich noch nicht getestet, das können wir uns mal ansehen.

    Hallo liebes Roboterforum!

    Wir kämpfen seit Jänner damit, dass unser GP110 mit YRC1000 Steuerung Bewegungsabläufe trotz PL=4 nicht durchfährt sondern an jedem Punkt stehen bleibt. Wir versuchen nur nach jedem Punkt unter einer gewissen Bedingung einen Zähler hochzuzählen. Sobald aber eine IF-Abfrage oder ein SWITCH-CASE zwischen den beiden Bewegungsanweisungen steht, fährt der Roboter den Punkt genau an und bleibt kurz stehen, bevor er die nächste Bewegung macht. Auch wenn es in unserem Anwendungsfall nicht ideal ist, haben wir es mit NWAIT probiert, wo er darauffolgende Befehle schon während der Bewegung machen sollte. Das ändert an dem Resultat aber leider auch nichts. Erschwerend kommt hinzu, dass in MotoSim das Verhalten ein anderes ist. Da funktioniert es sehr wohl, und er fährt die Bewegung sauber durch.


    Wir haben unser recht komplexes Programm nun auf einen einfachen Testfall reduziert, wo 4 Punkte zwei mal im Kreis angefahren werden. Nach jedem Bewegungsbefehl steht nur eine IF-THEN-ELSE Anweisung, wo eine Variable gesetzt wird.

    Das Programm ist damit stark vereinfacht, bildet das Verhalten unseres Programmes aber trotzdem ganz gut ab.

    Der Yaskawa-Support konnte uns bisher leider nicht helfen. Habt ihr eine Idee, woran das liegen könnte?


    Beste Grüße

    Hans Albrecht