```plaintext
O001
G90 G54 G80 G0 G40
X0. Y0. M3 S1500
X100.
G0 Z0. F2000
M98 P002 L20
G90 G00 Z50.
M30
```
解释:
1. `O001`:程序名称,可以自定义。
2. `G90`:取消坐标系偏移。
3. `G54`:设置工件坐标系原点。
4. `G80`:取消自动换刀。
5. `G0`:将X和Z轴移动到初始位置。
6. `G40`:取消刀具半径补偿。
7. `X0. Y0.`:将X和Y轴移动到起始点。
8. `M3 S1500`:设置主轴转速为1500转/分钟。
9. `X100.`:将X轴移动到100mm的位置。
10. `G0 Z0.`:将Z轴移动到0mm的位置。
11. `F2000`:设置进给速度为2000mm/min。
12. `M98 P002 L20`:调用子程序P002,循环20次。
13. `G90 G00 Z50.`:将X和Z轴移动到初始位置,Z轴移动到50mm的位置。
14. `M30`:结束程序。
子程序P002示例:
```plaintext
O002
G91 G01 G41 D17 X-50. Z-0.5
G03 I50. G01 G40 X50.
M99
```
解释:
1. `O002`:子程序名称,可以自定义。
2. `G91`:相对坐标系。
3. `G01`:直线插补。
4. `G41`:取消刀具半径补偿。
5. `D17`:设置X轴和Z轴的位移量,分别为-50mm和-0.5mm。
6. `G03 I50. G01 G40 X50.`:以50mm的半径进行圆弧插补,回到X轴正方向。
7. `M99`:结束子程序。
请注意,这只是一个简单的示例程序,实际应用中可能需要根据具体的加工需求和机床参数进行调整。在编写程序时,请确保所有坐标和参数设置正确,并进行充分的测试和验证。