Hallo
Ist es möchlich mit eine KRC 32 die Z-asche runter fahren bis eine schalter (eine eingang). Ich müss zwichenlagen holen. ?
Grüss
René
Hallo
Ist es möchlich mit eine KRC 32 die Z-asche runter fahren bis eine schalter (eine eingang). Ich müss zwichenlagen holen. ?
Grüss
René
Hi,
natürlich, ist fast alles möglich, fast KRC1 würde ich sagen!
Hallo
Danke für diene antworte, aber kannst du mir eine beispiele wie mann das programmerien solte geben.
grüss
René
Ps. Ich wohne in dänemark ich hoffe das mann meine schriben vorstehen kann.
Hallo René,
ja, auch bei der KRC 32 ist es möglich.
Das hier mal eben zu erklären wäre, glaube ich, etwas viel. Aber als kleinen Einstieg:
Der Schalter muss einen Interrupt aktivieren. Darin kannst du dann diverse Operationen durchführen (Stoppen, Rückpositionieren, oder auch die aktuelle Position für Berechnungen verwenden o.ä.). Danach kannst du wieder mit deiner weiteren Abarbeitung weiter machen.
Schau doch mal in der Dokumentation unter Interrupt nach.
Gruß und viel Erfolg.
Robotiker
Hallo Robotiker
Vielen Dank. Es hat mir sehr geholfen.
Mit freundlichen Grüßen
René
Hi,
kannst es auch so machen!
;----------------------------------
;zwischenposition zwischenlage
PTP G_ZP_LAGE1 C_PTP
SYNACT H WHEN $M_SCAPO_F>=0.5 DO SCHRITTNR=1 DELAY 0.0
G_VP_LAGE1=G_P_LAGE1
G_VP_LAGE1.Z=G_VP_LAGE1.Z+250
CONTINUE
IF E_FG_ZW_LAGE THEN
PTP G_VP_LAGE1 C_PTP
SYNACT H WHEN $M_SCAPO_F>=0.5 DO SCHRITTNR=4 DELAY 0.0
ELSE
PTP G_VP_LAGE1
WAIT SEC 0
SCHRITTNR=1
WAIT FOR E_FG_ZW_LAGE
ENDIF
DESCR VEL_CP 0.5
BAS (#VEL_CP,0.5,"-" )
ENDDESCR
;----------------------------------
;position abholen zwischenlage
LIN G_P_LAGE1
IF NOT M_ABLAUF THEN
A_VAKUUM1=TRUE
A_VAKUUM2=TRUE
G_P_LAGE1OFF=G_P_LAGE1
;blasluft zwischenlage
PULSE ($OUT[54],TRUE,0.75 )
REPEAT
G_P_LAGE1OFF.Z=G_P_LAGE1OFF.Z-4.5
LIN G_P_LAGE1OFF
M_ABLAUF=TRUE
IF G_P_LAGE1OFF.Z<610 THEN
HALT
REPEAT
UNTIL G_P_LAGE1OFF.Z>610
ENDIF
UNTIL (E_VAKUUM1 AND E_VAKUUM2)
ELSE
G_P_LAGE1OFF.Z=G_P_LAGE1OFF.Z-LAGENOFFSET.Z
$OUT[54]=TRUE
A_VAKUUM1=TRUE
A_VAKUUM2=TRUE
LIN G_P_LAGE1OFF
IF G_P_LAGE1OFF.Z<610 THEN
HALT
REPEAT
UNTIL G_P_LAGE1OFF.Z>610
ENDIF
;VAKUUM (#EIN )
WAIT SEC 0.2
SCHRITTNR=4
ENDIF
CONTINUE
IF NOT (E_VAKUUM1 OR E_VAKUUM2) THEN
REPEAT
G_P_LAGE1OFF.Z=G_P_LAGE1OFF.Z-2.5
LIN G_P_LAGE1OFF
UNTIL (E_VAKUUM1 AND E_VAKUUM2)
ENDIF
SYNACT H WHEN $M_SC_F>=0.5 DO $OUT[54]=FALSE
LIN G_VP_LAGE1 C_DIS
SYNACT H WHEN $M_SCAPO_F>=0.95 DO SCHRITTNR=1 DELAY 0.0
PTP G_ZP_LAGE1 C_PTP
SYNACT H WHEN $M_SCAPO_F>=0.5 DO SCHRITTNR=1 DELAY 0.0
;----------------------------------
Alles anzeigen
@titan72:
Sieht ja gut aus. Hatte mich noch nicht mit dem Synact Befehl beschäftigt. Aber wenn ich das richtig verstehe, ist der doch nur Weg bzw. Zeit abhängig!?
Oder kann ich auch einen Eingang als Auslösebedingung verwenden?
Wenn, wie René gewünscht, eine Suchfahrt gemacht werden soll, die beendet wird, sobald ein Eingang kommt, bleibt mir doch nichts anderes über als mit einem Interrupt zu arbeiten!?!
Wenn ich falsch liege, bitte ich um Korrektur
Gruß
... hier wird solange in Z positioniert bis die beiden Vakuumwächter kommen, immer wieder 2.5mm weiter bis die Zwischenlage erkannt wird!
REPEAT
G_P_LAGE1OFF.Z=G_P_LAGE1OFF.Z-2.5
LIN G_P_LAGE1OFF
UNTIL (E_VAKUUM1 AND E_VAKUUM2)
SYNACT H WHEN $M_SCAPO_F>=0 DO SCHRITTNR=1 DELAY 0.0 ;beim losfahren aktiv
SYNACT H WHEN $M_SCAPO_F>=0.5 DO SCHRITTNR=1 DELAY 0.0 ;auf halber Strecke
SYNACT H WHEN $M_SCAPO_F>=1 DO SCHRITTNR=1 DELAY 0.0 ;beim erreichen der Position und DELAY eine Zeitangabe
Hallo wieder.
Heute habe ich versucht mit Interrupt-Befehl und es funktioniert auch, aber wenn es wieder in das Hauptprogramm von Unterprogramm springt, beginnt es in der gleichen Zeile wie vorher, und dann lief die z-Achse wieder nach unten.
Ich habe es wie folgt programmiert:
loop
interupt decl 10 when $in[17]==TRUE DO ZW_LAGE ( )
interupt on 10
LIN zw_lage
LIN hoch_mit_zw_lage
endloop
;---------------------------
ZW_LAGE ( )
BRAKE
interupt off 10
WAIT 10,0 sek
END
Titan72 vielen Dank für Ihre grosse program beispeile.
Grüss
René
Hej,
@ Titan72:
Ok, sehe ich ein. Ist eine weitere schöne Möglichkeit so etwas zu realisieren.
Wieder was gelernt!
@ René:
Soweit sieht es gut aus, aber ich würde noch mit RESUME arbeiten. Dann müsstest du allerdings deine Suchfahrt in einem extra UP machen. Die Deklaration des Interrupts in der Hauptroutine lassen, da nach RESUME wieder bis dahin zurück gesprungen wird.
Habe unten mal die zwei Seiten angehangen für den Befehl.
Viel Spaß
Hi,
Interrupt ist schon die schönere Variante, das war mal zum testen auf Rasch und ist dann so geblieben weil funzt ja!
Hallo Beide
jetzt funktioniert es wie es sollte. Ich danke für die Hilfe, die ich von Ihnen erhalten. Ich habe es wie folgt programmiert:
loop
interrupt decl 11 when $in[17]==true do gefundet()
suchen()
$advance=3
PTP home
endloop
;-----------------
DEF suchen()
interrupt on 11
LIN suchen
$advarnce=0
END
DEF gefundet()
interrupt off 11
BRAKE
LIN hoch_mit_zw_lage
RESUME
END
Grüss
René
Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können