按规划持续工作

This commit is contained in:
2026-06-09 06:13:28 +08:00
parent 902c6ecaea
commit 2658ee3b72
255 changed files with 12487 additions and 150 deletions

View File

@@ -0,0 +1,49 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... COMMENT("A simple O sub example ")
N..... SET_FEED_RATE(40.0000)
N..... STRAIGHT_TRAVERSE(0.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... COMMENT("interpreter: distance mode changed to incremental")
N..... STRAIGHT_TRAVERSE(1.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... COMMENT("interpreter: distance mode changed to absolute")
N..... COMMENT("interpreter: retract mode set to r_plane")
N..... SET_MOTION_CONTROL_MODE(CANON_EXACT_PATH)
N..... STRAIGHT_TRAVERSE(1.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... STRAIGHT_FEED(1.0000, 0.0000, -1.0000, 0.0000, 0.0000, 0.0000)
N..... STRAIGHT_TRAVERSE(1.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... SET_MOTION_CONTROL_MODE(CANON_CONTINUOUS, 0.000000)
N..... SET_NAIVECAM_TOLERANCE(0.0000)
N..... COMMENT("interpreter: distance mode changed to incremental")
N..... STRAIGHT_TRAVERSE(2.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... COMMENT("interpreter: distance mode changed to absolute")
N..... COMMENT("interpreter: retract mode set to r_plane")
N..... SET_MOTION_CONTROL_MODE(CANON_EXACT_PATH)
N..... STRAIGHT_TRAVERSE(2.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... STRAIGHT_FEED(2.0000, 0.0000, -1.0000, 0.0000, 0.0000, 0.0000)
N..... STRAIGHT_TRAVERSE(2.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... SET_MOTION_CONTROL_MODE(CANON_CONTINUOUS, 0.000000)
N..... SET_NAIVECAM_TOLERANCE(0.0000)
N..... COMMENT("interpreter: distance mode changed to incremental")
N..... STRAIGHT_TRAVERSE(3.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... COMMENT("interpreter: distance mode changed to absolute")
N..... COMMENT("interpreter: retract mode set to r_plane")
N..... SET_MOTION_CONTROL_MODE(CANON_EXACT_PATH)
N..... STRAIGHT_TRAVERSE(3.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... STRAIGHT_FEED(3.0000, 0.0000, -1.0000, 0.0000, 0.0000, 0.0000)
N..... STRAIGHT_TRAVERSE(3.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... SET_MOTION_CONTROL_MODE(CANON_CONTINUOUS, 0.000000)
N..... SET_NAIVECAM_TOLERANCE(0.0000)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PALLET_SHUTTLE()
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,13 @@
%
( A simple O sub example )
F40
G90 G0 X0 Y0 Z0.25
M98 P1 L3
M30
O1
G91 G0 X1 ; Jog 1" along X (relative)
G90 G99 G81 Z-1.0 R0.25 ; Drill to Z-1.0
M99
%

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,25 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... COMMENT("Fanuc params have global scope; rs274ngc params #1..#30 have local scope ")
MAIN/FANUC: PRE-M98: 1=42.010000; 30=42.300000; 31=42.310000
O1: START: 1=42.010000; 30=42.300000; 31=42.310000
O1: END: 1=13.010000; 30=13.300000; 31=13.310000
MAIN/FANUC: POST-M98: 1=13.010000; 30=13.300000; 31=13.310000
MAIN/RS274NGC: PRE-O-CALL: 1=42.010000; 30=42.300000; 31=42.310000
O2: START: 1=0.000000; 30=0.000000; 31=42.310000
O2: END: 1=13.010000; 30=13.300000; 31=13.310000
MAIN/RS274NGC: POST-O-CALL: 1=42.010000; 30=42.300000; 31=13.310000
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PALLET_SHUTTLE()
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,37 @@
%
( Fanuc params have global scope; rs274ngc params #1..#30 have local scope )
; Fanuc-style: Test that all params are globally changed
#1 = 42.01
#30 = 42.30
#31 = 42.31
(PRINT,Q MAIN/FANUC: PRE-M98: 1=#1; 30=#30; 31=#31)
M98 P1
(PRINT,Q MAIN/FANUC: POST-M98: 1=#1; 30=#30; 31=#31)
; RS274NGC-style: Test that params #1..#30 are not globally changed
#1 = 42.01
#30 = 42.30
#31 = 42.31
(PRINT,Q MAIN/RS274NGC: PRE-O-CALL: 1=#1; 30=#30; 31=#31)
O2 call
(PRINT,Q MAIN/RS274NGC: POST-O-CALL: 1=#1; 30=#30; 31=#31)
M30
O1 ; Fanuc-style
(PRINT,Q O1: START: 1=#1; 30=#30; 31=#31)
#1 = 13.01
#30 = 13.30
#31 = 13.31
(PRINT,Q O1: END: 1=#1; 30=#30; 31=#31)
M99
O2 sub ; rs274ngc-style
(PRINT,Q O2: START: 1=#1; 30=#30; 31=#31)
#1 = 13.01
#30 = 13.30
#31 = 13.31
(PRINT,Q O2: END: 1=#1; 30=#30; 31=#31)
O2 endsub
%

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,49 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... COMMENT("A nested Fanuc subroutine example ")
MAIN BEGIN: 1=0.000000
>>>> LOOP [O2.O1]: 0.100000
>>>> LOOP [O2.O1]: 0.200000
>>>> LOOP [O2.O1]: 0.300000
>>>> LOOP [O2.O1]: 0.400000
>>>> LOOP [O2.O1]: 0.500000
O2 END: 1=1.000000
>>>> LOOP [O2.O1]: 1.100000
>>>> LOOP [O2.O1]: 1.200000
>>>> LOOP [O2.O1]: 1.300000
>>>> LOOP [O2.O1]: 1.400000
>>>> LOOP [O2.O1]: 1.500000
O2 END: 1=2.000000
>>>> LOOP [O2.O1]: 2.100000
>>>> LOOP [O2.O1]: 2.200000
>>>> LOOP [O2.O1]: 2.300000
>>>> LOOP [O2.O1]: 2.400000
>>>> LOOP [O2.O1]: 2.500000
O2 END: 1=3.000000
>>>> LOOP [O2.O1]: 3.100000
>>>> LOOP [O2.O1]: 3.200000
>>>> LOOP [O2.O1]: 3.300000
>>>> LOOP [O2.O1]: 3.400000
>>>> LOOP [O2.O1]: 3.500000
O2 END: 1=4.000000
>>>> LOOP [O2.O1]: 4.100000
>>>> LOOP [O2.O1]: 4.200000
>>>> LOOP [O2.O1]: 4.300000
>>>> LOOP [O2.O1]: 4.400000
>>>> LOOP [O2.O1]: 4.500000
O2 END: 1=5.000000
MAIN END: 1=5.000000
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PALLET_SHUTTLE()
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,20 @@
%
( A nested Fanuc subroutine example )
#1 = 0
(PRINT,X MAIN BEGIN: 1=#1)
M98 P2 L5
(PRINT,X MAIN END: 1=#1)
M30
O2
M98 P1 L5
#1 = [FIX[#1] + 1]
(PRINT,X O2 END: 1=#1)
M99
O1
#1 = [#1 + 0.1]
(PRINT,X >>>> LOOP [O2.O1]: #1)
M99
%

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,18 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... COMMENT("Fanuc-style subs may follow main program ")
IN O1
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PALLET_SHUTTLE()
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,10 @@
%
( Fanuc-style subs may follow main program )
M98 P1
M30
O1
(PRINT,X IN O1)
M99
%

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,19 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... COMMENT("main program")
got here
N..... COMMENT("end")
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PALLET_SHUTTLE()
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,14 @@
%
(main program)
M98 P0002
M30 (end)
O0002 (O-word begins with '0')
(PRINT,x got here)
M99
O2 (O-word does not begin with '0')
(PRINT,x ERROR: should not get here)
M99
%

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,36 @@
1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
4 N..... SET_XY_ROTATION(0.0000)
5 N..... SET_FEED_REFERENCE(CANON_XYZ)
6 N..... ON_RESET()
7 N..... COMMENT("test-named.ngc: Test named programs")
8 N..... COMMENT("...program body")
9 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
10 N..... SET_XY_ROTATION(0.0000)
11 N..... SET_FEED_MODE(0, 0)
12 N..... SET_FEED_RATE(0.0000)
13 N..... STOP_SPINDLE_TURNING(0)
14 N..... SET_SPINDLE_MODE(0 0.0000)
15 N..... PALLET_SHUTTLE()
16 N..... PROGRAM_END()
17 N..... ON_RESET()
18 N..... ON_RESET()
1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
4 N..... SET_XY_ROTATION(0.0000)
5 N..... SET_FEED_REFERENCE(CANON_XYZ)
6 N..... ON_RESET()
7 N..... COMMENT("test-numbered.ngc: Test numbered programs")
8 N..... COMMENT("...program body")
9 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
10 N..... SET_XY_ROTATION(0.0000)
11 N..... SET_FEED_MODE(0, 0)
12 N..... SET_FEED_RATE(0.0000)
13 N..... STOP_SPINDLE_TURNING(0)
14 N..... SET_SPINDLE_MODE(0 0.0000)
15 N..... PALLET_SHUTTLE()
16 N..... PROGRAM_END()
17 N..... ON_RESET()
18 N..... ON_RESET()

View File

@@ -0,0 +1,6 @@
%
(test-named.ngc: Test named programs)
O<MyProgram>
(...program body)
M30
%

View File

@@ -0,0 +1,6 @@
%
(test-numbered.ngc: Test numbered programs)
O42
(...program body)
M30
%

View File

@@ -0,0 +1,3 @@
#!/bin/bash -e
rs274 -g test-named.ngc
rs274 -g test-numbered.ngc

View File

@@ -0,0 +1,18 @@
1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
4 N..... SET_XY_ROTATION(0.0000)
5 N..... SET_FEED_REFERENCE(CANON_XYZ)
6 N..... ON_RESET()
In sub 100
In sub 200
7 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
8 N..... SET_XY_ROTATION(0.0000)
9 N..... SET_FEED_MODE(0, 0)
10 N..... SET_FEED_RATE(0.0000)
11 N..... STOP_SPINDLE_TURNING(0)
12 N..... SET_SPINDLE_MODE(0 0.0000)
13 N..... PALLET_SHUTTLE()
14 N..... PROGRAM_END()
15 N..... ON_RESET()
16 N..... ON_RESET()

View File

@@ -0,0 +1,21 @@
%
; test calling subprograms with expressions
; call sub O100: use variable in expression with rs274ngc O-sub
#2 = 10
O[#2 * 10] call
; call sub O200: use expression in M98 P-word
M98 P[5 * 5 * 2 * 2 + 100]
M30
O100 sub ; rs274ngc subroutine
(print,In sub 100)
O100 endsub
O200 ; numbered subprogram
(print,In sub 200)
M99
%

View File

@@ -0,0 +1,2 @@
#!/bin/bash -e
rs274 -g test.ngc