Code
VAR intnum intRoboterStop; !Variable für Interruptnummer
PROC RB4_Ablegen()
!*******************************************************************************
IDelete intZustimmtaster; ! Interrupt sicherheishalber Löschen
WaitDi diZustimmtaster,1; !Warte das Zustimmtaster Wirklich 1 ist
CONNECT intRoboterStop WITH IrRoboterStop; !Verbinde Interrupt nummer mit Traproutine
ISignalDI diZustimmtaster,0,intRoboterStop; Verbinde interrupt mit Zustand Zustimmtaster
IWatch intRoboterStop; !Schauche auf Interrupt
!*******************************************************************************
MoveAbsJ RB4_AchsSafeposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;
MoveL RB4_Messposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;
Sauger_runter;
!Messfahrt auf Kundenwunsch!
MoveL RB4_Messposition,Speed_Norm,fine,Sauger_Mitte\WObj:=Rollenbahn_4; !Auf Messposition
Sauger_runter; !Sauger runter
IF ZPOS_reset_RB4=1 THEN
SetGO Zpos_RB4,0;
TempPosRB4.trans.z:=0;
ENDIF
IF TempPosRB4.trans.z>0 THEN !Abfrage ob Z-Wert größer 0
MoveL OFFS(TempPosRB4,0,0,200),Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4; !200m Über Z-Position fahren
ENDIF
SetDO Interupt_Freigabe,1; !Interrupt Freigeben
TEST_Interrupt;
SearchL\Stop,Interupt,TempPosRB4,RB4_Aufnahmeposition,v100,Sauger_Mitte\WObj:=Rollenbahn_4; !Messfahrt, Stop bei Interupt
SetDO Interupt_Freigabe,0; !Interrupt Sperren
SetGO Zpos_RB4,round(TempPosRB4.trans.z); !Abspeicherung Z-POS
Sauger_Aus;
Blasen_Ein;
MoveL OFFS(TempPosRB4,0,0,50),Speed_Slow,fine,Sauger_Mitte\WObj:=Rollenbahn_4;
WaitTime Abtropfzeit;
MoveL RB4_Messposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;
Blasen_Aus;
MoveAbsJ RB4_AchsSafeposition,Speed_Norm,z50,Sauger_Mitte\WObj:=Rollenbahn_4;
IDelete intZustimmtaster; ! Löschen am ende
ENDPROC
!*******************************************************************************
TRAP IrRoboterStop
!
ISleep intRoboterStop; !Interrupt schlafen legen da er aktuell ausgeführt wird
StopMove; !Stoppe nur bewegung ohne Progammstop
WaitDi diZustimmtaster,1; !Warte das Zustimmtaster Wirklich 1 ist
StartMove; !Erlaube Bewegung
IWatch intRoboterStop; !Beobachete Wieder Inerrupt
!
ENDTRAP
!*******************************************************************************
Display More
So könnte sowas aussehen.
Ich habe das aber jetzt nicht ausprobiert!
Ich habe mal versuche es so gut wie möglich zu komentieren, ich hoffe es ist jetzt etwas verständlicher.