Lampe blicken lassen wenn der Roboter steht

  • Hallo alle zusammen,


    ich arbeite aktuell an einem KR C3 und wir wollen das Koordinatensystem einer externen Kamera mit seinem kalibrieren.
    Hierfür haben wir auf den Roboter eine Lampe angebracht, welche aktuell extern mit Strom versorgt wird.
    Der Roboter fährt dann nach und nach die Postionen zur Kalibrierung an und wartet immer 2sek wenn er eine Postion erreicht hat. Die Lampe leuchtet dabei dauerhaft.


    Wir wollen jetzt allerdings, dass die Lampe nur durchgehende leuchtet wenn der Robi fährt. Sobald der Robi steht soll die Lampe blicken.
    Ich weiß allerdings nicht so genau welche Schnittstelle des Roboters ich am dümmsten dafür nutzen kann.


    Ich habe mich mal durch die Manuals gelesen und bin auf den X12 gestoßen......selbst wenn es damit geklappt hätte, bestitzt unser KR C3 leider keinen X12
    Also habe ich mal den Support angeschrieben, welcher meinte, er könne sich gerade keine Möglichkeit vorstellen.


    Eigentlich brauche ich ja nur eine Schnittstelle bei der ich einfach eine "1" anlegen kann sobald "$Rob_Stopped" auch auf "1" geht.
    Ist es evtl. über die serielle Schnittstelle umsetzbar? Am Ende des Tages soll es so einfach wie möglich sein. Falls ich einen Mikrocontroller programmieren muss ist es aber auch noch ok.


    Fällt jemanden eine gute Lösung ein?

    Einmal editiert, zuletzt von SJX ()

  • Schritt für Schritt zum Roboterprofi!
  • Hallo Fetzi,
    am simpelsten ist dies zu Lösen über ein Ausgangssignal auf ein Kopplungsrelais, dass Dir die Lampe so schaltet, wie Du es gerne möchtest.
    Softwaretechnische einfach zu Lösen in der SPS.sub (Submitinterpreter). Blinkfunktion über Timer programmieren und verknüpft mit $pro_move oder $rob_stopped dem Ausgang zuweisen, der das Relais nachher schaltet.
    Standardmässig Hardwareausgänge hast Du nur 4 Ausgänge 24V 50mA von der Energiezuführung auf Achse 4. (s. Attachment)
    Kanal 1 und 2 sind parallel schon belegt mit Ventile der internen Luftkanäle auf anderer Seite. Kanäle 3+4 sind komplett frei.
    Achtung: Sind sehr heikel. Sauber arbeiten. Kurzschlüsse oder zu hohe Belastung kann Antriebsverstärker Achse 4-6 zerstören!
    Zu Stecker siehe:
    https://www.roboterforum.de/ro…/seo/2272/msg8107#msg8107


    Weitere I/O's hängt man normalerweise über Bussysteme an die Steuerung. Als Standardbussystem ist DeviceNet auf der MFC vorhanden. Kann ein DeviceNet-Koppler wie von WAGO oder Beckhoff daran betrieben werden.


    Du schreibst nicht, was optional an Schnittstellen schon vorhanden ist/sind an Deiner Steuerung und wie Du bis jetzt nach draussen kommunizierst / oder noch vor hast in Deinem Projekt. Evtl. lässt sich da schon was vorhandenes dazu nutzen.
    Gruss SJX

  • Also du wirst gleich merken, dass ich wirklich erst seit 3 Wochen mit so einem Robi arbeite und ein klassicher Student bin der hier gerade seine ersten praxis relevanten Erfahrungen macht ;) .



    Softwaretechnische einfach zu Lösen in der SPS.sub (Submitinterpreter). Blinkfunktion über Timer programmieren und verknüpft mit $pro_move oder $rob_stopped dem Ausgang zuweisen, der das Relais nachher schaltet.


    Wenn ich mir mal so den Quelltext der SPS.sub anschaue sieht es für mich so aus, als sei es eine Art Klasse, die global zur Verfügung steht und es jedem Modul erlaubt ihre Funktionen aufzurufen. (Jetzt mal im Sinne von klassischer OOP).
    Ist es wichtig, dass ich die Routine jetzt in der SPS.sub steht und nicht direkt in dem Modul?



    -Kann man die Pins der Energiezuführung auch einzeln ansteuern?
    -Wie genau arbeite ich dann in der KRL mit der E/A der Energiezuführung?( Bei DevNet sage ich dann ja z.B
    "SIGNAL TEST $OUT[3]" ich habe in der iosys.ini dem DevNet ja aber auch einen Bereich zugeordnet)
    -Wie würde ich die Pins nutzen?
    Brauche ich zwangsläufig so einen Stecker und wenn ja wie würde ich mit diesem weiterverfahren?


    https://www.roboterforum.de/ro…/seo/2272/msg8107#msg8107
    Weitere I/O's hängt man normalerweise über Bussysteme an die Steuerung. Als Standardbussystem ist DeviceNet auf der MFC vorhanden. Kann ein DeviceNet-Koppler wie von WAGO oder Beckhoff daran betrieben werden.


    Du schreibst nicht, was optional an Schnittstellen schon vorhanden ist/sind an Deiner Steuerung und wie Du bis jetzt nach draussen kommunizierst / oder noch vor hast in Deinem Projekt. Evtl. lässt sich da schon was vorhandenes dazu nutzen.
    Gruss SJX


    Die vorhandenen Schnittstellen habe ich dir als Foto in den Anhang gelegt.
    Aktuell steuer ich den Robi über JOpenShowVar oder über DeviceNet. Habe beides mal testweise mit derselben Funktionalität umgesetzt.
    Wichtig ist, dass das Blinken der Lampe nicht von einem externen System ausgelöst werden soll. Das soll vom KRC selbst kommen.

  • Hallo Fetzi,


    Zitat


    Wenn ich mir mal so den Quelltext der SPS.sub anschaue sieht es für mich so aus, als sei es eine Art Klasse, die global zur Verfügung steht und es jedem Modul erlaubt ihre Funktionen aufzurufen. (Jetzt mal im Sinne von klassischer OOP).
    Ist es wichtig, dass ich die Routine jetzt in der SPS.sub steht und nicht direkt in dem Modul?


    Submitinterpreter ist Paralleltask im Hintergrund.
    Startet nach Steuerungskaltstart, läuft Initialisierung durch und dreht nachher immer in LOOP-Schleife.
    Wichtigster Grundsatz: Nie was programmieren, dass Durchlauf anhält (z.B. Wait...)
    Code kann direkt hineingeschrieben werden oder auch über lokale / globale Unterprogramme. Dito Datenhandling


    DEF SPS ( )
    DECLARATIONS
    INI
    $TIMER[1] = 0
    $TIMER_STOP[1] = FALSE

    LOOP
    WAIT FOR NOT($POWER_FAIL)

    IF $TIMER[1] > 1000 THEN ;Blinksequenz 1 Sekunden
    $TIMER[1] = 0
    $FLAG[1] = NOT $FLAG[1] ;Standardvariable verwendet
    ENDIF
    $OUT[3] = $FLAG[1] OR $PRO_MOVE ;Entsprechender Ausgang verwenden


    USER PLC
    ENDLOOP



    Ja. im Prog über $OUT[X] = True / False / Verknüpfung etc...
    Welcher Ausgang hängt davon ab, wie er in iosys.ini gemappt wurde. (DSEIO, z.b. OUTB0=0 Ausgänge 1 -8)
    [size=3]$OUT[3] = True , hättest an Pin 9 24V.[/size]
    [size=3]$OUT[4] = True , hättest an Pin 10 24V.[/size]
    [size=3]Stecker bräuchtest Du für Weiterführung zu Relais, dessen Kontakte dann die Spannung zur Lampe schaltet.[/size]
    [size=3]Elektrische Kentnisse vorhanden? Sonst Finger weg.[/size]


    Zitat


    Die vorhandenen Schnittstellen habe ich dir als Foto in den Anhang gelegt.
    Aktuell steuer ich den Robi über JOpenShowVar oder über DeviceNet. Habe beides mal testweise mit derselben Funktionalität umgesetzt.


    Sehe keine Hardware an Devnet. Was ist da vorhanden betreffend I/O Schnittstelle? (SPS, Koppler, oder direkt nur Kameras?)


    Gruss SJX

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

    Einmal editiert, zuletzt von SJX ()


  • Sehe keine Hardware an Devnet. Was ist da vorhanden betreffend I/O Schnittstelle? (SPS, Koppler, oder direkt nur Kameras?)


    Das liegt daran, dass ich das Kabel zu dem Zeitpunkt nicht angeschlossen hatte. Schließe es nur an wenn ich auch gerade mit DevNet teste, da das Kabel einfach auf dem Boden liegt akutell. Ist nur eine unnötige Stolpergefahr.
    Für die Nutzung von DeviceNet habe ich in meinem Rechner eine Karte von Hilscher verbaut.



    Mal abgesehen davon, dass wir uns für einen anderen Weg entschieden haben wo die Lampe auch ruhig dauerhaft blinken kann, also der Roboter kein Signal mehr geben muss, dass er steht. Hätte ich es auch über die serielle Schnittstelle gemacht.
    Channel öffnen einfach ein mit CWRITE ein "g" schreiben wenn die Lampe losblinken soll und am anderen Ende interpretiert ein Atmega8 das "g" und schaltet ein Relais. Soll die Lampe aufhören einfach ein "s" senden und der Mikrocontroller hört auf das Relais zu öffnen und wieder zu schließen.
    Ist evtl ein bisschen aufwendig, aber dafür spielt man nicht an der Energiezuführung rum.



    Danke nochmal für deine Hilfe SJX!
    Das Forum ist wirklich ein Segen für jeden Neueinsteiger in diese ganze Welt!

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden