//***********Test the relationship of G0 and F command************************
//case1
//F command value is null or invalid    
//N10 G90 G0 X10  Y10 Z10  

//case2 
//Active G0 and F in one line 
N20 G90 G0 X0  Y0 Z0  F10000

//case3 
//Set speed value in single line before active G0
N30 F200
N30 G91 G0 X101 Y10 Z101 

//case4
//Test the effective velocity
N30 F200
N30 G91 G0 X10  Y10 Z10  F55 
N30 G90 G0 X10  Y10 Z10 

//case5
//Set F value is bigger than limits value (100mm/min)
N50 G91 G0 X10  Y10 Z10  F200

//***********Test the relationship of G0 and G90/G91 command***************
//case6 
//Missing G90/G91 at the beginning of NC program
//Default G90
N60 G0 X10  Y10 Z10  F50

//case7 
//Write G0  in single line
N30 G0 
N30 G90 X10  Y10 Z10 
N30 G91 X10  Y10 Z10 

//case8 
//Write G0  together with other command
N30 G0 G90 X10  Y10 Z10 
N30 G91 X10  Y20 Z10 G0 

//***********Test alias G0/G00/G000 command************************
//case9 
//Alias G00/G000 test
N30 G00 G90 X10  Y10 Z10 
N30 G91 X10  Y20 Z10 G000 

//-------------Test PathDynLim/PDL/PATHDYNLIM case1--------------------
N10 PathDynLim(ACC=2, DEC=2,  JRKACC=17, JRKDEC=17)

//***********Test alias G1/G01/G001 command************************
//case1
//Alias G01/G001 test
N10 G91 G01 X10  Y10 Z10  F1000
N10 G91 G1 X10  Y10 Z10 
N10 G91 G001 X10  Y10 Z10 

//***********Test the relationship of G1 and F command************************
//case2 
//Active G1  and F in one line 
N20 G91 G01 X10  Y10 Z10  F1200

//-------------Test PathDynLim/PDL/PATHDYNLIM case2--------------------
N10 PathDynLim(3,3,18,18)

//case3 
//Set speed value in singal line before active G1
N30 F200
N30 G91 G01 X10  Y10 Z10  

//-------------Test PathDynLim/PDL/PATHDYNLIM case3--------------------
// default value
N10  PathDynLim()

//case4
//Test the effective velocity
N30 F200
N30 G91 G01 X10  Y10 Z10  F5000  
N30 G90 G01 X10  Y10 Z10  

//-------------Test PathDynLim/PDL/PATHDYNLIM case4--------------------
N10 PDL(ACC=4, DEC=4,  JRKACC=19, JRKDEC=19)

//case5
//Set F value is bigger than limits value (100mm/min)
N50 G91 G01 X10  Y10 Z10  F2000

//-------------Test PathDynLim/PDL/PATHDYNLIM case5--------------------
N10 PDL(3,3,18,18)

//***********Test the relationship of G0 and G90/G91 command***************
//case6 
//Missing G0/G1/... and G90/G91 at the beginning of NC program
//Default G1 and G90
N60 X10 Y10 Z10  F5000

//-------------Test PathDynLim/PDL/PATHDYNLIM case6--------------------
N10 PDL()

//case7 
//Write G1 in singal line
N30 G1
N30 G90 X10  Y10 Z10 F1000
N30 G91 X10  Y10 Z10 F1500

//-------------Test PathDynLim/PDL/PATHDYNLIM case7--------------------
N10 PATHDYNLIM(ACC=2, DEC=2,  JRKACC=17, JRKDEC=17)

//case8 
//Write G1 togather with other command
N30 G1 G90 X10  Y10 Z10 F1200
N30 G1 G91 X10  Y20 Z10 F1300
//*************************************************************************************
//*****************************Test  G90 *********************************
//case1 
//Missing G90/G91 at the beginning of NC program
//Default as G90
N10 G01 X10  Y10 Z10  F1200

//case2 
//Write G90 at the beginning of line
N20  G90 G01 X10  Y10 Z10  F1500

//-------------Test PathDynLim/PDL/PATHDYNLIM case8--------------------
N10 PATHDYNLIM(4,4,18,18)

//case3 
//Write G90 at random position of line
N30  F100 X20  Y20 Z20   G90 G01

//case4 
//Write G90 in singal line
N40  G90
N40  G01 X30  Y30 Z30  F1500

//case5 
//Write G90 together with several command except axis moving command
N50  G90 F200 G01 
N50  X25 Y25 Z25  
//***************************************************************************
//*****************************Test  G91 *********************************
//case1 
//Missing G90/G91 at the beginning of NC program
//Default as G90
N10 G01 X10  Y10 Z10  F1500

//case2 
//Write G91 at the beginning of line
N20  G91 G01 X10  Y10 Z10  F1600

//case3 
//Write G91 at random position of line
N30  F100 X20  Y20 Z20   G91 G01

//case4 
//Write G91 in singal line
N40  G91
N40  G01 X30  Y30 Z30  F1600

//-------------Test PathDynLim/PDL/PATHDYNLIM case9--------------------
N10 PATHDYNLIM(ACC=3, DEC=3,  JRKACC=19, JRKDEC=19)

//case5 
//Write G91 together with several command except axis moving command
N50  G91 F2000 G01 
N50  X25 Y25 Z25  
//***************************************************************************
//*****************************Test  G94 *********************************
//case1 
//Missing G94/G95/…  at the beginning of NC program
N10 G01 G91 X10  Y10 Z10 F2200

//case2  
//Write G94 at random position of line
N20  F100 X20  Y20 Z20   G91 G94 G01
N20 G01 G90 X10  Y10 Z10 F2300

N10 PATHDYNLIM()

//case3
//Write G94 in singal line
N30 G94 
N30 G01 G90 X10  Y10 Z10 F2400

//case4 
//Write G94 together with several command except axis moving command
N40  G94 G91 F2000 G01 
N40  X25 Y25 Z25  
//***************************************************************************
//*********************************Test G53 *****************************************
//Case1 
//Missing G53~G59 at the beginning of NC program
N10 G91 X10 Y10 Z10 F2000

// case2 
//Write G53 in singal line
N20 G53
N20 G91 X10 Y10 Z10 F2000

//case3 
//Write G53 at the beginning of line
N30 G53 G91 X10 Y10 Z10 F2000

//case4 
//Write G53 at random position of line
N40 G91 X10 Y10 G53  Z10 F2000

//*********************************Test G8/G9/WAIT/G47/G48 ************************
//Before active G47/G48, need create and config "ToolSet1" bellow datalayer: motion/cfg/coord-systems/pcs/sets
N10 G94
G0 X0 Y0 Z0 F10
G90 G01 X0 Y0 Z0 F2000
G8
G47(SET ="ToolSet1")
X0    Y10 Z0 
X10  Y10 Z0 
X20  Y10 Z0 
X60  Y10 Z0 
X90  Y10 Z0 
X100 Y50 Z0 
X120 Y50 Z0 
X160 Y50 Z0 
X100 Y50 Z0
 X60 Y50 Z0 
 X40 Y50 Z0 
 X20 Y20 Z0 
 X80 Y30 Z0 F4000
 X60 Y10 Z0  
 X40  Y10 Z0     
 X20 Y0 Z0 F600
 X0 Y0 Z0
 X0 Y0 Z0
G48
G9
WAIT
//*************************************************************************************
//*********************************Test SetSignal/WaitForSignal/ResetSignal ***********
//Case1
SetSignal(10)
WAIT
G47("ToolSet1")
G90 G01 X0 Y0 Z0 F5000
WaitForSignal(10)
WAIT
G48
ResetSignal(10)

//CASE2
SetSignal(ID=20)
WAIT
G90 G01 X0 Y0 Z0 F5000
WaitForSignal(ID=20)
WAIT
ResetSignal(ID=20)

//CASE3
SSG(30)
G90 G01 X10 Y10 Z5 F500
G91 G01 X10 Y10 Z5 F500
WSG(30)
WAIT
RSG(30)
G90
N30 X0 Y10 Z10 G53

//CASE4
SSG(ID=40)
G90 G01 X10 Y10 Z5 F500
G91 G01 X10 Y10 Z5 F500
WSG(ID=40)
WAIT
RSG(ID=40)
G90
N30 X0 Y10 Z10 G53

//CASE5
SetSignal(ID=50)
G90 G01 X10 Y10 Z5 F500
G91 G01 X10 Y10 Z5 F500
WSG(ID=50)
WAIT
RSG(50)

//CASE6
SETSIGNAL(60)
G90 G01 X10 Y10 Z5 F500
G91 G01 X10 Y10 Z5 F500
WAITFORSIGNAL(60)
WAIT
RESETSIGNAL(60)
G90
N30 X0 Y10 Z10 G53

//CASE7
SETSIGNAL(ID=70)
G90 G01 X10 Y10 Z5 F500
G91 G01 X10 Y10 Z5 F500
WAITFORSIGNAL(ID=70)
WAIT
RESETSIGNAL(ID=70)
G90
N30 X0 Y10 Z10 G53

//CASE8
SetSignal(ID=80)
G90 G01 X10 Y10 Z5 F1500
G91 G01 X10 Y10 Z5 F5000
WSG(ID=80)
WAIT
RESETSIGNAL(80)

//CASE9
SETSIGNAL(ID=5)
G90 G01 X10 Y10 Z5 F500
G91 G01 X10 Y10 Z5 F500
WaitForSignalReset(ID=5)
G90
N30 X0 Y10 Z10 G53

//*************************************************************************************
//*********************************Test PolyTrans/PTR/POLYTRANS *********************
//CASE1
WAIT
PolyTrans(D1=5,D2=5)
N40 G90 X0 Y0 Z0
N50 G91 X10 Y10 Z10
N60 X10 Y10 Z10
PolyTrans()
//CASE2
WAIT
PolyTrans(D1=2.5,D2=1.5)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
PolyTrans()
//CASE3
WAIT
PolyTrans(D1=4.5,D2=5)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
PolyTrans()
//CASE4
WAIT
PolyTrans(EPS = 1.5)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
PolyTrans()
//CASE5
WAIT
PolyTrans(EPS =2)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
PolyTrans()
//CASE6
WAIT
PTR(D1 = 5, D2 = 5)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
PTR()
//CASE7
WAIT
PTR(D1 = 2.5, D2 =1.5)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
PTR()
//CASE8
WAIT
PTR(D1 = 4.5, D2 =5)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
PTR()
//CASE9
WAIT
PTR(EPS = 1.5)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
PTR()
//CASE10
WAIT
PTR(EPS = 2)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
PTR()
//CASE11
WAIT
POLYTRANS(D1 = 5, D2 = 5)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
POLYTRANS()
//CASE12
WAIT
POLYTRANS(D1 = 2.5, D2 = 1.5)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
POLYTRANS()
//CASE13
WAIT
POLYTRANS(D1 = 4.5, D2 = 5)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
POLYTRANS()
//CASE14
WAIT
POLYTRANS(EPS = 1.5)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
POLYTRANS()
//CASE15
WAIT
POLYTRANS(EPS = 2)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
POLYTRANS()
//CASE16
WAIT
PolyTrans(EPS = 3)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
POLYTRANS()
//CASE17
WAIT
PTR(D1 =4.5, D2 = 5)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
PolyTrans()
//CASE18
WAIT
POLYTRANS(D1 =4, D2 = 5)
N40 X10 Y10 Z10
N50 X10 Y10 Z10
N60 X10 Y10 Z10
PTR()

//**************Test AxsDynLim/ADL/AXSDYNLIM ******************
//case1
WAIT
N50 G1 G90 X0 Y0 Z0 F5000
N10 AxsDynLim(AXS="X", VEL=1000, ACC=2, DEC=2, JRKACC=17, JRKDEC=17)
G91 X10 Y0 Z0

//case2
WAIT
AxsDynLim("Y",2000,2,2,17,17)
G91 X0 Y10 Z0

//case3
WAIT
ADL(AXS="Z", VEL=1500, ACC=3, DEC=4, JRKACC=18, JRKDEC=19)
G91 X0 Y10 Z0

//case4
WAIT
N50 G1 G90 X0 Y0 Z0 F5000
ADL("X",2500,2,2,17,17)
G91 X10 Y10 Z10

//case5
WAIT
N50 G1 G90 X0 Y0 Z0 F5000
AXSDYNLIM(AXS="X", VEL=1900, ACC=4, DEC=5, JRKACC=16, JRKDEC=18)
G91 X10 Y10 Z10

//case6
WAIT
N50 G1 G90 X0 Y0 Z0 F5000
AXSDYNLIM("X",3000,2,2,17,17)
G91 X10 Y10 Z10

//case7
WAIT
N50 G1 G90 X0 Y0 Z0 F5000
AXSDYNLIM("X")
AXSDYNLIM("Y")
AXSDYNLIM("Z")
G91 X10 Y10 Z10

//**************Test G153/G152 ******************
//Need create and config "Set_A" bellow datalayer: motion/cfg/coord-systems/pcs/sets
//case1
WAIT
N50 G1 G90 X0 Y0 Z0 F5000
G152("Set_A")
N10 G1 G90 X10 Y10 Z10 F1000
G153
N10 G1 G91 X-10 Y5 Z0 F1000

//case2
WAIT
G152(SET ="Set_A")
N10 G1 G91 X10 Y10 Z10 F1000
G153
N10 G1 G91 X-10 Y5 Z0 F1000

//**************Test G48/G47 ******************
//Before active G47/G48, need create and config "G47" as default set bellow datalayer: motion/cfg/functions/tool-data/sets  
G47
G90 G01 X10 Y10 Z5 F1500
G91 G01 X10 Y10 Z5 F5000
WAIT
G48
//*************************************************************************************
//*****************************Test  AC/IC *********************************
//case1 
//Active IC 
N10 G90 G01 X10  Y0 Z0  F5000
N10 X=IC(90) Z100
N10 Y=IC(100)

//case2 
//Active AC 
N10 G90 G01 X10  Y0 Z0  F5000
N10 G91 X90 Y=AC(100)
N10 Z=AC(100)

//*************************************************************************************
//*****************************Test  G2/G3 REV *********************************
//--G2/G3/I/J/K/R---------
//case1 
N300 G90 X50 Y0 Z0 F10000
N310 G17 G3 X50 Y0 I50 J0

//case2 
X150 Y0 I50 J0
G91 G2 G17 
X0 Y0 I75 J0
G90 G02 X300 Y0 I 75 J0
G002 X400 Y0 R50
G003 X500 Y0 R50

//case3
G1 Y-200
G90 X420 Y-200 I-40 J-30 G3
G01 X400

//case4
G3 X320 I-40 J-30
G01 X300

//case5
G2 X220 Y-200 I-40 J-30
G01 X200

//case6
G002 X120 Y-200 Z0 I-40 J-30
G01 X100 

//----------REV----------
//case1
G90 G01 X100 Y-500 Z0 F10000
G17  X100 Y-500 I50 J0  REV1  G3

//case2
G01 X250 Y-500 Z0 
G3 X250 Y-500 Z100 I50 J0 REV5

//case3
G01 X400 Z0 
G90 G2 X450 Y-450 I50 J0 Z150 REV5