Hi,
habe hier ein kleines Problem mit einer Aufgabenstellung (KRC4 / KSS8.5):
Wir wollen während der Fahrt (Relativbewegung in Z) 2 Positionswerte erfassen, und dann ausrechnen wie weit diese voneinander entfernt sind. Programmausschnitt unten. Im prinzip sagt uns ein Laser Taster sobald er etwas sieht, bzw sobald er nichts mehr sieht. Mit diesen Ereignissen triggern wir die Datenspeicherung. Herauskommen sollte die Z Abmessung des Teils.
Leider bekommen wir meistens 0 heraus (h1 und h2 haben den gleichen Wert).
Das kann sein weil:
die Interruptereignisse nicht richtig kommen (Taster "prellt" an der Kante)
oder $POS_ACT wird nicht schnell genug aktualisiert (müsste dann bei langsamer Fahrt besser gehen... tut es aber nicht)
oder die Interrupts werden nicht richtig ausgelöst (darf man einen anderen Interrupt in einer Interrupt routine scharf schalten?? Passt das so?)
Bitte schaut euch das mal an, freue mich über Tipps
lg, Dominik
DEF main()
.....
$VEL.cp=0.2
wait sec 0
INTERRUPT on 20
LIN_REL{z 200} #base
wait sec 0
interrupt off 21
$VEL.cp=2
result=h2-h1
.....
DEF interrupt1()
h1=0
wait sec 0
h1=$POS_ACT.z
Interrupt on 21
END
DEF interrupt2 ()
interrupt off 20
h2 = 0
wait sec 0
h2=$POS_ACT.z
END