1. Dashboard
    1. Dashboard
    2. Suche
  2. Forum
    1. Unresolved Threads
  3. Members
    1. Recent Activities
    2. Users Online
    3. Team
    4. Search Members
  4. Jobs
  5. Articles
  6. Calendar
    1. Upcoming Events
    2. Map
  7. Shop
    1. Orders
    2. Shipping Costs
  • Login or register
  • Search
Roboterprogrammierer finden
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Events
  • Files
  • Products
  • More Options
  1. Roboterforum.de - die Industrieroboter und Cobot Community
  2. Forum
  3. Industrieroboter Support
  4. ABB Roboter
Your browser does not support videos Handwerk automatisieren - ich schaffs mit KUKA
besuche unseren Partner
Roboterschulung Online
Online Roboterschulung
Advertise in Robotics
Der Roboterkanal
Deutscher Robotikverband
Werben in Robotik
Werben für Robotik

Fahrt mit Externen Zustimmtaster in Automatik

  • HeavyRobot
  • February 3, 2025 at 1:33 PM
  • Thread is Resolved
  • HeavyRobot
    Reactions Received
    7
    Points
    262
    Posts
    31
    About Me

    Neuling in der Robotik Welt

    Seid über 20 Jahren im Maschinenbau

    Location
    NRW
    Occupation
    SPS und Robotik Programmierer
    • February 3, 2025 at 1:33 PM
    • #1

    Moin ich hab hier aktuell meinen Robby der soll ein bestimmtes Proc nur bei Externer Zustimmung abfahren.

    Also genau:

    Ich hab ein Proc wo der Robby in eine Serviceposition fährt. Dies soll er aber nur dann tun, wenn Dauerhaft ein Signal von meiner SPS ansteht. Wenn das Signal wegfällt muss der Roboter sofort/zügig stehen bleiben. (Keine Sichere Funktion von nöten!) und sollte das Signal wieder kommen, soll er weiter fahren.

    Kann mir einer einen Tipp geben, wie ich das umsetzen könnte? Mir fehlt da irgendwie der Ansatz.

    Dank euch!

  • AD
  • AlexRobo
    Reactions Received
    4
    Points
    329
    Posts
    52
    Location
    Gütersloh
    Occupation
    Softwareentwickler (C#, SPS (Siemens), Roboter (KUKA, Stäubli, Kawasaki, FANUC) )
    • February 3, 2025 at 2:19 PM
    • #2

    Um welchen Hersteller geht es denn? Es gibt ja i.d.R. eine Fahrfreigabe und einen Hintergrundprogramm (Submit bei Kuka z.B.) ... Da machste einfach eine Abfrage rein und entziehst die Fahrfreigabe, wenn das Signal wegfällt..

    :!:Geht nicht gibt es nicht :!:

  • HeavyRobot
    Reactions Received
    7
    Points
    262
    Posts
    31
    About Me

    Neuling in der Robotik Welt

    Seid über 20 Jahren im Maschinenbau

    Location
    NRW
    Occupation
    SPS und Robotik Programmierer
    • February 3, 2025 at 2:38 PM
    • #3

    ABB

    steht ja im ABB Forumsteil ;)

  • Alex H
    Reactions Received
    10
    Points
    380
    Posts
    65
    • February 3, 2025 at 4:34 PM
    • #4

    Kannst du dem Robi nicht über die System I/O in einen Stop fahren? Und den Zustand vom Ausgang der den Stop auslöst baust du dir dann über eine Cross Connection zusammen.


    Wäre jetzt so spontan meine Idee.

  • Roman.dobler
    Reactions Received
    1
    Points
    11
    Posts
    2
    • February 3, 2025 at 5:01 PM
    • #5

    Wenn er wieder weiterfahren sollte wenn du wieder drückst ohne start würde ich einen Interrupt verwenden der stopt wenn der eingang wegfällt und wieder startet wenn er kommt


    mit diesem interrupt habe ich für den kunden einen einfachen stoptaster an der HMI gebaut wo sie kurz stoppen konnten und wieder starten bei bedarf


    TRAP IrRoboterStop
    !
    ISleep intRoboterStop;
    StopMove;
    WarteAufEingang diReqCylceStop, LOW, 5, strMeld100;
    StartMove;
    IWatch intRoboterStop;
    !
    ENDTRAP

  • HeavyRobot
    Reactions Received
    7
    Points
    262
    Posts
    31
    About Me

    Neuling in der Robotik Welt

    Seid über 20 Jahren im Maschinenbau

    Location
    NRW
    Occupation
    SPS und Robotik Programmierer
    • February 4, 2025 at 8:28 AM
    • #6
    Quote from Roman.dobler

    Wenn er wieder weiterfahren sollte wenn du wieder drückst ohne start würde ich einen Interrupt verwenden der stopt wenn der eingang wegfällt und wieder startet wenn er kommt


    mit diesem interrupt habe ich für den kunden einen einfachen stoptaster an der HMI gebaut wo sie kurz stoppen konnten und wieder starten bei bedarf


    TRAP IrRoboterStop
    !
    ISleep intRoboterStop;
    StopMove;
    WarteAufEingang diReqCylceStop, LOW, 5, strMeld100;
    StartMove;
    IWatch intRoboterStop;
    !
    ENDTRAP

    Display More

    Hört sich erstmal möglich an, ich glaube aber das ich hierfür eine MutliTask Funktionalität brauche oder?! Leider hat der Roboter dies nicht :(

  • Stingray
    Reactions Received
    17
    Points
    1,417
    Trophies
    1
    Posts
    229
    • February 4, 2025 at 8:36 AM
    • #7
    Quote from Roman.dobler


    TRAP IrRoboterStop
    !
    ISleep intRoboterStop;
    StopMove;
    WarteAufEingang diReqCylceStop, LOW, 5, strMeld100;
    StartMove;
    IWatch intRoboterStop;
    !
    ENDTRAP

    Display More

    Das ist keine MultiTask anwendung. Das ist ein Trapproutine die im Bewegungstask ausgeführt werden kann.

  • HeavyRobot
    Reactions Received
    7
    Points
    262
    Posts
    31
    About Me

    Neuling in der Robotik Welt

    Seid über 20 Jahren im Maschinenbau

    Location
    NRW
    Occupation
    SPS und Robotik Programmierer
    • February 4, 2025 at 11:09 AM
    • #8
    Quote from Stingray

    Das ist keine MultiTask anwendung. Das ist ein Trapproutine die im Bewegungstask ausgeführt werden kann.

    Ich Fürchte ich verstehe es nicht :(


    Ich hab ein proc was wie folgt aussehen kann

    Code
    PROC RB4_Ablegen()
            MoveAbsJ RB4_AchsSafeposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;
            MoveL RB4_Messposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;
            Sauger_runter;
            !Messfahrt auf Kundenwunsch!
            MoveL RB4_Messposition,Speed_Norm,fine,Sauger_Mitte\WObj:=Rollenbahn_4;                         !Auf Messposition
            Sauger_runter;                                                                                  !Sauger runter
            IF ZPOS_reset_RB4=1 THEN
                SetGO Zpos_RB4,0;
                TempPosRB4.trans.z:=0;
            ENDIF
            IF TempPosRB4.trans.z>0 THEN                                                                             !Abfrage ob Z-Wert größer 0
                MoveL OFFS(TempPosRB4,0,0,200),Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;              !200m Über Z-Position fahren
            ENDIF
            SetDO Interupt_Freigabe,1;                                                                      !Interrupt Freigeben
            TEST_Interrupt;
            SearchL\Stop,Interupt,TempPosRB4,RB4_Aufnahmeposition,v100,Sauger_Mitte\WObj:=Rollenbahn_4;     !Messfahrt, Stop bei Interupt
            SetDO Interupt_Freigabe,0;                                                                      !Interrupt Sperren
            SetGO Zpos_RB4,round(TempPosRB4.trans.z);                                                              !Abspeicherung Z-POS
            Sauger_Aus;
            Blasen_Ein;
            MoveL OFFS(TempPosRB4,0,0,50),Speed_Slow,fine,Sauger_Mitte\WObj:=Rollenbahn_4;
            WaitTime Abtropfzeit;
            MoveL RB4_Messposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;
            Blasen_Aus;
            MoveAbsJ RB4_AchsSafeposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;
        ENDPROC
    Display More

    Wie kann ich hier die Traproutine einbauen, das der Roboter nur fährt, wenn der SPS Eingang "Zustimmung" auf TRUE ist?

  • Stingray
    Reactions Received
    17
    Points
    1,417
    Trophies
    1
    Posts
    229
    • February 4, 2025 at 12:05 PM
    • #9
    Code
    VAR intnum intRoboterStop; !Variable für Interruptnummer 
    
    PROC RB4_Ablegen()
    !*******************************************************************************
    	IDelete intZustimmtaster; ! Interrupt sicherheishalber Löschen 
        
        WaitDi diZustimmtaster,1; !Warte das Zustimmtaster Wirklich 1 ist
        CONNECT intRoboterStop WITH IrRoboterStop; !Verbinde Interrupt nummer mit Traproutine
        ISignalDI diZustimmtaster,0,intRoboterStop; Verbinde interrupt mit Zustand Zustimmtaster 
        IWatch intRoboterStop; !Schauche auf Interrupt
    !*******************************************************************************
            MoveAbsJ RB4_AchsSafeposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;
            MoveL RB4_Messposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;
            Sauger_runter;
            !Messfahrt auf Kundenwunsch!
            MoveL RB4_Messposition,Speed_Norm,fine,Sauger_Mitte\WObj:=Rollenbahn_4;                         !Auf Messposition
            Sauger_runter;                                                                                  !Sauger runter
            IF ZPOS_reset_RB4=1 THEN
                SetGO Zpos_RB4,0;
                TempPosRB4.trans.z:=0;
            ENDIF
            IF TempPosRB4.trans.z>0 THEN                                                                             !Abfrage ob Z-Wert größer 0
                MoveL OFFS(TempPosRB4,0,0,200),Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;              !200m Über Z-Position fahren
            ENDIF
            SetDO Interupt_Freigabe,1;                                                                      !Interrupt Freigeben
            TEST_Interrupt;
            SearchL\Stop,Interupt,TempPosRB4,RB4_Aufnahmeposition,v100,Sauger_Mitte\WObj:=Rollenbahn_4;     !Messfahrt, Stop bei Interupt
            SetDO Interupt_Freigabe,0;                                                                      !Interrupt Sperren
            SetGO Zpos_RB4,round(TempPosRB4.trans.z);                                                              !Abspeicherung Z-POS
            Sauger_Aus;
            Blasen_Ein;
            MoveL OFFS(TempPosRB4,0,0,50),Speed_Slow,fine,Sauger_Mitte\WObj:=Rollenbahn_4;
            WaitTime Abtropfzeit;
            MoveL RB4_Messposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;
            Blasen_Aus;
            MoveAbsJ RB4_AchsSafeposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;
            IDelete intZustimmtaster; ! Löschen am ende 
        ENDPROC
        
    !*******************************************************************************    
        TRAP IrRoboterStop
    !
    ISleep intRoboterStop; !Interrupt schlafen legen da er aktuell ausgeführt wird
    StopMove; !Stoppe nur bewegung ohne Progammstop
    WaitDi diZustimmtaster,1; !Warte das Zustimmtaster Wirklich 1 ist
    StartMove; !Erlaube Bewegung 
    IWatch intRoboterStop; !Beobachete Wieder Inerrupt
    !
    ENDTRAP
    !*******************************************************************************
    Display More

    So könnte sowas aussehen.

    Ich habe das aber jetzt nicht ausprobiert!

    Ich habe mal versuche es so gut wie möglich zu komentieren, ich hoffe es ist jetzt etwas verständlicher.

  • Roman.dobler
    Reactions Received
    1
    Points
    11
    Posts
    2
    • February 4, 2025 at 12:50 PM
    • #10

    Grundsätzlich hat stingray recht müsste so funktionieren nur ein kleiner tipfehler


    !******************************************************************************* IDelete intRoboterStop; Nicht intZustimmtaster; ! Interrupt sicherheishalber Löschen


    Ich will dich jetzt nicht zusätzlich verwirren aber um übersichtlicher zu bleiben kannst du wie folgt vorgehen


    VAR intnum intRoboterStop; !Variable für Interruptnummer würde ich global wo du auch deine anderen variablen deklariest hinzufügen muss nicht in diesem Proc sein


    2 neue Proc erstellen

    InterruptInit()

    InterruptUser()

    Proc InterruptInit() !Sämtliche Interrupts Initialisieren das muss 1x nach PZMain ausgeführt werden ich mache das in der Main Routine gleich am Anfang bevor ich in irgendwelche unterroutinen springe

    IDelete intRoboterStop; ! Interrupt sicherheishalber Löschen

    CONNECT intRoboterStop WITH IrRoboterStop; !Verbinde Interrupt nummer mit Traproutine

    ISignalDI diZustimmtaster,0,intRoboterStop; Verbinde interrupt mit Zustand Zustimmtaster

    ISleep intRoboterStop; !Legt den Interrupt vorerst auf Standby

    EndProc


    Proc InterruptUser() ! Hier könntest du ggf mehrere Trap Routinen einfügen wenn du diese benötigst

    TRAP IrRoboterStop

    ISleep intRoboterStop; !Interrupt schlafen legen da er aktuell ausgeführt wird

    StopMove; !Stoppe nur bewegung ohne Progammstop

    WaitDi diZustimmtaster,1; !Warte das Zustimmtaster Wirklich 1 ist

    StartMove; !Erlaube Bewegung

    IWatch intRoboterStop; !Beobachete Wieder Inerrupt !

    ENDTRAP


    Dann kommt dein Programm

    PROC RB4_Ablegen()

    IWatch intRoboterStop ! mit diesem Befehl kannst du überall wenn notwendig deinen Interrupt Aktivieren ab jetzt wird auf diesen Eingang geschaut und gestopt


    MoveAbsJ RB4_AchsSafeposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4; MoveL RB4_Messposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4; Sauger_runter; !Messfahrt auf Kundenwunsch! MoveL RB4_Messposition,Speed_Norm,fine,Sauger_Mitte\WObj:=Rollenbahn_4; !Auf Messposition Sauger_runter; !Sauger runter IF ZPOS_reset_RB4=1 THEN SetGO Zpos_RB4,0; TempPosRB4.trans.z:=0; ENDIF IF TempPosRB4.trans.z>0 THEN !Abfrage ob Z-Wert größer 0 MoveL OFFS(TempPosRB4,0,0,200),Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4; !200m Über Z-Position fahren ENDIF SetDO Interupt_Freigabe,1; !Interrupt Freigeben TEST_Interrupt; SearchL\Stop,Interupt,TempPosRB4,RB4_Aufnahmeposition,v100,Sauger_Mitte\WObj:=Rollenbahn_4; !Messfahrt, Stop bei Interupt SetDO Interupt_Freigabe,0; !Interrupt Sperren SetGO Zpos_RB4,round(TempPosRB4.trans.z); !Abspeicherung Z-POS Sauger_Aus; Blasen_Ein; MoveL OFFS(TempPosRB4,0,0,50),Speed_Slow,fine,Sauger_Mitte\WObj:=Rollenbahn_4; WaitTime Abtropfzeit; MoveL RB4_Messposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4; Blasen_Aus; MoveAbsJ RB4_AchsSafeposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4; IDelete intZustimmtaster; ! Löschen am ende


    ISleep intRoboterStop ! mit diesem Befehl kannst du überall wenn notwendig deinen Interrupt Deaktivieren ab jetzt wird Nicht mehr auf diesen Eingang geschaut und gestopt

    ENDPROC

    mögliche beispiele für Interrupts ich stoppe einen Roboter in jeder Bewegung wenn z.b. der Systemdruck abfällt oder ich ein Teil aus dem Greifer verliere


    edit: Stopmove bremst den Roboter mit aktuell eingestellter Beschleunigung auf der Bahn

    Stopmove\Quick; ! stopt den Roboter so schnell wie möglich aber bahntreu

    Edited once, last by Roman.dobler (February 4, 2025 at 12:59 PM).

  • HeavyRobot
    Reactions Received
    7
    Points
    262
    Posts
    31
    About Me

    Neuling in der Robotik Welt

    Seid über 20 Jahren im Maschinenbau

    Location
    NRW
    Occupation
    SPS und Robotik Programmierer
    • February 4, 2025 at 1:15 PM
    • #11

    Vielen lieben Dank euch!

    Ich werde es das nächste mal wenn ich dran bin probieren können!

ABB Roboter Support Forum

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

Tags

  • 1
  • 33
  • 2
  • ABB
  • ABB Roboter
  • ABS
  • base
  • constant
  • CP_PARAMS
  • Dialog
  • EX
  • EXT
  • fanuc
  • Fehler
  • FRAMES
  • INIT
  • INITIALIZED
  • INITMOV
  • IRC5
  • joint
  • KRC2
  • KRC4
  • kuka
  • new
  • NONE
  • notify
  • PATH
  • PGNO_GET
  • profinet
  • PTP_DAT
  • PTP_PARAMS
  • P_ACTIVE
  • P_FREE
  • P_RESET
  • P_STOP
  • Quit
  • Roboter
  • RobotStudio
  • Schweißen
  • Sps
  • Sync
  • T1
  • t2
  • tcp
  • Tool
  • VALUE
  • VAR
  • vel_cp
  • vel_ptp
  • Yaskawa
AD
Your browser does not support videos autonome mobile Roboter von KUKA
Einloggen für weniger Werbung

gesponserte Artikel

  • Gebrauchtroboter kaufen - Was ist zu beachten. Die Checkliste zum kauf von gebrauchten Robotern

    August 11, 2019 at 7:02 PM
  • Was macht ein Roboterprogrammierer genau und was verdient er?

    August 21, 2019 at 8:17 AM
  • Vernetzen, referenzieren, kollaborieren: Das B2B Portal für die Produktionsautomatisierung

    June 2, 2021 at 11:29 AM

Job Offer

  • Sie wollen Ihr Stellenangebot im Roboterforum schalten? Ab 149€

    Werner Hampel June 17, 2021 at 9:52 AM
  • Werde Roboterprogrammierer bei ROBTEC GmbH in Mainburg / Bayern

    Werner Hampel April 5, 2023 at 7:13 PM
Werbung auf Roboterseite
Roboter programmieren lernen
Banner Robotik

Similar Threads

  • Justagereferenzierung KRC5 micro

    • Freeman1984
    • October 7, 2024 at 3:04 PM
    • KUKA Roboter

Tags

  • ABB
  • Zustimmtaster

Wieviele Mitglieder waren heute eingeloggt?

Logge Dich ein, um hier zu lesen wer in den letzten 24h Online war und um weniger Werbung zu sehen.

  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™ 6.0.22
Roboterforum.de - die Industrieroboter und Cobot Community in the WSC-Connect App on Google Play
Roboterforum.de - die Industrieroboter und Cobot Community in the WSC-Connect App on the App Store
Download