25. Mai 2019, 03:03:38
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[gelöst] Eingang überwachen


normal_post Autor Thema: [gelöst] Eingang überwachen  (Gelesen 911 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

22. Februar 2019, 08:10:04
Gelesen 911 mal
Offline

Kowalski


Hallo zusammen.

Bei uns in der Firma stehen Roboter, die Kunststoffteile aus Spritzgussmaschinen entnehmen und ggf. auf ein Förderband stapeln.
Jetzt hatte ein Kollege die Idee, Abräumtaster an die Förderbänder anzubringen.
Wenn nun ein Werker diesen Taster betätigt, sofern der Stapel noch nicht voll ist, könnte es zu einem Crash kommen.
Hat jemand eine Idee, wie ich es hinkriege, das die Steuerung es mitbekommt, wenn dieser Taster betätigt wird?
Der Roboter soll dann beim ersten Teil anfangen und weiter stapeln.
Ich denke, der Eingang für den Taster muss dauerhaft überwacht werden. :kopfkratz:
Ich habe mal einen Auszug des Unterprogramms "Stapeln"angefügt und würde mich über Vorschläge oder Lösungen echt freuen.


DEF NIOInkrement()

  CONTINUE
  IF (nAktNIOSpalte == (NIO_DAT[nProduktnummer].nNIOSpalte))AND (nAktNIOLage==NIO_DAT[nProduktnummer].nNIOLage) THEN
    O_NioVoll = TRUE
    WAIT SEC 0.01
  ENDIF

  WAIT FOR I_NioAblegen ; Diesen Eingang würde ich überwachen.
  O_NioAbgelegt=TRUE
  WAIT FOR NOT I_NioAblegen
  O_NioAbgelegt=FALSE

  ; Zaehler inkrementieren
  nAktNIOSpalte=nAktNIOSpalte+1
  IF nAktNIOSpalte > NIO_DAT[nProduktnummer].nNIOSpalte THEN
   nAktNIOSpalte=1
   nAktNIOLage=nAktNIOLage+1
  ENDIF

  ; Reihe auf Band voll
  CONTINUE
  IF nAktNIOLage > NIO_DAT[nProduktnummer].nNIOLage THEN
    O_NioVoll = TRUE
    WAIT FOR NOT I_FRG_NioAblage
    nAktNIOLage   = 1
    nAktNIOSpalte = 1
    O_NioVoll = FALSE
  ENDIF
END
« Letzte Änderung: 04. März 2019, 16:20:59 von Roland Keller »
  • gefällt mir    Danke

Heute um 03:03:38
Antwort #1

Werbung

Gast

22. Februar 2019, 08:38:09
Antwort #1
Offline

Hermann


Stichwort dazu: Interrupt
Da gibt es hier im Forum bestimmt viele Beispiele.
Oder im SPS.SUB auswerten.

22. Februar 2019, 08:42:04
Antwort #2
Offline

Kowalski


Über Interrupt habe ich auch nachgedacht. Der Robi soll aber nicht stehen bleiben sondern einfach mit dem Stapeln bei 1 anfangen.
  • gefällt mir    Danke

22. Februar 2019, 08:46:09
Antwort #3
Offline

Martin Huber


Moin Kowalski,

ich würde den Eingang mittels Interrupt überwachen.

Beispiel:

$CYCFLAG[1] = B_Zyklus_abbrechen  ; <---- Dein Eingangssignal
Interrupt Decl (X) WHEN $CYCFLAG[1] DO UP_NEUSTART() ; Irgendein Interrupt
INTERRUPT ON X
INTERRUPT ENABLE X

;***Anweisungsteil***
;
BRAKE
INTERRUPT OFF X
;Erneuten Aufruf verhindern
B_Zyklus_abbrechen = FALSE
B_Grundst_anf_Zykl_abgeb = TRUE
INTERRUPT ON 7
;alle laufenden Unterprogramme abbrechen
RESUME
  • gefällt mir    Danke
Die Abnahme von "GOTO" Anweisungen verhält sich reziprok zur Qualität einer Programmierung

22. Februar 2019, 09:33:26
Antwort #4
Offline

Hermann


Wer sagt denn, daß der Roboter bei einem Interrupt stehen bleibt? Es wird zwar häufig im Zusammenhang mit Bewegungsabbruch / Suchfahrt / Grundstellungsfahrt benutzt, aber ohne das BRAKE und RESUME wird im Programm ganz normal weitergefahren.
Über einen zeitgesteuerten Interrupt kann man sogar eine Art Multitasking realisieren.
Der Vorschlag von Martin Huber passt daher leider nicht.
Ich kann und will die Logik im Programm nicht ganz verstehen, aber im Prinzip sollte es ungefähr so aussehen:
Interrupt Decl 10 WHEN  I_NioAblegen DO up_reset()
INTERRUPT ON 10
....

def up_reset()
 interrupt off 10
  nAktNIOLage   = 1
  nAktNIOSpalte = 1
  O_NioVoll = FALSE
 interrupt on 10
end

Man muss dann nur noch bei der Berechnung  und dem Anfahren der Positionen mit dem Interrupt aufpassen, falls während der Aktionen jemand den Taster betätigt. Da solltest Du genau aufpassen, also Interrupt sperren, Punkteberechnug in die Interruptroutine einbauen ..... Hängt halt vom genauen Ablauf ab.

Heute um 03:03:38
Antwort #5

Werbung

Gast

04. März 2019, 07:19:43
Antwort #5
Offline

Kowalski


Vielen Dank Hermann. :danke:
So funktioiert es
« Letzte Änderung: 04. März 2019, 08:17:25 von Kowalski »
  • gefällt mir    Danke


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH