Yes i tryed it , the speeds are even, same problem . Now i will try with slow instantaneous speed changes - around 100 to see if there is any change.
I am not sure about kinematics, i rely on only the CAM software, should i change any kinematics setting on duet ?
This is the configuration of machine:
Posts made by CvetanTokov
-
RE: 5 Axis CNC cutting where not suppsed.
-
5 Axis CNC cutting where not suppsed.
Hello ,
i had build 5 axis cnc mill machine ,
i had problem with 5 axis simultaneous machining , it seems that one of rotational axes doesnt go with
desired feed rate and it is faster , so i left with cutted part every time in same possition.In this picture you can see the cutted edge:
There is g code view:
The machine is build with external drivers , it is configureted and calibrated , i tried to implement bed compensation , but i didnt manage, and after this it start to make this cuttings, before it was perfect.
I tryed many diferent jerk policy and speeds but nothing helps.
I this it doesnt read go code good , and go beyond the points it supposed go be.
Any suggestions?
Here is my config.g file:; Configuration file for Duet ; executed by the firmware on start-up ; WorkBee Firmware Version 1.1 M98 P"config-network.g" M575 P1 S1 B57600 ; OUTPUTS: M950 P0 C"FAN0"Q250;G LED M950 P1 C"FAN1"Q500;B LED M950 P2 C"FAN2"Q500;R :ED M950 P3 C"^!spi.cs4"; VACUUM RELAY M950 P4 C"^!exp.31"; nonair VALVE 4 M950 P5 C"^!exp.50"; gnd M950 P6 C"^!exp.4"; cooling VALVE 2 M950 P7 C"^!exp.9"; collet VALVE 1 M950 P8 C"^!exp.14";TOOL AIR CLEANER VALVE 3 M950 P9 C"^!spi.cs1"; DOOR UP VALVE 5 M950 P10 C"^!spi.cs2"; DOOR DOWN VALVE 6 M950 P11 C"^!spi.cs3"; VACUM VALVE M950 P12 C"!exp.38";EMERGENCY VACUUM m42p12s1 ; INPUTS: ;M950 J1 C"!^exp.24";EMERGENCY M950 J2 C"!^exp.29";AIR M950 J3 C"!^exp.19";DOOR ;M950 P8 C"!exp.heater7";spindle m42P5S1 ; Configuration files M98 P"config-drives.g" M98 P"config-axes.g" M98 P"config-axes-calibration.g" M98 P"config-axes-endstops.g" M98 P"config-probe.g" M98 P"config-spindle.g" M98 P"config-laser.g" ; Other Settings M453 ; Put the machine into CNC Modes G90 ; Set absolute coordinates M558 P8 C"^zprobe.in" F100 T100 H5 ;zProbe ; Heaters M140 H-1 ;M307 H0 A-1 C-1 D-1 ;M307 H1 A-1 C-1 D-1 ; Set temperature limit for heater 0 to 120C ;M307 H2 A-1 C-1 D-1 ;M307 H3 A-1 C-1 D-1 ;M307 H4 A-1 C-1 D-1 ;M307 H5 A-1 C-1 D-1 ;M307 H6 A-1 C-1 D-1 ;M307 H7 A-1 C-1 D-1 m42P7S1 M42P6S1 ; Fans ;M106 P0 S0 I-1 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned on ;M106 P1 S0 I-1 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on ;M106 P2 S0 I-1 ;M106 P3 I-1 ;M106 P4 I-1 ;M106 P5 I-1 ;M106 P6 I-1 ;M106 P7 I-1 M950 R0 C"^bedheat+exp.8" L60000 ; Tools M563 P1 R0 S"Tool 1" M563 P2 R0 S"Tool 2" M563 P3 R0 S"Tool 3" M563 P4 R0 S"Tool 4" M563 P5 R0 S"Tool 5" M563 P6 R0 S"Tool 6" M563 P7 R0 S"Tool 7" M563 P8 R0 S"Tool 8" M563 P9 R0 S"Tool 9" M563 P10 R0 S"Tool 10" ; Automatic power saving M911 S21 R23 P"M913 X0 Y0 A0 B0 G91 Z3 F1000" ; POWER LOSS ; Custom settings are not configured M564 S1 H1 ; Disable jog commands when not homed ;variables: if {!exists(currentToolNumber)} global currentToolNumber = -1 if {!exists(ZToolZero)} global ZToolZero =-1 if {!exists(ToolZPos)} global ToolZPos =-1 if {!exists(ToolSens)} global ToolSens =-1 if {!exists(T1XPos)} global T1XPos =-1 if {!exists(T1YPos)} global T1YPos =-1 if {!exists(T2XPos)} global T2XPos =-1 if {!exists(T2YPos)} global T2YPos =-1 if {!exists(T3XPos)} global T3XPos =-1 if {!exists(T3YPos)} global T3YPos =-1 if {!exists(T4XPos)} global T4XPos =-1 if {!exists(T4YPos)} global T4YPos =-1 if {!exists(T5XPos)} global T5XPos =-1 if {!exists(T5YPos)} global T5YPos =-1 if {!exists(T6XPos)} global T6XPos =-1 if {!exists(T6YPos)} global T6YPos =-1 if {!exists(T7XPos)} global T7XPos =-1 if {!exists(T7YPos)} global T7YPos =-1 if {!exists(T8XPos)} global T8XPos =-1 if {!exists(T8YPos)} global T8YPos =-1 if {!exists(T9XPos)} global T9XPos =-1 if {!exists(T9YPos)} global T9YPos =-1 if {!exists(T10XPos)} global T10XPos =-1 if {!exists(T10YPos)} global T10YPos =-1 if {!exists(TZUPPos)} global TZUPPos = -1 if {!exists(TZTESTMINPos)} global TZTESTMINPos = -1 if {!exists(XZero)} global XZero = -1 if {!exists(YZero)} global YZero = -1 if {!exists(ZZero)} global ZZero = -1 if {!exists(AZero)} global AZero = -1 if {!exists(BZero)} global BZero = -1 if {!exists(ToolZero)} global ToolZero = -1 if {!exists(ToolzeroXcoord)} global ToolzeroXcoord = -1 if {!exists(ToolzeroXcoord)} global ToolzeroYcoord = -1 if {!exists(pE)} global pE = -1 if {!exists(checktool)} global checktool = -1 ; User Configuration files M98 P"config-user-settings.g" M98 P"XZero.g" M98 P"YZero.g" M98 P"ZZero.g" M98 P"AZero.g" M98 P"BZero.g" ;M98 P"ZToolZero.g" ;M98 p"ToolTestOffset.g" M98 P"config-axes-limits.g" ;M98 P"ToolTestXCord.g" ;M98 P"ToolTestYCord.g" M98 P"toolPOSITIONS.g" M98 P"restoreToolNumber.g" M98 P"checktool.g" ;triggers G4P5000 M581 T0 P1 S1 M581 T2 P2 S1 M581 T5 P3 S0 M582 T2 ;global currentToolNumber=-1 ;M98 P"restoreToolNumber.g" if global.currentToolNumber != -1 T{global.currentToolNumber} P0 M556 S65X0.32Y0 Z0 P1;axis skew G54 M501 ; Load Stored Parameters m42P0S1 m42P1S0 m42P2S1
Here is my driver configurations:
; Drive configuration executed by config.g M569 P5 S1 T10:5.0:6.0:11 ; Physical drive 0 goes forwards M569 P6 S0 T10:5.0:6.0:11 ; Physical drive 1 goes forwards M569 P7 S0 T10:5.0:6.0:11 ; Physical drive 2 goes forwards M569 P8 S0 T10:5.0:6.0:11 ; Physical drive 3 goes forwards M569 P9 S0 T10:5.0:6.0:11 ; Physical drive 4 goes forwards
and speeds and steps configuration:
; Axes configuration executed by config.g M584 X5 Y6 Z7 A8 B9 ;M584 A8 B9 R0 S0 ;M350 X1Y1Z1A1B1 I0 ; Configure microstepping with interpolation M92 X320 Y320 Z320 A111.1111 B55.5555 ; Set steps per mm M566 X250 Y250 Z250 A900 B900 P0 ; Set maximum instantaneous speed changes (mm/min) M203 X6000 Y6000 Z5000 A5000 B8000; Set maximum speeds (mm/min) M201 X250 Y250 Z250 A700 B700; Set accelerations (mm/s^2) M203 X2000 Y2000 Z2000 A7500 B7500 I0.1 ;M906 X2100 Y2100 Z2000 A2500 B2000 ; Set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout
-
RE: Is it possible to modify my resurrect.g ?
I manage to do it with by tricky way , i addet a "echno" command in my resurrect-prologue.g that it deletes my ressurect.g , and it worked.
; called to resume job after power out. M98 P"homeall.g" G53G0A0B0 M42P0S0 M42P1S1 M42P2S1 M42P6S0 if state.currentTool != -1 G53G0Z80 M42P5S0 G53G1X{global.ToolzeroXcoord}Y-27.4F5000 G53G1Z40F1000 G30S-1 if move.axes[2].machinePosition > 35 G10P1L20 Z{global.ToolZero}; Set tool axis offsets G53G1Z40F1000 G30S-1 G10P1L20 Z{global.ToolZero}; Set tool axis offsets G53G1Z80 M42P5S1 G53G1 X0 Y0 Z80 F5000 ; go save Z M3S30000 else G53G0Z80 echo >"restoreToolNumber.g" "set global.currentToolNumber=-1" T0P0 M291 S2 R"Tool Problem" P"Tool broken or missing!Please check!" abort M42P6S0 echo >"resurrect.g" "G53G0Z80" ; replace resurrect.g G1 R1 X0 Y0 A0 B0 ; go directly above the saved position without Z undefined
it starts the resurrect.g , which contains the stored position , and store it by G60 S1 , then it starts the resurrect-prologue.g which makes calibration and in the end i use "echo >"resurrect.g" "G53G0Z80" ; replace resurrect.g " to replace resurrect.g , and it worked perfectly.
-
RE: Is it possible to modify my resurrect.g ?
@t3p3tony So maybe first X Y coordinates, then B and A axis , and then move Z to the possition , and the it is able to be at 2 mm above stored Z.
-
RE: Is it possible to modify my resurrect.g ?
@t3p3tony Yes without tool changes , and without move Z axis 2 mm above the stored position , with this configuration it works perfect.When i manualy comment lines with tool changes and Z axis move above 2mm , it resurrects perfectly .
-
RE: Is it possible to modify my resurrect.g ?
@t3p3tony This is my resurrect-prologue.g :
; called to resume job after power out. M98 P"homeall.g" G53G0A0B0 M42P0S0 M42P1S1 M42P2S1 M42P6S0 if state.currentTool != -1 G53G0Z80 M42P5S0 G53G1X{global.ToolzeroXcoord}Y-27.4F5000 G53G1Z40F1000 if move.axes[2].machinePosition > 35 G10P1L20 Z{global.ToolZero}; Set tool axis offsets G53G1Z40F1000 G30S-1 G10P1L20 Z{global.ToolZero}; Set tool axis offsets G53G1Z80 M42P5S1 G53G1 X0 Y0 Z80 F5000 ; go save Z else G53G0Z80 echo >"restoreToolNumber.g" "set global.currentToolNumber=-1" T0P0 M291 S2 R"Tool Problem" P"Tool broken or missing!Please check!" abort M42P6S0 G1 R1 X0 Y0 A0 B0 ; go directly above the saved position without Z undefined
The main problems with resurrect.g is line 11 "T1 P6" i have no idea why is "P6" and line 30 -this line move Z axis 2 mm above the stored position , this move is wrong it hits spindle with b axis . Here is my resurrect.g :
; File "0:/gcodes/test.txt" resume print after power failure at 2021-10-14 12:36 G21 T-1 P0 G92 X-33.939 Y-0.670 Z8.521 A-6.975 B187.183 G60 S1 T1 P0 M98 P"resurrect-prologue.g" M116 M290 X0.000 Y0.000 Z0.000 A0.000 B0.000 R0 T-1 P0 T1 P6 ------------------- this is wrong , i think it is firmware issue , if it is "T1 P0" it will be OK ; Workplace coordinates G10 L2 P1 X0.00 Y0.00 Z0.79 A0.00 B0.00 G10 L2 P2 X0.00 Y0.00 Z0.00 A0.00 B0.00 G10 L2 P3 X0.00 Y0.00 Z0.00 A0.00 B0.00 G10 L2 P4 X-115.50 Y63.50 Z80.35 A0.00 B0.00 G10 L2 P5 X0.00 Y0.00 Z0.00 A0.00 B0.00 G10 L2 P6 X0.00 Y0.00 Z0.00 A0.00 B0.00 G10 L2 P7 X0.00 Y0.00 Z0.00 A0.00 B0.00 G10 L2 P8 X0.00 Y0.00 Z0.00 A0.00 B0.00 G10 L2 P9 X0.00 Y0.00 Z0.00 A0.00 B0.00 G54 M106 S0.00 M116 G92 E0.00000 M82 M486 S-1 G17 M23 "0:/gcodes/test.txt" M26 S7488 G0 F6000 Z10.521 ------------------------------------------------ this line is very bad , it always hits the spindle. G0 F6000 X-33.939 Y-0.670 A-6.975 B187.183 G0 F6000 Z8.521 G1 F5310.0 P0 G21 M24 undefined
Here is picture of moving 2 mm above stored :
![0_1634206565299_IMG-6139.jpg](Uploading 100%)Here is executing the next line:
The last position of B axis was 180 degreses, but before it starts it is at 0 degreses , Z goes 2 mm above stored position , and the returns the B axis to 180 degreses. This hits the spindle.
And one more in Ressurect.g there is no M3 code to start the spindle . -
RE: Is it possible to modify my resurrect.g ?
@t3p3tony And also i forgot , a need to edit to be able to store my last spindle speed . Is it possible?
-
RE: Is it possible to modify my resurrect.g ?
@t3p3tony No the problem is in ressurect.g, it make a tool change that drops my tool , i dont need any tool changes, and the bigger problem when it move z axis 2mm above last position the next line restore the position of all axes , and if my B axis is 180 degrees , it rotates and hits the Spindle.
-
RE: Is it possible to modify my resurrect.g ?
@dc42 The problem is with the mivement of the z axis + 2 mm befero resume other axis coordinates , the the B axis start to rotate and it hits the spindle, also the problem is with tool changes, It discards all the tools and perform a tool change after that , but the tool is alredy in spindle collet , and it drops down . So i tryed to make it work with ressurect-prologue.g but there is no way.
-
RE: Is it possible to modify my resurrect.g ?
@t3p3tony yes , but every time it registers power falure , it creates a new resurrect.g , without the changes.
-
Is it possible to modify my resurrect.g ?
Hello , i am bulding 5 axis CNC Milling machine and i need to make resurrect it after power falure,everithing work fine except the resurrect.g , it make moves that hit the spindle with "B" axis.I manage to change it but manualy.I need my resurrect.g file to look like this( i comment the values that i dont need):
undefined; File "0:/gcodes/20211010_193950_20211010_194801.nc" resume print after print paused at 2021-10-12 21:29 G21 ;T-1 P0 dont need G92 X-34.536 Y-0.173 Z5.807 A-7.098 B187.049 G60 S1 ;T2 P0 dont need M98 P"resurrect-prologue.g" M116 M290 X0.000 Y0.000 Z0.000 A0.000 B0.000 R0 ;T-1 P0 dont need ;T2 P6 dont need ; Workplace coordinates G10 L2 P1 X0.00 Y0.00 Z0.30 A0.00 B0.00 G10 L2 P2 X0.00 Y0.00 Z0.00 A0.00 B0.00 G10 L2 P3 X0.00 Y0.00 Z0.00 A0.00 B0.00 G10 L2 P4 X-115.50 Y63.50 Z80.35 A0.00 B0.00 G10 L2 P5 X0.00 Y0.00 Z0.00 A0.00 B0.00 G10 L2 P6 X0.00 Y0.00 Z0.00 A0.00 B0.00 G10 L2 P7 X0.00 Y0.00 Z0.00 A0.00 B0.00 G10 L2 P8 X0.00 Y0.00 Z0.00 A0.00 B0.00 G10 L2 P9 X0.00 Y0.00 Z0.00 A0.00 B0.00 G54 ;M106 S0.00 dont need ;M116 dont need ;G92 E0.00000 dont need ;M82 dont need ;M486 S-1 dont need G17 M23 "0:/gcodes/20211010_193950_20211010_194801.nc" M26 S904193 ;G0 F6000 Z7.807 - this hits B axis dont need G0 F6000 X-34.536 Y-0.173 A-7.098 B187.049 G0 F6000 Z5.807 G1 F1226.2 P0 G21 M24
Is it possible to be changet and how.
Thank you in advance -
RE: How can i store last tool , to be used after turn off the Duet?
@dc42 Thank you ,i tryed everithing arangment of brackets excep that you wrote, i manage to make it work without "exists" ,now i will change it , thank you very much.
-
RE: How can i store last tool , to be used after turn off the Duet?
@dc42 i tryed the code, but it gives me erorr that it says : unknown value "not", then i tryed it with deleting "not" after "if"-statement , and put it in "else" statement , it says "unknown value "exists"",because i am in CNC mode i tried with different brackets "(" and "{" but no success.
-
RE: How can i store last tool , to be used after turn off the Duet?
Well it is cnc dental milling machine so it will change up to 5 tools at milling. I hope that will last long with tool storing .The product is for industrial use and it will be in serial production with Duet controller.At this case the tools for each milling are different , and the problem it is when the tool is left in spindle.
Yo can see in the right part of image is where the tools are stored , and the ATC Spindle pick's them from the slots.
I will try this code and see how it is working.
Thank you all for response. -
RE: How can i store last tool , to be used after turn off the Duet?
@cosmowave it gives me that the page does not exist
-
How can i store last tool , to be used after turn off the Duet?
Hello,
i am trying to make my cnc to be able to store last used tool,i mean when i turn off the machine and turn it on , i send T1 comand , but T1 is already in collet, and it just open the collet and drops the tool.So is it possible to make a variable that can i store each time when i pick a tool , i have 5 changeble tools.
I was trying with global variables , but i can store it in memory , so when i restart the duet ,doesnt remember it.