summaryrefslogtreecommitdiff
path: root/docs/src/gcode/gcode_fr.txt
blob: 4fd60dad81d76f15309234e9195781ec17c1c7a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
:lang: fr
:toc:

= Tout le G-code de LinuxCNC

[[cha:Le-G-code]] (((Le G-code)))

== Conventions d'écriture du G-code

Dans une commande type, le tiret ('-') signifie une valeur réelle et les signes
('<>') indiquent un item facultatif.

Si 'L-' est écrit dans une commande, le signe '-' fera référence à 'Lnombre'.
De la même manière, le signe '-' dans 'H-' peut être appelé le 'Hnombre' et
ainsi de suite pour les autres lettres. Une valeur facultative sera
écrite '<L->'.

Dans les blocs de G-code, le mot 'axes' signifie n'importe quel axe
défini dans la configuration.

Une valeur réelle peut être:

* - un nombre explicite, '4' par exemple.
* - une expression, '[2+2]' par exemple.
* - une valeur de paramètre, '#88' par exemple.
* - une fonction unaire de la valeur, 'acos[0]' par exemple.

Dans la plupart des cas, si des mots d'axes sont donnés
parmi 'XYZABCUVW', ils spécifient le point de destination.

Les axes sont donnés dans le système de coordonnées courant,
à moins qu'explicitement décrit comme étant dans le système de coordonnées
absolues (machine).

Les axes sont facultatifs, tout axe omis gardera sa valeur courante.

Tout item dans un bloc de G-code, non explicitement décrit comme facultatif,
sera requis. Une erreur sera signalée si un item requis est omis.

Dans les commandes, les valeurs suivant les lettres sont souvent
données comme des nombres explicites. Sauf indication contraire, les
nombres explicites peuvent être des valeurs réelles. Par exemple, 'G10
L2' pourrait aussi bien être écrite 'G[2*5] L[1+1]'. Si la valeur du
paramètre '100' étaient '2', 'G10 L#100' signifierait également la même
chose.


[[sec:Table-des-index-du-G-code]]
== Table d'index du G-code
(((Table des index du G Code)))

[width="75%", options="header", cols="2^,5<"]
|==============================================================================
|Sections                        | Descriptions
|<<sec:G0,G0>>  | Interpolation linéaire en vitesse rapide
|<<sec:G1,G1>> | Interpolation linéaire en vitesse travail
|<<sec:G2-G3,G2/G3>>  | Interpolation circulaire sens horaire/anti-horaire
|<<sec:G4-Tempo,G4>>           | Temporisation
|<<sec:G5_1-B-spline,G5.1>>    | B-Spline quadratique
|<<sec:G5_2-G5_3-NURBs,G5.2 G5.3>>    | NURBs Block '(expérimental)'
|<<sec:G7-Mode-diametre,G7>>   | Mode diamètre (sur les tours)
|<<sec:G8-Mode-rayon,G8>>| Mode rayon (sur les tours)
|<<sec:G10-L1,G10 L1>>   | Ajuste les valeurs de l'outil en table d'outils
|<<sec:G10-L10,G10 L10>> | Modifie les valeurs de l'outil dans la table d'outils
|<<sec:G10-L11,G10 L11>> | Fixe les valeurs de l'outil dans la table d'outils
|<<sec:G10-L2,G10 L2>>   | Fixe l'origine d'un système de coordonnées
|<<sec:G10-L20,G10 L20>> | Fixe l'origine du système de coord. aux valeurs calculées
|<<sec:G17-G18-G19,G18 G19>>  | Choix du plan de travail
|<<sec:G20-G21-Unites-Machine,G20 G21>>         | Unités machine
|<<sec:G28-G28_1-Aller-a-une-position,G28 G28.1>> | Aller à une position prédéfinie
|<<sec:G30-G30_1-Aller-a-une-position-predefinie,G30 G30.1>> | Aller à une position
prédéfinie
|<<sec:G33-Broche-synchronisee,G33>>   | Mouvement avec broche synchronisée
|<<sec:G33_1-Taraudage-rigide,G33.1>>    | Taraudage rigide
|<<sec:G38-x-Palpeur,G38>> | Mesures au palpeur
|<<sec:G40,G40>>           | Révocation de la compensation de rayon d'outil
|<<sec:G41-G42,G41 G42>>       | Compensation de rayon d'outil
|<<sec:G41_1-G42_1,G41.1 G42.1>> | Comp. dynamique de rayon d'outil à gauche/à droite
|<<sec:G43,G43>> | Compensation de longueur d'outil d'après une table d'outils
|<<sec:G43_1,G43.1>> | Compensation dynamique de longueur d'outil
|<<sec:G49-Revocation-Longueur-Outil,G49>>  | Révocation de la compensation de
longueur d'outil
|<<sec:G53-Mouvement-Coordonnees-Absolues,G53>> | Déplacements en coordonnées
machine (Absolues)
|<<sec:G54-a-G59_3,G54 à G59.3>>     | Choix du système de coordonnées (1 à 9)
|<<sec:G61-G61_1,G61 G61.1>>   | Mode trajectoire exacte/mode arrêts exacts
|<<sec:G64,G64>>| Mode trajectoire continue avec tolérance
|<<sec:G73-Percage-avec-brise-copeaux,G73>> | Cycle de perçage avec brise copeau
|<<sec:G76-Filetage,G76>>      | Cycle de filetage multipasses (tour)
|<<sec:G80-Revocation-modaux,G80>>       | Révocation des codes modaux
|<<sec:G81-Cycle-de-percage,G81>>        | Cycle de perçage
|<<sec:G82-Cycle-de-percage,G82>>        | Autres cycles de perçage
|<<sec:G83-Percage-avec-debourrage,G83>> | Perçage avec débourrage
|<<sec:G84-Taraudage-a-droite,G84>>      | Taraudage à droite '(pas encore implémenté)'
|<<sec:G85-Alesage-retrait-travail,G85>> | Alésage, retrait en vitesse travail
|<<sec:G86-Alesage-retrait-rapide,G86>>  | Alésage, retrait en vitesse rapide
|<<sec:G87-Back-Boring,G87>>        | Cycle d'alésage arrière '(pas encore implémenté)'
|<<sec:G88-Alesage-Retrait-Manuel-Out,G88>> | Cycle alésage, Stop, Retrait manuel
'(pas encore implémenté)'
|<<sec:G89-Alesage-Tempo,G89>> | Cycle d'alésage avec tempo, recul vitesse travail
|<<sec:G90-G91,G90>>       | Types de déplacement
|<<sec:G90_1-G91_1,G90.1 G91.1>>     | Arc I,J,K, centre absolu ou relatif
|<<sec:G92,G92>> | Décalages d'origines avec mise à jour des paramètres
|<<sec:G92_1-G92_2,G92.1 G92.2>> | Révocation des décalages d'origine
|<<sec:G92_3,G92.3>> | Applique contenu des paramètres aux déc. d'origine
|<<sec:G93-G94-G95-Modes,G93>>   | Modes de vitesse
|<<sec:G96-G97-Broche,G96>>    | Vitesse de coupe constante (IPM ou m/mn)
|<<sec:G96-G97-Broche,G97>>    | Vitesse en tours par minute
|<<sec:G98-G99-Set,G98>>       | Options de retrait des cycles de perçage
|==============================================================================

[[sec:G0]]
== G0 Interpolation linéaire en vitesse rapide
(((G0 Interpolation linéaire en vitesse rapide)))(((rapide)))

----
G0 axes
----

Pour un mouvement linéaire en vitesse rapide, programmer 'G0 axes',
tous les mots d'axe sont facultatifs. Le 'G0' est facultatif si le mode mouvement
courant est déjà 'G0'. Cela produit un mouvement linéaire vers le point de
destination à la vitesse rapide courante (ou moins vite si la machine n'atteint
pas cette vitesse). Il n'est pas prévu d'usiner la matière quand une
commande G0 est exécutée. Un G0 seul peut être utilisé pour passer le mode
de mouvement courant en G0.

.Exemple avec G0:
----
G90 (Fixe les déplacements en mode absolu)
G0 X1 Y-2.3 (mouvement linéaire en vitesse rapide du point courant à X1 Y-2.3)
M2 (fin de programme)
----

* Voir les sections <<sec:G90-G91,G90>> et <<sec:M2-M30,M2>> pour plus
d'informations.

Si la compensation d'outil est active, le mouvement sera
différent de celui décrit ci-dessus, voir la section
<<sec:Compensation-rayon-d-outil, sur la compensation de d'outil>>.

Si 'G53' est programmé sur la même ligne, le mouvement sera également
différent, voir la section <<sec:G53-Mouvement-Coordonnees-Absolues, sur les
mouvements en coordonnées absolues>>.

////
Si un mouvement 'G0' déplace seulement des axes rotatifs et que la
position de la cible pour ces axes est dans une échelle de -360 à 360 degrés,
le mouvement sera organisé pour que chaque axe rotatif fasse moins d'un tour
complet.
////

C'est une erreur si:

* Un mot d'axe est indiqué sans valeur réelle.
* Un mot d'axe est indiqué qui n'est pas configuré.

[[sec:G1]]
== G1 Interpolation linéaire en vitesse travail
(((G1 Interpolation linéaire en vitesse travail)))

----
G1 axes
----

Pour un mouvement linéaire en vitesse travail, (pour usiner ou non)
programmer 'G1 axes', tous les mots d'axe sont facultatifs. Le 'G1' est
facultatif si le mode de mouvement courant est déjà 'G1'.
Cela produira un mouvement linéaire vers le point de destination à
la vitesse de travail courante (ou moins vite si la machine n'atteint
pas cette vitesse). Un G1 seul peut être utilisé pour passer le mode de
mouvement courant en G1.

.Exemple avec G1:
----
G90 (Fixe les déplacements en mode absolu)
G1 X1.2 Y-3 F10 (mouvement linéaire à 10 unités/mn du point courant à X1.2 Y-3)
Z-2.3 (mouvement linéaire à 10 unités/mn du point courant à Z-2.3)
Z1 F25 (mouvement linéaire de l'axe Z à 25 unités/mn vers Z1)
M2 (Fin de programme)
----

* Voir les sections <<sec:G90-G91,G90>> et <<sec:M2-M30,M2>> pour plus
d'informations.

Si la compensation d'outil est active, le mouvement sera
différent de celui décrit ci-dessus, voir la section
<<sec:Compensation-rayon-d-outil, sur la compensation d'outil>>.
Si 'G53' est programmé sur la même ligne, le mouvement sera également
différent, voir la section <<sec:G53-Mouvement-Coordonnees-Absolues, sur les
mouvements en coordonnées absolues>>.

C'est une erreur si:

* - Aucune vitesse d'avance travail n'est fixée.
* - un mot d'axe est indiqué sans valeur réelle.
* - un mot d'axe est indiqué qui n'est pas configuré.

[[sec:G2-G3]]
== G2, G3 Interpolation circulaire en vitesse travail
(((G2 Interpolation circulaire sens horaire)))
(((G3 Interpolation circulaire anti-horaire)))

----
G2 ou G3 axes décalages (format centre)
G2 ou G3 axes R- (format rayon)
G2 ou G3 décalages <P-> (cercles complet)
----

Un mouvement circulaire ou hélicoïdal est spécifié en sens horaire
avec 'G2' ou en sens anti-horaire avec 'G3'. La direction est vue depuis
le côté positif de l'axe autour duquel le mouvement se produit.

Les axes de cercle ou les hélicoïdes, doivent être parallèles aux
axes X, Y ou Z du système de coordonnées machine.
Les axes (ou, leurs équivalents, les plans perpendiculaires aux axes)
sont sélectionnés avec 'G17' (axe Z, plan XY),
'G18' (axe Y, plan XZ), ou 'G19' (axe X, plan YZ).
Les plans '17,1', '18,1' et '19,1' ne sont pas actuellement pris en charge.
Si l'arc est circulaire, il se trouve dans un plan parallèle au plan sélectionné.

Pour programmer un hélicoïde, inclure le mot d'axe perpendiculaire au
plan de l'arc. Par exemple, si nous sommes dans le plan 'G17', inclure
un mot 'Z', ceci provoquera un mouvement de l'axe 'Z' vers valeur programmée
durant tout le mouvement circulaire 'XY'. 

Pour programmer un arc supérieur à un tour complet, utiliser un
mot 'P' spécifiant alors le nombre de tours complets en plus de l'arc.
Si 'P' n'est pas spécifié, le comportement sera comme si 'P1' avait été
donné: ceci étant, un seul tour complet ou partiel sera effectué,
donnant un arc plus petit ou égal à un tour complet.
Par exemple, si un arc de 180° est programmé avec P2, le mouvement résultant
sera d'un tour et demi. Pour chaque incrément de P au delà de 1, un tour complet
sera ajouté à l'arc programmé. Les arcs hélicoïdaux multitours sont
supportés ce qui donne des mouvements très intéressants pour usiner des
alésages ou des filetages.

Si une ligne de G-code crée un arc et inclus le mouvement d'un
axe rotatif, l'axe rotatif tournera à vitesse constante de sorte que
le mouvement de l'axe rotatif commence et se termine en même temps que
les autres axes XYZ. De telles lignes sont rarement programmées.

Si la compensation d'outil est active, le mouvement sera
différent de celui décrit ci-dessus, voir les sections
<<sec:G40, sur G40>> et <<sec:G41-G42, sur G41-G42>>.

Le centre de l'arc est absolu ou relatif, tel que fixé par
 <<sec:G90_1-G91_1,G90.1 ou G91.1>>, respectivement.

C'est une erreur si:

* Aucune vitesse d'avance travail n'est spécifiée.

Deux formats sont possibles pour spécifier un arc: Le format centre et
le format rayon.

=== Arc au format centre (format recommandé)

Les arcs au format centre sont plus précis que les arcs au format rayon, c'est
le format à privilégier.

La distance entre la position courante et le centre de l'arc et,
facultativement, le nombre de tours, sont utilisés pour programmer des arcs
inférieurs au cercle complet. Il est permis d'avoir le point final de l'arc
égal à la position courante.

Le décalage entre le centre de l'arc et la position courante ainsi
que facultativement, le nombre de tours, sont utilisés pour programmer des
cercles complets.

Une erreur d'arrondi peut se produire quand un arc est programmé avec une
précision inférieure à 4 décimales (0.0000) pour les pouces et à moins de
3 décimales (0.000) pour les millimètres.

.Arc en mode distance relative
Les décalages par rapport au centre de l'arc sont des distances relatives au
point de départ de l'arc. Le mode distance relative de l'arc est le
mode par défaut.

Un ou plusieurs mots d'axe et un ou plusieurs décalages doivent être programmés
pour un arc qui fait moins de 360 degrés.

Aucun mot d'axe mais un ou plusieurs décalages doivent être programmés pour un
cercle complet. Le mot 'P', par défaut à 1, est facultatif.

Pour d'avantage d'information sur les arcs en mode relatif, voir la
 <<sec:G90_1-G91_1,section G91.1>>.

.Arc en mode distance absolue
Les décalages par rapport au centre de l'arc sont des distances absolues depuis
la position 0 courante des axes (origine machine).

Un ou plusieurs mots d'axe et 'tous' les décalages doivent être programmés pour
les arcs de moins de 360 degrés.

Aucun mots d'axe mais tous les décalages doivent être programmés pour un
cercle complet. Le mot 'P', par défaut à 1, est facultatif.

Pour d'avantage d'information sur les arcs en mode absolu, voir la
<<sec:G90_1-G91_1,section G90.1>>.

.Plan XY (G17)
----
G2 ou G3 <X- Y- Z- I- J- P->
----
* 'Z' - hélicoïde
* 'I' - décalage en X
* 'J' - décalage en Y
* 'P' - nombre de tours

.Plan XZ (G18)
----
G2 ou G3 <X- Z- Y- I- K- P->
----
* 'Y' - hélicoïde
* 'I' - décalage en X
* 'K' - décalage en Z
* 'P' - nombre de tours

.YZ-plane (G19)
----
G2 ou G3 <Y- Z- X- J- K- P->
----
* 'X' - hélicoïde
* 'J' - décalage en Y
* 'K' - décalage en Z
* 'P' - nombre de tours

C'est une erreur si:

* Aucune vitesse d'avance travail n'est fixée avec <<sec:F-Vitesse,le mot F>>.

* Aucun décalage n'est programmé.

* Quand l'arc est projeté dans le plan courant, la distance depuis le point
courant et le centre diffère de la distance entre le point final et le centre,
de plus de (.05 pouce/.5 mm) OU ((.0005 pouce/.005mm) ET .1% du rayon).

Déchiffrer le message d'erreur 'Le rayon à la fin de l'arc diffère de celui
du début:'

* 'début' - position courante
* 'centre' - la position du centre telle que calculée avec les paramètres I,J ou
 K
* 'fin' - le point final programmé
* 'r1' - le rayon entre le point de départ et le centre
* 'r2' - le rayon entre le point final et le centre

=== Exemples d'arcs au format centre

Calculer des arcs à la main peut être difficile.
Il est possible de dessiner l'arc à l'aide d'un programme de DAO
pour obtenir les coordonnées et les décalages.
Garder à l'esprit les tolérances, il pourrait être nécessaire de modifier
la précision de la DAO pour obtenir les résultats souhaités.
Une autre option consiste à calculer les coordonnées et les décalages
en utilisant des formules. Comme vous pouvez le voir sur la figure suivante
un triangle peut être formé à partir de la position courante,
de la position de fin et du centre de l'arc.

Sur la figure suivante, vous voyez que la position de départ est X0 Y0, la
position finale est X1 Y1. La position du centre de l'arc est X1 Y0.
Ceci donne un décalage de 1 depuis la position de départ sur l'axe X et
0 sur l'axe Y. Dans ce cas seul le décalage I est nécessaire.

Le G-code de cet exemple serait:
----
G0 X0 Y0
G2 X1 Y1 I1 F10 (arc en sens horaire dans le plan XY)
----

[[fig:G2-Exemple]]
.Exemple avec G2

image::images/g2_fr.png[align="center"]

Dans cet autre exemple, nous pouvons voir les différences de décalages
pour Y selon que nous faisons un mouvement G2 ou un mouvement G3.
Pour le mouvement G2 la position de départ est en X0 Y0, alors que
pour le mouvement G3 elle est en X0 Y1. Le centre de l'arc est en
X1 Y0.5 pour les deux. Le décalage J du mouvement G2 est 0.5 alors que
celui du mouvement G3 est -0.5.

Le G-code de cet exemple serait:
----
G0 X0 Y0
G2 X0 Y1 I1 J0.5 F25 (arc en sens horaire dans le plan XY)
G3 X0 Y0 I1 J-0.5 F25 (arc en sens anti-horaire dans le plan XY)
----

[[fig:G2-G3-Exemple]]
.Exemple avec G2-G3

image::images/g2-3_fr.png[align="center"]

Voici un exemple au format centre pour usiner une hélice:
----
G0 X0 Y0 Z0
G17 G2 X10 Y16 I3 J4 Z-1 (Arc hélicoïdal avec ajout de Z)
----

.exemple avec P
----
G0 X0 Y0 Z0
G2 X0 Y1 Z-1 I1 J0.5 P2 F25
----

Cet exemple signifie, faire un mouvement circulaire ou hélicoïdal en
sens horaire (vu du côté positif sur l'axe Z), dont l'axe est parallèle
à l'axe Z, se terminant en X10, Y16 et Z9, avec son centre décalé
de 3 unités dans la direction X, par rapport à la position X courante.
Son centre décalé dans la direction Y de 4 unités depuis la position Y courante.
Si la position courante est X7, Y7 au départ, le centre sera en X10, Y11.
Si la valeur de départ en Z est 9, ce sera un arc circulaire. Autrement,
ce sera un arc hélicoïdal. Le rayon de cet arc serait de 5 unités.

Dans le format centre, le rayon de l'arc n'est pas spécifié, mais il
peut facilement être trouvé puisque c'est la distance entre le
point courant et le centre du cercle, ou le point final de l'arc et le centre.

////
=== Cercles complets

----
G2 ou G3 I- J- K-
----

Pour faire un cercle complet de 360 degrés depuis la position
courante, programmer un seul décalage I, J ou K depuis la position
courante pour G2/G3. Pour programmer une hélicoïde sur 360 degrés
dans le plan XY spécifier seulement le mot Z.

C'est une erreur si:

* Le décalage K est utilisé dans le plan XY
* Le décalage J est utilisé dans le plan XZ
* Le décalage I est utilisé dans le plan YZ
////

=== Arcs au format rayon (format non recommandé)

----
G2 ou G3 axes R-
----

* R - rayon depuis la position courante

Ce n'est pas une bonne pratique de programmer au format rayon des
arcs qui sont presque des cercles entiers ou des demi-cercles, car un
changement minime dans l'emplacement du point d'arrivée va produire un
changement beaucoup plus grand dans l'emplacement du centre du cercle
(et donc, du milieu de l'arc). L'effet de grossissement est tellement
important, qu'une erreur d'arrondi peut facilement produire un usinage
hors tolérance. Par exemple, 1% de déplacement de l'extrémité d'un arc
de 180 degrés produit 7% de déplacement du point situé à 90 degrés le
long de l'arc. Les cercles presque complets sont encore pires.
Autrement, l'usinage d'arcs, inférieurs à 165 degrés ou compris entre
195 et 345 degrés sera possible.

Dans le format rayon, les coordonnées du point final de l'arc, dans le
plan choisi, sont spécifiées en même temps que le rayon de l'arc.
Programmer 'G2 axes R-' (ou utiliser 'G3' au lieu de 'G2' ). R est le
rayon. Les mots d'axes sont facultatifs sauf au moins un
des deux du plan choisi, qui doit être utilisé. Un rayon positif
indique que l'arc fait moins de 180 degrés, alors qu'un rayon négatif
indique un arc supérieur à 180 degrés. Si l'arc est hélicoïdal, la
valeur du point d'arrivée de l'arc dans les coordonnées de l'axe
perpendiculaire au plan choisi sera également spécifiée.

C'est une erreur si:

* Les deux mots d'axes pour le plan choisi sont omis.
* Le point d'arrivée de l'arc est identique au point courant.


Voici un exemple de commande pour usiner un arc au format rayon:
----
G17 G2 X10 Y15 R20 Z5 (arc au format rayon)
----

Cet exemple signifie, faire un mouvement en arc ou hélicoïdal en sens horaire
(vu du côté positif de l'axe Z), se terminant en X=10, Y=15 et Z=5,
avec un rayon de 20. Si la valeur de départ de Z est 5, ce sera un arc
de cercle parallèle au plan XY sinon, ce sera un arc hélicoïdal.

[[sec:G4-Tempo]]
== G4 Tempo
(((G4 Temporisation)))

----
G4 P-
----

* 'P' - durée de la temporisation en secondes (un flottant)

Les axes s'immobiliseront pour une durée de P secondes. Cette commande n'affecte
pas la broche, les arrosages ni les entrées/sorties.

C'est une erreur si:

* Le nombre P est négatif ou n'est pas spécifié.

[[sec:G5_1-B-spline]]
== G5.1 B-spline quadratique
(((G5.1 B-spline quadratique)))

----
G5.1 Xn Yn I[X offset] J[Y offset]
----

* 'I' - offset en X
* 'J' - offset en Y

G5.1 crée une B-spline quadratique dans le plan XY avec seulement les axes X
et Y.

C'est une erreur si:

* Les offsets I et J ne sont pas spécifiés
* Un axe autre que X ou Y est spécifié
* Le plan actif n'est pas G17

[[sec:G5_2-G5_3-NURBs]]
== G5.2 G5.3 NURBs Block
(((G5.2 G5.3 NURBs Block)))

WARNING: G5.2, G5.3 sont expérimentaux, il n'ont pas encore été testés
totalement.

G5.2 is for opening the data block defining a NURBs and G5.3 for
closing the data block. In the lines between these two codes the curve
control points are defined with both their related "weights" (P) and
their parameter (L) which determines the order of the curve (k) and
subsequently its degree (k-1).

Using this curve definition the knots of the NURBs curve are not
defined by the user they are calculated by the inside algorithm, in the
same way as it happens in a great number of graphic applications, where
the curve shape can be modified only acting on either control points or
weights.

Sample NURBs Code
----
    G0 X0 Y0
    F10 
    G5.2 X0 Y1 P1 L3
         X2 Y2 P1
         X2 Y0 P1
         X0 Y0 P2
    G5.3
    / The rapid moves show the same path without the NURBs Block
    G0 X0 Y1
       X2 Y2
       X2 Y0
       X0 Y0
    M2
----

.Sample NURBs Output

image::images/nurbs01.png[]

http://wiki.linuxcnc.org/cgi-bin/wiki.pl?NURBS[D'autres informations sont
disponible ici, sur le wiki].

[[sec:G7-Mode-diametre]]
== G7 Mode diamètre sur les tours
(((G7 Mode diamètre sur les tours)))

----
G7
----

Sur un tour, programmer 'G7' pour passer l'axe X en mode diamètre. En
mode diamètre, les mouvements de l'axe X font la moitié de la cote
programmée. Par exemple, X10 placera l'outil à 5 unités du centre, ce
qui produira bien une pièce d'un diamètre de 10 unités.

[[sec:G8-Mode-rayon]]
== G8 Mode rayon sur les tours
(((G8 Mode rayon sur les tours)))

----
G8
----

Sur un tour, programmer 'G8' pour passer l'axe X en mode rayon. En mode
rayon, les mouvements de l'axe X sont égaux à la cote programmée. Ce
qui signifie que X10 placera l'outil à 10 unités du centre et aura pour
résultat une pièce d'un diamètre de 20 unités. G8 est le mode par
défaut à la mise sous tension.

[[sec:G10-L1]]
== G10 L1 Ajustements dans la table d'outils
(((G10 L1 Ajustements dans la table d'outils)))

----
G10 L1 P- axes <R- I- J- Q->
----
* 'P' - numéro d'outil
* 'R' - rayon de bec
* 'I' - angle frontal (tour)
* 'J' - angle arrière (tour)
* 'Q' - orientation (tour)

'G10 L1' ajuste les valeurs de la table d'outils pour l'outil N°'P' aux valeurs
passées dans les paramètres. Les nouvelles valeurs peuvent être passées depuis
un programme ou depuis la fenêtre d'entrées manuelles (MDI). Un G10 L1 valide,
réécrit et recharge la table d'outils. 

.Exemples avec G10 L1:
----
G10 L1 P1 Z1.5 (fixe le décalage en Z de l'outil 1 à 1.5 de l'origine machine)
G10 L1 P2 R0.15 Q3 (fixe le rayon de bec de l'outil 2 à 0.15 avec une orientation 3)
----

C'est une erreur si:

* La compensation d'outil est active
* Le mot P n'est pas spécifié
* Le mot P ne correspond pas à un numéro d'outil valide de la table d'outils.

D'autres informations sur l'orientation <<sec:Orientations-des-outils-de-tour,
des outils de tour sont disponibles ici>>.

[[sec:G10-L2]]
== G10 L2 Établissement de l'origine d'un système de coordonnées
(((G10 L2 Établissement de l'origine d'un système de coordonnées)))

----
G10 L2 P- <axes R->
----
* 'P' - système de coordonnées (0 à 9)
* 'R' - rotation autour de l'axe Z

G10 L2 décale l'origine des axes dans le système de coordonnées spécifié par
la valeur du mot d'axe. Le décalage s'effectue à partir de l'origine machine
établie par la prise d'origine machine (homing). Les valeurs de ce décalage vont
remplacer toutes celles en effet sur le système de coordonnées spécifié. Les
mots d'axe inutilisés resteront inchangés.

Programmer P0 à P9 pour spécifier le système de coordonnées à décaler.

[[sec:Systeme-Coordonnees]]
.Systèmes de coordonnées

[width="50%", options="header", cols="^,^,^"]
|=========================================
|Valeur P| Système de coordonnées | G-code
|       0|          Actif courant | n/a
|       1|                      1 | G54
|       2|                      2 | G55
|       3|                      3 | G56
|       4|                      4 | G57
|       5|                      5 | G58
|       6|                      6 | G59
|       7|                      7 | G59.1
|       8|                      8 | G59.2
|       9|                      9 | G59.3
|==========================================

Facultativement, programmer 'R' pour indiquer la rotation des axes 'XY' autour
de l'axe 'Z'.
La direction de rotation est anti-horaire comme vue depuis le côté positif de
l'axe Z.
 
Tous les mots d'axe sont facultatifs.

Être en mode relatif ('G91') est sans effet sur 'G10 L2'.

Concepts importants:

* G10 L2 Pn ne change pas l'actuel système de coordonnées par celui spécifié
par P, il est nécessaire d'utiliser G54 à 59.3 pour sélectionner le système de
coordonnées.
* Quand un mouvement de rotation est en cours, jogger un axe, déplacera celui-ci
seulement dans le sens négatif ou positif et non pas le long de l'axe de
rotation.
* Si un décalage d'origine créé avec 'G92' est actif avant la commande 'G10 L2',
il reste actif après.
* Le système de coordonnées dont l'origine est définie par la commande 'G10'
peut être actif ou non au moment de l'exécution de 'G10'. Si il est actif à
ce moment là, les nouvelles coordonnées prennent effet immédiatement.

C'est une erreur si:

* Le nombre P n'est pas évalué comme étant un nombre entier compris entre 0 et 9.
* Un axe est programmé mais n'est pas défini dans la configuration.

.Premier exemple avec G10 L2:
----
G10 L2 P1 X3.5 Y17.2
----

Place l'origine du premier système de coordonnées (celui sélectionné par G54)
au points X3.5 et Y17.2 (en coordonnées absolues).
La coordonnée Z de l'origine, ainsi que les coordonnées de tous les autres axes,
restent inchangées puisque seuls X et Y étaient spécifiés.

.Deuxième exemple avec G10 L2:
----
G10 L2 P1 X0 Y0 Z0 (révoque les décalages en X, Y et Z du système N°1)
----

L'exemple précédent fixe les origines XYZ du système de coordonnées G54, à
l'origine machine.

Les systèmes de coordonnées <<cha:Systemes-de-coordonnees, sont décrits en
détail ici>>.

[[sec:G10-L10]]
== G10 L10 modifie les offsets d'outil dans la table d'outils
(((G10 L10 modifie les offsets d'outil dans la table d'outils)))

----
G10 L10 P- axes <R- I- J- Q->
----
* 'P' - numéro d'outil
* 'R' - rotation autour de l'axe Z
* 'I' - angle frontal (tour)
* 'J' - angle arrière (tour)
* 'Q' - orientation (tour)

G10 L10 modifie les valeurs de l'outil 'P' dans la table d'outils, de sorte
que si la compensation d'outil est rechargée, avec la machine à la position
courante et avec les G5x et G92 actifs, les coordonnées courantes pour
l'axe spécifié deviendront les coordonnées spécifiées. Les axes non spécifiés
dans la commande G10 L10 ne seront pas modifiés.

.Exemple avec G10 L10:
----
M6 T1 G43 (appel l'outil 1 et active la correction de longueur d'outil)
G10 L10 P1 Z1.5 (fixe la position courante en Z à 1.5 dans la table d'outils)
G43 (recharge l'offset de longueur d'outil depuis la table d'outils modifiée)
M2 (fin de programme)
----
Pour d'autres détals voir les commandes <<sec:M6-Appel-Outil, M6>>,
<<sec:T-Choix-Outil, Tn>> et <<sec:G43, G43>>/<<sec:G43_1,G43.1>>.

C'est une erreur si:

* La compensation d'outil est activée.
* Le mot P n'est pas spécifié.
* Le mot P ne correspond pas à un numéro d'outil valide de la table d'outils.

[[sec:G10-L11]]
== G10 L11 modifie les offsets d'outil dans la table d'outils
(((G10 L11 modifie les offsets d'outil dans la table d'outils)))

----
G10 L11 P- axes <R- I- J- Q->
----
* 'P' - numéro d'outil
* 'R' - rotation autour de l'axe Z
* 'I' - angle frontal (tour)
* 'J' - angle arrière (tour)
* 'Q' - orientation (tour)

G10 L11 est identique à G10 L10 excepté qu'au lieux de fixer les valeurs
par rapport aux décalages de coordonnées courants, il les fixe de sorte que les
coordonnées courantes deviennent celles spécifiées par les paramètres si la
nouvelle compensation d'outil est rechargée et que la machine est placée dans
le système de coordonnées G59.3, système sans aucun décalage G92 actif.

Ceci permet à l'utilisateur de fixer le système de coordonnées G59.3 à
un point fixe de la machine et d'utiliser cet emplacement pour mesurer
l'outil sans s'occuper des autres décalages courants actifs.

C'est une erreur si:

* La compensation d'outil est activée
* Le mot P n'est pas spécifié.
* Le mot P ne correspond pas à un numéro d'outil valide de la table d'outils.

[[sec:G10-L20]]
== G10 L20 Établissement de l'origine d'un système de coordonnées
(((G10 L20 Établissement de l'origine d'un système de coordonnées)))

----
G10 L20 P- axes
----
* 'P' - système de coordonnées (0-9)

G10 L20 est similaire à G10 L2 excepté qu'au lieu d'ajuster les offsets à des
valeurs données, il les place à des valeurs calculées de sorte que les
coordonnées courantes deviennent les valeurs données en paramètres.

.Exemple avec G10 L20:
----
G10 L20 P1 X1.5 (fixe la position courante en X du système de coordonnées G54
à 1.5)
----

C'est une erreur si:

* Le nombre P n'est pas évalué comme une entier compris entre 0 et 9.
* Un axe non défini dans la configuration est programmé.

[[sec:G17-G18-G19]]
== G17 à G19.1 Choix du plan de travail
(((G17 Plan XY)))
(((G18 Plan XZ)))
(((G19 Plan YZ)))

Ces codes sélectionnent le plan de travail courant comme décrit ci-dessous:

* G17 - XY (par défaut)
* G18 - ZX
* G19 - YZ
* G17.1 - UV
* G18.1 - WU
* G19.1 - VW

Les plans UV, WU et VW ne supportent pas les arcs. Il est de bonne pratique
d'inclure la sélection du plan de travail dans le préambule du programme G-code.
Les effets de la sélection d'un plan de travail sont discutés dans la section
<<sec:G2-G3, sur les arcs>>.

[[sec:G20-G21-Unites-Machine]]
== G20, G21 Choix des unités machine
(((G20 Pouce)))
(((G21 Millimètre)))

* 'G20' - pour utiliser le pouce comme unité de longueur.
* 'G21' - pour utiliser le millimètre comme unité de longueur.

C'est toujours une bonne pratique de programmer soit 'G20', soit 'G21', dans
le préambule du programme, avant tout mouvement et de ne plus en changer
ailleurs dans le programme.

[[sec:G28-G28_1-Aller-a-une-position]]
== G28, G28.1 Aller à une position prédéfinie
(((G28)))
(((G28.1)))

[WARNING]
Pour une bonne répétabilité de la position et que la position soit correctement
enregistrée avec G28.1, faire la prise d'origine générale avant d'utiliser G28.

G28 utilise les valeurs enregistrées dans les paramètres 5161 à 5166 comme
points finaux des mouvements des axes X Y Z A B C U V W.
Les valeurs des paramètres sont des coordonnées machine 'absolues', en unités
machine natives, telles que fixées dans le fichier ini. Tous les axes définis
dans le fichier ini seront déplacés lors d'un G28.

* G28 - effectue un mouvement en vitesse rapide de la position courante à la
position 'absolue' enregistrée dans les paramètres 5161 à 5166.

* 'G28 axes' - effectue un déplacement en vitesse rapide à la position
spécifiée par 'axes' y compris les décalages, puis effectuera un mouvement en
vitesse rapide aux coordonnées 'absolues' stockées dans les paramètres 5161
à 5166 pour les axes spécifiés.

* G28.1 - enregistre la position 'absolue' courante dans les paramètres 5161
à 5166.

.Exemple avec G28
----
G28 Z2.5 (vitesse rapide vers Z2.5 puis emplacement spécifié dans les paramètres enregistrés de G28)
----
 
C'est une erreur si:

* La compensation d'outil est active.

[[sec:G30-G30_1-Aller-a-une-position-predefinie]]
== G30, G30.1 Aller à une position prédéfinie
(((G30)))
(((G30.1)))

[WARNING]
Pour une bonne répétabilité de la position et que la position soit correctement
enregistrée avec G30.1, faire la prise d'origine générale avant d'utiliser G30.

* 'G30' - effectue un mouvement en vitesse rapide de la position courante à la
position 'absolue' stockée dans les paramètres 5181 à 5186.
Les valeurs stockées dans les paramètres font référence au système de
coordonnées absolues qui est le système de coordonnées machine.

* 'G30 axes' - effectue un déplacement en vitesse rapide depuis la position
courante jusqu'à la position spécifiée par 'axes', y compris les décalages,
suivi d'un mouvement rapide à la position 'absolue' stockée dans les paramètres
5181 à 5186 pour les axes spécifiés. Les axes non spécifiés ne bougeront pas.

* 'G30.1' - enregistre la position absolue courante dans les paramètres 5181 à
5186.

[NOTE]
Les paramètres de 'G30' peuvent être utilisés pour déplacer l'outil quand un M6
est programmé avec la variable '[TOOL_CHANGE_AT_G30]=1' dans la section
'[EMCIO]' du fichier ini.

.Exemple avec G30
----
G30 Z2.5 (mvt rapide à Z2.5 puis déplacement selon les paramètres de G30
stockés)
----

C'est une erreur si:

* La compensation de d'outil est active.

[[sec:G33-Broche-synchronisee]]
== G33 Mouvement avec broche synchronisée
(((G33 Mouvement avec broche synchronisée)))

----
G33 X- Y- Z- K-
----

* 'K' - distance par tour

Pour un mouvement avec broche synchronisée dans une direction, programmer
'G33 X- Y- Z- K-' où K donne la longueur du mouvement en XYZ pour chaque tour
de broche. Par exemple, si il commence à 'Z=0', 'G33 Z-1 K.0625' produira
un mouvement d'un pouce de long en Z en même temps que 16 tours de broche.
Cette commande peut être la base d'un programme pour faire un filetage de
16 filets par pouce. Un autre exemple en métrique, 'G33 Z-15 K1.5' produira
un mouvement de 15mm de long pendant que la broche fera 10 tours soit un
pas de 1.5mm.

Les mouvements avec broche synchronisée utilisent l'index de broche et les pins
'spindle at speed' pour le filetage multi-passes. Un mouvement avec 'G33' se
termine au point final programmé.

[NOTE]
K suit la ligne d'avance décrite par 'X- Y- Z-'. K n'est pas parallèle à
l'axe Z si les points d'arrivée des axes X et Y sont utilisés, par exemple pour
réaliser un filetage conique.

.Informations techniques[[g33-tech-info]]
Au début de chaque passe G33, LinuxCNC utilise la vitesse de broche et les
limites d'accélération de la machine pour calculer combien de temps prendra Z
pour accélérer après chaque impulsion d'index et détermine de combien de degrés
la broche tournera pendant ce temps là. Il ajoute alors cet angle à la position
de l'index puis calcule la position de Z utilisant l'angle de broche correct.
Cela signifie que Z aura atteints la position correcte juste en fin
d'accélération à la bonne vitesse, il peux immédiatement usiner le bon filetage.

.Connections de hAL
Les pins 'motion.spindle-at-speed' et l'index 'encoder.n.phase-Z' pour la broche
doivent être connectés dans le fichier HAL pour que G33 soit opérationnel.
Voir le Manuel de l'intégrateur pour plus d'informations sur les mouvements
synchronisés avec la broche.

.Exemple avec G33:
----
G90 (mode distance absolue)
G0 X1 Z0.1 (positionnement en vitesse rapide)
S100 M3 (broche en rotation à 100tr/mn)
G33 Z-2 K0.125 (mouvement vers Z -2 avec une avance de 0.125 par tour)
G0 X1.25 (mouvement de dégagement en vitesse rapide)
Z0.1 (mouvement en vitesse rapide à Z0.1)
M2 (fin de programme)
----

* Voir les sections <<sec:G90-G91,G90>>, <<sec:G0,G0>>
et <<sec:M2-M30,M2>> pour plus d'informations.

C'est une erreur si:

* Tous les axes sont omis.
* La broche ne tourne pas quand cette commande est exécutée.
* Le mouvement linéaire requis excède les limites de vitesse machine
en raison de la vitesse de broche.

[[sec:G33_1-Taraudage-rigide]]
== G33.1 Taraudage Rigide
(((G33.1 Taraudage rigide)))

----
G33.1 X- Y- Z- K-
----

* 'K' - distance par tour

Pour un taraudage rigide avec broche synchronisée et mouvement de retour,
programmer 'G33.1 X- Y- Z- K-' où 'K-' donne la longueur du mouvement
pour chaque tour de broche. Un mouvement de taraudage rigide suit cette
séquence:

[WARNING]
Si pour un taraudage rigide, les coordonnées X et Y spécifiées ne sont pas
les coordonnées courantes lors de l'appel de G33.1, le mouvement ne
s'effectuera pas le long de l'axe Z mais de la position courante jusqu'aux
coordonnées X et Y spécifiées.

. Un mouvement aux coordonnées spécifiées, synchronisé avec la rotation de
la broche, avec le ratio donné et débutant à l'impulsion d'index du codeur
de broche.
. Quand le point final est atteint, la commande inverse le sens de rotation
de la broche (ex: de 300 tours/mn en sens horaire à 300 tours/mn en sens
anti-horaire)
. Le mouvement reste synchronisé en continu avec la broche, même 'au delà'
de la coordonnée du point final spécifié pendant l'arrêt de la broche et
son inversion.
. Le mouvement synchronisé se poursuit pour revenir aux coordonnées initiales.
. Quand les coordonnées initiale sont atteintes, la commande inverse la
broche une seconde fois (ex: de 300tr/mn sens anti-horaire à 300tr/mn en
sens horaire)
. Le mouvement reste synchronisé même 'au delà' des coordonnées initiales
pendant que la broche s'arrête, puis s'inverse.
. Un mouvement 'non synchronisé' ramène le mobile en arrière, aux
coordonnées initiales.

Tous les mouvements avec broche synchronisée ont besoin d'un index de broche,
pour conserver la trajectoire prévue et que les passes se chevauchent
exactement. Un mouvement avec 'G33.1' se termine aux coordonnées initiales.
Les mots d'axes sont facultatifs, sauf au moins un qui doit être utilisé.

.Exemple avec G33.1:
----
G90 (mode distance absolue)
G0 X1.000 Y1.000 Z0.100 (mouvement rapide au point de départ taraudage rigide
en 20 filets par pouce)
G33.1 Z-0.750 K0.05 (et une profondeur de filet de 0.750)
M2 (fin de programme)
----

* Voir les sections <<sec:G90-G91,G90>>, <<sec:G0,G0>>
et <<sec:M2-M30,M2>> pour plus d'informations.

C'est une erreur si:

* Tous les axes sont omis.
* La broche ne tourne pas quand cette commande est exécutée.
* Le mouvement linéaire requis excède les limites de vitesse machine
   en raison d'une vitesse de broche trop élevée.

[[sec:G38-x-Palpeur]]
== G38.x Mesure au palpeur
(((G38.2 Palpeur)))(((G38.3 Palpeur)))(((G38.4 Palpeur)))(((G38.5 Palpeur)))

----
G38.x axes
----

* 'G38.2' - palpe vers la pièce, stoppe au toucher, signale une erreur en cas de
défaut.
* 'G38.3' - palpe vers la pièce, stoppe au toucher.
* 'G38.4' - palpe en quittant la pièce, stoppe en perdant le contact, signal une
erreur en cas de défaut.
* 'G38.5' - palpe en quittant la pièce, stoppe en perdant le contact.


[IMPORTANT]
Cette commande n'est pas utilisable si la machine n'a pas été configurée pour
exploiter un signal de sonde entre HAL et LinuxCNC.
Le signal de la sonde doit être envoyé sur une broche d'entrée puis transmis à
'motion.probe-entrée (bit, In)'. G38.x utilise la valeur de cette broche pour
déterminer quand la sonde a touché ou perdu le contact. TRUE si le contact de
la sonde est fermé (Touché), FALSE si il est ouvert.

Programmer 'G38.x axes', pour effectuer une mesure au palpeur. Les mots d'axe
sont facultatifs excepté au moins un. Les mots d'axe définissent ensemble,
le point de destination, à partir de l'emplacement actuel, vers lequel la
sonde se déplace. Si le palpeur n'a pas déclenché avant que la destination soit
atteinte, G38.2 et G38.4 signaleront une erreur. L'outil dans la broche doit
être un palpeur ou un actionneur de contact.

En réponse à cette commande, la machine déplace le point contrôlé
(qui est le centre de la boule du stylet du palpeur) en ligne droite,
à la vitesse travail courante, vers le point programmé.
En mode vitesse inverse du temps, la vitesse est telle que le mouvement
depuis le point courant jusqu'au point programmé, prendra le temps spécifié.
Le mouvement s'arrête (dans les limites d'accélération de la machine)
lorsque le point programmé est atteint ou quand l'entrée du palpeur
bascule dans l'état attendu selon la première éventualité.

Le tableau de signification des différents codes de mesure.

[[sec:Codes-de-mesure]]
.Codes de mesure

[width="90%", options="header"]
|==========================================================
|Code  | État ciblé    | Sens de destination | Signal d'erreur
|G38.2 | Touché        | Vers la pièce       | Oui
|G38.3 | Touché        | Vers la pièce       | Non
|G38.4 | Quitté        | Depuis la pièce     | Oui
|G38.5 | Quitté        | Depuis la pièce     | Non
|==========================================================

Après une mesure réussie, <<sec:Log-des-mesures,les paramètres 5061 à 5069>>
contiendront les coordonnées des axes XYZABCUVW, pour l'emplacement du
point contrôlé à l'instant du changement d'état du palpeur.
Après une mesure manquée, ils contiendront les coordonnées du point programmé.
Le paramètre 5070 est mis à 1 si la mesure est réussie et à 0 si elle est
manquée. Si la mesure n'a pas réussi, G38.2 et G38.4 signaleront une erreur
en affichant un message à l'écran si l'interface graphique choisie le permet.

Un commentaire de la forme '(PROBEOPEN filename.txt)' ouvrira le
fichier 'filename.txt' et y enregistrera les 9 coordonnées de
XYZABCUVW pour chaque mesure réussie.
Le fichier doit être fermé avec <<sec:Log-des-mesures,le commentaire>>
'(PROBECLOSE)'.

Dans le répertoire des exemples, le fichier 'smartprobe.ngc' montre
l'utilisation d'un palpeur et l'enregistrement des coordonnées de la pièce
dans un fichier. Le fichier 'smartprobe.ngc' peut être utilisé par 'ngcgui'
avec un minimum de modifications.

C'est une erreur si:

* Le point programmé est le même que le point courant.
* Aucun mot d'axe n'est utilisé.
* La compensation de d'outil est activée.
* La vitesse travail est à zéro.
* Le palpeur est déjà au contact de la cible.

[[sec:G40]]
== G40 Révocation de la compensation de rayon d'outil
(((G40 Révocation de la compensation de rayon)))

* 'G40' - révoque la compensation de rayon d'outil. Le mouvement suivant, de
sortie de compensation, doit être une droite au moins aussi longue que le
diamètre de l'outil. Ce n'est pas une erreur de désactiver la compensation
quand elle est déjà inactive.

.Exemple avec G40
----
; la position courante est X1 après la fin du mvt avec compensation
G40 (révoque la compensation)
G0 X1.6 (mouvement linéaire aussi long que le diamètre d'outil)
M2 (fin de programme)
----

* Voir les sections <<sec:G0,G0>> et <<sec:M2-M30,M2>>
pour plus d'informations.

C'est une erreur si:

* Un mouvement en arc avec G2 ou G3 suit un G40.
* Le mouvement suivant la révocation de compensation est inférieur au
diamètre de l'outil.

[[sec:G41-G42]]
== G41, G42 Compensation de rayon d'outil
(((G41 Compensation d'outil)))
(((G42 Compensation d'outil)))

----
G41 <D-> (compensation à gauche du profil)
G42 <D-> (compensation à droite du profil)
----

* 'D' - Numéro d'outil

Le mot D est facultatif. En son absence ou si il est à zéro, le rayon de l'outil
courant est utilisé. Si le mot D est présent, il devrait normalement correspondre
au numéro de l'outil monté dans la broche, bien que cela ne soit pas
indispensable, il doit par contre correspondre à un numéro d'outil valide.

Pour activer la compensation d'outil à gauche du profil,
programmer 'G41'. G41 applique la compensation d'outil à gauche de la
ligne programmée vu de l'extrémité positive de l'axe perpendiculaire au plan.

Pour activer la compensation d'outil à droite du profil,
programmer 'G42'. G42 applique la correction d'outil à droite de la
ligne programmée vu de l'extrémité positive de l'axe perpendiculaire au plan.

Le mouvement d'entrée doit être au moins aussi long que le rayon de l'outil.
Le mouvement d'entrée peut être effectué en vitesse rapide.

La compensation d'outil ne peut être effectuée que si le plan XY ou
le plan XZ est actif.

Les commandes définies par l'utilisateur, M100 à M199, sont autorisées
lorsque la compensation d'outil est activée.

Le comportement de la machine, quand la compensation d'outil est activée,
est décrit dans la section <<sec:Compensation-rayon-d-outil,
sur la compensation d'outil>>.

C'est une erreur si:

* Le nombre D ne correspond, ni à zéro, ni à un numéro d'outil valide.
* Le plan YZ est le plan de travail actif.
* La compensation d'outil est activée alors qu'elle est déjà active.

[[sec:G41_1-G42_1]]
== G41.1, G42.1 Compensation dynamique d'outil
(((G41.1 Compensation dynamique)))
(((G42.1 Compensation dynamique)))

----
G41.1 D- <L-> (à gauche du profil)
G42.1 D- <L-> (à droite du profil)
----

* Le mot D spécifie le diamètre de l'outil.
* Le mot L spécifie l'orientation de l'outil, est à 0 par défaut si
non spécifié.

Pour activer la compensation dynamique d'outil à gauche du profil,
programmer 'G41.1 D- L-'.

Pour activer la compensation dynamique d'outil à droite du profil,
programmer 'G42.1 D- L-'.

C'est une erreur si:

* Le plan YZ est le plan de travail actif.
* La valeur de L n'est pas comprise entre 0 et 9 inclus.
* Le nombre L est utilisée alors que le plan XZ n'est pas le plan actif.
* La compensation d'outil est activée alors qu'elle est déjà active.

Plus d'informations sur <<sec:Orientations-des-outils-de-tour, l'orientation des
outils>>, sur <<fig:Outil-Positions-1-2-3-4, les outils de tour en 1-2-3-4>> et
<<fig:Outil-Positions-5-6-7-8, les outils de tour en 5-6-7-8>>.

[[sec:G43]]
== G43 Activation de la compensation de longueur d'outil
(((G43 Activation de la compensation de longueur d'outil)))

* 'H' - Numéro d'outil
* 'G43' - Utilise l'outil courant chargé par le dernier Tn M6. G43 modifie les
mouvements ultérieurs en décalant les coordonnées de Z et/ou de X, de la
longueur de l'outil. G43 ne provoque aucun mouvement. L'effet de la
compensation ne se produira qu'au cours du prochain mouvement des axes compensés,
de sorte que le point final de ce mouvement sera la position compensée.
* 'G43 H-' - Utilise l'offset de l'outil correspondant fourni par la table
d'outils. Ce n'est pas une erreur d'avoir la valeur de H à zéro, le numéro de
l'outil courant sera utilisé.

.Exemple de ligne avec G43 H-
----
G43 H1 (ajuste les offsets d'outil avec les valeurs de l'outil 1 fournies par
la table d'outils)
----

C'est une erreur si:

* La valeur de H n'est pas un entier, il est négatif, ou il ne correspond, ni
à zéro, ni à un numéro d'outil valide.

[[sec:G43_1]]
== G43.1 Compensation dynamique de longueur d'outil
(((G43.1 Compensation dynamique de longueur d'outil)))

----
G43.1 axes
----

* 'G43.1 axes' - Modifie les mouvements ultérieurs en décalant les coordonnées
de Z et/ou de X, selon les offsets stockés dans la table d'outils. G43.1 ne
provoque aucun mouvement. L'effet de la compensation ne se produira qu'au cours
du prochain mouvement des axes compensés de sorte que le point final de ce
mouvement sera la position compensée.

.Exemple avec G43.1
----
G90 (passe en mode absolu)
T1 M6 G43 (charge l'outil N°1 et son offset de longueur, Z est à la position
machine 0 et la visu affiche Z1.500)
G43.1 Z0.250 (décale l'outil courant de 0.250, la visu affiche maintenant
Z1.250)
M2 (fin de programme)
----
* Voir les sections <<sec:G90-G91,G90>> & <<sec:T-Choix-Outil,T>> et
<<sec:M2-M30,M2>> pour plus d'informations.

////
Pour utiliser la compensation dynamique de longueur d'outil depuis un
programme, utiliser 'G43.1 I- K-', où 'I-' donne la compensation de
longueur d'outil en X (pour les tours) et 'K-' donne la compensation
de longueur en Z (pour les tours et les fraiseuses).
////

C'est une erreur si:

* Une commande de mouvement est sur la même ligne que 'G43.1'

[[sec:G49-Revocation-Longueur-Outil]]
== G49 Révocation de la compensation de longueur d'outil
(((G49 Révocation de compensation de longueur d'outil)))

Pour révoquer la compensation de longueur d'outil, programmer 'G49'.

Ce n'est pas une erreur de programmer une compensation qui est déjà
utilisée. Ce n'est pas non plus une erreur de révoquer une compensation de
longueur d'outil alors qu'aucune n'est couramment utilisée.

[[sec:G53-Mouvement-Coordonnees-Absolues]]
== G53 Mouvement en coordonnées absolues
(((G53 Mouvement en coordonnées absolues)))

----
G53 axes
----

Pour un déplacement exprimé en coordonnées système, programmer 
'G53' sur la même ligne qu'un mouvement linéaire. 'G53' n'est pas modal, il doit
donc être programmé sur chaque ligne où il doit être actif. 'G0' ou 'G1' ne
doivent pas se trouver sur la même ligne si un d'eux est déjà actif.
Par exemple:

.Exemple avec G53
----
G53 G0 X0 Y0 Z0 (mouvement linéaire rapide des axes à leur positions d'origine)
G53 X2 (mouvement linéaire rapide à la coordonnée absolue X=2)
----

C'est une erreur si:

* 'G53' est utilisé sans que G0 ou G1 ne soit actif.
* 'G53' est utilisé alors que la compensation d'outil est active.

Étudier le <<cha:Systemes-de-coordonnees, chapitre sur les systèmes de
coordonnées>> et de leurs décalages, pour bien maîtriser ces concepts.

[[sec:G54-a-G59_3]]
== G54 à G59.3 Choix du système de coordonnées

* 'G54' - Système de coordonnées pièce 1
* 'G55' - Système de coordonnées pièce 2
* 'G56' - Système de coordonnées pièce 3
* 'G57' - Système de coordonnées pièce 4
* 'G58' - Système de coordonnées pièce 5
* 'G59' - Système de coordonnées pièce 6
* 'G59.1' - Système de coordonnées pièce 7
* 'G59.2' - Système de coordonnées pièce 8
* 'G59.3' - Système de coordonnées pièce 9

Le code 'G54' est apparié avec le système de coordonnées pièce N°1,
pour le choisir programmer 'G54' et ainsi de suite pour les autres systèmes.

Les systèmes de coordonnées stockent les valeurs de chacun des axes dans les
variables indiquées dans le tableau ci-dessous.

.Paramètres des systèmes de coordonnées pièce[[sec:Coordonnees-Piece]]

[width="80%", options="header", cols="<,11*^"]
|============================================================
|Choix |CS|X   |Y   |Z   |A   |B   |C   |U   |V   |W   |R
|G54   |1 |5221|5222|5223|5224|5225|5226|5227|5228|5229|5230
|G55   |2 |5241|5242|5243|5244|5245|5246|5247|5248|5249|5250
|G56   |3 |5261|5262|5263|5264|5265|5266|5267|5268|5269|5270
|G57   |4 |5281|5282|5283|5284|5285|5286|5287|5288|5289|5290
|G58   |5 |5301|5302|5303|5304|5305|5306|5307|5308|5309|5310
|G59   |6 |5321|5322|5323|5324|5325|5326|5327|5328|5329|5330
|G59.1 |7 |5341|5342|5343|5344|5345|5346|5347|5348|5349|5350
|G59.2 |8 |5361|5362|5363|5364|5365|5366|5367|5368|5369|5370
|G59.3 |9 |5381|5382|5383|5384|5385|5386|5387|5388|5389|5390
|============================================================


C'est une erreur si:

* Un de ces G-codes est utilisé alors que la compensation d'outil est active.

Voir la section <<cha:Systemes-de-coordonnees, sur les systèmes de coordonnée>>
pour une vue complète.

[[sec:G61-G61_1]]
== G61, G61.1 Contrôle de trajectoire exacte
(((G61 Trajectoire exacte)))
(((G61.1 Arrêt exact)))
(((Trajectoire contrôlée)))

* 'G61' - Met la machine en mode de trajectoire exacte. G61 suivra exactement
la trajectoire programmée même si cela doit aboutir à un arrêt complet
momentané du mobile.
* 'G61.1' - Met la machine en mode arrêts exacts.

[[sec:G64]]
== G64 Contrôle de trajectoire continue avec tolérance
(((Contrôle de trajectoire continue avec tolérance)))

----
G64 <P- <Q->>
----

* 'P-' - Déviation maximale tolérée par rapport à la trajectoire programmée.
* 'Q-' - Tolérance <<cha:Concepts-pour-utilisateur,naïve cam>>.
* 'G64' - Recherche de la meilleure vitesse possible.
* 'G64 P-' - Mélange entre meilleure vitesse et tolérance de déviation.
* 'G64 P- Q-' - Est le moyen d'affiner encore pour obtenir le meilleur
compromis entre vitesse et précision de la trajectoire. La vitesse sera
réduite si nécessaire pour maintenir la trajectoire, même si ça doit aboutir
à un arrêt complet momentané. Le 'détecteur naïve cam' est activé. Quand il
y a une série de mouvements linéaires XYZ en vitesse travail, avec une
même vitesse de déplacement, inférieure à 'Q-', ils sont regroupés en
un seul segment linéaire, ainsi la vitesse s'en trouve améliorée puisqu'il
n'y a plus de décélération/arrêt/accélération aux points de jonction des
segments. Sur les mouvements G2/G3 dans le plan 'G17' (XY) lorsque le
maximum d'écart entre un arc et une ligne droite est inférieur à
la déviation maximale 'P-', la tolérance de l'arc est divisée en deux lignes
(depuis le début de l'arc jusqu'au milieu et du milieu jusqu'à la fin). Ces
deux lignes sont ensuite soumises à l'algorithme 'naïve cam'. Ainsi, les cas
ligne-arc, arc-arc et arc-ligne et le cas ligne-ligne, bénéficient de
l'algorithme 'naïve cam', ce qui améliore les performances en simplifiant
les trajectoires. Il est permis de programmer ce mode même si il est déjà actif.

.Exemple de ligne de programme avec G64
----
G64 P0.015 (fixe la déviation d'usinage à 0.015 maximum de la trajectoire
programmée)
----

Il est de bonne pratique de spécifier un type de contrôle de trajectoire
dans le préambule de chaque programme G-code.

[[sec:G73-Percage-avec-brise-copeaux]]
== G73 Cycle de perçage avec brise copeaux
(((G73 Cycle de perçage avec brise copeaux)))

----
G73 axes R- Q- <L->
----

* 'R-' - Position du plan de retrait en Z
* 'Q-' - Incrément 'delta' parallèle à l'axe Z
* 'L-' - Répétition

Le cycle 'G73' est destiné au perçage profond ou au fraisage avec brise-copeaux.
Les retraits, au cours de ce cycle, fragmentent les copeaux longs (fréquents
lors de l'usinage de l'aluminium). Ce cycle utilise la valeur 'Q-' qui
représente un incrément 'delta' parallèle à l'axe Z. Le cycle se décompose de la
manière suivante:

. Un mouvement préliminaire. Comme décrit dans <<sec:Mouvement-Preliminaire, cet
 exposé sur le mouvement préliminaire>>
. Un mouvement de l'axe Z seul, en vitesse travail, sur la position la moins
profonde entre, l'incrément 'delta' ou la position de Z programmée.
. Une petite remontée en vitesse rapide.
. Répétition des étapes 2 et 3 jusqu'à ce que la position programmée de Z
soit atteinte à l'étape 2.
. Un mouvement de l'axe Z en vitesse rapide jusqu'au plan de retrait.

C'est une erreur si:

* La valeur de Q est négative ou égale à zéro.
* Le nombre R n'est pas spécifié.

[[sec:G76-Filetage]]
== G76 Cycle de filetage préprogrammé
(((G76 Cycle de filetage multi-passe)))

----
G76 P- Z- I- J- R- K- Q- H- E- L-
----

image::images/g76-threads_fr.png[]

* 'Ligne pilote' - La ligne pilote est une ligne imaginaire, parallèle à
    l'axe de la broche (Z), située en sécurité à l'extérieur du matériau à
    fileter. La ligne pilote va du point initial en Z jusqu'à la fin du
    filetage donnée par la valeur de 'Z' dans la commande.

* 'P-' - Le pas du filet en distance de déplacement par tour.

* 'Z-' - La position finale du filetage. A la fin du cycle, l'outil sera
    à cette position 'Z'.

[NOTE]
En mode diamètre G7, les valeurs 'I', 'J' et 'K' sont des mesures de diamètre.
En mode rayon G8, les valeurs 'I', 'J' et 'K' sont des mesures de rayon.

* 'I-' - La crête du filet est une distance entre la ligne pilote et la
    surface de la pièce. Une valeur négative de 'I',
    indique un filetage externe et une valeur positive, indique un
    filetage interne. C'est généralement à ce diamètre nominal que le
    matériau est cylindré avant de commencer le cycle 'G76'.

* 'J-' - Une valeur positive, spécifie la profondeur de la passe initiale.
     La première passe sera à 'J' au delà de la crête du filet 'I'.

* 'K-' - Une valeur positive, spécifie la profondeur finale du filet.
    La dernière passe du filetage sera à 'K' au delà de la crête du filet 'I'.

Paramètres facultatifs:

* 'R-' - La profondeur de dégressivité. 'R1.0' spécifie une profondeur
    de passe constante pour les passes successives du filetage.
    'R2.0' spécifie une surface constante.
    Les valeurs comprises entre 1.0 et 2.0 spécifient
    une profondeur décroissante mais une surface croissante.
    Enfin, les valeurs supérieures à 2.0 sélectionnent une surface décroissante.

[WARNING]
Les valeurs inutilement hautes de dégressivité, produiront un nombre inutilement
important de passes. (dégressivité = plongée par paliers)

* 'Q-' - L'angle de pénétration oblique. C'est l'angle (en degrés)
    décrivant de combien, les passes successives doivent être décalées
    le long de l'axe Z. C'est utilisé pour faire enlever plus de matériau
    d'un côté de l'outil que de l'autre.
    Une valeur positive de 'Q' fait couper d'avantage le bord de l'outil.
    Typiquement, les valeurs sont 29, 29.5 ou 30 degrés.

* 'H-' - Le nombre de passes de finition. Les passes de finition sont
    des passes additionnelles en fond de filet.
    Pour ne pas faire de passe de finition, programmer 'H0'.

Les entrées et sorties de filetage peuvent être programmées coniques
    avec les valeurs de 'E' et 'L'.

* 'E-' - Spécifie la longueur des parties coniques le long de l'axe Z.
    L'angle du cône ira de la profondeur de la dernière passe à la
    crête du filet 'I'. 'E2.0' donnera un cône d'entrée et de sortie
    d'une longueur de 2.0 unités dans le sens du filetage. Pour
    un cône à 45 degrés, programmer 'E' identique à 'K'.

* 'L-' - Spécifie quelles extrémités du filetage doivent être coniques.
    Programmer 'L0' pour aucune (par défaut), 'L1' pour une
    entrée conique, 'L2' pour une sortie conique, ou 'L3' pour l'entrée et
    la sortie coniques.

L'outil fera une brève pause pour la synchronisation
avec l'impulsion d'index avant chaque passe de filetage. Une gorge de
dégagement sera requise à l'entrée, à moins que le début du filetage
ne soit après l'extrémité de la pièce ou qu'un cône d'entrée soit utilisé.

À moins d'utiliser un cône de sortie, le mouvement de sortie (retour
rapide sur X initial) n'est pas synchronisé sur la vitesse de broche.
Avec une broche lente, la sortie pourrait se faire sur une petite
fraction de tour. Si la vitesse de broche est augmentée après qu'un
certain nombre de passes soient déjà faites, la sortie va prendre
une plus grande fraction de tour, il en résultera un usinage 'très
brutal' pendant ce nouveau mouvement de sortie. Ceci peut être évité en
prévoyant une gorge de sortie, ou en ne changeant pas la vitesse de
broche pendant le filetage.

La position finale de l'outil sera à la fin de la 'ligne pilote'.
Un mouvement de sécurité peut être nécessaire avec un filetage interne,
pour sortir l'outil de la pièce.

C'est une erreur si:

* Le plan de travail actif n'est pas ZX.
* D'autres mots d'axes que X ou Y, sont spécifiés.
* La dégressivité 'R' est inférieure à 1.0.
* Tous les mots requis ne sont pas spécifiés.
* 'P', 'J', 'K' ou 'H' est négatif.
* 'E-' est supérieur à la moitié de la longueur de la ligne pilote.

.Connections de HAL
Les pins 'motion.spindle-at-speed' et l'index 'encoder.n.phase-Z' doivent être
connectées dans le fichier HAL pour que G76 soit opérationnel.
Voir le Manuel de l'intégrateur pour plus d'informations sur les mouvements
synchronisés avec la broche.

.Informations techniques
Le cycle préprogrammé G76 est basé sur le mouvement avec broche synchronisée G33,
voir les <<g33-tech-info, informations technique relatives à G33>>.


Un programme de filetage, 'g76.ngc' montre l'utilisation d'un cycle de
filetage G76, il peut être visualisé et exécuté sur n'importe quelle machine
utilisant la configuration 'sim/lathe.ini'.

.Exemple de G-Code avec G76
----
G0 Z-0.5 X0.2
G76 P0.05 Z-1 I-0.075 J0.008 K0.045 Q29.5 L2 E0.045
----

Sur l'image ci-dessous, l'outil est à la position finale après que le cycle
G76 soit terminé. On voit que le parcours d'entrée de l'outil sur la droite,
spécifié par Q29.5 et le parcours de sortie conique à gauche comme
spécifié par L2 E0.045. Les lignes blanches sont les mouvements de coupe.

.Parcours d'outil de l'exemple[[fig:G76-cycle-de-filetage]]

image::images/g76-01.png[]

[[sec:G81-a-G89]]
== Les cycles de perçage G81 à G89
(((Cycles de perçage G81-G89)))
(((G81-G89, Cycles de perçage)))

Les cycles de perçage de 'G81' à 'G89' et la révocation de ces cycle 'G80',
sont décrits dans cette section. Des exemples sont donnés plus bas avec
les descriptions.

Tous les cycles de perçage sont effectués dans le respect du plan
de travail courant. N'importe lequel des six plans de travail peut être
choisi. Dans cette section, la plupart des descriptions supposeront que
le plan de travail XY est le plan courant. Le comportement reste
analogue pour les autres plans de travail et les mots corrects doivent
être utilisés. Par exemple, dans le plan G17.1, l'action de retrait
s'effectue parallèlement à l'axe W et les positions ou incréments sont
donnés avec U et W. Dans ce cas, substituer U, V, W avec X, Y, Z dans les
instructions suivantes.

Les mots d'axes rotatifs ne sont pas autorisés dans les cycles de perçage.
Quand le plan actif est X, Y, Z, les mots d'axes U, V, W ne sont pas autorisés.
De même, si le plan actif est U, V, W, les mots d'axes X, Y, Z ne sont
pas autorisés.

=== Mots communs

Tous les cycles de perçage utilisent les groupes X, Y, Z ou U, V, W selon
le plan sélectionné, ainsi que le mot 'R'. La position de R- (signifiant
retrait) est perpendiculaire au plan de travail courant (axe Z pour le plan XY,
axe X pour le plan YZ, axe Y pour le plan XZ, etc.). Quelques cycles de
perçage utilisent des arguments supplémentaires.

=== Mots 'sticky'

Dans les cycles de perçage, un nombre est qualifié de 'sticky' (persistante,
collant) si, quand le même cycle est répété sur plusieurs lignes de code en
colonne, le nombre doit être indiqué la première fois, mais il
devient facultatif pour le reste des lignes suivantes. Les nombres
'sticky' conservent leur valeur tant qu'ils ne sont pas explicitement
programmés avec une nouvelle valeur. La valeur de R est toujours 'sticky'.

En mode de déplacements incrémentaux (G91), les valeurs X, Y, est R
sont traitées comme des incréments depuis la position courante, Z est
un incrément depuis la position de l'axe Z avant le mouvement
impliquant l'axe Z. En mode de déplacements absolus, les valeurs de X,
Y, R, et Z sont des positions absolues dans le système de coordonnées courant.

=== Répétition de cycle

Le mot L est facultatif et représente le nombre de répétitions.
L=0 n'est pas permis. Si les fonctionnalités de répétition sont utilisées,
elles le sont normalement en mode relatif, de sorte que la même séquence de
mouvements se répète à plusieurs emplacements régulièrement espacés le long
d'une ligne droite. Quand L>1 en mode relatif et XY comme plan courant,
les positions X et Y sont déterminées en ajoutant les valeurs X et Y de
la commande à celles de la position courante, pour le premier trajet ou
ensuite, à celles de la position finale du précédent trajet, pour les
répétitions. Ainsi, si vous programmez `L10`, vous obtiendrez 10 cycles.
Le premier cycle sera la distance X, Y depuis la position d'origine.
Les positions de R- et Z- ne changent pas durant toutes les
répétitions. En mode absolu, L>1 signifie `faire le même cycle à la même
place plusieurs fois`, omis, le mot L est équivalent à L=1. La valeur de L
n'est pas 'sticky'.


=== Mode de retrait

La hauteur du mouvement de retrait à la fin de chaque répétition
(appelée 'plan de retrait' dans les descriptions suivantes) est
déterminée par le mode de retrait: retrait sur la position initiale de
Z, si elle est au dessus de la valeur de R et que le mode de retrait
est 'G98', OLD_Z, sinon, à la position de R. Voir la section
<<sec:G98-G99-Set, sur les options du plan de retrait>>.

=== Erreurs des cycles de perçage

Il y a une erreur si:

* Tous les mots X, Y et Z sont manquants durant un cycle de perçage.
* Des mots d'axes de différents groupes (XYZ) (UVW) sont utilisés.
* Un nombre P est requis mais un nombre P négatif est utilisé.
* Un nombre L est utilisé mais n'est pas un entier positif.
* Un mouvement d'axe rotatif est utilisé durant un cycle de perçage.
* Une vitesse inverse du temps est activée durant un cycle de perçage.
* La compensation d'outil est activée durant un cycle de perçage.

Quand le plan XY est actif, la valeur de Z est 'sticky', et c'est une
erreur si:

* La valeur de Z est manquante alors qu'un même cycle de perçage n'a
   pas encore été activé.
* La valeur de R est inférieure à celle de Z.

Si un autre plan est actif, les conditions d'erreur sont analogues à
celles du plan XY décrites ci-dessus.

[[sec:Mouvement-Preliminaire]]
=== Mouvement préliminaire et Intermédiaire

Le mouvement préliminaire est un ensemble de mouvements commun à tous les
cycles de perçage.

Tout au début de l'exécution d'un cycle de perçage, si la position
actuelle de Z est en dessous de la position de retrait R, l'axe Z va
à la position R. Ceci n'arrive qu'une fois, sans tenir compte de la
valeur de L.

En plus, au début du premier cycle et à chaque répétition, un ou deux
des mouvements suivants sont faits:

. Un déplacement en ligne droite, parallèle au plan XY, vers le position
   programmée.
. Un déplacement en ligne droite, de l'axe Z seul vers la position de
   retrait R, si il n'est pas déjà à cette position R.

Si un autre plan est actif, le mouvement préliminaire et intermédiaire
est analogue.

=== Pourquoi utiliser les cycles de perçage?

Il y a au moins deux raisons pour utiliser les cycles de perçage. La
première est l'économie de code et la seconde la sécurité offerte par le
mouvement préliminaire qui permet de ne pas s'occuper du point de départ
du cycle.

[[sec:G80-Revocation-modaux]]
== G80 Révocation des codes modaux

(((G80 Révocation des codes modaux)))

* 'G80' - Révoque, tant qu'il est actif, tous les codes de mouvements modaux du
groupe 1 auquel il appartient. Il est révoqué lui même par tout g-code du même
groupe.

C'est une erreur si:

* Des mots d'axes sont programmés quand G80 est actif.

.Exemple 1 avec G80:
----
G90 G81 X1 Y1 Z1.5 R2.8 (cycle de perçage en mode de déplacement absolu)
G80 (révoque G81)
G0 X0 Y0 Z0 (active les mouvements en vitesse rapide et déplace le
mobile en X0, Y0 et Z0)
----

L'exemple 1 produit les mêmes déplacements et le même état final de la machine
que l'exemple suivant:

.Exemple avec G0:
----
G90 G81 X1 Y1 Z1.5 R2.8 (cycle de perçage en mode de déplacement absolu)
G0 X0 Y0 Z0 (active les mouvements en vitesse rapide et déplace le
mobile en X0, Y0 et Z0)
----

L'avantage du premier exemple est que la ligne du G80 révoque clairement le cycle
G81. Avec ce premier programme, le programmeur doit revenir en mode
mouvement avec G0, comme c'est fait sur la ligne suivante, ou tout autre
mot G de mouvement.


Si un cycle de perçage n'est pas révoqué avec G80 ou un autre mot G
de mouvement, le cycle de perçage attend de se répéter en utilisant
la prochaine ligne de code contenant un ou plusieurs mots d'axe. Le fichier
suivant perce (G81) un ensemble de huit trous, tel que montré sur l'image qui
suit.

.Exemple 2 avec G80:
----
N100 G90 G0 X0 Y0 Z0 (coordonnées d'origine)
N110 G1 X0 G4 P0.1
N120 G81 X1 Y0 Z0 R1 (cycle de perçage)
N130 X2
N140 X3
N150 X4
N160 Y1 Z0.5
N170 X3
N180 X2
N190 X1
N200 G80 (révocation du cycle G81)
N210 G0 X0 (mouvement en vitesse rapide)
N220 Y0
N230 Z0
N240 M2 (fin du programme)
----

[NOTE]
Noter que la position de Z change après les quatre premiers trous.
C'est également un des rares cas dans lesquels les numéros de lignes sont
présents, permettant d'envoyer le lecteur sur une ligne de code spécifique.

image::images/G81mult.png[]

L'utilisation du G80 de la ligne N200 est facultative puisqu'il y a un G0
sur la ligne suivante qui révoque le cycle G81. Mais utiliser G80,
comme l'exemple 2 le montre, donne une meilleure lisibilité au programme. Sans
ce G80, il ne serait pas aussi évident que tous les blocs compris entre N120 et
N200 appartiennent au cycle de perçage.

[[sec:G81-Cycle-de-percage]]
== G81 Cycle de perçage
(((G81 Cycle de perçage)))

----
G81 (X- Y- Z- ) ou (U- V- W- ) R- L-
----

Le cycle 'G81' est destiné au perçage.

. Un mouvement préliminaire, comme décrit <<sec:Mouvement-Preliminaire,
sur cette page>>.
. Un déplacement de l'axe Z seul à la vitesse programmée, vers la
   position Z programmée.
 . Retrait de l'axe Z en vitesse rapide jusqu'au plan de retrait R.

.Exemple 1: G81 en position absolue[[sec:G81-exemple1]]

Supposons que la position courante soit, X1, Y2, Z3 dans
le plan XY, la ligne de code suivante est interprétée:
----
G90 G81 G98 X4 Y5 Z1.5 R2.8
----

Le mode de déplacements absolus est appelé '(G90)', le plan de retrait
est positionné sur OLD_Z '(G98)', l'appel du cycle de perçage 'G81' va
lancer ce cycle une fois. La position X deviendra celle demandée,
X4. La position de Y deviendra celle demandée, Y5. La position de Z
deviendra celle demandée, Z1.5. La valeur de R fixe le plan de retrait
de Z à 2.8. La valeur de OLD_Z est 3. Les mouvements suivants vont se
produire.

image::images/G81ex1.png[]

* Un mouvement en vitesse rapide, parallèle au plan XY vers X4, Y5, Z3
* Un mouvement en vitesse rapide, parallèle à l'axe Z vers X4, Y5, Z2.8
* Un mouvement en vitesse travail, parallèle à l'axe Z vers X4, Y5, Z1.5
* Un mouvement en vitesse rapide, parallèle à l'axe Z vers X4, Y5, Z3

'Exemple 2:' Supposons que la position courante soit, X1, Y2, Z3 dans
le plan XY, la ligne de codes suivante est interprétée:
----
G91 G81 G98 X4 Y5 Z-0.6 R1.8 L3
----

Le mode de déplacements incrémentaux est appelé '(G91)', le plan de
retrait est positionné sur OLD_Z '(G98)', l'appel du cycle de perçage
'G81' demande 3 répétitions du cycle. La valeur demandée de X est 4,
la
valeur demandée de Y est 5, la valeur demandée de Z est -0.6 et le
retrait R est à 1.8. La position initiale de X sera 5 (1+4), la
position initiale de Y sera 7 (2+5), le plan de retrait sera positionné
sur 4.8 (1.8+3) et Z positionné sur 4.2 (4.8-0.6). OLD_Z est à 3.

Le premier mouvement en vitesse rapide le long de l'axe Z vers X1, Y2,
Z4.8), puisque OLD_Z est inférieur au plan de retrait.

La première répétition produira 3 mouvements.

. Un déplacement en vitesse rapide, parallèle au plan XY vers X5, Y7, Z4.8
. Un déplacement en vitesse travail, parallèle à l'axe Z vers X5, Y7, Z4.2
. Un déplacement en vitesse rapide, parallèle à l'axe Z vers X5, Y7, Z4.8

La deuxième répétition produira 3 mouvements. La position de X est
augmentée de 4 et passe à 9, la position de Y est augmentée de 5 et
passe à 12.

. Un déplacement en vitesse rapide, parallèle au plan XY vers X9, Y12, Z4.8
. Un déplacement en vitesse travail, parallèle à l'axe Z vers X9, Y12, Z4.2
. Un déplacement en vitesse rapide, parallèle à l'axe Z vers X9, Y12, Z4.8

La troisième répétition produira 3 mouvements. La position de X est
augmentée de 4 et passe à 13, la position de Y est augmentée de 5 et
passe à 17.

. Un déplacement en vitesse rapide, parallèle au plan XY vers X13, Y17, Z4.8
. Un déplacement en vitesse travail, parallèle à l'axe Z vers X13, Y17, Z4.2
. Un déplacement en vitesse rapide, parallèle à l'axe Z vers X13, Y17, Z4.8

image::images/G81ex2.png[]

'Exemple 3:' G81 en position relative

Supposons maintenant que le premier g81 de la ligne de
code soit exécuté, mais de (0, 0, 0) plutôt que de (1, 2, 3).
G90 G81 G98 X4 Y5 Z1.5 R2.8 Depuis OLD_Z est inférieur à la valeur de R,
il n'ajoute rien au mouvement, mais puisque la valeur initiale de Z est
inférieure à la valeur spécifiée dans R, un premier mouvement de Z sera
effectué durant le mouvement préliminaire.

image::images/G81.png[]

'Exemple 4:' G81 en absolu avec R > Z

Il s'agit de la trajectoire pour le second bloc de code de G81.
----
G91 G81 G98 X4 Y5 Z-0.6 R1.8 L3
----

Cette trajectoire commence en (0, 0, 0), l'interpréteur ajoute les
valeurs initiales Z0 et R 1.8 et déplace le mobile en vitesse rapide
vers cet emplacement. Après ce premier déplacement initial de Z, la
répétition fonctionne de manière identique à celle de l'exemple 3 avec
le mouvement final de Z à 0.6 en dessous de la valeur de R.

image::images/G81a.png[]

'Exemple 5:' G81 en relatif avec R > Z
----
G90 G98 G81 X4 Y5 Z-0.6 R1.8
----

Puisque ce tracé commence en (X0, Y0, Z0), l'interpréteur ajoute R1.8 au Z0
initial et déplace le mobile en vitesse rapide à cet emplacement, comme dans
'l'exemple 4'. Après ce mouvement initial à une hauteur Z0.6, le
mouvement en vitesse rapide se terminera en X4 Y5.
Alors la hauteur Z sera à 0.6 en dessous de la valeur de R. La fonction de
répétition fera encore déplacer Z au même emplacement.

[[sec:G82-Cycle-de-percage]]
== G82 Cycle de perçage avec temporisation
(((G82 Cycle de perçage avec tempo)))

----
G82 (X- Y- Z- ) ou (U- V- W- ) R- L- P-
----

Le cycle 'G82' est destiné au perçage.
Les mouvements du cycle G82 ressemblent à ceux de G81 avec une
temporisation supplémentaire en fin de mouvement Z. La longueur de
cette temporisation, exprimée en secondes, est spécifiée par un mot P#
sur la ligne du G82.

. Un mouvement préliminaire. Comme décrit <<sec:Mouvement-Preliminaire, 
sur cette page>>. 
. Un déplacement de l'axe Z seul en vitesse programmée, vers la position Z programmée.
. Une temporisation de 'P' secondes.
. Retrait de l'axe Z en vitesse rapide jusqu'au plan de retrait 'R'.
----
G90 G82 G98 X4 Y5 Z1.5 R2.8 P2
----

Sera équivalent à l'exemple 3 ci-dessus mais avec une temporisation de
2 secondes en fond de trou.


[[sec:G83-Percage-avec-debourrage]]
== G83 Cycle de perçage avec débourrage
(((G83 Cycle de perçage avec débourrage)))

----
G83 (X- Y- Z-) or (U- V- W-) R- L- Q-
----

Le cycle 'G83' est destiné au perçage profond ou au fraisage avec
brise-copeaux. Les retraits, au cours de ce cycle, dégagent les copeaux du
trou et fragmentent les copeaux longs (qui sont fréquents lors du perçage dans
l'aluminium). Ce cycle utilise la valeur 'Q' qui représente un incrément
'delta' le long de l'axe Z.

donnera:

. Un mouvement préliminaire, comme décrit <<sec:Mouvement-Preliminaire, sur
cette page>>.
. Un mouvement de l'axe Z seul, en vitesse travail, sur la position la
  moins profonde entre, un incrément delta, ou la position de Z programmée.
. Un mouvement en vitesse rapide au plan de retrait.
. Une plongée en vitesse rapide dans le même trou, presque jusqu'au fond.
. Répétition des étapes 2, 3 et 4 jusqu'à ce que la position programmée
   de Z soit atteinte à l'étape 2.
. Un mouvement de l'axe Z en vitesse rapide vers le plan de retrait.

C'est une erreur si:

* La valeur de Q est négative ou égale à zéro.

[[sec:G84-Taraudage-a-droite]]
== G84 Cycle de taraudage à droite
(((G84 Cycle de taraudage)))

Ce code n'est pas encore implémenté dans LinuxCNC. Il est accepté mais son
comportement n'est pas défini. Voir le <<sec:G33_1-Taraudage-rigide, taraudage
rigide>>.

[[sec:G85-Alesage-retrait-travail]]
== G85 Cycle d'alésage, sans temporisation, retrait en vitesse travail
(((G85 Cycle d'alésage)))

----
G85 (X- Y- Z-) or (U- V- W-) R- L-
----

Le cycle 'G85' est destiné à l'alésage, mais peut être utilisé pour
le perçage ou le fraisage.

. Un mouvement préliminaire, comme décrit <<sec:Mouvement-Preliminaire, sur
cette page>>. 
. Un déplacement de l'axe Z seul en vitesse travail, vers la position Z programmée.
. Retrait de l'axe Z en vitesse travail vers le plan de retrait.

[[sec:G86-Alesage-retrait-rapide]]
== G86 Cycle d'alésage, arrêt de broche, retrait en vitesse rapide
(((G86 Cycle d'alésage)))

----
G86 (X- Y- Z-) or (U- V- W-) R- L- P-
----

Le cycle 'G86' est destiné à l'alésage. Ce cycle utilise la valeur P pour
une temporisation en secondes.

. Un mouvement préliminaire, comme décrit sur <<sec:Mouvement-Preliminaire, cette
page>>.
. Un déplacement de l'axe Z seul en vitesse travail, vers la position Z programmée.
. Une temporisation de P secondes.
. L'arrêt de rotation de la broche.
. Retrait de l'axe Z en vitesse rapide vers le plan de retrait.
. Reprise de la rotation de la broche dans la même direction que
   précédemment.

La broche doit tourner avant le lancement de ce cycle. C'est une
erreur si:

- La broche ne tourne pas avant que ce cycle ne soit exécuté.

[[sec:G87-Back-Boring]]
== G87 Alésage inverse
(((G87 Alésage inverse)))

Ce code n'est pas encore implémenté dans LinuxCNC. Il est accepté mais son
comportement n'est pas défini.

[[sec:G88-Alesage-Retrait-Manuel-Out]]
== G88 Alésage, arrêt de broche, retrait en manuel
(((G88 Cycle d'alésage)))

Ce code n'est pas encore implémenté dans LinuxCNC. Il est accepté mais son
comportement n'est pas défini.

[[sec:G89-Alesage-Tempo]]
== G89 Cycle d'alésage, temporisation, retrait en vitesse travail
(((G89 Cycle d'alésage avec tempo)))

----
G89 (X- Y- Z-) or (U- V- W-) R- L- P-
----

Le cycle 'G89' est destiné à l'alésage. Il utilise la valeur de P
pour une temporisation en secondes.

. Un mouvement préliminaire, comme décrit <<sec:Mouvement-Preliminaire, sur
cette page>>.
. Un déplacement de l'axe Z seul en vitesse travail, vers la position Z programmée.
. Temporisation de P secondes.
. Retrait de l'axe Z en vitesse travail vers le plan de retrait.

=== Pourquoi utiliser les cycles de perçage ?

Il y a au moins deux raisons, la première est l'économie de code. Un
simple trou demande plusieurs lignes de code pour être exécuté.

Nous avons montré plus haut, comment les cycles
de perçage peuvent être utilisés pour produire 8 trous avec dix
lignes de code. Le programme ci-dessous permet de produire le même jeu
de 8 trous en utilisant cinq lignes pour le cycle de perçage. Il ne
suit pas exactement le même parcours et ne perce pas dans le même ordre
que l'exemple précédent, mais le programme a été écrit de manière
économique, une bonne pratique qui devrait être courante avec les
cycles de perçage.

'Exemple 5:' perçage de huit trous, réécrit.
----
G90 G0 X0 Y0 Z0 (coordonnées d'origine)
G1 F10 X0 G4 P0.1
G91 G81 X1 Y0 Z-1 R1 L4 (cycle de perçage)
G90 G0 X0 Y1
Z0
G91 G81 X1 Y0 Z-.5 R1 L4 (cycle de perçage)
G80 (révocation du cycle G81)
M2 (fin de programme)
----

image::images/eight.png[]

'Exemple 6:' Douze trous en carré

Cet exemple montre l'utilisation du mot L pour répéter une série
incrémentale de cycles de perçage pour des blocs de code successifs
dans le même mode mouvements G81. Ici, nous produisons 12 trous au
moyen de cinq lignes de code dans le mouvement modal.
----
G90 G0 X0 Y0 Z0 (coordonnées d'origine)
G1 F50 X0 G4 P0.1
G91 G81 X1 Y0 Z-0.5 R1 L4 (cycle de perçage)
X0 Y1 R0 L3 (répétition)
X-1 Y0 L3 (répétition)
X0 Y-1 L2 (répétition)
G80 (révocation du cycle G81)
G90 G0 X0 (retour vers l'origine en vitesse rapide)
Y0
Z0
M2 (fin de programme)
----

image::images/twelve.png[]

La deuxième raison d'utiliser les cycles de perçages, c'est qu'il
produisent un mouvement préliminaire et retournent à une position
prévisible et contrôlable, quel que soit le point de départ du cycle.

[[sec:G90-G91]]
== G90, G91: Modes de déplacement
(((G90 Mode de déplacement absolu)))
(((G91 Mode de déplacement relatif)))

* 'G90' est le mode de déplacement absolu, les valeurs d'axes
'X, Y, Z, A, B, C, U, V, W' représentent les positions dans le système de
coordonnées courant. Les exceptions à cette règle sont décrites dans
la section <<sec:G81-a-G89, sur les cycles de perçage>>.
* 'G91' est le mode de déplacement relatif, en mode relatif, les
valeurs d'axes représentent un incrément depuis la position courante.

.Exemple avec G90
----
G90 (passe en mode de déplacement absolu)
G0 X2.5 (déplacement linéaire en vitesse rapide à la coordonnée X=2.5 en
incluant tous les offsets en cours)
----

.Exemple avec G91
----
G91 (passe en mode de déplacement relatif)
G0 X2.5 (déplacement linéaire en vitesse rapide, à +2.5 en X de la position
courante)
----

* Voir <<sec:G0,G0>> pour plus d'information.

[[sec:G90_1-G91_1]]
== G90.1, G91.1: Mode de déplacement en arc (I, J et K)

* 'G90.1' - Mode de déplacement absolu pour les offsets I, J et K. Quand
G90.1 est actif, I et J doivent être tous les deux spécifiés avec G2/G3 pour
le plan XY ou J et K pour le plan XZ, sinon c'est une erreur.

* 'G91.1' - Mode de déplacement relatif pour les offsets I, J et K. G91.1
replace I, J et K à leur fonctionnement normal.

[[sec:G92]]
== G92 Décalage d'origine des systèmes de coordonnées
(((G92 Décalages d'origine des systèmes de coordonnées)))

----
G92 axes
----

Voir ce chapitre <<cha:Systemes-de-coordonnees, pour une vision générale>>
des systèmes de coordonnées.

G92 fixera de nouvelles valeurs de coordonnées au point actuel (sans
faire de mouvement). Les mots d'axes contiennent les valeurs souhaitées. Au
moins un mot d'axe est obligatoire, les autres sont facultatifs. Si il
n'y a pas de mot d'axe pour un axe donné, les coordonnées de cet axe
resteront inchangées.

Quand 'G92' est exécuté, les origines de tous les systèmes de
coordonnées sont déplacées. Elles seront déplacées de sorte que les valeurs du
point contrôlé courant, dans le système de coordonnées courant, deviendront
celles spécifiées dans la ligne du G92. Les origines de tous les systèmes de
coordonnées sont décalées de la même distance.

Par exemple, supposons que le point courant soit à X=4 et qu'aucun
décalage G92 ne soit actif. La ligne 'G92 X7' est programmée, toutes les
origines seront décalées de -3 en X, ce qui fera que le point courant
deviendra X=7. Ce -3 est enregistré dans le paramètre 5211.

Être en mode de déplacement relatif est sans effet sur l'action de 'G92'.

Des décalages G92 peuvent déjà être actifs quand 'G92' est appelé. Si
c'est le cas, ils seront remplacés par le nouveau décalage, de sorte que le
point courant devienne la valeur spécifiée.

C'est une erreur si:

* Tous les mots d'axes sont omis.

LinuxCNC conserve les décalages G92 et les réutilise au prochain démarrage
du logiciel. Pour éviter cela, programmer un 'G92.1' qui les effacera, ou
un G92.2 qui supprimera les valeurs enregistrées.

Voir le chapitre sur les <<cha:Systemes-de-coordonnees,systèmes de
coordonnées>>.

Voir la section sur les <<sec:G92-Decalages,décalages G92>>.

Voir la section sur les <<sec:parametres,paramètres>>.

[[sec:G92_1-G92_2]]
== G92.1, G92.2 Remise à zéro des décalages des systèmes de coordonnées

* 'G92.1' - Positionne les décalages d'axes à 0 et passe les paramètres
5211 à 5219 à zéro.
* 'G92.2' - Positionne les décalages d'axes à 0, laisse les valeurs des
paramètres inchangées, elles ne seront pas utilisées.

[[sec:G92_3]]
== G92.3 Restauration des décalages d'axe

* 'G92.3' - Positionne les décalages d'axes aux valeurs enregistrées dans
les paramètres 5211 à 5219.

Il est possible de positionner les décalages d'axes dans un programme puis de
ré-utiliser les mêmes dans un autre programme. Pour cela, programmer 'G92' dans
le premier programme, ce qui positionnera les paramètres 5211 à
5219. Ne pas utiliser G92.1 dans la suite du premier programme. Les
valeurs des paramètres seront enregistrées lors de la sortie du premier
programme et rétablies au chargement du second programme. Utiliser
'G92.3' vers le début du deuxième programme, ce qui restaurera les
décalages d'axes enregistrés par le premier.


[[sec:G93-G94-G95-Modes]]
== G93, G94, G95: Choix des modes de vitesse
(((G93, G94, G95: Choix des modes de vitesse)))

* 'G93' - Passe en mode inverse du temps. Dans le mode vitesse inverse du
temps, le mot 'F' signifie que le mouvement doit être terminé en '[1/F]'
minutes. Par exemple, si la valeur de 'F' est '2.0', les mouvements
doivent être terminés en '1/2' minute.
+
Quand le mode vitesse inverse du temps est actif, le mot 'F' doit
apparaître sur chaque ligne contenant un mouvement 'G1', 'G2', ou 'G3'. Les
mots F qui sont sur des lignes sans G1, G2, ou G3 sont ignorés. Être en
mode vitesse inverse du temps est sans effet sur les mouvements G0
(vitesse rapide).

* 'G94' - Passe en mode unités par minute. Dans le mode vitesse en unités
par minute, le mot 'F' indique le déplacement du point contrôlé en millimètres
par minute, en pouces par minute, ou en degrés par minute, selon l'unité
utilisée.

* 'G95' - Passe en mode unités par tour. Dans le mode vitesse en unités
par tour, le mot 'F' donne le déplacement du point contrôlé à effectuer sur
l'axe Z, en millimètres par tour de broche ou en pouces, selon l'unité utilisée.

C'est une erreur si:

* Le mode vitesse inverse du temps est actif et qu'une ligne avec G1,
   G2, ou G3 (explicitement ou implicitement) n'a pas de mot F.
* Une nouvelle vitesse n'a pas été spécifiée après un passage en G94 ou G95.

[[sec:G96-G97-Broche]]
== G96, G97: Modes de contrôle de la broche
(((G96, G97: Vitesse de coupe constante, Vitesse de coupe en tr/mn)))

----
G96 <D-> S- (vitesse de coupe constante)
G97         (mode tr/mn)
----

* 'D-' - Vitesse de broche maximale en tours par minute.
* 'S-' - Vitesse de coupe constante.
* 'G96 D- S-' - Passe à une vitesse de coupe constante de 'S' pieds par minute,
si G20 est actif, ou 'S' mètres par minute, si G21 est actif. D- est facultatif.
+
Lorsque 'G96' est utilisé, s'assurer que 'X0' dans le système de coordonnées
en cours (y compris les compensations d'outils) est bien le centre de
rotation, sinon LinuxCNC ne donnera pas la vitesse de broche désirée.
'G96' n'est pas affecté par les mode rayon ou diamètre.

* 'G97' - Vitesse de coupe en tr/mn.

.Exemple avec G96
----
G96 D2500 S250 (passe à une vitesse de coupe constante de 250 m/mn maximum pour
une vitesse de broche maximale de 2500tr/mn).
----

C'est une erreur si:

* S n'est pas spécifié avec G96.
* Une vitesse est spécifiée en mode G96 et la broche ne tourne pas.

[[sec:G98-G99-Set]]
== G98, G99: Options du plan de retrait
(((G98, G99 Retrait à la position initiale, Retrait sur R)))

Quand la broche se rétracte pendant les cycles de perçage, il
existe deux options pour indiquer comment elle doit se rétracter:

 . 'G98' Retrait perpendiculaire au plan de travail courant jusqu'à
   la position qui était celle de cet axe juste avant le début du cycle de
   perçage. (à moins que cette position ne soit inférieure à celle indiquée
   par le mot R, auquel cas, c'est cette dernière qui serait utilisée).

image::images/G81g98d.png[]


 . 'G99' Retrait perpendiculaire au plan de travail courant jusqu'à la position
   indiquée par le mot 'R'.

image::images/G81ret.png[]

Ne pas oublier que la signification du mot R change selon que le mode de
déplacement est absolu ou relatif.

Le plan de retrait initial (G98) est annulé chaque fois que le mode de
mouvement est abandonné, que ce soit explicitement avec G80 ou implicitement
(tout code de mouvement qui n'est pas un cycle).
Basculer d'un mode de cycle à un autre, par exemple entre G81 et G83
n'annule pas le plan de retrait initial. Il est permis de basculer entre
G98 et G99 durant une série de cycles de perçage.

// vim: set syntax=asciidoc: