Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login
    1. Home
    2. ChrisP
    3. Best
    • Profile
    • Following 0
    • Followers 0
    • Topics 11
    • Posts 179
    • Best 25
    • Controversial 0
    • Groups 0

    Best posts made by ChrisP

    • RE: Cancel individual objects on the build plate

      Sorry in advance for what has developed into a long post.... hopefully someone will find it useful or it can be used to improve the object cancellation function.

      @bot I'd be interested to hear how you get on with this if you you try with Simplify. While the results (below) are infinitely cleaner than those from PrusaSlicer (my post above) as the object label comes after the retract, I have since discovered other issues - generally minor & none that prevented the print coming out as expected. In this image, as before, Object2 was cancelled first, then later Object1 was cancelled. The others were left to go to completion.
      IMG_20200503_155222.jpg

      So here are the other issues I found...

      1. Simplify still puts some travel moves relating to the previous object at the start of the current object, so if that previous object has been cancelled, unnecessary travel occurs. In the example gcode below there are 5 lines (line #46-50) of travel at the start of Object4 that relate to Object2 (which was cancelled), then the 6th line (#51) is the correct travel to the the start of Object4. See the orange and purple segments in plot below that shows the unnecessary travel.
        On checking later I discovered that these 5 moves were generated because the "Avoid crossing outline for travel movements" option is enabled. So Simplify isn't being sensible here as its treating these as part of the travel to Object4 rather than the travel required to exit the perimeter of the Object2.
        I don't think there a practical way for RRF to overcome this if "Avoid crossing outline for travel movements", but as the retract happens prior to the travel the only side effect is wasted time due to the unnecessary travel.

      2. Relating to the previous point, I'm seeing that despite there being a F9000 on the first of those travel moves (line #46 & the long part of orange line on the plot) at the beginning of Object4 (from X38.929,Y45.252 to X80.765,Y66.837), the head moves incredibly slowly - indeed, DWC shows that the feedrate is 10mm/s... ie. the F600 from the z-hop on the previous line.
        I then observe the remaining travel commands (lines #47-51 & the small parts of the orange line and the purple line on the plot) in that short sequence go at the full F9000. Its clear to see as it happens at every layer (and similarly on other cancelled objects). I've been looking at this for a while now and unfortunately I'm wondering whether there might be a bug in RRF where the feedrate isn't being updated in the correct place - @dc42? Or maybe there's something I'm not seeing here? Either way line #46 seems to move at F600, not F9000. I can print again and video if needed?

      3. I typically begin all my prints with a skirt. In Simplify3D, when there are multiple processes the skirt for all processes is generated by just one of them - the the bottom image. Since we're using separate processes to distinguish objects, for that one first object that generates the skirt the min & max XY positions that RRF calculates are incorrect as it will be using the bounding box of the skirt instead. After a quick check, the same is true for brims. I therefore wonder if it's feasible to make RRF look for the ; feature skirt comment and de-select whatever object RRF thinks is current? I think that would solve this issue.

      ; process Object1
      ; feature inner perimeter
      ; tool H0.150 W0.430
      --snip--
      G1 X39.198 Y52.512 E0.0078
      G1 X38.924 Y52.350 E0.0085
      G1 X38.794 Y52.260 E0.0042
      G1 X38.525 Y52.030 E0.0095
      G1 X38.340 Y51.840 E0.0071
      G1 X38.142 Y51.597 E0.0084
      G1 X37.798 Y51.060 E0.0171
      G1 X37.626 Y50.715 E0.0103
      G1 X37.479 Y50.360 E0.0103
      G1 X37.407 Y50.144 E0.0061
      G1 X37.312 Y49.859 F1080
      G1 X37.190 Y49.371 F1080
      G1 X37.103 Y48.914
      G1 X37.038 Y48.416
      G1 X37.001 Y47.909
      G1 X37.001 Y47.888
      ; feature infill
      ; tool H0.150 W0.452
      G1 X38.236 Y47.816 F9000
      G1 X41.993 Y47.816 E0.1058 F2160
      G1 X42.293 Y47.816 F2160
      G1 X40.293 Y47.816 E-2.7778 F2160
      G1 E-1.2222 F3000
      G1 Z2.899 F600
      G1 X38.338 Y46.274 F9000
      G1 Z2.599 F600
      G1 E4.0000 F3000
      G1 X39.779 Y43.780 E0.0811 F2160
      G1 X39.929 Y43.520 F2160
      G1 X38.929 Y45.252 E-2.7778 F2160
      G1 E-1.2222 F3000
      
      ; process Object2
      ; feature inner perimeter
      ; tool H0.150 W0.430
      --snip (cancelled object)--
      
      ; process Object4
      ; feature inner perimeter
      ; tool H0.150 W0.430
      G1 Z2.899 F600
      G1 X80.765 Y66.837 F9000
      G1 X80.733 Y66.820
      G1 X80.336 Y66.675
      G1 X80.007 Y66.610
      G1 X79.675 Y66.595
      G1 X79.081 Y51.759
      G1 Z2.599 F600
      G1 E4.0000 F3000
      G1 X78.944 Y51.686 E0.0042 F1620
      G1 X78.775 Y51.570 E0.0055
      G1 X78.541 Y51.366 E0.0083
      G1 X78.355 Y51.156 E0.0075
      G1 X78.203 Y50.953 E0.0068
      G1 X78.060 Y50.724 E0.0072
      G1 X77.960 Y50.536 E0.0057
      G1 X77.787 Y50.159 E0.0111
      G1 X77.710 Y49.957 E0.0058
      G1 X77.603 Y49.622 E0.0094
      G1 X77.524 Y49.322 E0.0083
      

      2020-05-03 (1).png
      2020-05-03.png

      posted in Beta Firmware
      ChrisPundefined
      ChrisP
    • RE: Cancel individual objects on the build plate

      Having been messing with this today... it seems to work well and I think it's going to be really useful!

      In playing, I've noticed an interesting issue with gcode generated using PrusaSilcer so I thought I'd mention it in case it trips anyone else up. I have checked Simplify3D and it doesn't have the issue. Anyway...

      There seems to be a bug in the current version of PrusaSlicer (2.2.0) in that it puts the object labels in the wrong place. In some cases it's not an issue, but if you also use nozzle wipe and cancel an object things can get messy. Logically, a wipe & retract should be associated the end of a loop and a prime with the beginning of the next. However, if you slice 3 objects (for example) in PrusaSlicer here's a snip of what it produces:

      • finishes the last loop on object 1 for the current layer
      • --
      • labels the end of object 1 and the start of object 2
      • performs the wipe then retract for object 1
      • does the travel to object 2
      • primes for object 2
      • starts the first loop for object 2
      • finishes the last loop on object 2 for the current layer
      • --
      • labels the end of object 2 and the start of object 3
      • performs the wipe then retract for object 2
      • does the travel to object 3
      • primes for object 3
      • starts the first loop for object 3
      • finishes the last loop on object 3 for the current layer
      • --
      • etc...

      So the issue is that if you cancel an object, the wipe and retract positions get messed up and you end up with a birds nest above the cancelled object (or elsewhere depending on order). Here's an example output of what happens in this situation - in this case the top right object was cancelled first, then later the bottom left. To be clear that the mess here isn't a problem with the printer or RRF, it's because the slicer got its object labels in the wrong place.

      IMG_20200502_194007.jpg

      posted in Beta Firmware
      ChrisPundefined
      ChrisP
    • RE: High temperature (400 degrees) hotend cooling

      When I printed PEEK at 400+degrees, the only thing I changed on my stock E3D v6 setup was to swap the thermistor for a thermocouple. These days, I'd also use a copper heat block & nozzle. Other than that, I just use the same cooling as I did for everything else.

      Your bigger problem will be getting enough heat into the process - a super hot bed and ideally a heated chamber. At the very least you'll need to put it all in a box to stop draughts.

      Don't try printing PEEK just for fun though. It's expensive material and it by far the hardest material to print and get right that I've ever come across... particularly CF PEEK. There was nothing fun about it.

      posted in 3D Printing General Chat
      ChrisPundefined
      ChrisP
    • RE: Supporting multiple configurations on a single Duet

      @wcj97
      M505 is listed as a valid code in the wiki, so I'm guessing the answer is yes.

      posted in Firmware wishlist
      ChrisPundefined
      ChrisP
    • RE: Multi thermistor bed

      As an alternative, how about using a second, "virtual" bed?

      If you have a spare heater output, define a second heated bed that uses the real second sensor, but leave nothing connected to the heater output. Use the original sensor with the real heated bed and set both to heat, but use M116 to wait until both beds are at your target temperature. That way, the bed shouldn't go over temperature in any area, but it will require both sensors to be at your target temperature before the print begins. Personally, I see this as the simplest solution to your problem.

      posted in Tuning and tweaking
      ChrisPundefined
      ChrisP
    • RE: RepRapFirmware 3.01-RC7 available

      @Danal said in RepRapFirmware 3.01-RC7 available:

      @ChrisP said in RepRapFirmware 3.01-RC7 available:

      @Danal said in RepRapFirmware 3.01-RC7 available:

      For me, running a D3+Pi, this takes <25 seconds. For example, if I power cycle while everything is up and running, from the moment I hit power on to the moment the thermostatic fans kick in is less than 25. In fact, it is closer to 20.

      How long does this take on your system?

      So for me with a D3 and Pi4 it takes just over 24 seconds each time, which I appreciate isn't an age, but it's still not ideal.

      Yeah, this is very much a judgement call on where to spend resources. A stand-alone board gets from power on to fans on in about 8 seconds, (not counting the little blip right at boot). So, collapsing out somewhere under 20 seconds, as vs some number of development hours (that I think are larger, not smaller, when I think about all the edge cases)... very much a judgement call. 🙂

      Oh yeh, I 100% agree that there are bigger/more important issues and features to implement and fix first. However, I run a system where this delay is borderline unacceptable and in standalone on a D2, D3 or even the older boards, the fans start pretty much instantaneously. I'll admit I haven't time it (though I'm very tempted now.haha) but my gut feeling is that it 2 seconds or less.

      Anyway, as I said initially, I'd like it to be added as a feature request if possible, because I can't imagine that one should be that hard to implement, but yeh the focus should be on other more important features first.

      posted in Beta Firmware
      ChrisPundefined
      ChrisP
    • RE: Duet3 toolboard etc.

      @Danal said in Duet3 toolboard etc.:

      @bearer said in Duet3 toolboard etc.:

      CAN cables twisted pair is extremely recommended,

      And almost completely irrelevant for a CAN cable less than one meter long.

      Can confirm that this is the case for long cables too - I'm running an old crappy telephone cable that's definitely not in twisted pairs (beacuse that's what was quickly available at the time) thats ~3 m long to an expansion board and it's fine 🙂

      posted in Duet Hardware and wiring
      ChrisPundefined
      ChrisP
    • RE: Should M999 terminate the DSF core application?

      I agree with @Danal with respect to why M999 should case a rest of some sort on the SBC. While running RC6 I frequently had to restart DCS because the system became unresponsive and this solved it, and I did this by SSHing into the Pi to do this. This is okay while I'm sitting next to the printer with a laptop testing stuff, but long-term this isn't an acceptable way of recovering control (the alternative being a power cycle) not only because most users aren't going to now how to do this or even care about learning how to do this, but because even "power users" aren't always going to the tools immediately to hand to do this. So it makes sense that M999 / Emergency Stop on DWC should be able to recover control quickly and efficiently.

      As for whether this should be in the form of resetting DCS or a full restart of the SBC, personally, I'm not keen on the idea of having to reset the whole SBC. My guess is that typically it'll only need to be DCS that needs a restart and if the SBC really needs a whole reboot then the system probably has bigger issues that need addressing.

      posted in DSF Development
      ChrisPundefined
      ChrisP
    • RE: Filament load ...

      @Phaedrux said in Filament load ...:

      @ChrisP said in Filament load ...:

      Or you can manually edit filaments.csv in the sys folder.

      That's the other way I was thinking of but couldn't brain.

      While this is an option, I think it's the harder of the two as you have to get the filament name just right. I also forgot to say that this way will clearly require a reset after too to re-parse the filaments file.

      posted in Beta Firmware
      ChrisPundefined
      ChrisP
    • RE: One z motor don’t always move

      M8 S30 should also be M84 S30 too, FWIW.

      posted in Duet Hardware and wiring
      ChrisPundefined
      ChrisP
    • RE: Should M999 terminate the DSF core application?

      @chrishamm said in Should M999 terminate the DSF core application?:

      ll come up with a new DSF plugin to achieve that. I don't want to distract too much from the actual question though: What should M999 do by default?

      Personally, my vote would be for:

      • M999 resets the board, expansion boards and DSF by default
      • M999 with some parameter can reset the board, expansion boards and the whole SBC
      • M999 with some other parameter runs some *.g file to "park" the physical system and then safely shuts down the SBC
      posted in DSF Development
      ChrisPundefined
      ChrisP
    • RE: Cancel individual objects on the build plate

      @bot said in Cancel individual objects on the build plate:

      Excellent post. Thanks for tagging me I enjoyed the read.

      Thanks. Unfortunately it's drilled into me to be as complete as possible when documenting features or bugs, so I know I can sometime go on a bit. Glad it was of interest.

      As for your skirt/brim problem with S3D. Let's not go too far catering to S3D's gcode. If they don't manage to get 5.0 out anytime soon, their company is as good as done. I'm very actively looking for ways to move away from S3D totally. We should demand slicers do things properly instead of bloating a codebase to cater to odd scenarios.

      Indeed. I agree that catering too far for S3D's code (or any particular slicer) isn't the right way to go about producing the right output from an input that's fundamentally wrong. However, while like you, I'd love to move away from Simplify (probably to PrusaSlicer), unfortunately for what I use it for both at home and work there's still nothing that comes close to Simplify. Though I do agree that unless they get a new release out soon, they'll be dead.
      edit: it also has to be said that there is already some specific parsing for PS and S3D labels etc, so why not add the functionality to identify skirt/brims and logically separate them from the process tag?

      In terms of that last point, cancelling an object on the first few layers is something I brought up in one of these threads as something that would be useful. At the same time, I realize that most use cases would have the cancellation come much farther along into the print, where ignoring or catering to the skirt/brim may not be necessary. However, does the x/y extent calculation when a skirt/brim is present interfere with proper cancellation behaviour?

      Yes. Everything works as expect otherwise. My main reason for bringing this point up was because I imagine this data will be key to any UI that is made to make object cancellation user friendly. Or automated object cancellation through in-process monitoring.
      From my point of view, I was less interested in the aspect of cancelling a skirt or brim and more interested in ensuring the data that RRF generated was accurate 🙂

      posted in Beta Firmware
      ChrisPundefined
      ChrisP
    • RE: One z motor don’t always move

      @Alucardi It's a good question, tbh. I was under the impression that any move on any axis would reset the counter. I've just gone and had a quick look at teh firmware source, and that does appear to be the case too. So as long as your printer is moving at least on motor in that time, I think you should be fine.

      Reference: see here, that the S parameter is parsed independantly of the axis.

      posted in Duet Hardware and wiring
      ChrisPundefined
      ChrisP
    • RE: G10 heat "off" and M116 wait-for-temp don't work in print files

      @kenblu24
      Out of interest, is there any particular reason that you don't just use an M0 as your slicer end code then put the rest of the end script you posted in cancel.g? That's what I do as the M0 turns everything off anyway so there's no need to alter standby/active temperatures?

      posted in General Discussion
      ChrisPundefined
      ChrisP
    • RE: Should M999 terminate the DSF core application?

      @Danal said in Should M999 terminate the DSF core application?:

      @ChrisP said in Should M999 terminate the DSF core application?:

      @chrishamm said in Should M999 terminate the DSF core application?:

      ll come up with a new DSF plugin to achieve that. I don't want to distract too much from the actual question though: What should M999 do by default?

      Personally, my vote would be for:

      • M999 resets the board, expansion boards and DSF by default
      • M999 with some parameter can reset the board, expansion boards and the whole SBC
      • M999 with some other parameter runs some *.g file to "park" the physical system and then safely shuts down the SBC

      Sounds great. Q: Is that third one really the existing "pause" or "stop" g-code followed by an M999 with the shutdown param?

      Hmm, yeh, very possibly somethings similar, but I'm not sure the same. Take for example the case where you want to shutdown the system and walk away - pause.g or stop.g won't necessarily wait for heaters to be cool etc. The thing I had in mind I guess is similar to setting all setpoints to 0 and then doing M116... but you'd need an M code or some means of defining the "safe" temperature when it's okay to shutdown the SBC etc. Just an idea.

      posted in DSF Development
      ChrisPundefined
      ChrisP
    • RE: Undervolts on Pi

      I mentioned what is likely the same thing a while back. Indeed, you commented on it... Duet3 SBC Power Warnings

      I still get this happening continuously. While it doesn't seem to cause problems, I'm not really comfortable with it. I've bought a 25W DC/DC converter to power the Pi separately... just waiting for it to arrive.

      posted in Duet Hardware and wiring
      ChrisPundefined
      ChrisP
    • RE: ball screw stepper settings

      @ziggymanpopo

      So there's a few things here. Firstly, post your config.g so we can see what motor current, acceleration etc. you have. 5000 mm/m seems pretty high for a lead/ball screw too and I can't imagine you're going to have enough torque to get to that speed quickly (if at all with a NEMA17).
      Secondly, what firmware are you running (post the output of M115) as newer firmware I believe is depreciating the S parameter in G1 for the H parameter. Finally, I don't know if it's just very specific oversight in the comment, but S1 in M574 is for setting an endstop. S3 should be used for stall detection if that's really what you're trying to do.

      M574 Y0 S1 ; set endstops to use motor stall
      
      posted in General Discussion
      ChrisPundefined
      ChrisP
    • RE: Overextrusion at low Temps

      This is effectively die swell as your polymer isn't hot enough to flow properly. Ultimately, its factors of your extrusion rate and the energy (heat) in the polymer as it exits the nozzle. The faster you print the fast you need to put energy into the filament to heat it to the core.
      So you're either printing too fast, or your not getting enough energy in (effectively you're temperature is too low). If you're printing at a sensible speed, and you know your filament is good then either the measured temperature reading is wrong or the inside walls of the hot side of the heat-break or nozzle are dirty and aren't transferring energy efficiently.

      posted in General Discussion
      ChrisPundefined
      ChrisP
    • RE: Calibration Cube Issues

      That looks like your start/stop point for each layer...?
      What slicer are you using? Can you post your profile?

      posted in General Discussion
      ChrisPundefined
      ChrisP
    • RE: How to clone a Duet printer?

      @zapta said in How to clone a Duet printer?:

      (Currently using a static address that is assigned by the router based on the Duet's MAC address but would prefer to have the setting in the Duet itself as done for other devices on our network).

      I'd have thought that setting the static IP on the router is the better way of doing this anyway as you avoid the risk of IP clashes unless you've set a reserved range?

      posted in General Discussion
      ChrisPundefined
      ChrisP