Feature Request - workpiece angle compensation CNC
-
@Phaedrux 3.4.1
-
@CanDo415 Please update to 3.5.1 and double check your macro that it matches the one shared. Particularly the line number the error reports.
-
@Phaedrux
copied the macro.
I have to fix all problems from the update first. Messed up my whole config -
"Error: in file macro line 37 column 12: meta command: unknown variable 'var'"
is the new result after updating to 3.5.1var y_first_measurement = 0 var y_second_measurement = 0 var y_length = 0 var x_first_measurement = 0 var x_second_measurement = 0 var x_length = 0 var y_over_x = 0 var y_x_tan_rads = 0 var y_x_tan_deg = 0 M291 P"Probe links vor das Werstück positionieren" S2 X1 Y1 Z1 ; Pop up box asking for operator input M558 F1500 ; Set the initial probing speed G38.2 Y600 P0 K0 ; Probe the material as a first pass G1 Y{move.axes[1].machinePosition-5} ; Move 5mm away from the material M558 F150 ; Set the final probing speed G38.2 Y600 P0 K0 ; Probe the material again M400 ; Make sure all movement is complete set var.y_first_measurement=move.axes[1].machinePosition ; Record the stop position y_first_measurement set var.x_first_measurement=move.axes[0].machinePosition ; Record the stop position x_first_measurement M400 ; Make sure all data recording is complete G1 Y{move.axes[1].machinePosition-10} ; Move 5mm away from the material G1 X{move.axes[0].machinePosition+50} ; Move along the workpiece in X M558 F1500 ; Set the initial probing speed G38.2 Y600 P0 K0 ; Probe the material as a first pass G1 Y{move.axes[1].machinePosition-5} ; Move 5mm away from the material M558 F150 ; Set the final probing speed G38.2 Y600 P0 K0 ; Probe the material again M400 ; Make sure all movement is complete set var.y_second_measurement=move.axes[1].machinePosition ; Record the stop position y_second_measurement set var.x_second_measurement=move.axes[0].machinePosition ; Record the stop position x_second_measurement M400 ; Make sure all data recording is complete set var.y_length={var.y_second_measurement-var.y_first_measurement} set var.x_length={var.x_second_measurement-var.x_first_measurement} set var.y_over_x={var.y_length/var.x_length} set var.y_x_tan_rads=atan(var.y_over_x) set var.var y_x_tan_rads=degrees{var.y_x_tan_rads} G68 A0 B0 R{var.y_x_tan_rads}
-
@CanDo415 i have a mistake in my macro. i have corrected my original
-
-
@CanDo415 i've made another change but I don't think its going to fix the issue.
I don't know why "degrees" throws an error though as its a built in command -
that's why i added Phaedrux.
I want to change it a bit to get the corner as well. so the degrees issue has to be solved anyway.
Thanks for the great start jay -
@dc42
maybe he can help? -
-
@droftarts
jay corrected it already.
the problem shifted to the degrees command -
@jay_s_uk said in Feature Request - workpiece angle compensation CNC:
@CanDo415 i've made another change but I don't think its going to fix the issue.
I don't know why "degrees" throws an error though as its a built in commanddegrees() is a function
You've used curly braces instead of parentheses
set var.y_x_tan_deg=degrees{var.y_x_tan_rads}
try
set var.y_x_tan_deg=degrees(var.y_x_tan_rads)
-
@OwenD i knew it would be something about the way its been formatted
updated the original again -
@OwenD
thank you for showing up the problem -
G68 A0 B0 R{-var.y_x_tan_rads}
the "-" seems important. otherwise the system gets turned the wrong way round -
@jay_s_uk
i modified it quite a bit. some points are still not ready.
I'm not shure how to ent the if passage.
end if seems not to workvar y_1 = 0 var x_1 = 0 var x_2 = 0 var x_3 = 0 var x_4 = 0 var x_5 = 0 var delta_x = 0 var y_2 = 0 var y_3 = 0 var y_4 = 0 var y_5 = 0 var delta_y = 0 var z0 = 0 var d_probe = 0 var m_1 = 0 var m_2 = 0 var m_1_tan_rads = 0 var m_1_tan_deg = 0 M291 P"position probe over front left corner of workpiece" S2 X1 Y1 Z1 ; Pop up box asking for operator input M558 F300 ; Set the initial probing speed G38.2 Z-60 P0 K0 ; Probe the material as a first pass M558 F50 ; Set the final probing speed G38.4 Z50 P0 K0 ; Move away from workpiece in Z M400 ; Make sure all movement is complete set var.z0=move.axes[2].machinePosition ; Record the stop position y_first_measurement M400 ; Make sure all data recording is complete G1 Z{move.axes[2].machinePosition+5} ; Move along the workpiece in X G1 X{move.axes[0].machinePosition-20} ; Move 5mm away from the material G1 Y{move.axes[1].machinePosition+5} ; Move 5mm away from the material G1 Z{move.axes[2].machinePosition-3} ; Move along the workpiece in X M558 F1000 ; Set the initial probing speed G38.2 X100 P0 K0 ; Probe the material as a first pass M558 F50 ; Set the final probing speed G38.4 X-10 P0 K0 ; Move away from workpiece in X M400 ; Make sure all movement is complete set var.y_1=move.axes[1].machinePosition ; Record the stop position y_first_measurement set var.x_1=move.axes[0].machinePosition ; Record the stop position x_first_measurement M400 ; Make sure all data recording is complete G1 X{move.axes[0].machinePosition-5} ; Move 5mm away from the material G1 Z{move.axes[2].machinePosition+10} ; Move along the workpiece in X G1 X{move.axes[0].machinePosition+15} ; Move 5mm away from the material G1 Y{move.axes[1].machinePosition-20} ; Move 5mm away from the material G1 Z{move.axes[2].machinePosition} ; Move along the workpiece in X M558 F1000 ; Set the initial probing speed G38.2 Y100 P0 K0 ; Probe the material as a first pass M558 F50 ; Set the final probing speed G38.4 Y-10 P0 K0 ; Probe the material again M400 ; Make sure all movement is complete set var.y_2=move.axes[1].machinePosition ; Record the stop position y_first_measurement set var.x_2=move.axes[0].machinePosition ; Record the stop position x_first_measurement M400 ; Make sure all data recording is complete G1 Y{move.axes[1].machinePosition-50} ; Move 5mm away from the material G1 X{move.axes[0].machinePosition+50} ; Move along the workpiece in X M558 F1000 ; Set the initial probing speed G38.2 Y100 P0 K0 ; Probe the material as a first pass M558 F50 ; Set the final probing speed G38.4 Y-10 P0 K0 ; Probe the material again M400 ; Make sure all movement is complete set var.y_3=move.axes[1].machinePosition ; Record the stop position y_second_measurement set var.x_3=move.axes[0].machinePosition ; Record the stop position x_second_measurement M400 ; Make sure all data recording is complete M291 P"Probe Diameter" R"enter diameter of probe" S5 L0 H10 ; Pop up box asking for operator input diameter of set var.d_probe=input ; set the diameter of the probe ;calculation set var.delta_y={var.y_3-var.y_2} set var.delta_x={var.x_3-var.x_2} set var.m_1={var.delta_y/var.delta_x} ; m of the staight P2-P3 set var.m_2={(-var.delta_x)/var.delta_y} ; m of perpendicilar to straight P2-P3 set var.m_1_tan_rads=atan(var.m_1) set var.m_1_tan_deg=degrees(var.m_1_tan_rads) ;calc the corner of workpeace set var.x_4=((var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)-(var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)))/(((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))) set var.y_4=(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*((var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)-(var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)))/(((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2)))+(var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1) If var.y_2>var.y_3 ; workpiece Zero coordinates set var.x_5=var.x_4+(COS(ARCTAN(var.m_1))+COS(ARCTAN(var.m_2)))*var.d_probe/2 set var.y_5=var.y_4+(SIN(ARCTAN(var.m_1))+SIN(ARCTAN(var.m_2)))*var.d_probe/2 If var.y_2<var.y_3 set var.x_5=var.x_4+(COS(ARCTAN(var.m_1))-COS(ARCTAN(var.m_2)))*var.d_probe/2 set var.y_5=var.y_4+(SIN(ARCTAN(var.m_1))-SIN(ARCTAN(var.m_2)))*var.d_probe/2 ;move over workpiece zero and set tool x&y to 0 G1 Y{move.axes[1].machinePosition-1} ; Move 1mm away from the material G1 Z{move.axes[2].machinePosition+10} ; Move above workpiece ;G68 A0 B0 R{-var.m_1_tan_deg} ; set Rotation
-
@CanDo415
You have to indent the lines you want to be part of the conditional statement, thats a place to start at least. -
@Exerqtor
like:If var.y_2>var.y_3 ; workpiece Zero coordinates set var.x_5=var.x_4+(COS(ARCTAN(var.m_1))+COS(ARCTAN(var.m_2)))*var.d_probe/2 set var.y_5=var.y_4+(SIN(ARCTAN(var.m_1))+SIN(ARCTAN(var.m_2)))*var.d_probe/2 end if If var.y_2<var.y_3 set var.x_5=var.x_4+(COS(ARCTAN(var.m_1))-COS(ARCTAN(var.m_2)))*var.d_probe/2 set var.y_5=var.y_4+(SIN(ARCTAN(var.m_1))-SIN(ARCTAN(var.m_2)))*var.d_probe/2 end if
?
-
@CanDo415
No like:if var.y_2 > var.y_3 ; workpiece Zero coordinates set var.x_5 = var.x_4 + (COS(ARCTAN(var.m_1)) + COS(ARCTAN(var.m_2))) * var.d_probe / 2 set var.y_5 = var.y_4 + (SIN(ARCTAN(var.m_1)) + SIN(ARCTAN(var.m_2))) * var.d_probe / 2 if var.y_2 < var.y_3 set var.x_5 = var.x_4 + (COS(ARCTAN(var.m_1)) - COS(ARCTAN(var.m_2))) * var.d_probe / 2 set var.y_5 = var.y_4 + (SIN(ARCTAN(var.m_1)) - SIN(ARCTAN(var.m_2))) * var.d_probe / 2
-
@Exerqtor
i tried this before in another case... everything unter the 2nd if wasnt done if the if doesn't match.
the problem of the missing end if