Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    M291 messages ignored by PanelDue

    Scheduled Pinned Locked Moved Solved
    PanelDue
    7
    44
    2.4k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • cosmowaveundefined
      cosmowave @engikeneer
      last edited by

      @engikeneer ah ok. Thanks for the explanation.
      I'm asking me, what happens with this code:

      M291 P"Do you want to start the SELF TEST? Press OK to start or CANCEL to abort!" S3 R"SELF TEST"
      

      It's clear, when the user press ok, the macro will go on.
      But when the user press cancel? Is it like a return command from the macro?

      Mankati FSXT+, DeltaTowerV2, E3D MS/TC

      floblerundefined 1 Reply Last reply Reply Quote 0
      • floblerundefined
        flobler @wilriker
        last edited by

        @wilriker thank you, I will try that!

        1 Reply Last reply Reply Quote 0
        • floblerundefined
          flobler @cosmowave
          last edited by

          @cosmowave yeah, the {1} somehow is added when I copy/paste on the forum here. I figured out that it goes away is I make a "space" at the start of the empty line.

          If you press "CANCEL" the whole macro will be aborted.

          1 Reply Last reply Reply Quote 0
          • mfs12undefined
            mfs12 @wilriker
            last edited by

            @wilriker said in M291 messages ignored by PanelDue:

            @flobler For all other messages you have M400 before M291 but the last one the order is reversed. Try to put M400 before M291 there also. That should fix it.

            @fobler can you confirm this suggestion solved your issue and if so can you post an example? This would be helpful.

            Visit me on github at https://github.com/mfs12/

            floblerundefined 1 Reply Last reply Reply Quote 0
            • floblerundefined
              flobler @mfs12
              last edited by flobler

              @mfs12 @wilriker apologies it took me a while to get back to it. It does not really seem to solve this, no. I just tried it with a different macro where I had the same issue:

              ; filament_load.g
              ; called to load filament
              
              if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed ; not all axes are homed
                G28                                                                ; home all
              
              G90                 ; absolute positioning
              
              if move.axes[2].machinePosition < 100
              	G1 Z120 F1500   ; lift Z axis to 120mm
              	
              else
              	G91             ; relative positioning
              	G1 Z10 F1500 H2 ; lift Z axis by 10mm
              
              G90                 ; absolute positioning
              M116        	    ; wait for the temperatures to be reached
              M300 S300 P1000     ; beep sound when temperature is reached
              
              M291 P"Do you want to load FILAMENT now? Press OK to continue or CANCEL to abort!" S3 ; requires user input to start the filament loading procedure
              M291 P"Loading FILAMENT..." S1 T60                                                    ; message confirming that filament is being loaded
              
              M83                 ; set extruder to relative mode
              G1 E80 F400	        ; feed 80mm of filament fast
              G1 E50 F100	        ; feed 50mm of filament slow
              M400                ; wait for current moves to finish
              M292                ; clear messages
                                                                  
              while true
                  if iterations = 10
                     break
                  M291 P"Do you want to load more FILAMENT? Press OK to continue loading or CANCEL to abort!" S3 ; requires user input to start the filament loading procedure
                  M291 P"Loading FILAMENT..." S1 T60 ; message confirming that filament is being loaded
                  G1 E50 F100                        ; feed 50mm of filament slow
                  M400                               ; wait for current moves to finish
                  M292                               ; clear messages
              
              

              The messages that ask the user to confirm are properly displayed on the PanelDue. But the M291 "Loading FILAMENT..." S1 T60 messages are only displayed in DWC, not on the PanelDue. I tried both with or without M400 right before the message.

              Am I doing something wrong?

              Thank you!

              EDIT: I should add that I changed from ribbon cable to the included 4-pin wire to connect the PanelDue with the Mini 5+; this also did not seem to change the behavior

              I also am on the most recent firmwares for the Mini, DWC and the PanelDue

              1 Reply Last reply Reply Quote 0
              • PaulHewundefined
                PaulHew
                last edited by

                Since updating to 3.3.0 and the latest DWC, I am experiencing this also.

                I have a simple macro to shutdown my Pi nicely.
                If I initiate it from the PanelDue, I have to walk to my computer to confirm or cancel if I want to shutdown my Pi!

                Meant to mention this the other day when I saw it...

                Regards,
                Paul.

                RailCore II - Duet Mini + 1LC, Voron V0.1 - Duet Mini
                Voron 2.4 disassembled..... Waiting for the RailCore Mini....

                mfs12undefined 1 Reply Last reply Reply Quote 0
                • mfs12undefined
                  mfs12 @PaulHew
                  last edited by

                  @paulhew can you share the macro you are using?

                  Visit me on github at https://github.com/mfs12/

                  PaulHewundefined 1 Reply Last reply Reply Quote 0
                  • PaulHewundefined
                    PaulHew @mfs12
                    last edited by

                    @mfs12 As requested

                    M291 R"** SHUTDOWN **" P" Are you sure you want to SHUTDOWN the printer and Pi?" S3
                    
                    
                    M106 P10 S0
                    
                    M7722
                    

                    Also the cancel does not cancel, carries on and shutsdown!

                    P.

                    RailCore II - Duet Mini + 1LC, Voron V0.1 - Duet Mini
                    Voron 2.4 disassembled..... Waiting for the RailCore Mini....

                    mfs12undefined 1 Reply Last reply Reply Quote 0
                    • mfs12undefined
                      mfs12 @PaulHew
                      last edited by

                      @paulhew thanks for providing your script.

                      I tried to reproduce you issue. Unfortunately I didn't manage to get the error.

                      I checked it with following versions:

                      • RepRapFirmware 3.3
                      • PanelDueFirmware 3.2.11 and 3.3-rc2

                      in "normal" and "sbc" mode. I was also using slight modifed macros.

                      Although what i could experience is that sometimes the messages are delayed on the PanelDue by 1 to 3s compared to the web interface. But they always showed up.

                      Could you test if you problem persists with the current releases:

                      • https://github.com/Duet3D/RepRapFirmware/releases/tag/3.3
                      • https://github.com/Duet3D/PanelDueFirmware/releases/tag/3.3.0-rc2

                      Macros i used:

                      • test-m291-s0.g
                      • test-m291-s1.g
                      • test-m291-s2.g
                      • test-m291-s3.g
                      • test-m291-confirm.g
                      • test-m291-loop.g
                      • test-m291-move-confirm.g

                      Visit me on github at https://github.com/mfs12/

                      floblerundefined 1 Reply Last reply Reply Quote 0
                      • floblerundefined
                        flobler @mfs12
                        last edited by

                        @mfs12

                        I also just tried the macros you shared on the recent releases (RRF 3.3 and PanelDue 3.3.0-rc2).

                        Your test macros all worked fine but the macro I shared above is still not displaying all messages on PanelDue, some are only displayed on DWC.

                        This is the macro:

                        ; filament_load.g
                        ; called to load filament
                        
                        if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed ; not all axes are homed
                          G28                                                                ; home all
                        
                        G90                 ; absolute positioning
                        
                        if move.axes[2].machinePosition < 100
                        	G1 Z120 F1500   ; lift Z axis to 120mm
                        	
                        else
                        	G91             ; relative positioning
                        	G1 Z10 F1500 H2 ; lift Z axis by 10mm
                        
                        G90                 ; absolute positioning
                        M116        	    ; wait for the temperatures to be reached
                        M300 S300 P1000     ; beep sound when temperature is reached
                        
                        M291 P"Do you want to load FILAMENT now? Press OK to continue or CANCEL to abort!" S3 ; requires user input to start the filament loading procedure
                        M291 P"Loading FILAMENT..." S1 T60                                                    ; message confirming that filament is being loaded
                        
                        M83                 ; set extruder to relative mode
                        G1 E80 F400	        ; feed 80mm of filament fast
                        G1 E50 F100	        ; feed 50mm of filament slow
                        M400                ; wait for current moves to finish
                        M292                ; clear messages
                                                                            
                        while true
                            if iterations = 10
                               break
                            M291 P"Do you want to load more FILAMENT? Press OK to continue loading or CANCEL to abort!" S3 ; requires user input to start the filament loading procedure
                            M291 P"Loading FILAMENT..." S1 T60 ; message confirming that filament is being loaded
                            G1 E50 F100                        ; feed 50mm of filament slow
                            M400                               ; wait for current moves to finish
                            M292                               ; clear messages
                        
                        

                        The second M291 message "Loading FILAMENT...." is not being displayed on the PanelDue in both cases. I tried to put a M400 between the messages which also does not seem to help. It is being displayed in DWC correctly though.

                        Additionally when flashing the new PanelDue firmware (I was upgrading from 3.2.11) on my PanelDue 5i, the auto "erase and reset" does not work and I have to physically push the buttons. Is that expected? Should I open another thread on this?

                        1 Reply Last reply Reply Quote 0
                        • mfs12undefined
                          mfs12
                          last edited by

                          hey @flobler, sorry, but i have to tell that the usage of M292 is not allowed. This leads to the described "faulty" behavior.

                          For more details please refer to

                          • https://forum.duet3d.com/post/240796
                          • https://github.com/Duet3D/PanelDueFirmware/issues/146
                          mfs12 created this issue in Duet3D/PanelDueFirmware

                          closed M291 S0 and S1 are not displayed when M292 follows #146

                          Visit me on github at https://github.com/mfs12/

                          floblerundefined 2 Replies Last reply Reply Quote 1
                          • floblerundefined
                            flobler @mfs12
                            last edited by flobler

                            @mfs12 thanks for the tip but I just removed M292 and the behavior remains the same. Only the first M291 message is being displayed on both DWC and PanelDue. The following message ("Loading FILAMENT...") is only displayed in DWC.

                            Here is the updated macro:

                            ; filament_load.g
                            ; called to load filament
                            
                            if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed ; not all axes are homed
                              G28                                                                ; home all
                            
                            G90                 ; absolute positioning
                            
                            if move.axes[2].machinePosition < 100
                            	G1 Z120 F1500   ; lift Z axis to 120mm
                            	
                            else
                            	G91             ; relative positioning
                            	G1 Z10 F1500 H2 ; lift Z axis by 10mm
                            
                            G90                 ; absolute positioning
                            M116        	    ; wait for the temperatures to be reached
                            M300 S300 P1000     ; beep sound when temperature is reached
                            
                            M291 P"Do you want to load FILAMENT now? Press OK to continue or CANCEL to abort!" S3 ; requires user input to start the filament loading procedure
                            M291 P"Loading FILAMENT..." S1 T60                                                    ; message confirming that filament is being loaded
                            
                            M83                 ; set extruder to relative mode
                            G1 E80 F400	        ; feed 80mm of filament fast
                            G1 E50 F100	        ; feed 50mm of filament slow
                            M400                ; wait for current moves to finish
                                                                                
                            while true
                                if iterations = 10
                                   break
                                M291 P"Do you want to load more FILAMENT? Press OK to continue loading or CANCEL to abort!" S3 ; requires user input to start the filament loading procedure
                                M291 P"Loading FILAMENT..." S1 T60 ; message confirming that filament is being loaded
                                G1 E50 F100                        ; feed 50mm of filament slow
                                M400                               ; wait for current moves to finish
                            

                            Am I missing something still?

                            1 Reply Last reply Reply Quote 0
                            • floblerundefined
                              flobler
                              last edited by flobler

                              Actually after looking closer at this thread: https://forum.duet3d.com/topic/23189/m291-messages-are-not-always-displayed-in-macros/22

                              I can say that my machines are behaving similar, if I load filament from DWC, everything is working as expected and both messages are shown on DWC and PanelDie. The second messages on PanelDue are only missing if loading the filament via macro from PanelDue.

                              1 Reply Last reply Reply Quote 0
                              • floblerundefined
                                flobler @mfs12
                                last edited by flobler

                                @mfs12 @wilriker I am still seeing very inconsistent behaviour when using M291, especially with messages not being displayed on the PanelDue. Often for information type messages via S0 or S1, that indicate the printer is currently heating or loading or similar.

                                I upgraded to PanelDue Firmware 3.3 before I did the following tests (I am on 3.3 for both RRF and DWC on my Duet 3 Mini 5+ in standalone mode):

                                Note: All macros are initiated from the PanelDue

                                1. M291 S3, followed by M291 S0

                                M291 P"BED and EXTRUDER will be heated before the procedure starts! Press OK to start or CANCEL to abort!" S3 R"Z OFFSET CALIBRATION"
                                M291 P"Heating..." S0 R"Z OFFSET CALIBRATION"
                                

                                Both messages show on DWC and PanelDue.

                                2. M291 S3, followed by M291 S1

                                M291 P"BED and EXTRUDER will be heated before the procedure starts! Press OK to start or CANCEL to abort!"
                                M291 P"Heating..." S1 R"Z OFFSET CALIBRATION"
                                

                                Only the second message shows on both PanelDue and DWC, the first message is completely ignored.

                                3. M291 S3, followed by M291 S2

                                M291 P"BED and EXTRUDER will be heated before the procedure starts! Press OK to start or CANCEL to abort!"
                                M291 P"Heating..." S2 R"Z OFFSET CALIBRATION"
                                

                                Only the second message shows on both PanelDue and DWC, the first message is completely ignored.

                                4. M291 S3, followed by some additional steps, followed by M291 S0

                                M291 P"BED and EXTRUDER will be heated before the procedure starts! Press OK to start or CANCEL to abort!" S3 R"Z OFFSET CALIBRATION" ; requires user input to continue
                                
                                ; preparation
                                M104 S230                                                                                ; set extruder temperature to 230C
                                M140 S70                                                                                 ; set bed temperature to 70C
                                
                                if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed                     ; if not all axes are homed
                                  G28                                                                                    ; home all axes
                                else                                                                                     ; if all axes are homed
                                	G1 Z{sensors.probes[0].diveHeight} F360                                              ; move Z axis to probe dive height
                                
                                M561                                                                                     ; clear any bed transform
                                M290 R0 S0                                                                               ; clear babystepping
                                
                                G90                                                                                      ; absolute positioning
                                G1 X{(move.axes[0].min + move.axes[0].max)/2} Y{(move.axes[1].min + move.axes[1].max)/2} ; move X and Y axis to their center
                                G1 Z5                                                                                    ; move Z axis 5mm above the bed
                                
                                M564 S0 H0                                                                               ; allow movement beyond axis limits defined in config.g
                                
                                M291 P"Heating..." S0 R"Z OFFSET CALIBRATION"                                            ; message to confirm heating
                                G10 P0 S230                                                                              ; wait for extruder temperature to reach 230C
                                M190 S70                                                                                 ; wait for bed temperature to reach 70C
                                M400                                                                                     ; wait for current moves to finish
                                

                                The first message shows on both PanelDue and DWC, the second message only in DWC.

                                5. M291 S3, followed by some additional steps, followed by M291 S1

                                M291 P"BED and EXTRUDER will be heated before the procedure starts! Press OK to start or CANCEL to abort!" S3 R"Z OFFSET CALIBRATION" ; requires user input to continue
                                
                                ; preparation
                                M104 S230                                                                                ; set extruder temperature to 230C
                                M140 S70                                                                                 ; set bed temperature to 70C
                                
                                if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed                     ; if not all axes are homed
                                  G28                                                                                    ; home all axes
                                else                                                                                     ; if all axes are homed
                                	G1 Z{sensors.probes[0].diveHeight} F360                                              ; move Z axis to probe dive height
                                
                                M561                                                                                     ; clear any bed transform
                                M290 R0 S0                                                                               ; clear babystepping
                                
                                G90                                                                                      ; absolute positioning
                                G1 X{(move.axes[0].min + move.axes[0].max)/2} Y{(move.axes[1].min + move.axes[1].max)/2} ; move X and Y axis to their center
                                G1 Z5                                                                                    ; move Z axis 5mm above the bed
                                
                                M564 S0 H0                                                                               ; allow movement beyond axis limits defined in config.g
                                
                                M291 P"Heating..." S1 R"Z OFFSET CALIBRATION"                                            ; message to confirm heating
                                G10 P0 S230                                                                              ; wait for extruder temperature to reach 230C
                                M190 S70                                                                                 ; wait for bed temperature to reach 70C
                                M400                                                                                     ; wait for current moves to finish
                                

                                The first message shows on both PanelDue and DWC, the second message only in DWC.

                                6. M291 S3, followed by some additional steps, followed by M291 S2

                                M291 P"BED and EXTRUDER will be heated before the procedure starts! Press OK to start or CANCEL to abort!" S3 R"Z OFFSET CALIBRATION" ; requires user input to continue
                                
                                ; preparation
                                M104 S230                                                                                ; set extruder temperature to 230C
                                M140 S70                                                                                 ; set bed temperature to 70C
                                
                                if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed                     ; if not all axes are homed
                                  G28                                                                                    ; home all axes
                                else                                                                                     ; if all axes are homed
                                	G1 Z{sensors.probes[0].diveHeight} F360                                              ; move Z axis to probe dive height
                                
                                M561                                                                                     ; clear any bed transform
                                M290 R0 S0                                                                               ; clear babystepping
                                
                                G90                                                                                      ; absolute positioning
                                G1 X{(move.axes[0].min + move.axes[0].max)/2} Y{(move.axes[1].min + move.axes[1].max)/2} ; move X and Y axis to their center
                                G1 Z5                                                                                    ; move Z axis 5mm above the bed
                                
                                M564 S0 H0                                                                               ; allow movement beyond axis limits defined in config.g
                                
                                M291 P"Heating..." S2 R"Z OFFSET CALIBRATION"                                            ; message to confirm heating
                                G10 P0 S230                                                                              ; wait for extruder temperature to reach 230C
                                M190 S70                                                                                 ; wait for bed temperature to reach 70C
                                M400                                                                                     ; wait for current moves to finish
                                

                                The first message only shows in DWC, the second message shows on PanelDue and DWC.

                                This makes it really difficult to create self-explanatory macros for our users as we aim for them to be able to navigate the printer completely from the display on the printer. Without consistent messages I am not sure how to do that though.

                                Am I still missing an aspect of M291?

                                floblerundefined 1 Reply Last reply Reply Quote 1
                                • mfs12undefined
                                  mfs12
                                  last edited by

                                  @flobler thanks for the detailed report. It will help to examine this problem. It is on my agenda for paneldue-3.4. We also want clarify behavior. Although i can give an exact timeline yet.

                                  Visit me on github at https://github.com/mfs12/

                                  floblerundefined 1 Reply Last reply Reply Quote 1
                                  • floblerundefined
                                    flobler @mfs12
                                    last edited by

                                    @mfs12 Thank you! If you need anything from me, please do not hesitate to reach out 🙂

                                    oozeBotundefined 1 Reply Last reply Reply Quote 0
                                    • oozeBotundefined
                                      oozeBot @flobler
                                      last edited by

                                      @mfs12 @dc42 - We are also seeing this in certain scenarios. I've just thrown together a debug version of the PanelDue firmware with an additional debug message. Using the examples provided in this thread, the PanelDue is not receiving the messaging for the missing M291 calls, leading us to believe this is likely an issue in the firmware.

                                      To elaborate on the debug code, I REM'ed out all the existing debug calls in PanelDue.cpp to quiet the noise and added in a debug call within case rcvStateMessageBoxMessage of ProcessReceivedValue.

                                      1 Reply Last reply Reply Quote 3
                                      • mfs12undefined
                                        mfs12
                                        last edited by mfs12

                                        @oozeBot I can confirm this behavior. After debugging into it briefly it appears RRF doesn't inform PanelDue about new messages. But this needs better investigation.

                                        Visit me on github at https://github.com/mfs12/

                                        1 Reply Last reply Reply Quote 0
                                        • mfs12undefined
                                          mfs12
                                          last edited by

                                          Hey @flobler, @oozeBot and @PaulHew,

                                          I was working on the M291 issue. I think I found the solution. It can be previewed and tested in paneldue-3.4.0-pre1.

                                          Check https://forum.duet3d.com/topic/24889/paneldue-3-4-0-pre1-released

                                          Feedback from you would be very helpful.

                                          Visit me on github at https://github.com/mfs12/

                                          floblerundefined PaulHewundefined 2 Replies Last reply Reply Quote 2
                                          • floblerundefined
                                            flobler @mfs12
                                            last edited by flobler

                                            @mfs12 thank you very much. I will try to test it tonight or tomorrow and then report back to you.

                                            Would it be helpful to re-test what I had posted on the 24th?

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Unless otherwise noted, all forum content is licensed under CC-BY-SA