Beiträge von Robotermann

    Guten Morgen,
    wo ist bei dir der Unterschied zwischen einer Sicherheits-SPS und einer Safe-PLC, ausser dass das eine der deutsche und das andere der englische Begriff für dasselbe Bauteil ist?
    In deiner Frage ist nicht ganz klar, obs dir nur um die sicheren E/A geht oder ob du auch die normalen E/As (Automatik Extern-Schnittstelle) über die Sicherheit ansteuern willst.
    Gruß,
    Robotermann


    Wenn es aber wirklich eine Systemvariable ist, könnte es aber sein, dass die bei jedem Zugriff aktualisiert wird um immer die aktuellen Daten zur Verfügung zu stellen. Vielleicht geht dann intern bei der Abfrage der Ist-Motordaten die Zeit verloren.


    Guten Morgen,


    genau das war ja meine Behauptung oben :zwink: Und deshalb will ich ja möglichst nur einmal zugreifen um alles abzuziehen, und nicht für jede Achse einen Zugriff ($drive_load[1], $drive_load[2]...) der jedesmal wieder die Berechnung auslöst.


    $drive_load ist die Achsauslastung.


    Gruß,


    Robotermann

    Guten Morgen,


    vorher waren es max. 24ms. Hinterher >60ms (ein Feld auslesen) oder >350ms (alle Felder auslesen)


    Das Array ist $drive_load (Auslastung der Achsen)


    Ich weiß, klingt komisch. Ist aber so.


    Gruß,
    Robotermann

    Hallo zusammen,


    gibt es eigentlich keine Möglichkeit, einen Array (kukanisch: ein Feld) in einen anderen "in einem Rutsch" zu kopieren?


    Hintergrund: Ich habe eine Systemvariable (Array, 10 Werte), auf die jeder Zugriff lange dauert und den submit ausbremst. Wenn ich da jetzt 10 Zyklen hintereinander drauf zugreife um die 10 Werte rauszulesen, ist mir in diesen 10 Zyklen der submit zu langsam.
    Die Vermutung ist, dass da irgendwas erst beim Zugriff berechnet wird. Die Hoffnung dabei ist, dass bei jedem Zugriff gleich der komplette Array berechnet wird und nicht nur der abgefragte Index.
    Wenn ich die Variable jetzt in einem Zyklus in einen anderen Array kopieren könnte wäre nur dieser eine Zyklus langsam, die anderen 9 wieder schneller. Damit könnten wir evtl. leben.


    Ein einfaches "=" mag der Roboter jedenfalls nicht. Die Felder einzeln weiterzukopieren bringt mir in dem Fall auch nix - dann hab ich wieder 10 Zugriffe :(


    Gruß,


    Robotermann

    Guten Morgen,


    ich habe momentan bei mir hier den Eindruck, dass es drauf ankommt ob man 16 oder 32 Bit verwendet. 16 Bit = UINT (ohne Vorzeichen, bei negativen Zahlen hält der Submit mit der Fehlermeldung "Überlauf" an), 32 Bit DINT (auch negative Zahlen).


    So wars zumindest letzte Woche noch bei dem Roboter den ich hier habe. Warum habe ich auch nicht verstanden...


    Gruß,


    Robotermann

    Habe die TCP Daten schon mit 3 Nachkommastellen, wie ich es gewünscht hatte. Wieso schreibt das Kuka nicht in die Dokumentation?


    Hallo nochmal,


    Ich habs selber nicht ausprobiert, aber bei uns im Haus gibts nur schlechte Erfahrungen mit "aktuelle Position auf die Schnittstelle legen". Achsspezifisch ($axis_act) funktioniert, aber aktuelle Koordinaten ($pos_act)über den sps.sub ausgeben führt wohl oft dazu, dass der sps.sub anhält. Weil die Variablen plötzlich doch nicht initialisiert sind oder aus welchen Gründen auch immer.


    Hat da jemand andere Erfahrungen gemacht?


    Gruß,
    Robotermann

    Das DInt deklariere ich in der SPS richtig? In der Kuka geb ich ja nur 32 bit als "Signal" vor. Oder steh ich aufm Schlauch?
    Unglücklicherweise sitzt eine S7-1200 dahinter... da ist nichts mit AWL.... :(


    Ja. In der $config.dat "SIGNAL $OUT[ x ] TO $OUT[ x+32 ]". Und dann mal auf der SPS schauen was ankommt, ob noch irgendwas getauscht werden muss (komme da auch immer durcheinander welche SPS mit welchem Indianer verheiratet ist)


    Gruß,
    Roboterman

    Guten Morgen,


    REALs über die Schnittstelle mag der Kuka nicht. Auch wenn du 4 Byte deklarierst, gibt ers abgeschnitten als DINT aus, nicht als REAL.


    Du kannst versuchen die Position*100 auf eine DINT-Variable (360*100 ist zu groß für INT) zu legen und die dann auszugeben - auf der anderen Seite dann durch 100 Teilen nicht vergessen ;)


    Gruß,
    Robotermann

    Guten Morgen,


    sps.sub ist nicht zuverlässig 12ms. Gestern mal mit 2 Timern ausprobiert, die max. Zykluszeit krieg ich nicht kleiner als 48ms. Auch wenn ich den Timer von Hand abnulle steht sofort wieder 48 drin - es scheint also oft "48er-Zyklen" zu geben. Mit ein paar mehr E/As in der Verarbeitung (aber immer noch nicht viele) gings ganz schnell auch mal auf 60ms hoch...


    Gruß,
    Robotermann

    Guten Morgen,


    Das Stoppen des Timers kann man auch wieder in einen Trigger legen, dann muss der Roboter nicht anhalten - je nachdem wie kritisch eure Taktzeit ist. In den Doku-Kaptiteln über Überschleifen und Trigger steht dann auch, wann der Trigger schaltet ;)


    Gruß,
    Robotermann

    Guten Morgen,


    da gibts aber bei beiden Methoden die Möglichkeit, den Puls bzw. das Timer setzen in einen Trigger zu verlagern, falls die 5s ab einem bestimmten Punkt abgewartet werden sollen. Das grenzt die Unschärfe wieder ein ;)


    Gruß,
    Robotermann

    Guten Morgen,


    das kannst du genauso gut im Cell machen.
    Ziemlich hoch priorisiert das ganze, muss das sein? Ich hab da immer Bauchweh (auch wenn ich noch keine schlechten Erfahrungen gemacht hab)


    Gruß,
    Robotermann
    ps: "Wenn das entsprechende Signal anliegt" ist nicht ganz korrekt, korrekter wäre "Wenn ein Wechsel auf den angegebenen Signalzustand erfolgt" - der Interrupt braucht die Flanke.

    Guten Morgen,


    in diesem Zusammenhang auch empfehlenswert: Die Hirnforschung :zwink:
    Bei SWR1 Leute war vor einiger Zeit Manfred Spitzer (korrigiert mich wenn ich den Namen falsch im Kopf hab), der sich mit Fernsehen, TV, Internet, Spielekonsolen und den einfluss auf die Entwicklung von Kindern beschäftigt. Und nach einigen Jahren Forschung ist der Typ inzwischen echt krass drauf.
    Einfach mal die Suchmaschine des geringsten Misstrauens befragen...


    Gruß,
    Robotermann


    Für die Systemflags gibt es einen eigenen Dialog bei der KRC im Menü Anzeige.
    Wenn die Flags z.B. zur Auswahl verwendet werden, welches Magazin beladen werden soll, ist es für die Bediener i.d.R.
    einfacher, das über den Flag-Dialog vorzugeben als im Programm etwas zu ändern.


    Naja, für die "selbstgemachten" Variablen gibts die configmon.ini. Das ist für den Bediener genauso einfach. Nur können dort dann nicht nur Flags, sondern auch z.B. Ints angezeigt werden - Zählerstände, Korrekturwerte oder so. Dann muss sich der Bediener nur einen Weg merken, wie er was ändern kann, und hat dort alles (je nach Programmierer sogar schön übersichtlich ;) )


    Gruß,
    Robotermann

    Salve,


    beim Programmieren sogar meist nur die Tasten vom Laptop ;)
    Aber zum teachen die Tasten am KCP. Höchstens mal für die letzten paar zehntel bis max. 1-2mm beim Tool- und Basevermessen (was wir so gut wie nie machen) die Maus. Und da auch nur wenn der Roboter (für die Tasten) ungeschickt steht...


    Gruß,
    Robotermann