Taster zum ein Ausschalten von Ausgängen

  • Hallo.


    Ich habe nur mäßig Erfahrung bei komplexen Programmieraufgaben und brauch nun doch mal Hilfe.
    Bis jetzt habe ich nur Programme an einem KRC 2 V5.4 geteacht und kleiner Programme mit Verfahrbewegung und Laser Befehlen erstellt.


    Nun soll ich ein KRC4 Compact V8.3 in eine Anlage integrieren.
    Zum Zellentür öffnen ist ein Taster verbaut und zur Überwachung und Verriegelung ein Riegel mit Magnet (wie auch immer das Teil korrekt heißt).
    Problem dabei ist, wenn man die Tür entriegelt hat und in die Zelle geht verriegelt sich die Tür bis jetzt wieder selber sowie der Taster losgelassen wird.
    Wäre halt doof wenn man nicht mehr rauskommt :wallbash:



    Ich hatte mir das nun folgender maßen vorgestellt:


    Ausgangsstellung:
    im sps.sub in die schleifen geschrieben
    Taster nicht betätigt
    Ausgang nicht gesetzt (Magnet zur Türverriegelung nicht geschaltet und somit die Tür versperrt)



    Ablauf:


    -Taster betätigen (Kurz drücken und wieder loslassen)
    -Ausgang wird geschaltet und bleibt geschaltet ( Magnet gibt Türverriegelung frei, Tür lässt sich öffnen)
    bis
    -Taster erneut betätigt
    -Ausgang wir wieder auf False gesetzt


    und dann der Ablauf wieder von vorn


    $IN[17] ist der Taster
    $OUT[14] ist der Magnet

    Hier nun mein Text dazu:


    ;Tür entriegeln


    IF NOT $OUT[14] EXOR NOT $IN[17] == TRUE THEN
    $FLAG[2] = TRUE
    ENDIF


    IF $FLAG[2] AND NOT $OUT[14] == TRUE THEN
    $OUT[14] = TRUE
    ENDIF



    ;Tür verriegeln


    IF NOT $OUT[14] EXOR NOT $IN[17] == FALSE THEN
    $FLAG[2] = FALSE
    ENDIF


    IF NOT $FLAG[2] AND $OUT[14] == TRUE THEN
    $OUT[14] = FALSE
    ENDIF




    Mit dieser Art lässt sich der Ausgang zwar schalten aber man braucht zeit und noch mehr Glück.
    Manchmal gelingt das setzten und rücksetzen gleich und manchmal dauert es 100 mal Taster drücken.
    Wo liegt mein Fehler und wie kann ich ihn beheben?
    Oder wie kann ich es besser/ anders lösen?



    Ich danke schon mal für eure Bemühung und Vorschläge.
    Gruß Friedrich

    Einmal editiert, zuletzt von Friedrich ()

  • Schritt für Schritt zum Roboterprofi!
  • Hallo,


    ich denke hiermit könnte es funktionieren. Der Magnet sollte beim loslassen des Tasters umschalten...


    IF Taster==TRUE THEN
    FLAG=TRUE
    ENDIF


    IF TASTER==FALSE AND FLAG==TRUE THEN
    MAGNET=NOT MAGNET
    FLAG=FALSE
    ENDIF


    Gruß Peter

    Wer Rechtschreibfehler findet, darf sie behalten!!!  :lol:

  • Herzlichen Dank.
    Mit einer kleiner veränderung deines textes geht es.
    IF TSTER==FALSE AND FLAG==TRUE THEN


    funktieoniert nicht.
    Habe daraus folgendes gemacht:
    IF NOT TASTER AND FLAG== TRUE THEN


    damit funktioniert es.
    Gruß Friedrich

  • Lese manuals oder setze Klammers ein :D


    IF ((TASTER==False) AND (FLAG==TRUE)) THEN


    und


    IF TASTER==False AND FLAG==TRUE THEN


    saehen aenlich aus aber - sind nicht daselbe

  • AND,OR, usw hat grossere Priorität als ==,<>,>, ...


    wehn man schreibt
    IF TASTER==False AND FLAG==TRUE THEN


    roboter sieht


    IF (TASTER == (False AND FLAG)) ==TRUE THEN

  • kannst du mit noch sagen in welcher manuals ich das finde? habe heute die cd die es zum roboter gab durch sucht und nix gefunden was programmier befehle angeht.
    würde mich da gern noch etwas belesen wollen.
    ich weiß empfelenswert ist der passende lehrgang aber der ist aber zur zeit nicht realisierbar.

  • also, das "IF NOT TASTER AND FLAG== TRUE THEN" funktioniert ist auch rein Zufall, robie sieht


    IF ((NOT TASTER) AND FLAG) == TRUE THEN


    ich bin mir ziemlich sicher das ist nicht was mann eigentlich vor hatte... ;)
    es sieht aus als Absicht war:
    IF (NOT TASTER) AND (FLAG== TRUE) THEN


    deshalb... immer Klammern einsetzen... meiste leute haben keine Ahnung wie Rechner eigentlich funkzionieren (auch wehn sie so ueberzeugt sind). mann kann so viele edit Fehler vermeiden

  • Ein FlipFlop mit einem Taster Setzen und Rücksetzten ist mit einer richtigen SPS kein Problem (Flankenauswertung). Mit der Submit schon!
    Du würdest in der SPS nicht zyklisch auf den gedrückten Schalter reagieren (das wäre dann wieder Dein oben erwähntes "Zufallsprinzip"), sondern auf die pos. Flanke des Tasters.
    Flanken können jedoch bei KUKA gut mit einem Interrupt erkannt werden. (Er reagiert ja genau auf eine solche pos. oder neg. Flanke).


    So könntest Du es mal probieren.


    Bei uns wird das jedoch so gemacht:


    2 bis 3 Befehlsstellen. Hier die 2er-Variante.
    Ein beleuchteter Wahlschalter ENTRIEGELUNG mit einem $IN und einem $OUT. Wird er auf die Stellung "Entriegeln" gestellt, kommt der Eingang "Anmeldung zum Entriegeln". Im Roboterprogramm wird darauf reagiert und der Roboter macht seinen Zyklus noch zu ende, setze ein Signal und parkt. Nun kannst Du in der Submit auf dieses Signal reagieren und die "Verriegelung der Zuhaltung" (Worte nach neuer Norm DIN EN 14119) öffnen.
    Wird der Wahlschalter wieder zurück gestellt, wird verriegelt.
    Die LED des Wahlschalters steuern wir so an: Bei Anmeldung zur Entriegelung blinkt sie. Wird die Verriegelung geöffnet, leuchtet die LED permanent.
    Blinken ohne externe SPS ist jedoch ein kleines Problem bei KUKA. (Wir haben hier jedoch ein prog. Sicherheitsrelais das blinken kann. Dieses Signal verwenden wir oft als Taktgeber. Braucht nur eine Brücke von Sicherheitsrelais zu einem KUKA-$IN.


    Kuka: hier wären mal ein bis zwei Systemvariablen sinnvoll die blinken mit untersch. Frequenzen.


    Die zweite Taste ist bei uns blau und dient der Quittierung des Sicherheitsrelais.


    Du solltest Dir jedoch auch Gedanken machen, wie Du den Test-Betrieb gestalten willst. Bei uns wird in T1 (T2 haben wir deaktiviert) auch die Tür geöffnet, wenn der Roboter nicht in Parkpos. ist. Was für's Programmieren und Warten wichtig ist. Kannst Du auch in der Submit auswerten.


    Ich empfehle Dir, neben wichtigen Dokumenten wie der EG-Maschinenrichtlinie auch die oben erwähnte Norm:
    Sicherheit von Maschinen –
    Verriegelungseinrichtungen in Verbindung mit trennenden
    Schutzeinrichtungen –
    Leitsätze für Gestaltung und Auswahl (ISO 14119:2013)


    Auch wichtig ist noch die:
    Industrieroboter –
    Sicherheitanforderungen –
    Teil 2: Robotersystem und integration (ISO 10218-2:2008);
    Deutsche Fassung prEN ISO 10218-2:2008


    Normen gibt's zu kaufen bei http://www.beuth.de.
    Die Maschinenrichtlinie findet man kostenlos im Netz bei der EU.


    Gruß Roland.

  • ... was ich noch sagen wollte.


    Du kannst anstatt des Wahlschalters natürlich auch einen "rastenden Taster" benutzen oder zwei Taster. Einen für das Entriegeln und einen für das verriegeln. Dann brauchst Du auch keine Flankensteuerung.

  • So habe heute mal die Klammern drum gemacht wie es sich gehört. Läuft immer noch ;)


    Mit dem FlipFlop aus der SPS Bereich hatte hatte ich auch überlegt wie man das umsetzen könnte. Daraufhin war ich dann auf das XOR / EXOR gekommen.


    Einen Wahlschalter wollte ich aus optischen Gründen nicht :mrgreen: das wäre nur der letzte Ausweg geworden...
    Nun haben wir einen Leuchttaster verbaut der leuchtet wenn die Tür verschlossen ist und nicht mehr leuchtet wenn sie entriegelt ist.
    Ein nächster Schritt wäre dann dem Taster noch zu sagen das er Blinken soll wenn die Tür zwar wieder verriegelt wurde aber der Bedienerschutz noch nicht Quittiert ist. Und wenn er dann Quittiert wurde soll sie Konstant leuchten.
    Der Bedienerschutz ist bei uns ebenfalls mit einem Blauen Taster gemacht.


    Mal schauen wie ich das umsetze.


    In T1 kann ich ohne den Bedienerschutz also bei geöffneter Tür arbeiten.
    In T2 habe ich es noch nicht getestet, sollte aber eben so gehen.


    Die Richtlinien etc. die hier aufgeführt wurden werde ich mir dann mal zu Gemüte führen.
    Ab morgen geht die Anlage erstmal in die Test/ Dauertest Phase dann bleibt mir Zeit bis zur Abnahme mich nochmal zu belesen.



    Ein weiterer schritt wird dann noch sein eine Anlagenzustandsanzeige zu Installieren ( Lampen in Rot, Gelb, grün) und eventuell noch eine Automatik Extern ohne extra SPS.
    Für letzteres werde ich aber wohl noch etwas hier im Forum lesen müssen.

  • Wir fragen immer den Status der Türzuhaltung ab und machen dann sowas in der Art mit einem blauen Leuchtdrucktaster (Flankenauswertung funktioniert auch):


    CONFIG.DAT


    BOOL HM_TASTER ;HILFSMERKER TASTER
    BOOL PF_TASTER ;FLANKE TASTER
    BOOL HM_TUERANFORDERUNG ;HILFSMERKER TUERANFORDERUNG
    BOOL HM_BLINKTAKT ;HILFSMERKER BLINKTAKT
    BOOL HM_TUER_WAR_OFFEN ;HILFSMERKER TUER WAR OFFEN


    SIGNAL DI_TASTER $IN[1] ;TASTER
    SIGNAL DI_TUER_OFFEN $IN[2] ;TUER OFFEN VON ZUHALTUNG
    SIGNAL DO_LM_TASTER $OUT[1] ;LEUCHTMELDER TASTER
    SIGNAL DO_TUER_ENTRIEGELN $OUT[1] ;TUERMAGNET
    SIGNAL DO_RESET_RELAIS $OUT[2] ;RESET SICHERHEITSRELAIS


    SPS.SUB


    ;POSITIVE FLANKE DES TASTERS ERZEUGEN
    PF_TASTER = DI_TASTER AND NOT HM_TASTER


    ;FLANKENMERKER
    HM_TASTER = DI_TASTER


    ;TUER ANFORDERN
    IF (PF_TASTER AND NOT DI_TUER_OFFEN AND NOT HM_TUER_WAR_OFFEN) THEN
    HM_TUERANFORDERUNG = TRUE
    ENDIF


    ;TUER ENTRIEGELN
    IF (HM_TUERANFORDERUNG AND HM_ROBOTER_STEHT) THEN
    DO_TUER_ENTRIEGELN = TRUE
    ENDIF


    ;TUER VERRIEGELN
    IF (PF_TASTER AND NOT DI_TUER_OFFEN AND HM_TUER_WAR_OFFEN) THEN
    DO_TUER_ENTRIEGELN = FALSE
    HM_TUER_WAR_OFFEN = FALSE
    HM_TUERANFORDERUNG = FALSE
    ENDIF


    ;TUER WAR OFFEN
    IF (DI_TUER_OFFEN) THEN
    HM_TUER_WAR_OFFEN = TRUE
    $TIMER_STOP[1] = TRUE
    $TIMER[1] = 0
    ENDIF


    ;TUER GESCHLOSSEN UND NICHT ENTRIEGELN
    IF (NOT DI_TUER_OFFEN AND NOT DO_TUER_ENTRIEGELN) THEN
    $TIMER_STOP[1] = FALSE
    ENDIF


    ;LEUCHTMELDER TASTER
    DO_LM_TASTER = (DO_TUER_ENTRIEGELN OR(HM_TUERANFORDERUNG AND HM_BLINKTAKT))


    ;1S IMPULS RESET SICHERHEITSRELAIS
    IF (($TIMER[1] > 1000) AND ( $TIMER[1] < 2000)) THEN
    DO_RESET_RELAIS = TRUE
    ELSE
    DO_RESET_RELAIS = FALSE
    ENDIF


    Vielleicht hilf es ja... Keine Gewähr... :pfeif:

  • Mal etwas abseits vom Thema, aber da es mir ins Auge gefallen ist:


    Wenn die Gefahr besteht, dass sich jemand einschließt und ggf. dem Roboter im Weg steht....
    gibt es da zwei Möglichkeiten:


    1. Notentriegelung (Sinnvoll)
    2. Vorhängeschloss in Betätiger (bei Magnet etwas schwer)


    Nur so am Rande!


    Grüße


    Interrupt

  • Da ja für alle Anlagen die hier in Verkehr gebracht werden eine Risikobeurteilung / Bestimmung des PL gemäß Maschinenrichtlinie gemacht wurde... :kopfkratz: ...gehe ich ja mal grundsätzlich davon aus, dass die entsprechenden Maßnahmen zur Verringerung bzw. Vermeidung von Risiken getroffen werden! :beerchug:

  • Code
    ;TUER ENTRIEGELN
    IF (HM_TUERANFORDERUNG AND HM_ROBOTER_STEHT) THEN
      DO_TUER_ENTRIEGELN = TRUE
    ENDIF


    Mich würde interessieren wie ihr

    Code
    HM_ROBOTER_STEHT


    generiert.


    Aus der Liste der Systemvariablen konnte ich auf den ersten Blick nix wirklich brauchbares finden außer $drives_enable.
    Ich will aber eher den Zustand der eingefallenen Bremsen erfragen. Man könnte noch aus $VEL_ACT<0.001m/s was bauen, ist mir aber zu unsicher.

  • ;DEKLARATION - Z.B. IN DER CONFIG.DAT
    INT ACHSE ; ZAEHLER ACHSE FUER FOR-SCHLEIFE


    ;SCHLEIFE IM SUBMIT
    LOOP


    ; ROBOTER STEHT ERSTMAL AUF TRUE
    HM_ROBOTER_STEHT = TRUE


    FOR ACHSE = 1 TO 6 STEP 1
    IF ($VEL_AXIS_ACT[ACHSE] <> 0.0) THEN
    ;SO LANGE SICH EINE ACHSE BEWEGT
    HM_ROBOTER_STEHT = FALSE
    ENDIF
    ENDFOR


    ; AB HIER DER TUER-KRAM´S...


    ENDLOOP


    Wenn man die Systemvariable nicht nutzen möchte, müsste es auch so gehen... :zwink: :zwink: :zwink: :zwink: :zwink: :zwink: :zwink:

    Einmal editiert, zuletzt von rob.target ()

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