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 Handwerk automatisieren - ich schaffs mit KUKA
besuche unseren Partner
Roboterprogrammierer
Online Roboterschulung
Werbung schalten Roboter
Advertise in Robotics
Der Roboterkanal
Deutscher Robotikverband
Werben in Robotik
Werben für Robotik

Neustart der Steuerung abfragen

  • Jonas315
  • February 22, 2023 at 8:56 AM
  • Thread is Resolved
  • Jonas315
    Reactions Received
    12
    Points
    687
    Posts
    114
    • February 22, 2023 at 8:56 AM
    • #1

    Hallo Zusammen,

    zu meiner Verwunderung konnte ich bisher noch nichts zu dem Thema hier finden.

    Ich möchte mit dem Start der Steuerung eine Variable abfragen (welche immer mit Steuerungsstart auf TRUE gesetzt wird) und diese dann in meinem späteren Ablauf, bspw. nach einer Initialisierung, auf FALSE setzen.

    Das ist sicherlich etwas was allgemein mehrere Leute mal nutzen möchten.


    Zu meinem direkten Problem komme ich jetzt nochmal genauer zurück:

    Ich nutze eine KRC5 mit V8.7.4 in Zusammenhang mit einer Cognex Kamera und dem Optionspaket EthernetKRL 3.2.4

    Das Problem was ich aktuell habe ist, dass ich einmalig über EthernetKRL eine Verbindung zum Teilnehmer (in dem Fall die Cognex Kamera) aufbauen muss. Das Funktioniert soweit auch mit den "EKI" (EthernetKRL Interface) Funktionen ohne Probleme. Allerdings nicht, sobald ich durch An- und Abwahl meines Interpreters (in dem Fall der 2. Submit) die Funktionen neu aufrufe.

    Bspw. gibt es bei einer wiederholten Initialisierung der Ethernet Verbindung eine Störung, oder auch bei der Interrupt Deklaration (wie gesagt nur Beispiele, Initialisiert wird bei mir noch mehr). Deswegen würde ich meine Initialisierung gerne Abhängig vom Steuerungs Neustart machen.


    Danke für Eure Vorschläge! :)

  • Schritt für Schritt zum Roboterprofi!
  • Sliwka
    Reactions Received
    33
    Points
    703
    Posts
    133
    • February 22, 2023 at 9:19 AM
    • #2

    Hi Jonas,

    du kannst die Variable in der SPS.sub reinschreiben, oberhalb des Loops.

    So wird beim einschalten des Roboters einmalig die Variable gesetzt.

    Viele Grüße

  • Jonas315
    Reactions Received
    12
    Points
    687
    Posts
    114
    • February 22, 2023 at 10:03 AM
    • #3

    Danke für die schnelle Antwort.

    Den Ansatz hatte ich auch schon, allerdings wird die dann durch Ab-/Anwahl des Interpreters auch zurückgesetzt.

  • Programmiersklave
    Reactions Received
    104
    Points
    6,299
    Posts
    1,203
    About Me

    neuerdings freigelassen

    Location
    märk. Sauerland
    Occupation
    Roboter- und SPS-Programmierer
    • February 22, 2023 at 10:55 AM
    • #4

    Jonas315 : der Gedanke hat aber auch was von mangelnder Programmierhygiene. Wenn man jetzt unbedingt Tasks abwählen muss, warum dann nicht das, was man vorher mal "initialisiert" hat, auch ordentlich wieder runterfahren (EKI_Close, EKI_Clear, z. B.)? Eine Verbindung offen lassen und dann einfach den ganzen Task abwürgen ist unfein. Und nach der Wiederauferstehung die gleiche Verbindung wieder kapern zu wollen und zu können ist an sich noch schlimmer und als Sicherheitsrisiko einzustufen.

    Und/oder all das eben dann einzeln prüfen, ob es aus einem vorherigen Vorgang noch steht, wenn man es startet. Oder einfach töten, ohne zu prüfen, ob es noch steht, und dann neu aufbauen.

    Wenn das aus Gründen nicht geht, kann man sich manchmal mit der Variableneigenschaft behelfen (varstate()). Man definiere sich irgendwo an der richtigen Stelle eine Variable und weise einen Wert zu oder nicht, übergebe sie an fragliche Subroutinen, und die können dann mit varstate überprüfen, ob der Kontext noch erhalten geblieben ist bzw. durch eine Zuweisung diese Eigenschaft dann selbst festlegen. (#INITIALIZED)

    Automatisierung mit dem geflügelten Walross aus dem Sauerland

  • Jonas315
    Reactions Received
    12
    Points
    687
    Posts
    114
    • February 22, 2023 at 11:21 AM
    • #5

    Ich würde es nicht unbedingt als "mangelnde Programmierhygiene" bezeichnen, wenn man einen Störungsfreien Programmablauf für den Kunden gewährleisten möchte...

    Wo könnte ich denn die Ausführung von EKI_Close und EKI_Clear sicherstellen, wenn der Submit einfach aus Unwissenheit abgewählt wird?

    Deine Wortwahl finde ich da ein wenig unpassend, ist aber sicherlich nicht persönlich gemeint :)

    Die Idee über die Varstate-Funktion den Status abzufragen finde ich schon mal sehr gut und werde ich sicherlich auch einbringen.

    Allerdings denke ich das das Thema auch allgemein für die Zukunft interessant sein könnte, kennst du also evtl. eine Möglichkeit einen "frischen" Neustart der Steuerung abzufragen?

  • Programmiersklave
    Reactions Received
    104
    Points
    6,299
    Posts
    1,203
    About Me

    neuerdings freigelassen

    Location
    märk. Sauerland
    Occupation
    Roboter- und SPS-Programmierer
    • February 22, 2023 at 12:44 PM
    • #6
    Quote from Jonas315

    Ich würde es nicht unbedingt als "mangelnde Programmierhygiene" bezeichnen, wenn man einen Störungsfreien Programmablauf für den Kunden gewährleisten möchte...

    Wo könnte ich denn die Ausführung von EKI_Close und EKI_Clear sicherstellen, wenn der Submit einfach aus Unwissenheit abgewählt wird?

    Deine Wortwahl finde ich da ein wenig unpassend, ist aber sicherlich nicht persönlich gemeint :)

    Die Idee über die Varstate-Funktion den Status abzufragen finde ich schon mal sehr gut und werde ich sicherlich auch einbringen.

    Allerdings denke ich das das Thema auch allgemein für die Zukunft interessant sein könnte, kennst du also evtl. eine Möglichkeit einen "frischen" Neustart der Steuerung abzufragen?

    Wie frisch darf er denn sein? Warmstart? Kaltstart? Kaltstart mit Dateien neu einlesen? Warmstart mit "Kamera hat aber auch neu gebootet"? Re-Initialisierung nach Sicherheitsänderung? Neustart einer evtl. vorhandenen Soft-SPS?

    Ich weiß nicht, ich bin über dieses Thema noch nie gestolpert. Ich kann mir persönlich keine Situation vorstellen, in welcher der Zustand des Steuerungshochlaufes irgendeine Rolle spielt. Tasks ja, Steuerung nein.

    Gerade dazu dient ja die Initialisierung - einen definierten Zustand herzustellen. Eine Initialisierungsroutine muss mit allem fertig werden, was sie vorfindet, weil das, was sie vorfinden kann, per Definition undefiniert ist. :) Im konkreten Fall sollte der "EKI_*"-Werkzeugkasten etwas hergeben, womit man fehlerfrei eine neue Verbindung aufbauen kann.

    (((Und wenn der Kunde einen Deppen an die Anlage stellt, der aus Unwissenheit Tasks abwählt, dann hat der es nicht besser verdient. Eine Bedienerschulung sollte schon drin sein. Aber das fällt wahrscheinlich wieder unter "unpassende Wortwahl" der externen Syntaxrevision.)))

    Automatisierung mit dem geflügelten Walross aus dem Sauerland

  • SJX
    Reactions Received
    241
    Points
    10,686
    Trophies
    64
    Posts
    2,082
    • February 22, 2023 at 1:57 PM
    • #7

    Mit der Systemvariable $POWER_FAIL könntest Du vermutlich was "basteln" in einem Sub.

    Wird standardmässig auch in der sps.sub verwendet (WAIT FOR NOT($POWER_FAIL)).

    Bin aber auch der Meinung, dass dies durch abfragen auch anders gehen sollte.

    Sympathischer als das langsame varstate() wäre für mich die Alternative ON_ERROR_ PROCEED für "Fehlerhandling". Handling ist in Doku beschrieben.

    Gruss SJX

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

  • Jonas315
    Reactions Received
    12
    Points
    687
    Posts
    114
    • February 22, 2023 at 2:41 PM
    • #8
    Quote from Programmiersklave

    ...

    Im konkreten Fall sollte der "EKI_*"-Werkzeugkasten etwas hergeben, womit man fehlerfrei eine neue Verbindung aufbauen kann.

    ...

    Letztendlich ist ja genau das mein Problem. Wenn ich ganz Stumpf 2 mal hintereinander EKI_INIT() ausführen würde, kommt eine Störung...

    Der erste Lösungsansatz der mir in den Sinn kam, war halt die Ausführung nach dem Start auszuführen und da ich allgemein nichts dazu gefunden hatte, habe ich da mal nachgefragt ;)

    Quote from SJX

    Mit der Systemvariable $POWER_FAIL könntest Du vermutlich was "basteln" in einem Sub.

    Wird standardmässig auch in der sps.sub verwendet (WAIT FOR NOT($POWER_FAIL)).

    Bin aber auch der Meinung, dass dies durch abfragen auch anders gehen sollte.

    Sympathischer als das langsame varstate() wäre für mich die Alternative ON_ERROR_ PROCEED für "Fehlerhandling". Handling ist in Doku beschrieben.

    Gruss SJX

    ON_ERROR_PROCEED ist natürlich eine sehr interessante Funktion, vielen Dank dafür!

    Habe mir auch schon die Beschreibung aus der Doku dazu angeschaut, dass sollte man nur in Ausnahme Fällen nutzen.

    Mit den Infos die ich jetzt bekommen habe sollte ich soweit erstmal alles erledigen können.


    Und für alles weitere @Programmiersklave ...Natürlich hast du recht, nicht jeder Depp sollte am Roboter rumfummeln :beerchug:

  • SJX
    Reactions Received
    241
    Points
    10,686
    Trophies
    64
    Posts
    2,082
    • February 22, 2023 at 3:08 PM
    • #9
    Quote from Jonas315

    ON_ERROR_PROCEED ........., dass sollte man nur in Ausnahme Fällen nutzen.

    Wer erzählt den sowas ????

    KUKA's BAS.src zeigt das Gegenteil.

    So als Beispiel:

    Code
    ;FOLD VEL_CP ()
    DEF  VEL_CP (VEL_VALUE :IN )
      REAL VEL_VALUE, VEL_CHECK ; [m/s]
      INT I
    
      IF VEL_VALUE>DEF_VEL_CP THEN
        $VEL.CP=DEF_VEL_CP
      ELSE
        $VEL.CP=VEL_VALUE*DEF_VEL_FACT
      ENDIF
    
      ON_ERROR_PROCEED
      VEL_CHECK = $VEL.ORI1
      IF $ERR.NUMBER > 0 THEN
          $VEL.ORI1=DEF_VEL_ORI1 ; swivel velocity
          ERR_CLEAR($ERR)
      ENDIF
    
      ON_ERROR_PROCEED
      VEL_CHECK = $VEL.ORI2
      IF $ERR.NUMBER > 0 THEN
          $VEL.ORI2=DEF_VEL_ORI2 ; rotation velocity
          ERR_CLEAR($ERR)
      ENDIF
      
      FOR I=1 TO  $EX_AX_NUM
        CHECK_REDEXAX_VEL(I) 
        $VEL_EXTAX[I]=DEF_VEL_PTP*RedVelExAx[I]/100.0
      ENDFOR
    END
    ;ENDFOLD VEL_CP ()
    Display More

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

  • Programmiersklave
    Reactions Received
    104
    Points
    6,299
    Posts
    1,203
    About Me

    neuerdings freigelassen

    Location
    märk. Sauerland
    Occupation
    Roboter- und SPS-Programmierer
    • February 22, 2023 at 4:02 PM
    • #10
    Quote from Jonas315

    Letztendlich ist ja genau das mein Problem. Wenn ich ganz Stumpf 2 mal hintereinander EKI_INIT() ausführen würde, kommt eine Störung...

    In einer (allerdings recht alten) Doku las ich noch jüngst:

    Und auch:

    :/

    Automatisierung mit dem geflügelten Walross aus dem Sauerland

  • robotron
    Reactions Received
    4
    Points
    39
    Posts
    7
    • February 22, 2023 at 6:45 PM
    • #11

    Das Problem ist vermutlich das die Meldung als Quit-Meldung abgesetzt wird, warum auch immer. Richtig wäre hier wohl eine Hinweismeldung. Das sollte sich in der KRL Routinen ändern lassen.

Tags

  • 1
  • 33
  • 2
  • ABB
  • ABB Roboter
  • ABS
  • base
  • constant
  • CP_PARAMS
  • Dialog
  • EX
  • 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
  • YRC1000
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

Tags

  • kuka
  • KRL
  • INITIALIZED
  • KRC5

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