@CTRDevelopments, was this a mesh, stl, step file?
Posts made by mwwhited
-
RE: CAN-FD Generic IO
@dc42 said in CAN-FD Generic IO:
A disadvantage is that a license fee is payable on any EtherCAT device, although not on on an EtherCAT host
As stated in their own FAQ
3.3 How about licences? There is a licence for implementing an EtherCAT master which is free of charge - the agreement demands compatibility, ensures that the licence remains free of charge and provides legal certainty. For slave devices EtherCAT has adopted the CAN license model (CAN is an excellent example for a standardized open technology that is protected by patents): The small license fee is "embedded" in the EtherCAT Slave Controller (ESC) chip, so that device manufacturers, end users, system integrators, tool manufacturers etc. do not have to pay a license.
This license is only payable for dedicated embedded controllers. If you used a multi-master configuration there would be no dedicated chip and no payable license. If you did use an embedded chip the license free is included with the chip cost.
-
RE: Invitation to share your conditional GCode scripts
That’s pretty cool. I’m considering my using a serial line with some tiny85 chips that I have laying around to do the same thing. For now I write out a script that I try to call from config.g that just sets up the last executed tool script.
M28 "0:/sys/lasttool.g" M98 P"0:/macros/Config Scripts/Setup 3 to 1 Hotend" M29
I have a script that uses conditional code to clear out tools, fans, and heaters as well as de-energizing my relays (stepper bank switch).
;echo "check temperature" while iterations < #sensors.analog if sensors.analog[iterations] != null && sensors.analog[iterations].lastReading > 32 && sensors.analog[iterations].name != "PS" if sensors.analog[iterations].name != "Bed" abort "Must wait for tool head to cool down!!!" ;echo "set relays" M18 E ; Turn off Steppers for extruders G4 P100 M42 P0 S0 ; Ensure relay 0 is off M42 P1 S0 ; Ensure relay 1 is off M42 P2 S0 ; Ensure relay 2 is off G4 P100 ;echo "remove all tools" while iterations < #tools ;echo "Removing Tool ", tools[iterations].name, "T", iterations M563 P{iterations} D-1 H-1 ;echo "disable heaters" while iterations < #heat.heaters if heat.bedHeaters[0] != iterations ;echo "Removing Temp Sensor and heater", sensors.analog[heat.heaters[iterations].sensor].name, "T", heat.heaters[iterations].sensor, "H", iterations M308 S{heat.heaters[iterations].sensor} P"nil" Y"nil" M950 H{iterations} C"nil" ;echo "remove fans" while iterations < #fans if fans[iterations] != null && fans[iterations ].name != "Power Supply" ;echo "Removing Fan", fans[iterations].name, "F", iterations M950 F{iterations} C"nil" M30 "0:/sys/lasttool.g"
-
RE: Maximum number of axis?
@dc42 what about a binary mode that uses a faster more native access to the hardware versus worrying about GCode at all? It could be variable or fixed length and would open a wide world of options.
It wouldn’t be standard GCode but who cares. This is for the computer to understand not humans.
Without the parser is could be crazy fast and even use less memory.
Yes new slicers would be needed (already covered for OP) but it could be optional or better still just transpile from GCode to this format in the duet or sbc.
-
RE: Print Frozen - RRF3.01-RC12 and DSF 2.2.0
Didn't fix the issue. I was working on my toolhead scripts this morning and RPi froze.
-
RE: Print Frozen - RRF3.01-RC12 and DSF 2.2.0
I haven't seen any more issues today... but I'll continue to keep and eye on it.
-Thanks,
Matt -
RE: Print Frozen - RRF3.01-RC12 and DSF 2.2.0
Okay, I'm back up and running after wedging a USB cable into my controller (guess I should have left some more room to work with.) I'll let it run and let you know how it goes.
-
RE: Print Frozen - RRF3.01-RC12 and DSF 2.2.0
I'm now getting "Timeout while waiting for transfer ready pin" when I try to start DuetControlServer in debug mode.
-
RE: Print Frozen - RRF3.01-RC12 and DSF 2.2.0
@dc42 How long should this update take to apply?
it's been saying "Please wait while updates are being installed... " for over 15 minutes.
-
RE: Print Frozen - RRF3.01-RC12 and DSF 2.2.0
BTW, I don’t know why but when running the debug console I can still access the webpage and ssh but crontab stopped running.
-
RE: Print Frozen - RRF3.01-RC12 and DSF 2.2.0
If you need more scripts or confits to troubleshoot this issue my entire configuration is available here https://github.com/mwwhited/MyMashedDuet/tree/master/duet3/dsf/sd
-
RE: Duet3 + Pi DWC freezing
After the above message the daemon.g did not running. I was able to recover it by hitting emergency stop. I didn't get the total lockup like I did yesterday where the UI stopped responding as well as I was not able to SSH into the RPi... but this time is different as I cam logging the messages to the console as you suggested above. I'm going to allow it to continue running overnight to see if it freezes entirely.
-
RE: Duet3 + Pi DWC freezing
The website is still responding and the SBC/RPi seems that's it's still running but I did get this message
[info] Starting macro file 0:/macros/Special Scripts/Check Relays on channel Daemon
[debug] Evaluating If block
[debug] Evaluating state.currentTool = -1 on channel Daemon
[debug] Evaluation result: state.currentTool = -1 = true
[debug] Evaluating If block
[debug] Evaluating 0 on channel Daemon
[debug] Evaluating 1 on channel Daemon
[debug] Evaluating 2 on channel Daemon
[debug] Evaluating state.gpOut[0].pwm > 0 || state.gpOut[1].pwm > 0 || state.gpOut[2].pwm > 0 on channel Daemon
[debug] Evaluation result: state.gpOut[0].pwm > 0 || state.gpOut[1].pwm > 0 || state.gpOut[2].pwm > 0 = false
[debug] End of If block
[debug] End of If block
[debug] Finished codes from macro file 0:/macros/Special Scripts/Check Relays
[info] Finished macro file 0:/macros/Special Scripts/Check Relays
[warn] Daemon: System macro daemon.g is requested but the stack is not empty. Discarding request.
[debug] Requesting update of key job, seq 1 -> 2
[debug] Daemon: ==> Finished starting code: M98 P"0:/macros/Special Scripts/Check Relays"
[debug] Completed M98 P"0:/macros/Special Scripts/Check Relays"
[debug] Daemon: Sent G4 S10 ; wait 10 seconds, remaining space 1504, needed 32
[debug] Daemon: -> Resumed suspended code
[debug] Updated key job
[warn] Daemon: System macro daemon.g is requested but the stack is not empty. Discarding request. -
RE: Duet3 + Pi DWC freezing
I am seeing this issue as well after updating to RC12. Here is my config.g I wasn't printing or anything at the time that my RPi froze. It was just idle for the entire day. I will leave it running with the console logging and see if I can catch any errors if it freezes again today.
; Configuration file for Duet 3 (firmware version 3) ; executed by the firmware on start-up ; ; Originally generated by RepRapFirmware Configuration Tool v2.1.8 on Mon Apr 13 2020 22:32:46 GMT-0400 (Eastern Daylight Time) ; update by Matthew Whited echo "Loading Configuration" ; Settings from old RAMPS based (3drag controler) board. ;M92 X79.83 Y78.65 Z397.23 E600.00 ;M203 X400.00 Y400.00 Z50.00 E100.00 ;M201 X5000 Y9000 Z100 E1000 ;M205 S0.00 B20000 X10.00 Z0.40 E5.00 ;M206 X0.00 Y0.00 Z0.00 ;M301 P63.00 I2.25 D440.00 ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Duet 3" ; set printer name ; Drives M569 P0.2 S1 ; physical drive 0.2 goes forwards M569 P0.1 S1 ; physical drive 0.1 goes forwards M569 P0.0 S1 ; physical drive 0.0 goes forwards M569 P0.3 S0 ; physical drive 0.3 goes backwards M569 P0.4 S0 ; physical drive 0.4 goes backwards M569 P0.5 S0 ; physical drive 0.5 goes backwards M584 X0.2 Y0.1 Z0.0 E0.3:0.4:0.5 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X79.83 Y78.65 Z397.23 E600.00 ; set steps per mm M566 X900.00 Y900.00 Z12.00 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X24000 Y24000 Z3000 E6000 ; set maximum speeds (mm/min) M201 X5000.00 Y5000.00 Z100.00 E1000.00 ; set accelerations (mm/s^2) M906 X2000 Y2000 Z2000 E2000 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X216 Y200 Z219 S0 ; set axis maxima ; Endstops M574 X1 S1 P"^io4.in+^io5.in" ; configure active-high endstop for low end on X via pin ^io4.in M574 Y1 S1 P"^io2.in+^io3.in" ; configure active-high endstop for low end on Y via pin ^io2.in M574 Z1 S1 P"^io0.in+^io1.in" ; configure active-high endstop for low end on Z via pin ^io0.in ;M574 X2 S1 P"^io5.in" ; configure active-high endstop for high end on X via pin ^io5.in ;M574 Y2 S1 P"^io3.in" ; configure active-high endstop for high end on Y via pin ^io3.in ;M574 Z2 S1 P"^io1.in" ; configure active-high endstop for high end on Z via pin ^io1.in ; https://duet3d.dozuki.com/Wiki/Gcode?revisionid=HEAD#Section_M950_Create_heater_fan_or_GPIO_servo_pin ; https://duet3d.dozuki.com/Wiki/Gcode?revisionid=HEAD#Section_M581_Configure_external_trigger ;M950 J1 C"^io5.in" ; X high end endstop ;M950 J2 C"^io3.in" ; Y high end endstop ;M950 J3 C"^io1.in" ; Z high end endstop ;M581 P1 T4 S1 C0 ;M581 P2 T2 S1 C0 ;M581 P3 T3 S1 C0 ; Z-Probe M558 P0 H5 F120 T6000 ; disable Z probe but set dive height, probe speed and travel speed M557 X15:195 Y15:195 S20 ; define mesh grid ; Heaters ;M308 S0 P"temp0" Y"thermistor" T100000 B4138 A"Bed" ; configure sensor 0 as thermistor on pin temp0 M308 S0 P"temp0" Y"thermistor" T100000 B3950 A"Bed" ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 ;HTF1 M308 S1 P"temp1" Y"thermistor" T100000 B4138 A"HTF1" ; configure sensor 1 as thermistor on pin temp1 M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M143 H1 S280 ; set temperature limit for heater 1 to 280C M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M950 F0 C"out7" Q500 ; create fan 0 on pin out7 and set its frequency M106 P0 S0 H-1 C"HTF1" ; set fan 0 value. Thermostatic control is turned off ;HTF2 M308 S2 P"temp2" Y"thermistor" T100000 B4138 A"HTF2" ; configure sensor 2 as thermistor on pin temp2 M950 H2 C"out2" T2 ; create nozzle heater output on out2 and map it to sensor 2 M143 H2 S280 ; set temperature limit for heater 2 to 280C M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M950 F1 C"out8" Q500 ; create fan 1 on pin out8 and set its frequency M106 P1 S0 H-1 C"HTF2" ; set fan 1 value. Thermostatic control is turned on ; Fan 3 M950 F2 C"out4" Q50 ; create fan 2 on pin out4 and set its frequency M106 P2 S0 H1-1 C"Fan 3" ; set fan 2 value. Thermostatic control is turned on ;Power Supply M308 S3 P"temp3" Y"thermistor" T100000 B4138 A"PS" ; configure sensor 3 as thermistor on pin temp3 for Power supply M950 F3 C"out9" Q500 ; create fan 3 on pin out9 and set its frequency M106 C"Power Supply" P3 H-1 S0.0 ; Power supply fan (3) linked to pwoer supply temp (3) Turn on at 35C ; Tools M563 P0 S"Direct Drive" D1 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C ;M563 P1 S"3mm Bowden" D0 H1 F0 ; define tool 1 ;G10 P1 X0 Y0 Z0 ; set tool 1 axis offsets ;G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C ;M563 P2 S"Dual 1.75 Bowden" D0:1 H1:2 F0 ; define tool 2 ;G10 P2 X0 Y0 Z0 ; set tool 2 axis offsets ;G10 P2 R0 S0 ; set initial tool 2 active and standby temperatures to 0C ;M568 P2 S1 ; enable mixing for tool 2 ;M567 P2 E0.5:0.5 ; set mixing ratios for tool 2 ;M563 P3 S"3 Color" D0:1:2 H1 F0 ; define tool 3 ;G10 P3 X0 Y0 Z0 ; set tool 3 axis offsets ;G10 P3 R0 S0 ; set initial tool 3 active and standby temperatures to 0C ;M568 P3 S1 ; enable mixing for tool 3 ;M567 P3 E0.33:0.33:0.34 ; set mixing ratios for tool 3 ;bank 1 M563 P10 S"Extruder 0" D0 H1 F0 ; define tool 4 G10 P10 X0 Y0 Z0 ; set tool 4 axis offsets G10 P10 R0 S0 ; set initial tool 4 active and standby temperatures to 0C M563 P11 S"Extruder 1" D1 H1 F0 ; define tool 4 G10 P11 X0 Y0 Z0 ; set tool 4 axis offsets G10 P11 R0 S0 ; set initial tool 4 active and standby temperatures to 0C M563 P12 S"Extruder 2" D2 H1 F0 ; define tool 4 G10 P12 X0 Y0 Z0 ; set tool 4 axis offsets G10 P12 R0 S0 ; set initial tool 4 active and standby temperatures to 0C ;bank 2 M563 P13 S"Extruder 3" D0 H1 F0 ; define tool 4 G10 P13 X0 Y0 Z0 ; set tool 4 axis offsets G10 P13 R0 S0 ; set initial tool 4 active and standby temperatures to 0C M563 P14 S"Extruder 4" D1 H1 F0 ; define tool 4 G10 P14 X0 Y0 Z0 ; set tool 4 axis offsets G10 P14 R0 S0 ; set initial tool 4 active and standby temperatures to 0C M563 P15 S"Extruder 5" D2 H1 F0 ; define tool 4 G10 P15 X0 Y0 Z0 ; set tool 4 axis offsets G10 P15 R0 S0 ; set initial tool 4 active and standby temperatures to 0C ; Custom settings are not defined ; Configure outpus for Relay Controller M950 P0 C"io6.out" M950 P1 C"io7.out" M950 P2 C"io8.out" ; Default all relays to off M42 P0 S0 M42 P1 S0 M42 P2 S0 M501 ; Execute config-override.g
-
Script to measure printer volume (max/min stops required)
I just use dual limit switches but I guess the same thing would work with stall guard
I wanted the ability to measure out my machines volume once I complete my interchangeable bed. If your max volume is larger you will need t o adjust the second M208 as well as the G1 H3. You can probably also get away with not having the second minimum homing step... I do this to ensure any minor overshoot on the high end doesn't skew anything.
G91 ; relative positioning M208 X0 Y0 Z0 S1 ; minimum to 0 M208 X250 Y250 Z250 S0 ; maximum to 250 ;home min M574 X1 Y1 Z1 S1 ; set low endstops G1 X-250 Y-250 Z-250 H1 F1800 ; Home to 0 "quickly" G1 X5 Y5 Z5 F360 ; back off endstops G1 X-250 Y-250 Z-250 H1 F360 ; Home to 0 "slowly" ; measure max M574 X2 Y2 Z2 S1 ; set high endstops G1 X5 Y5 Z5 F360 ; back off endstops G1 X300 Y300 Z300 H3 F1800 ; measure XYZ G1 X-5 Y-5 Z-5 F360 ; back off endstop ;home min M574 X1 Y1 Z1 S1 ; set low endstop G1 X-250 Y-250 Z-250 H1 F1800 ; Home to 0 "quickly" G1 X5 Y5 Z5 F360 ; back off endstop G1 X-250 Y-250 Z-250 H1 F360 ; Home to 0 "slowly" G90 ; absolute positioning G0 X{move.axes[0].max/2} Y{move.axes[1].max/2} Z{move.axes[2].max/2} F20000 ; move center M208
-
RE: Duet 2/3 POE (power over ethernet)
How long is your intended cable run. To get the required wattage you may need to run 24v or 48v over PoE and step it back down to the correct voltage at the far end. The resistance of 26/28 gauge Ethernet cable adds up really fast.
FYI, even at 10 feet of cable you will lose around 25% of your voltage if you run 5v. https://www.calculator.net/voltage-drop-calculator.html
48V at 2A will still have line loss of nearly 3 volts but just might get you the required wattage before turning Ethernet cable into a fuse. (AKA fire)
You will need higher voltage or thicker wire. Home running extension cords for AC power supplies would be much better.
-
RE: SBC Temperature
The is more info from the SBC that would be nice to have in the object model: CPU load, memory usage, number of processes, temperture, I/O utilitization and maybe even GPIO.
BTW,
6 stepper drivers, 9 limit switches, 3 relay controls, 3 heaters, 4 fans, 4 thermistors.
... I'm not done abusing this machine yet. (It does print much better, faster and quiter as well as supports many more options than it's old Marlin based controller.
I may be able to reclaim 3 of the limit switches by configuring them in NC loops versus direct connections. As well as adding the PT100/MAX31865 could get more ADC at a fairly reasonable price point... none of that answers the question if it would be possible to get SBC info into the OM, DSF, or DWC.
-
RE: SBC Temperature
@bearer said in SBC Temperature:
I would argue a insufficiently cooled Pi leading to issues controlling the Duet would most certainly warrant calling it critical.
I simply meant time critical in the real time process sense. It is obvious the RPi is literally critical as if it halts the print halts.
Even the fan controller for my power supply in coded in a 10 second loop within daemon.g versus being thermostatic. (I only like the cycle curve caused by trying to maintain a temperature with the built in control.) I am also now out of temp inputs as I have two dedicated to my head and one on the bed... and I’m not spending over $100 for any flavor of expansion just to temperature control a fan.
If I want/need that 4th sensor back for my CNC/printer I will look into exposing more IO from the RPi and moving the fan control over there.
Yes, I know I could look as the SPI based ADC for thermal control and that may be an option. As well I realize the Duet3 is probably more that powerful to add a few more sensors and fans but ... this entire thread was intended to see about getting the SBC MCU Temperature at least in the UI if not the object model.
-
RE: SBC Temperature
@ChrisP said in SBC Temperature:
Which Pi do you have?
Pi 3b+. While I don’t like seeing 50C+ temperatures so I will still play with cooling, it seems my Pi was just crashing from whatever the bug was in the the SBC code. I updated as was suggested in the SBC Freeze thread and it seems stable now.
@bearer said in SBC Temperature:
Given the possibility of sufficient IO i suppose you could run a thermistor and a fan from the Duet and solve both the displaying and controlling of the temperature?
I did this for my power supply and am considering it... but seeing that the RPi is already instrumented on its own, and has available I/O it would be cool to have those available for lower priority controls and let the Duet continue to do all the more critical real-time stuff. (As well as not wasted limited real-time I/O on functions not directly related to CNC.)