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. KUKA Roboter
Your browser does not support videos autonome mobile Roboter von KUKA
besuche unseren Hauptsponsor
Roboterschulung Online
Robot Support Forum
Werbung schalten Roboter
Advertise in Robotics
Der Roboterkanal
Deutscher Robotikverband
Werben in Robotik
Werben für Robotik

CELL AUFRUF aus SPS.sub

  • chrisfriedo
  • January 26, 2023 at 8:51 AM
  • Thread is Resolved
  • chrisfriedo
    Reactions Received
    1
    Points
    241
    Posts
    40
    • January 26, 2023 at 8:51 AM
    • #1

    Hallo zusammen,

    habe schon etliche Beiträge zum Thema gelesen aber leider ohne wirklichen Erfolg/Bestätigung dass ich richtig liege.

    zum Problem:

    Die SPS soll über das sps.sub meine CELL aufrufen.

    Klar über sowas wie:

    Code
    IF ($MODE_OP==#EX) OR ($MODE_OP==#AUT) THEN       
    CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()")
    ENDIF 

    Diese Änderung übertrage ich in der BA T1 und wechsle auf EXT.

    -> kein automatischer Programmaufruf von CELL.src

    Die Vermutung war dann, dass der "Vorlaufzeiger" in sps.sub schon darüber gesprungen ist, ehe ich in EXT wechsle

    Habe dann den Code geändert auf:

    Code
    WAIT FOR ($MODE_OP==#EX) OR ($MODE_OP==#AUT) 
    IF ($MODE_OP==#EX) OR ($MODE_OP==#AUT) THEN   
        CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()")     
        $OV_PRO=giOverride  ;einstellbar durch SPS
    ENDIF

    Damit funktioniert der CELL.src - Aufruf wenn ich mit den Schalter auf EXT wechsel.


    Nun die eigentliche Frage:

    Ist das so OK oder hintere ich den Programmzeiger an irgendetwas?

    Also bekomme ich im späteren Ablauf damit Probleme?

    Was auch funktioniert hat:

    Wenn ich den ersten Quellcode in den LOOP der sps.sub packe funktioniert es auch.

    ...aber das wäre gegen alle bisher gelesenen Beiträge und gegen die Vorgehensweise der Doku von KUKA


    PS: Hoffe dass ich keinen neuen unnötigen Thread erstellt habe und alle Richtlinien des Forums genüge tue - ich bitte um Nachsicht :S

    Edited 2 times, last by chrisfriedo (January 26, 2023 at 9:09 AM).

  • Schritt für Schritt zum Roboterprofi!
  • Sven Weyer
    Reactions Received
    98
    Points
    8,318
    Trophies
    44
    Posts
    1,504
    Location
    Magdeburg
    • January 26, 2023 at 9:15 AM
    • #2

    Erste Frage:

    Warum musstest Du das einfügen? Standardmäßig ist dieser Aufruf in der sps.sub vorhanden.

    Ich würde definitiv keine Warteanweisung in ein zyklisch ablaufendes Programm einbinden!

    Als nächstes wird der Programmzeiger nicht auf Cell gesetzt durch deine übergeordnete SPS sondern durch den Zustand des Roboters. $OP_Mode fragt die Betriebsart des Roboters ab.

    Zweite Frage:

    Was hat das setzen des Override durch einen Gruppeneingang mit dem Thema zu tun?

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • chrisfriedo
    Reactions Received
    1
    Points
    241
    Posts
    40
    • January 26, 2023 at 9:37 AM
    • #3

    1. die Standardmäßige Syntax im Ordner "AUTOEXT INIT" habe ich gesehen aber der Aufruf hat nicht stattgefunden... deswegen das zusätzliche Einfügen, dann ging's

    1.1 ich dachte dass er dann erst durch die IF - Anweisung in Cell springt wenn eben die BA EXT ausgewählt ist


    2. den Gruppeneingang haben wir gewählt um von SPS - Seite aus den Override einstellen zu können - das funktioniert


    Aktuell sieht der Code so aus:

    Das Wait ist rausgelöscht (dachte schon dass das Probleme verursachen könnte.

    Nur mein CELL Aufruf steht eben in dem LOOP ... was ja laut Dokus nicht so sein soll?! ?(

    Code
     LOOP
        WAIT FOR NOT($POWER_FAIL)
        ;FOLD BASISTECH PLC
           BasisTech_PLC_LOOP()
        ;ENDFOLD (BASISTECH PLC)
        ;FOLD BACKUPMANAGER PLC
        IF BM_ENABLED THEN
          BM_OUTPUTSIGNAL = BM_OUTPUTVALUE
        ENDIF
        ;ENDFOLD (BACKUPMANAGER PLC)
        ;FOLD USER PLC
        ;Make your modifications here
    
        ;ENDFOLD (USER PLC)
        
        
       
    
    
    
    IF (($MODE_OP==#EX) OR ($MODE_OP==#AUT)) AND ($PERI_RDY==TRUE) THEN   
        CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()")     
        $OV_PRO=giOverride  ;einstellbar durch SPS
    ENDIF
    
    
        
        
      
      ENDLOOP
    Display More

    Edited once, last by chrisfriedo (January 26, 2023 at 10:06 AM).

  • JoLa
    Reactions Received
    9
    Points
    309
    Trophies
    1
    Posts
    53
    • January 26, 2023 at 10:15 AM
    • #4

    Ich würde zuerst die Abfrage auf $Peri_Rdy rauswerfen, hat hier mMn nichts verloren

  • chrisfriedo
    Reactions Received
    1
    Points
    241
    Posts
    40
    • January 26, 2023 at 10:19 AM
    • #5

    JoLa

    Ich habe während des Ablauf's mal den Not-Aus am KCP gedrückt, nach dem lösen vom Not-Aus hing das Programm in der Schleife des SPS.sub fest -> das KCP hat sich regelrecht überschlagen im Anzeige-Bildschirm 8|


    Mit dem einfügen von $PERI_RDY hat auch der Not-Aus funktioniert...

    Oder gibt's da eine elegantere Lösung? :)

  • JoLa
    Reactions Received
    9
    Points
    309
    Trophies
    1
    Posts
    53
    • January 26, 2023 at 10:38 AM
    • #6

    Ein Sub ist ein Programm, das zyklisch abgearbeitet werden soll (wie eine SPS), das ist der Sinn dahinter..

    Deswegen sollen da auch keine Waitbefehle etc rein, dass sich das submit Programm "überschlägt" ist also gewollt

  • Sven Weyer
    Reactions Received
    98
    Points
    8,318
    Trophies
    44
    Posts
    1,504
    Location
    Magdeburg
    • January 26, 2023 at 10:52 AM
    • #7

    Das ist ein ganz normales Verhalten für eine zyklische Abarbeitung.

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • chrisfriedo
    Reactions Received
    1
    Points
    241
    Posts
    40
    • January 26, 2023 at 11:00 AM
    • #8

    Das ist klar wegen LOOP


    Jedoch noch die offene Frage ob, das hier alles so zulässig ist was ich hier betreibe?

    Also gemeint ist besagter Code:

    Code
     LOOP
        WAIT FOR NOT($POWER_FAIL)
        ;FOLD BASISTECH PLC
           BasisTech_PLC_LOOP()
        ;ENDFOLD (BASISTECH PLC)
        ;FOLD BACKUPMANAGER PLC
        IF BM_ENABLED THEN
          BM_OUTPUTSIGNAL = BM_OUTPUTVALUE
        ENDIF
        ;ENDFOLD (BACKUPMANAGER PLC)
        ;FOLD USER PLC
        ;Make your modifications here
    
        ;ENDFOLD (USER PLC)
        
        
       
    
    
    
    IF (($MODE_OP==#EX) OR ($MODE_OP==#AUT)) AND ($PERI_RDY==TRUE) THEN   
        CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()")     
        $OV_PRO=giOverride  ;einstellbar durch SPS
    ENDIF
    
    
        
        
      
      ENDLOOP
    Display More
  • Sven Weyer
    Reactions Received
    98
    Points
    8,318
    Trophies
    44
    Posts
    1,504
    Location
    Magdeburg
    • January 26, 2023 at 11:13 AM
    • #9

    Naja, je nachdem was dein gewünschter Effekt sein soll kannst du dich dort austoben.

    Gibt nur eine Reglementierung und die gibt dir die Funktion welche du erzielen möchtest vor. ;)

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • SCMI
    Reactions Received
    23
    Points
    698
    Posts
    106
    Occupation
    Roboterprogrammierer
    • January 26, 2023 at 12:22 PM
    • #10

    Das überschlagen kommt daher, weil Cell dann in jedem sub-Zyklus aufgerufen wird.

    Ich habe es folgendermaßen gelöst:

    Code
       ;Beim wechseln in den Automatik-Extern Betriebsmodus wird CELL aufgerufen
       IF ($MODE_OP == #EX) AND (b_Cell_Aufruf == TRUE) THEN
          CWRITE($CMD,STAT,MODE,"RUN/R1/CELL()")
          b_Cell_Aufruf = FALSE
       ENDIF
       IF $MODE_OP <> #EX THEN
          b_Cell_Aufruf = TRUE
       ENDIF

    so wird cell nur einmal beim wechsel auf Auto extern aufgerufen und danach nicht mehr.

  • Programmiersklave
    Reactions Received
    100
    Points
    6,450
    Posts
    1,198
    About Me

    neuerdings freigelassen

    Location
    märk. Sauerland
    Occupation
    Roboter- und SPS-Programmierer
    • January 26, 2023 at 2:44 PM
    • #11

    chrisfriedo : wenn Du einfach nur willst, dass bei Bedarf nach dem Umschalten das CELL-Programm angewählt wird, WENN NICHTS ANGEWÄHLT IST, sieht der Code im Loop-Teil so aus:

    Code
      IF (($MODE_OP==#EX) and ($pro_state1==#p_free)) THEN
        CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()")
      ENDIF

    Die zweite Bedingung guckt, ob ein Programm angewählt ist, und wenn nicht, wählt er cell an.

    Da braucht man weiter auch keine Bedingungen und Verrenkungen.

    WENN ein Programm angewählt ist, bleibt es freilich drin. Das ist normalerweise das erwünschte Verhalten: wenn im Ablauf irgendwas schiefgeht, kann man auf Hand und wieder zurück, ohne den Programmzeiger zu verlieren.

    Was natürlich nichts hilft, wenn Du mit dem Code verhindern willst, dass irgendein Trottel eine andere Routine oder dergl. angewählt hat und dann startet. Aber wie tief soll man das treiben?

    Was ich auch gelegentlich mache: bei schweren Fehlern das Programm selbsttätig ABwählen mit

    Code
      if (kill_task AND (NOT($pro_state1==#p_free))) then
             CWRITE($CMD,STAT,MODE,"CANCEL")
             kill_task=FALSE
      endif

    direkt drunter. Muss man kill_task halt im Fehlerfall irgendwo setzen.

    Automatisierung mit dem geflügelten Walross aus dem Sauerland

  • Karlo
    Reactions Received
    1
    Points
    31
    Posts
    2
    • January 27, 2023 at 7:53 AM
    • #12
    Code
    &ACCESS RVP
    &REL 34
    &COMMENT HANDLER on external automatic
    DEF  CELL ( )
    ;FOLD INIT
    DECL CHAR DMY[3]
    DMY[]="---"
    ;ENDFOLD (INIT)
    ;FOLD BASISTECH INI
    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    INTERRUPT ON 3
    BAS (#INITMOV,0 )
    ;FOLD COLLDETECT Off ;%{PE}
    ;FOLD Parameters ;%{h}
    ;Params IlfProvider=kukaroboter.basistech.inlineforms.colldetect.off; CollDetect.Command=Off
    ;ENDFOLD
    USE_CD_PARAMS(0)
    ;ENDFOLD
    ;ENDFOLD (BASISTECH INI)
    ;FOLD TouchSense Corr Off ;%{PE}
    ;FOLD Parameters Corr Off ;%{h}
    ;Params IlfProvider=KukaRoboter.TouchSense.CorrectionOFF
    ;ENDFOLD
    TS_CorrOff()
    ;ENDFOLD
    ;FOLD COLLDETECT Off ;%{PE}
    ;FOLD Parameters ;%{h}
    ;Params IlfProvider=kukaroboter.basistech.inlineforms.colldetect.off; CollDetect.Command=Off
    ;ENDFOLD
    USE_CD_PARAMS(0)
    ;ENDFOLD
    ;FOLD CHECK HOME
    $H_POS=XHOME
    IF CHECK_HOME==TRUE THEN
    P00 (#CHK_HOME,#PGNO_GET,DMY[],0 ) ;Testing Home-Position
    ENDIF
    ;ENDFOLD (CHECK HOME)
    ;FOLD PTP HOME  Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
    $H_POS=XHOME
    PDAT_ACT=PDEFAULT
    BAS (#PTP_DAT )
    FDAT_ACT=FHOME
    BAS (#FRAMES )
    BAS (#VEL_PTP,100 )
    PTP  XHOME
    ;ENDFOLD
    ;FOLD AUTOEXT INI
    P00 (#INIT_EXT,#PGNO_GET,DMY[],0 ) ; Initialize extern mode
    ;ENDFOLD (AUTOEXT INI)
    LOOP
    P00 (#EXT_PGNO,#PGNO_GET,DMY[],0 )
    SWITCH  PGNO ; Select with Programnumber
    
    
    CASE 1
    P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
    rMain_Typ30030050() ; Call User-Program
    
    
    CASE 2
    P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
    rMain_Typ30030008() ; Call User-Program
    
    
    CASE 3
    P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
    rMain_Typ30030011() ; Call User-Program
    
    
    CASE 4
    P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
    rMain_Typ30030012() ; Call User-Program
    
    
    CASE 5
    P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
    rMain_Typ30030014() ; Call User-Program
    
    
    CASE 6
    P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
    rMain_Typ64030025() ; Call User-Program
    
    
    CASE 7
    P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
    rMain_Typ30030013() ; Call User-Program
    
    
    CASE 8
    P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
    rMain_Typ30030007() ; Call User-Program
    
    
    
    
    CASE 9
    P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
    rMain_Typ64030920() ;Nur Rohr ausbrennen
    
    
    
    
    
    
    DEFAULT
    P00 (#EXT_PGNO,#PGNO_FAULT,DMY[],0 )
    ENDSWITCH
    ENDLOOP
    END
    Display More


    Vielleicht hilft dir das?

    Files

    cell.txt 2.75 kB – 8 Downloads
  • chrisfriedo
    Reactions Received
    1
    Points
    241
    Posts
    40
    • January 27, 2023 at 8:12 AM
    • #13

    Karlo Danke, mir ging's ja aber um die Struktur im sps.sub und den Aufruf darin von cell.src :)

    Also meine cell.src sieht genauso aus.

    Programmiersklave das hilft mir sehr weiter.

    wollte im Prinzip nur eine Bestätigung ob der cell Aufruf einfach so im Loop stehen darf (eben weil ich es überall vor dem Loop gesehen hab).

    Deine Codes werde ich auch mal testen, insofern das erlaubt ist ^^

    Also mittlerweile hat die Kommunikation zwischen SPS und Robi auch gut funktioniert....jetzt stehen schon die nächsten Probleme an, wie richtiger Überschleif und Taktzeit Optimierung :S

    Danke allen schon mal wieder für die Hilfe - bin echt begeistert vom Forum!! <3

  • Karlo
    Reactions Received
    1
    Points
    31
    Posts
    2
    • January 27, 2023 at 9:04 AM
    • Best Answer
    • #14

    Schaue dir mal das Schema an.

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 Automatisierung im Handwerk - ich schaffs mit 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

  • Rücksprung ins CELL ... Housten, wir haben ein Problem !

    • elchi2018
    • April 21, 2021 at 7:07 PM
    • KUKA Roboter

Tags

  • vel_ptp
  • EXT_PGNO
  • PGNO_GET
  • PGNO_ACKN
  • PGNO_FAULT
  • INITMOV
  • PTP_DAT
  • FRAMES
  • INIT_EXT
  • CHK_HOME

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