Jump to content

Cura 4.7.1 outputting code that sets global extruder temp on dual extruder printer even if one is disabled


zhutwo

Recommended Posts

Posted · Cura 4.7.1 outputting code that sets global extruder temp on dual extruder printer even if one is disabled

Hi,

 

I posted a reply in another thread about the Qidi X-Pro regarding this, but since this might be a discovered bug, I'm making a thread to bring attention to it.

 

So the problem is that if you have a dual extruder printer like the Qidi X-Pro and you only want to print using one extruder, Cura (v4.7.1 in my case) will output code that heats up both extruders, which can result in warping if the 2nd extruder passes over material for a prolonged period. This occurs even if you disable the other extruder, attempt to set its material temp to 0C, or even force its temp to 0C in the printer start code settings. This is because at the end of the instruction set for LAYER 0 (the initial layer), Cura outputs the line:

 

M104 S200 ;(or whatever your temp is set to)

 

This is a global temperature set command, and should instead have

 

T<extruder index>

 

at the end, to specify the extruder. The heating problem can be fixed by modifying or removing this line (if you already are setting temp in your start code). I've tried fiddling around with various settings to make this not be generated in the code, but nothing is sticking. I think Cura just needs to be patched to output an extruder specific command there.

  • Link to post
    Share on other sites

    Posted · Cura 4.7.1 outputting code that sets global extruder temp on dual extruder printer even if one is disabled
    From the MarlinFW.org site for M104...
     
    [T<Hot End Index]  Hotend index. If omitted, the currently active hotend will be used.

    Examples

    Set target temperature for the active hotend

    M104 S185

    As Tinkergnome mentioned in the other post, you may have a firmware problem.  M104 isn't "global" and without any "T" parameters is supposed to set the temperature on the "Currently Active" hot end only.  For any other hot end to be effected there must be an explicit parameter.

     

    T0                       ;change to extruder 0

    M104 T1 S175 ;Set extruder 1 to a standby temperature of 175

    M104 S200    ;Set the current extruder (in this example it's 0) to 200.  T1 isn't mentioned so it stays at 175.

     

    T1                       ;change back to extruder 1

    M104 T0 S175 ;Set extruder 0 to a standby temperature of 175

    M104 S200    ;Set the current extruder (now it's 1) to 200.  T0 isn't mentioned so it stays at 175.

     

    Any other action taken by the printer firmware isn't right.

  • Link to post
    Share on other sites

    Posted · Cura 4.7.1 outputting code that sets global extruder temp on dual extruder printer even if one is disabled

    What defines the hot end as active? As far as I can tell, disabling an extruder in Cura doesn't change the code output.

  • Link to post
    Share on other sites

    Posted · Cura 4.7.1 outputting code that sets global extruder temp on dual extruder printer even if one is disabled

    The active tool is the last one that was called out in a "T" command.  A "T" command is a modal command.  It stays in effect unless another "T" command changes it.

  • Link to post
    Share on other sites

    Posted · Cura 4.7.1 outputting code that sets global extruder temp on dual extruder printer even if one is disabled

    Is that an explicit

     

    T0

     

    or does having it as an argument count too?

     

    ie;

     

    M104 S0.0 T1

     

  • Link to post
    Share on other sites

    Posted · Cura 4.7.1 outputting code that sets global extruder temp on dual extruder printer even if one is disabled

    Only an explicit tool change command sets the active hotend (T0, T1...).

     

    Again: all assuming that the printer is driven by Marlin. No clue if other firmware behaves different.

     

  • Link to post
    Share on other sites

    Posted · Cura 4.7.1 outputting code that sets global extruder temp on dual extruder printer even if one is disabled

    I used "QIDI Print" (Cura 4.3.0) to generate three gcode files.  (I used two 25mm calibration cubes as models)

     

    This is from a file with the "R" extruder disabled:

    T1

    G92 E0
    G92 E0
    G1 F1800 E-3

     

    This is from a file with the "L" extruder disabled:

    T0

    G92 E0
    G92 E0
    G1 F1800 E-3

     

    And this is from a file that uses both extruders:

    G92 E0
    G92 E0
    G1 F1800 E-3

     

    In all three cases, no mention is made in the G92 or G1 lines of which extruder should be reset to 0 and then retract 3mm.  The firmware knows which extruder to send the steps to.  I understand that this is indirect evidence and does not mean that M104 and M109 work the same way in your printer.

     

    Your printer also excepts (at least two) custom GCODE commands like M4010 and M2100 that are generated by QIDI Print.  These might have something to do with the display (M4010 in particular since it sends Hex code).  It appears that developers at QD did some alteration to Cura 4.3.0 for their printers.  The firmware (which according to the generated Gcode files is Marlin) must have been altered to accept those commands since neither is listed on the MarlinFW site as being supported.  If QIDI Print is using post-processing plugin(s) to generate those special Gcodes, maybe you can copy the plugin(s) over to your newer Cura installation.

  • Link to post
    Share on other sites

    Posted · Cura 4.7.1 outputting code that sets global extruder temp on dual extruder printer even if one is disabled

    I'm trying to get my X-Pro working with Cura 4.8, and have run into the same issue.

     

    I've used it quite a bit using the right extruder with the files that Qidi sent me. But when you try to use the left extruder, you run into the problem of the right extruder heating up.

     

    So my "solution" was to setup 3 separate printers, , for Left, Right, and Dual.

     

    I'm currently working on some definition files to make setting them up easier.

    To make the left extruder active, I just add T1 to the Start G-code. Without doing this, I noticed the right extruder trying to retract the filament after the prime pass. The T1 fixed that.

     

    To fix the issue with the right extruder heating up, I've been editing the g-code and adding T1 to the M104 S### line

     

    I was playing around while typing this, and just came across a workaround using Search and Replace in the post processing plugin.

     

    My startup code uses M104 T1 S###

    You want to replace M104 S###, so you can search for "M104 S" and replace with "M104 T1 S" and it will add the T1 without messing with any of the other M104's.

     

    Now back to getting 3 versions of definition files working...

     

    • Like 1
    Link to post
    Share on other sites

    Posted · Cura 4.7.1 outputting code that sets global extruder temp on dual extruder printer even if one is disabled

    Nice.  I'm always in favor of a good work-around.

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • UltiMaker Cura 5.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
         
          • Like
        • 20 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
         
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    ×
    ×
    • Create New...