0  BEGIN PGM M71 MM 
1  FN 18: SYSREAD Q0 = ID20 NR4 IDX0 ;Programmed S speed
2  FN 18: SYSREAD Q1 = ID2000 NR10 IDX13
3  * - If alternating table is active, PLC alarm 92.
4  FN 9: IF +Q1 EQU +1 GOTO LBL 99
5  ;
6  * - If automatic V/H head is installed and safety mode on, PLC alarm 120.
7  FN 18: SYSREAD Q2 = ID2000 NR10 IDX2003
8  FN 9: IF +Q2 EQU +0 GOTO LBL 5
9  FN 18: SYSREAD Q2 = ID2000 NR10 IDX4912
10 FN 9: IF +Q2 EQU +1 GOTO LBL 92
11 FN 18: SYSREAD Q2 = ID2000 NR10 IDX4914
12 FN 9: IF +Q2 EQU +1 GOTO LBL 92
13 FN 18: SYSREAD Q2 = ID2000 NR10 IDX4915
14 FN 9: IF +Q2 EQU +1 GOTO LBL 92
15 ;
16 LBL 5
17 FN 18: SYSREAD Q3 = ID2000 NR10 IDX2002
18 * - If M71/M72/M73 is not allowed, PLC alarm 92.
19 FN 9: IF +Q3 EQU +1 GOTO LBL 99
20 FN 18: SYSREAD Q4 = ID2000 NR10 IDX2004
21 * - If traverse range protection is inactive, no position check.
22 FN 9: IF +Q4 EQU +0 GOTO LBL 50
23 FN 18: SYSREAD Q5 = ID1000 NR420 IDX3 ;IV Hirth coupling
24 FN 18: SYSREAD Q6 = ID1000 NR420 IDX4 ;V Hirth coupling
25 FN 18: SYSREAD Q40 = ID1000 NR420 IDX5 ;VI Hirth coupling
26 FN 18: SYSREAD Q7 = ID1000 NR430 IDX3 ;IV Hirth increments
27 FN 18: SYSREAD Q8 = ID1000 NR430 IDX4 ;V Hirth increments
28 FN 18: SYSREAD Q41 = ID1000 NR430 IDX5 ;VI Hirth increments
29 FN 18: SYSREAD Q9 = ID1000 NR910 IDX3 ;IV+ software limit 1
30 FN 18: SYSREAD Q10 = ID1000 NR910 IDX4 ;V+ software limit 1
31 FN 18: SYSREAD Q42 = ID1000 NR910 IDX5 ;VI+ software limit 1
32 FN 18: SYSREAD Q11 = ID1000 NR920 IDX3 ;IV- software limit 1
33 FN 18: SYSREAD Q12 = ID1000 NR920 IDX4 ;V- software limit 1
34 FN 18: SYSREAD Q43 = ID1000 NR920 IDX5 ;VI- software limit 1
35 FN 18: SYSREAD Q13 = ID1000 NR1030 IDX3 ;IV positioning window
36 FN 18: SYSREAD Q14 = ID1000 NR1030 IDX4 ;V positioning window
37 FN 18: SYSREAD Q44 = ID1000 NR1030 IDX5 ;VI positioning window
38 FN 18: SYSREAD Q15 = ID1000 NR910 IDX0 ;X+ software limit 1
39 FN 18: SYSREAD Q16 = ID1000 NR910 IDX1 ;Y+ software limit 1
40 FN 18: SYSREAD Q17 = ID1000 NR910 IDX2 ;Z+ software limit 1
41 FN 18: SYSREAD Q18 = ID1000 NR920 IDX0 ;X- software limit 1
42 FN 18: SYSREAD Q19 = ID1000 NR920 IDX1 ;Y- software limit 1
43 FN 18: SYSREAD Q20 = ID1000 NR920 IDX2 ;Z- software limit 1
44 FN 18: SYSREAD Q21 = ID1000 NR1030 IDX0 ;X positioning window
45 FN 18: SYSREAD Q22 = ID1000 NR1030 IDX1 ;Y positioning window
46 FN 18: SYSREAD Q23 = ID1000 NR1030 IDX2 ;Z positioning window
47 FN 20: WAIT FOR  SYNC
48 FN 18: SYSREAD Q25 = ID2000 NR80 IDX2048
49 Q25 = Q25 / 10000
50 FN 18: SYSREAD Q26 = ID2000 NR80 IDX2052
51 Q26 = Q26 / 10000
52 FN 18: SYSREAD Q27 = ID2000 NR80 IDX2056
53 Q27 = Q27 / 10000
54 FN 18: SYSREAD Q28 = ID2000 NR80 IDX2060
55 Q28 = Q28 / 10000
56 FN 18: SYSREAD Q29 = ID2000 NR80 IDX2064
57 Q29 = Q29 / 10000
58 FN 18: SYSREAD Q45 = ID2000 NR80 IDX2068
59 Q45 = Q45 / 10000
60 FN 18: SYSREAD Q30 = ID2000 NR10 IDX4158 ;Block scan marker
61 * - If block scan, no position check.
62 FN 9: IF +Q30 EQU +1 GOTO LBL 50
63 ;
64 Q30 = Q15 + Q21
65 Q31 = Q18 - Q21
66 * - If X pos > X+ limit 1 or X pos < X- limit 1,PLC alarm 195.
67 FN 11: IF +Q25 GT +Q30 GOTO LBL 90
68 FN 12: IF +Q25 LT +Q31 GOTO LBL 90
69 ;
70 Q30 = Q16 + Q22
71 Q31 = Q19 - Q22
72 * - If Y pos > Y+ limit 1 or Y pos < Y- limit 1,PLC alarm 195.
73 FN 11: IF +Q26 GT +Q30 GOTO LBL 90
74 FN 12: IF +Q26 LT +Q31 GOTO LBL 90
75 ;
76 Q30 = Q17 + Q23
77 Q31 = Q20 - Q23
78 * - If Z pos > Z+ limit 1 or Z pos < Z- limit 1,PLC alarm 195.
79 FN 11: IF +Q27 GT +Q30 GOTO LBL 90
80 FN 12: IF +Q27 LT +Q31 GOTO LBL 90
81 ;
82 FN 9: IF +Q5 EQU +1 GOTO LBL 10
83 Q30 = Q9 + Q13
84 Q31 = Q11 - Q13
85 FN 9: IF +0 EQU +0 GOTO LBL 20
86 LBL 10
87 Q30 = Q9
88 Q31 = Q11
89 LBL 20
90 * - If IV pos > IV+ limit 1 or IV pos < IV- limit 1,PLC alarm 195.
91 FN 11: IF +Q28 GT +99999.9999 GOTO LBL 21
92 FN 12: IF +Q28 LT -99999.9999 GOTO LBL 21
93 FN 11: IF +Q28 GT +Q30 GOTO LBL 90
94 FN 12: IF +Q28 LT +Q31 GOTO LBL 90
95 ;
96 LBL 21
97 FN 9: IF +Q6 EQU +1 GOTO LBL 30
98 Q30 = Q10 + Q14
99 Q31 = Q12 - Q14
100 FN 9: IF +0 EQU +0 GOTO LBL 40
101 LBL 30
102 Q30 = Q10
103 Q31 = Q12
104 LBL 40
105 * - If V pos > V+ limit 1 or V pos < V- limit 1,PLC alarm 195.
106 FN 11: IF +Q29 GT +99999.9999 GOTO LBL 41
107 FN 12: IF +Q29 LT -99999.9999 GOTO LBL 41
108 FN 11: IF +Q29 GT +Q30 GOTO LBL 90
109 FN 12: IF +Q29 LT +Q31 GOTO LBL 90
110 ;
111 LBL 41
112 FN 9: IF +Q40 EQU +1 GOTO LBL 42
113 Q30 = Q42 + Q44
114 Q31 = Q43 - Q44
115 FN 9: IF +0 EQU +0 GOTO LBL 44
116 LBL 42
117 Q30 = Q42
118 Q31 = Q43
119 LBL 44
120 * - If VI pos > VI+ limit 1 or VI pos < VI- limit 1,PLC alarm 195.
121 FN 11: IF +Q45 GT +99999.9999 GOTO LBL 50
122 FN 12: IF +Q45 LT -99999.9999 GOTO LBL 50
123 FN 11: IF +Q45 GT +Q30 GOTO LBL 90
124 FN 12: IF +Q45 LT +Q31 GOTO LBL 90
125 ;
126 LBL 50
127 FN 31: RANGE:0
128 M71
129 FN 20: WAIT FOR  SYNC
130 FN 18: SYSREAD Q3 = ID2000 NR10 IDX2000
131 FN 18: SYSREAD Q33 = ID2000 NR10 IDX2022
132 * - If V/H head is in vertical pos and DCM is not purchased, TOOL CALL Z.
133 FN 9: IF +Q3 EQU +0 GOTO LBL 100
134 FN 9: IF +Q33 EQU +1 GOTO LBL 60
135 TOOL CALL  Z SQ0
136 FN 9: IF +0 EQU +0 GOTO LBL 100
137 ;
138 * - If V/H head is in vertical pos and DCM is purchased, CYCLE 19 A0. (EBM~
 only)
139 LBL 60
140 CYCL DEF 19.0 WORKING PLANE
141 CYCL DEF 19.1  A+0
142 L  A+0 FMAX M74
143 * - CYCL DEF 19 globally effective
144 FN 17: SYSWRITE ID 420 NR0 IDX0 =+0
145 TOOL CALL  SQ0
146 FN 9: IF +0 EQU +0 GOTO LBL 100
147 ;
148 LBL 90
149 FN 14: ERROR= 495
150 STOP
151 FN 9: IF +0 EQU +0 GOTO LBL 100
152 LBL 92
153 FN 14: ERROR= 420
154 STOP
155 FN 9: IF +0 EQU +0 GOTO LBL 100
156 LBL 99
157 FN 14: ERROR= 392
158 STOP
159 LBL 100
160 END PGM M71 MM 
