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

    (RRF3.2 beta) Ignore external trigger while processing gcode.

    Scheduled Pinned Locked Moved
    Gcode meta commands
    2
    4
    179
    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.
    • EducatingSavvasundefined
      EducatingSavvas
      last edited by EducatingSavvas

      I'd like to request for an R2 trigger when not printing /processing g-code - so the trigger is only available when idle or paused.

      I have written a conditional external triggers which toggle relay module on/off. The relay will be connected to a dust extractor and used when the machine is not processing g-code, for example to clean up. I need to figure out a way of disabling it while processing g-code, in case it is pressed and turns off the extraction during a job (which is a fire hazard). I wanted to propose a third R option on the M581 command which ignored the trigger while processing , pausing, resuming and stopping g-code.

      while state.status == "idle" | state.status == "paused"
      
      if state.gpOut[2].pwm==0
      	M7
      	M42 P8 S0.1
      
      elif state.status == "starting" | state.status == "pausing" | state.status == "resuming"
      	M7
      	M42 P8 S0.1
      
      else
      	M9
      	M42 P8 S0
      

      The above is what I wrote to get around the issue but starting seems not to behave as I expected - is "starting" a state? I also noticed there are moments such as when the tool is moving from one z height to another between passes that if I press the external trigger I can toggle to pin.

      deckingmanundefined 1 Reply Last reply Reply Quote 0
      • EducatingSavvasundefined
        EducatingSavvas
        last edited by

        @EducatingSavvas said in (RRF3.2 beta) Ignore external trigger while processing gcode.:

        while state.status == "idle" | state.status == "paused" if state.gpOut[2].pwm==0 M7 M42 P8 S0.1 elif state.status == "starting" | state.status == "pausing" | state.status == "resuming" M7 M42 P8 S0.1 else M9 M42 P8 S0

        Just an update that I've found a workaround for my problem described above. I've included the following in the daemon.g file:

        if state.status == "paused" | state.status == "pausing"
        	M950 J3 C"duex.e5stop"	; exp.e5stop
        	M581 T3 P3 S0 R0	; T3 toggle relay 1
        	M950 J4 C"duex.e6stop"	; exp.e6stop
        	M581 T4 P4 S0 R0	; T4 toggle relay 2
        
        elif state.status == "resuming" | state.status == "processing" | state.status == "halted"
        	M950 J3 C"duex.e5stop"	; exp.e5stop
        	M581 T3 P-1		; ignore T3 trigger
        	M950 J4 C"duex.e6stop"	; exp.e6stop
        	M581 T4 P-1		; ignore T4 toggle trigger
        
        else
        	M950 J3 C"duex.e5stop"	; exp.e5stop
        	M581 T3 P3 S0 R0	; T3 toggle relay 1
        	M950 J4 C"duex.e6stop"	; exp.e6stop
        	M581 T4 P4 S0 R0	; T4 toggle relay 2
        

        And simplified the triggers#.g files as such:

        if state.gpOut[2].pwm==0
        	M7
        	M42 P8 S0.1
        
        else
        	M9
        	M42 P8 S0
        

        An R2 option on the M581 command would still be a much simpler way of implementing this - which I'd like to keep on the Wishlist for future RRF updates.

        1 Reply Last reply Reply Quote 0
        • deckingmanundefined
          deckingman @EducatingSavvas
          last edited by

          @EducatingSavvas It's already been done. See the release note - new features for 3.2 beta 1 here https://github.com/Duet3D/RepRapFirmware/blob/v3-dev/WHATS_NEW_RRF3.md

          Ian
          https://somei3deas.wordpress.com/
          https://www.youtube.com/@deckingman

          EducatingSavvasundefined 1 Reply Last reply Reply Quote 0
          • EducatingSavvasundefined
            EducatingSavvas @deckingman
            last edited by EducatingSavvas

            @deckingman Ah I was going by the functionality on the gcode library. I just checked this, and R2 does works but I need to still be able to use the relays during a pause. Maybe there could be an R3 option where the trigger is only available when idle and in a paused state.

            This would be for turning on a dust extractor during a CNC pause - and manually cleaning up a mess, which is one of the reasons you pause on a CNC machine - in case anyone was wondering.

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