Soooo, habe jetzt nochmal durch Beiträge hier aus dem Forum versucht etwas zusammen zu Basteln. Hier mal mein Beispiel wie es aussehen sollte und das dazu gehörige Dialogprogramm. Wie setze ich das zusammen das an meinen stellen ( mit Kommentar versehen ) die Dialoge öffnen mit der Auswahl.
DEF Grf_Abstandpruefen( )
_Greifer(1,#AUF) ; Zangen loesen (mit Endlagen-Ckeck)
_Greifer(2,#ZUR) ; Taster zurueck (mit Endlagen-Ckeck)
;FOLD LIN Festepos Vel=0.3 m/s CPDAT2 Tool[1]:Greifer ohne Sitz Base[0];%{PE}%R 8.3.38,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:Festepos, 3:, 5:0.3, 7:CPDAT2
$BWDSTART=FALSE
LDAT_ACT=LCPDAT2
FDAT_ACT=FFestepos
BAS(#CP_PARAMS,0.3)
LIN XFestepos
;ENDFOLD
O_Referenzierposition = TRUE ; Zangen schliessen komplett für Referenzierung (Greifen)($OUT[204])
; HIER SOLLTE DER ERSTE DIALOG STEHEN ; SICHTKONTROLLE DURCHFÜHREN BEI OK DRÜCKEN WEITER IM PROGRAMM, BEI ABBRUCH IN HOME
O_Referenzierposition = FALSE ; Zangen schliessen komplett für Referenzierung (Greifen)($OUT[204])
O_GRF_oeffnen = TRUE ; Greifer oeffnen ($OUT[215])
WAIT FOR I_GRF_geoeffnet ; Greifer geoeffnet ($IN[215])
;HIER SOLLTE DER DIALOG MIT REFERENZIEREN STEHEN / DURCH DIE BESTÄTIGUNG MIT JA SOLLTE DER AUSGANG O_Freigage_Ref GESETZT WERDEN. DURCH ABBRUCH ZURÜCK IN HOME
WAIT FOR I_Referenz_abgeschlossen ; Warte auf Referenzierung abgeschlossen
O_Freigabe_Ref = FALSE ;($OUT[205])
WAIT SEC 0.5
O_GRF_oeffnen = TRUE ; Greifer oeffnen ($OUT[215])
WAIT FOR I_GRF_geoeffnet ; Greifer geoeffnet ($IN[215])
TRIGGER WHEN DISTANCE=0 DELAY=0 DO POSITION=1
;FOLD LIN Pruefpos Vel=0.3 m/s CPDAT1 Tool[1]:Greifer ohne Sitz Base[0];%{PE}%R 8.3.38,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:Pruefpos, 3:, 5:0.3, 7:CPDAT1
$BWDSTART=FALSE
LDAT_ACT=LCPDAT1
FDAT_ACT=FPruefpos
BAS(#CP_PARAMS,0.3)
LIN XPruefpos
;ENDFOLD
O_Referenzierposition = TRUE ; Zangen schliessen komplett für Referenzierung (Greifen) ($OUT[204])
; HIER SOLLTE ERNEUT DER ERSTE DIALOG STEHEN ; SICHTKONTROLLE DURCHFÜHREN BEI OK DRÜCKEN WEITER IM PROGRAMM, ABBRUCH WÄRE HIER THEORETISCH NICHT NÖTIG
O_Referenzierposition = FALSE ; Zangen schliessen komplett für Referenzierung (Greifen)($OUT[204])
O_GRF_oeffnen = TRUE ; Greifer oeffnen ($OUT[215])
WAIT FOR I_GRF_geoeffnet ; Greifer geoeffnet ($IN[215])
TRIGGER WHEN DISTANCE=0 DELAY=0 DO POSITION=0
;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART = FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS (#PTP_PARAMS,100 )
$H_POS=XHOME
PTP XHOME
;ENDFOLD
wait sec 0
R_I_GRST=TRUE
POSITION=0
;---------------------------------------------------
; Ende Hauptprogramm
;---------------------------------------------------
END_HP:
IF (R_I_GRST==FALSE) THEN
GST_FAHRT ( )
ENDIF
; Anwenderprogramm nicht mehr aktiv
P_AKTIV=FALSE
END
;----------------------------------------------------------------------------------------------------------
;Meldungen
DECL INT TicketNr
DECL KRLMSG_T Nachrichtentext
DECL KRLMSGPAR_T Parameter[3]
DECL KRLMSGOPT_T Optionen
DECL BOOL geloescht,vorhanden
DECL INT AntwortNr
DECL KRLMSGDLGSK_T softkey[7]
DECL INT I
I=0
Nachrichtentext = {modul[] "Sichtprüfung", Nr 1, msg_txt[] "Sichtprüfung ob Greifzangen in Position sind!"}
Softkey[1] = {sk_Type #value, sk_txt[] "In Position"}
Softkey[2] = {sk_Type #value, sk_txt[] "Abbrechen"}
Softkey[3] = {sk_Type #Empty, sk_txt[] " "}
Softkey[4] = {sk_Type #Empty, sk_txt[] " "}
Softkey[5] = {sk_Type #Empty, sk_txt[] " "}
Softkey[6] = {sk_Type #Empty, sk_txt[] " "}
Softkey[7] = {sk_Type #Empty, sk_txt[] " "}
TicketNr = Set_KrlDlg (Nachrichtentext, parameter[], Softkey[], optionen)
IF (TicketNr > 0) THEN
while (Exists_KrlDlg(TicketNr, AntwortNr))
wait Sec 0.5
endwhile
switch AntwortNr
case 1
CASE 2
O_Freigabe_Ref = FALSE ;($OUT[205])
O_Referenzierposition = FALSE ; Zangen schliessen komplett für Referenzierung (Greifen)($OUT[204])
O_GRF_oeffnen = TRUE ; Greifer oeffnen ($OUT[215])
WAIT FOR I_GRF_geoeffnet ; Greifer geoeffnet ($IN[215])
;FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 5.5.24,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS(#PTP_PARAMS,100)
$H_POS=XHOME
PTP XHOME
;ENDFOLD
endswitch
FOR I = 1 TO 7
softkey[I] = {sk_type #Value, sk_txt[] " "}
ENDFOR
ENDIF
Nachrichtentext = {modul[] "Referenzierung", Nr 2, msg_txt[] "Soll der Greifer Referenziert werden ?"}
Softkey[1] = {sk_Type #value, sk_txt[] "Ja"}
Softkey[2] = {sk_Type #value, sk_txt[] "Nein"}
Softkey[3] = {sk_Type #Empty, sk_txt[] " "}
Softkey[4] = {sk_Type #Empty, sk_txt[] " "}
Softkey[5] = {sk_Type #Empty, sk_txt[] " "}
Softkey[6] = {sk_Type #Empty, sk_txt[] " "}
Softkey[7] = {sk_Type #Empty, sk_txt[] " "}
TicketNr = Set_KrlDlg (Nachrichtentext, parameter[], Softkey[], optionen)
IF (TicketNr > 0) THEN
while (Exists_KrlDlg(TicketNr, AntwortNr))
wait Sec 0.5
endwhile
switch AntwortNr
case 1
O_Freigabe_Ref = TRUE
case 2
O_Freigabe_Ref = FALSE ;($OUT[205])
O_Referenzierposition = FALSE ; Zangen schliessen komplett für Referenzierung (Greifen)($OUT[204])
O_GRF_oeffnen = TRUE ; Greifer oeffnen ($OUT[215])
WAIT FOR I_GRF_geoeffnet ; Greifer geoeffnet ($IN[215])
;FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 5.5.24,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS(#PTP_PARAMS,100)
$H_POS=XHOME
PTP XHOME
;ENDFOLD
endswitch
FOR I = 1 TO 7
softkey[I] = {sk_type #Value, sk_txt[] " "}
ENDFOR
ENDIF
ENDIF
END