Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
ExtruderSpeed() function for 3D printing with ABB IRB120
#1
Hello! I am currently doing a 3D printing project with an ABB IRB120. For the extruder, I am using an arduino Mega/RAMPS for extruder control and hotend control. I noticed that when generating the RAPID code, roboDK translates the E values from the G-code to a function called 'ExtruderSpeed()' which seems to set the extrusion speed rather than how many mm of filament to extrude as shown in the segment below 

Code:
MoveL [[-0.000,0.000,0.350],[0.00000000,0.00000000,-1.00000000,0.00000000],[-1,1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[130.00,500,5000,1000],z1,IRBpelletextruder,\WObj:=Frame2;
ExtruderSpeed 0.000;
MoveL [[-0.000,0.000,0.350],[0.00000000,0.00000000,-1.00000000,0.00000000],[-1,1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v40,z1,IRBpelletextruder,\WObj:=Frame2;
ExtruderSpeed 13.000;
MoveL [[147.614,123.450,0.350],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[130.00,500,5000,1000],z1,IRBpelletextruder,\WObj:=Frame2;
ExtruderSpeed 0.000;
MoveL [[147.614,123.450,0.350],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v40,z1,IRBpelletextruder,\WObj:=Frame2;
MoveL [[147.614,123.450,0.350],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,IRBpelletextruder,\WObj:=Frame2;
ExtruderSpeed 3.000;
MoveL [[149.933,120.891,0.350],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,IRBpelletextruder,\WObj:=Frame2;
MoveL [[150.392,120.432,0.350],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,IRBpelletextruder,\WObj:=Frame2;
MoveL [[152.948,118.115,0.350],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,IRBpelletextruder,\WObj:=Frame2;
MoveL [[153.450,117.704,0.350],[0.00000000,0.00000000,-1.00000000,0.00000000],[-1,1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,IRBpelletextruder,\WObj:=Frame2;
MoveL [[156.222,115.647,0.350],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,IRBpelletextruder,\WObj:=Frame2;
MoveL [[156.762,115.287,0.350],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,IRBpelletextruder,\WObj:=Frame2;
MoveL [[159.722,113.513,0.350],[0.00000000,0.00000000,-1.00000000,0.00000000],[-1,1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,IRBpelletextruder,\WObj:=Frame2;
MoveL [[160.295,113.206,0.350],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z1,IRBpelletextruder,\WObj:=Frame2;

Is there any way to avoid this? Or some option that I need to change? Because when I generate the code with the 3D printing example included in the software, it seems to translate the E values from the G code as it is, it to a number that relates to the mm of filament to be extruded rather than a set speed as shown in the segment below. 

Code:
rdkSpeed:=[1000.0,500,1000.0,500];
MoveAbsJ [[29.080182,61.286059,29.900204,-150.914601,91.036706,-179.423374],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
rdkSpeed:=[83.3,500,83.3,500];
MoveL [[-59.027,-59.027,5.000],[0.00000001,0.00000000,1.00000000,-0.00000001],[0,-2,-2,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
Extruder(-1);
MoveL [[-59.027,-59.027,5.000],[0.00000001,0.00000000,1.00000000,-0.00000001],[0,-2,-2,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
Extruder(0.000);
rdkSpeed:=[130.0,500,130.0,500];
MoveL [[-59.027,-59.027,10.000],[0.00000000,0.00000000,1.00000000,0.00000000],[0,-2,-2,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
Extruder(-2.000);
rdkSpeed:=[40.0,500,40.0,500];
MoveL [[-59.027,-59.027,10.000],[0.00000000,0.00000000,1.00000000,0.00000000],[0,-2,-2,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
Extruder(0.000);
rdkSpeed:=[130.0,500,130.0,500];
MoveL [[-59.027,-59.027,10.000],[0.00000000,0.00000000,1.00000000,0.00000000],[0,-2,-2,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
Extruder(2.000);
rdkSpeed:=[40.0,500,40.0,500];

Could this be due to Slic3r? Or is it some setting in RoboDK? Kindly let me know! Thank you!
#2
The default post processor for ABB IRC5 robot controllers implements and example that converts the extruder position to a speed (what you currently see). This is calculated given the robot speed and distance to travel between points.

You can easily change this behavior in the post processor by doing this 2 modifications:
1- Comment the call to new_move (line 625). This is the section that implements the speed example.
2- Comment the return command when the Extruder call is detected (in RunCode, line 820)

See the post processor attached for ABB IRC5.


Attached Files
.py   ABB_RAPID_IRC5_Extruder.py (Size: 44.42 KB / Downloads: 43)
#3
(05-30-2019, 11:47 PM)Albert Wrote: The default post processor for ABB IRC5 robot controllers implements and example that converts the extruder position to a speed (what you currently see). This is calculated given the robot speed and distance to travel between points.

You can easily change this behavior in the post processor by doing this 2 modifications:
1- Comment the call to new_move (line 625). This is the section that implements the speed example.
2- Comment the return command when the Extruder call is detected (in RunCode, line 820)

See the post processor attached for ABB IRC5.

Thank you so much!
  




Users browsing this thread:
1 Guest(s)