Bohrungsrand verrunden leicht gemacht


Um unter Sinumerik eine Bohrung anzufasen sind nur wenige Tastendrücke auf der Steuerung nötig. Doch stellen wir uns mal vor wir möchten eine Kabeldurchführung fertigen. Bei dieser ist es wichtig, dass keine scharfen Kanten am Bohrungsrand vorhanden sind. Für sowas wird bis heute ein CAD-CAM System bemüht. Doch was passiert wenn sich Lage oder auch Durchmesser der Bohrung ändern? Dann heißt es aber flott an den Rechner und neu rechnen. Oder Ihr nutzt den Zyklus Bohrungsrand verrunden.

DOWNLOAD

Der Zyklus und sein Aufbau

Anlegen der Variablen
N100 PROC CYC_RND_BO (REAL _CUT_NR, REAL _DIAM_HOLE, REAL _RAD, REAL _FEED, REAL _Z_POS_INC) SAVE DISPLOF
N110 DEF REAL _RAD_OUT, _ROT_GRAD,_TOOL_RAD, _INT_PARAM_1, _INT_PARAM_2, _INT_PARAM_3, _INT_PARAM_4, _START_POS_X, _START_POS_Y, _START_POS_Z
N120 ;_CUT_NR
N130 ;_DIAM_HOLE
N140 ;_RAD
N150 ;_FEED
N160 ;_Z_POS_INC
Füllen bzw. Abfragen der Variablen
N170 _START_POS_X=$AA_IW[X]
N180 _START_POS_Y=$AA_IW[Y]
N190 _START_POS_Z=$AA_IW[Z]
N200 IF $TC_MPP6[9998,1]==0 GOTOF ERROR_1 ; KEIN WZ IN SPINDEL
N210 IF $P_TOOL==0 GOTOF ERROR_5 ; KEINE D-NUMMER
N220 STOPRE
N230 IF $TC_DP1[$TC_MPP6[9998,1],$P_TOOL]==110 GOTOF _WEITER
N240 IF $TC_DP1[$TC_MPP6[9998,1],$P_TOOL]==120 GOTOF _WEITER
N250 GOTOF ERROR_4 ; WZ-TYP FALSCH
N260 _WEITER:
N270 IF $P_TOOLR==0 GOTOF ERROR_2; WZ-RADIUS = 0
N280 ;WERKZEUGAUFRUF VORHER
N290 ;MITTELPUNKT:X0 Y0
N300 ;ANZAHL SCHRITTE: _CUT_NR
N310 ;DURCHMESSER: _DIAM_HOLE
N320 ;TIEFE: _RAD
N330 ;_INT_PARAM_3=INNENRADIUS
N340 ;VORSCHUB: _FEED
N350 ;AUSSENRADIUS: _RAD_OUT
N360 ;VERSCHIEBUNG IN GRAD: _ROT_GRAD
N370 ;ZAEHLER: _INT_PARAM_1
N380 ;WZ-RADIUS: _TOOL_RAD
N390 ;KREISHILFSPUNKT X: _INT_PARAM_2

N400 STOPRE
N410 _TOOL_RAD = $P_TOOLR
N420 STOPRE
N430 IF $P_TOOL>=_DIAM_HOLE GOTOF ERROR_3
N440 _RAD_OUT=(_DIAM_HOLE/2)+_RAD
N450 _ROT_GRAD=360/_CUT_NR
N460 _INT_PARAM_3=((_DIAM_HOLE/2)-_TOOL_RAD)
N470 _INT_PARAM_2=_RAD_OUT-_TOOL_RAD
N480 _INT_PARAM_1=0
N490 _INT_PARAM_4=0
N500 G110 X0 Y0
N510 IF $TC_DP1[$TC_MPP6[9998,1],$P_TOOL]==120 GOTOF _TOOL_TYPE_120
N520 IF $TC_DP1[$TC_MPP6[9998,1],$P_TOOL]==110 GOTOF _TOOL_TYPE_110
N530 GOTOF ERROR_4
N540 STOPRE
N550 M30
N560 _TOOL_TYPE_120:
N570 G0 RP=_INT_PARAM_2 AP=0
N580 G1 Z=IC(-_Z_POS_INC) F=_FEED
N590 AAA_120: G0 RP=_INT_PARAM_2 AP=_INT_PARAM_4;*_INT_PARAM_1
N600 G1 Z=(_START_POS_Z-_Z_POS_INC) F=_FEED
N610 ROT Z=_INT_PARAM_4
N620 G2 X=IC(-_RAD) Z=IC(-_RAD) CR=_RAD 
N630 ROT Z0
N640 G0 Z=_START_POS_Z
N650 _INT_PARAM_1 = _INT_PARAM_1+1
N660 STOPRE
N670 _INT_PARAM_4=_ROT_GRAD*_INT_PARAM_1
N680 IF _INT_PARAM_1 <= _CUT_NR-1 GOTOB AAA_120
N690 ROT Z0
N700 GOTOF _END_PART


N710 _TOOL_TYPE_110:
N720 G0 RP=_RAD_OUT AP=0
N730 G1 Z=IC(-_Z_POS_INC) F=_FEED
N740 AAA_110: G0 RP=_RAD_OUT AP=_INT_PARAM_4
N750 G1 Z=(_START_POS_Z-_Z_POS_INC) F=_FEED
N760 ROT Z=_INT_PARAM_4
N770 G2 X=IC(-(_RAD+$P_TOOLR)) Z=IC(-(_RAD+$P_TOOLR)) CR=(_RAD+$P_TOOLR)
N780 ROT Z=0
N790 G0 Z=_START_POS_Z
N800 _INT_PARAM_1 = _INT_PARAM_1+1
N810 STOPRE
N820 _INT_PARAM_4=_ROT_GRAD*_INT_PARAM_1
N830 IF _INT_PARAM_1 <= _CUT_NR-1 GOTOB AAA_110
N840 ROT
N850 GOTOF _END_PART




N860 _END_PART:
N870 G0 Z=_START_POS_Z
N880 G0 X=_START_POS_X Y=_START_POS_Y
N890 M17
Fehlersprungmarken
N900 ERROR_1:
N910 MSG ("KEIN WERKZEUG IN DER SPINDEL")
N920 M0
N930 STOPRE
N940 GOTOB ERROR_1
N950 ERROR_2:
N960 MSG ("WERKZEUGRADIUS = 0")
N970 M0
N980 STOPRE
N990 GOTOB ERROR_2
N1000 ERROR_3:
N1010 MSG ("PRUEFE WERKZEUGRADIUS < LOCHDURCHMESSER")
N1020 M0
N1030 STOPRE
N1040 GOTOB ERROR_3
N1050 ERROR_4:
N1060 MSG ("FALSCHER WERKZEUGTYP ERLAUBT SIND 120 ODER 110")
N1070 M0
N1080 STOPRE
N1090 GOTOB ERROR_4
N1110 ERROR_5:
N1120 MSG ("KEINE SCHNEIDE (D-NR) AKTIV")
N1130 M0
N1140 STOPRE
N1150 GOTOB ERROR_5
N1160 M17

Aufruf des Zyklus im Programm

CYC_RND_BO(Anzahl der Schnitte,Durchmesser der Bohrung,Radius der Verundung,Vorschub,Sicherheits Abstand)

N10 T="300"
N20 M6
N30 D1
N40 S10000 M3 G54
N50 G0X0.945Y29.991
N60 G0 Z5
N70 CYC_RND_BO(340,25,3,1000,5)
N80 M30

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.