以下是一段程序,谁能给讲讲,因为太长,仅仅是一部分
N01 DEF INT LI_RPD,LI_TEMP0,LI_COUNTOS, LI_COUNTAIR
;
;// 0 PARAMETER LADEN UND GRUNDSTELLUNG HERSTELLEN
;
N03 G04 F1
N04 STOPRE
N06 IF ($P_CHANNO==1)
N07 CI_CHAN_NR=1
N08 ELSE
N09 IF ($P_CHANNO==2)
N10 CI_CHAN_NR=2
N11 ELSE
N15 E_ERROR(4,67050) ;// PROGRAMM IM FALSCHEN KANAL
N16 ENDIF
N17 ENDIF
N18 WAITM(1,1,2,3,4) ;// SYNCHRONISATION 1
N19 STOPRE
N20 IF (NI_AUTO_CHAN3==0) GOTOF L_END
;
N23 E_HOME ;// GRUNDSTELLUNG MASCHINE
N24 M488 ;// EILGANGREDUZIERUNG
N25 IF (CI_CHAN_NR==1)
N26 IF (NI_AUTO_CHAN3==4) GOTOF L_NAKTIV
N27 ELSE
N28 IF (NI_AUTO_CHAN3==3) GOTOF L_NAKTIV
N29 ENDIF
;
N31 WAITM(4,1,2) ;// SYNCHRONISATION 4
N32 STOPRE
;N33 NI_AUTO_CHAN3=0
;
N40 CASE ($A_DBB[30+CI_CHAN_NR]) OF 0 GOTOF L_N7 1 GOTOF L_N3 2 GOTOF L_N3 3 GOTOF L_N3 4 GOTOF L_N5 5 GOTOF L_N5 6 GOTOF L_N5 9 GOTOF L_N5 DEFAULT GOTOF L_END
;
;
;------------------------------------------------
;// 3 ROHTEIL BEARBEITEN
;------------------------------------------------
N3 L_N3:
;
N310 IF ((R817>0) AND (R818>0))
N311 R50=TRUNC($TC_DP1[R817,R818]/100)
N312 IF ((R50==1) OR (R50==2))
N313 G17
N314 ELSE
N315 G18
N316 ENDIF
N317 ENDIF
;
N3600 IF (($A_DBB[30+CI_CHAN_NR]==1) OR ($A_DBB[30+CI_CHAN_NR]==2)) ;// RT/HFT IN SPINDEL 1/2
N3601 R50=1+$A_DBB[30+CI_CHAN_NR]
N340 IF ((R753<>R99) OR (R754<>R99))
N341 Z=R754
N3420 WHEN $AA_DTBB[X]>200 DO $A_DBB[40+CI_CHAN_NR]=0
N3421 IF (NB_SHORT_PART==1)
N3422 $A_DBB[40+CI_CHAN_NR]=0
N3423 ENDIF
N343 X=R871-2 H5003
N3430 STOPRE
N3431 NI_SYN_LOAD_PRISM[CI_CHAN_NR]=0 $A_DBB[40+CI_CHAN_NR]=0
N344 G[8]=R50 G64 D=R818 X=R819 Z=R820 M=R815 S=R816 M=29-R690 M191
N345 ELSE
N3460 WHEN $AA_DTBB[X]>200 DO $A_DBB[40+CI_CHAN_NR]=0
N3461 IF (NB_SHORT_PART==1)
N3462 $A_DBB[40+CI_CHAN_NR]=0
N3463 ENDIF
N347 G[8]=R50 G64 D=R818 X=R819 Z=R820 M=R815 S=R816 M=29-R690
N3470 STOPRE
N3471 NI_SYN_LOAD_PRISM[CI_CHAN_NR]=0 $A_DBB[40+CI_CHAN_NR]=0
N348 M191
N349 ENDIF
N350 ADIS=0 ADISPOS=0
N3610 IF ((R[800+$A_DBB[30+CI_CHAN_NR]]>=1) AND (CI_CHAN_ACT==1)) ; $A_DBB[31]=1 -> R801 $A_DBB[31]=2 -> R802
N3630 CALL "L" << R[800+$A_DBB[30+CI_CHAN_NR]]
N3640 ELSE
N3650 M291
N3660 ENDIF
N3670 ENDIF
;
N3780 SETMS
;
N365 IF (CI_CHAN_NR==1)
N366 R931=(($A_DBB[61] B_AND 'B00000001')>0) ;// PICKUP SPEICHER LINKS
N367 ENDIF
N368 IF (CI_CHAN_NR==2)
N369 R931=(($A_DBB[61] B_AND 'B00000010')>0) ;// PICKUP SPEICHER RECHTS
N370 ENDIF
;
N371 IF ($A_DBB[30+CI_CHAN_NR]==1)
N372 NI_COUNT[CI_CHAN_NR,1]=NI_COUNT[CI_CHAN_NR,1]+1 $A_DBB[30+CI_CHAN_NR]=9 ;// 1=RT -> 9=HFT
N373 ELSE
N374 NI_COUNT[CI_CHAN_NR,1]=NI_COUNT[CI_CHAN_NR,1]+1 $A_DBB[30+CI_CHAN_NR]=4 ;// 2=GHFT -> 4=FT
N375 ENDIF
;
N376 IF (R[800+$A_DBB[30+CI_CHAN_NR]]>=1)
N377 CORR_TREND
N378 ENDIF
;
N388 LI_RPD=(LI_RPD B_OR 'B0001')
;
N391 IF (LI_RPD==7) ;// ABFRAGE: ALLE BIT'S GESETZT
N392 M489 ;// EILGANG ORIGINAL
N393 LI_RPD=15
N394 ENDIF
;
;
;------------------------------------------------
;// 5 FERTIGTEIL ENTLADEN
;------------------------------------------------
N5 L_N5:
N500 IF ((R931==1) AND ($A_DBB[10+CI_CHAN_NR] B_AND 'B00000001'))
N501 E_ERROR(4,67025) ;// FEHLER: PICK-UP NICHT FREI
N502 ENDIF
;
N520 TRANS
N521 G00 G18 G40 G90 G94 G500 G602 G641 ADIS=0.1 ADISPOS=5 D0 M29 M390 DIAMON
N522 R50=$AA_IM[X] R60=$AA_IM[Z] R51=(($A_DBB[CI_CHAN_NR] B_AND 'B10000000')>0) $A_DBB[CI_CHAN_NR]=($A_DBB[CI_CHAN_NR] B_AND 'B01111111')
;
N533 R52=R851 R53=R851 R54=R873
N535 IF (R51==1) ;// Z-HUB AUSFAHREN AKTIV
N536 R52=$MA_POS_LIMIT_PLUS[Z]-0.2
N537 ENDIF
;
N540 SPOSA[1]=R858
N541 IF ((R753<>R99) OR (R754<>R99))
N542 IF (R754>R52)
N543 R52=R754
N544 ENDIF
N545 IF (R60>R52)
N546 R52=R60
N547 ENDIF
N5471 IF ((R51==1) AND (R754<R52)) ;// Z-HUB AUSFAHREN AKTIV
N5472 MSG("Z-AXIS MOVE TO END-POSITION FOR LUBRICATION")
N5473 ENDIF
N548 IF (R50<R871/2)
N549 X=R871-2 Z=R52
N550 ELSE
N551 Z=R52
N552 ENDIF
;N5521 MSG()
N5521 X=R54-700
N395 WHILE ($A_DBB[1] B_AND 'B00000100')
N396 E_ERROR(1,67007)
N397 STOPRE
N398 ENDWHILE
N5522 WHILE (NB_SYN_OUT[CI_CHAN_NR]==0)
N5623 MSG ("WAIT FOR CHAN3 SET NB_SYN_OUT[CI_CHAN_NR]")
N5624 STOPRE
N5625 ENDWHILE
N5626 MSG ()
N553 X=R54
N554 ELSE
N5540 X=R54-700 Z=R52
N395 WHILE ($A_DBB[1] B_AND 'B00000100')
N396 E_ERROR(1,67007)
N397 STOPRE
N398 ENDWHILE
N5541 WHILE (NB_SYN_OUT[CI_CHAN_NR]==0)
N5642 MSG ("WAIT FOR CHAN3 SET NB_SYN_OUT[CI_CHAN_NR]")
N5643 STOPRE
N5644 ENDWHILE
N5645 MSG ()
N555 X=R54 Z=R52
N556 Z=R53
N557 ENDIF
N558 WAITS
;
;// REVOLVER SCHWENKEN
N560 IF (R731>=1)
N561 IF (TRUNC(NI_COUNT[0,1]/R731)==(NI_COUNT[0,1]/R731))
N562 R50=37
N563 ELSE
N564 R50=38
N565 ENDIF
N566 ELSE
N567 R50=38
N568 ENDIF
;
;
N5680 WHILE (NI_SYN_UNLOAD_PRISM[CI_CHAN_NR]==0)
N5681 MSG ("WAIT FOR CHAN3 SET NI_SYN_UNLOAD_PRISM[CI_CHAN_NR]")
N5682 STOPRE
N5683 ENDWHILE
N5684 MSG ()
;
N5685 IF (R710==1)
N5686 IF (CI_CHAN_NR==1)
N5687 IF ($A_DBB[62] B_AND 'B00000001')
N5688 E_ERROR(4,67035) ;// FEHLER: PICK-UP IST BELEGT LINKS
N5689 ENDIF
N5690 ELSE
N5691 IF ($A_DBB[62] B_AND 'B00000010')
N5692 E_ERROR(4,67035) ;// FEHLER: PICK-UP IST BELEGT RECHTS
N5693 ENDIF
N5694 ENDIF
N5695 ENDIF
;
;// FUTTER LOESEN
N570 IF ((R855<>0) AND (R855<>R99))
N571 G64 Z=R855 H5002
N572 G01 Z=R856 F=R857
N573 ENDIF
;
N583 G00 G641 Z=R852 M38 T=R817 D0 M=R50
;
N585 IF (CI_CHAN_NR==1)
N5851 M311 M599 M1=98 ;// TAKTZEITBERECHNUNG
N5852 ELSE
N5853 M1311 M599 M2=98 ;// TAKTZEITBERECHNUNG
N5854 ENDIF
;
N5855 CI_STEP=0
;
;N587 $A_DBB[52+CI_CHAN_NR]=$A_DBB[30+CI_CHAN_NR] $A_DBB[30+CI_CHAN_NR]=0 R930=0 LI_RPD=(LI_RPD B_OR 'B0010') LI_COUNTOS=0
N586 E_UNLOAD ;// WERKSTUECKZUSTAENDE TRANSFERIEREN
N587 R930=0 LI_RPD=(LI_RPD B_OR 'B0010') LI_COUNTOS=0
N588 E_TO_P
;
N591 IF (LI_RPD==7) ;// ABFRAGE: ALLE BIT'S GESETZT
N592 M489 ;// EILGANG ORIGINAL
N593 LI_RPD=15
N594 ENDIF
;
N595 IF (R823<=0) ;// SPANNDRUCK-VORWAHL
N596 Z=R831 ;// Z-ACHSE VOR RT AUFNEHMEN
N597 ELSE
N598 Z=R831 H=4000+R823
N5981 H5003
N599 ENDIF
;
N600 IF ((R710==1) AND (CI_CHAN_NR==1))
N601 IF (NOT($A_DBB[62] B_AND 'B00000001'))
N602 E_ERROR(4,67033) ;// FEHLER: TEIL NICHT ABGELEGT
N603 ENDIF
N604 ENDIF
N605 IF ((R710==1) AND (CI_CHAN_NR==2))
N606 IF (NOT($A_DBB[62] B_AND 'B00000010'))
N607 E_ERROR(4,67033) ;// FEHLER: TEIL NICHT ABGELEGT
N608 ENDIF
N609 ENDIF
;
N620 NB_M01=(($A_DBB[1] B_AND 'B01000001')>0)
N621 NI_SYN_UNLOAD_PRISM[CI_CHAN_NR]=0
;
;// PRUEFEN M01
N660 IF (NB_M01==1)
N661 Z=R751
N662 IF (R702==1)
N663 M391
N664 ENDIF
N6640 IF ($A_DBB[1] B_AND 'B1000000')
N6641 E_ERROR(1,67103) ;// MASCHINEN-STOERUNG
N6642 ELSE
N666 IF (R701==1)
N667 G04 F10 M39
N668 SETAL(67001)
N669 M58
N670 ELSE
N671 E_ERROR(5,67001) ;// FEHLER: MASCHINE MIT M01 ANGEHALTEN
N672 ENDIF
N6720 ENDIF
N673 M390
N674 ENDIF
;
;// PRUEFEN WERKZEUGVERWALTUNG
N680 IF (TOOL_LIFE_CUR_[0]<>0) OR (($A_DBB[20+CI_CHAN_NR] B_AND 'B00000100') AND (R688==1))
N689 Z=R751
N690 E_TO_CHE
N691 T=R817 D0
N692 ENDIF