Responses on panelDue port

  • Hi David,

    I have a question about the responses to G/M-Codes you get on the panelDue port.

    For M408 S0/1, M20 S2, M117 I get a response on the port.
    If I disconnect the heater termistor, I get a response on the port, but not in json format ("message"), but plain text.

    But, if I send M27, M119, M665, M666 there is no reaction on the port. (I checked with logic analyser).
    Shouldn't be there a response on the the port?
    Is there something to add in config.g to make it happen?

    Testet on DuetWifi 1.15d, 1.15e and Duet 0.8.5 1.15e.
    M575 P1 B57600 S0


  • administrators

    The lack of json format when reporting some errors is a bug that is fixed in the forthcoming 1.16 release.

    You will get a response to M119, M665 etc. but only if you send those commands from PanelDue. Except for some error messages, responses are sent only to the same device that the command came from.

  • I send all mentioned commands on the panelDue port.

    As said: M408 etc is good with response, M119 etc there is nothing.

    I hooked up a logic analyser to RX and TX pins. Trigger is on RX, so I can see what is send to Duet.
    If I send M408 there is a response after some milliseconds on TX. After M119 is send, there is a nice high line on TX for the next 4s. Thats the time I can capture with 800kHz sample frequency.

  • administrators

    I just re-tested sending M27, M119 and M115 from PanelDue on a machine running 1.15e firmware. It works perfectly for me.

    Are you sending those commands from the PanelDue itself, or from some other equipment? Bear in mind that there is usually a M575 line in config.g that requires a valid checksum on commands received from the PanelDue port.

  • No, i dont have a PanelDue. I made a little monitor myself. You can see it here Its based on a Teensy 3.2 and a 2.8" display with touch.

    I adapted some code from the PanelDue source: json-parser (added code to receive no-json data lines), processing received values (only the structure) and sending commands with line-nr and checksum.
    It sends M408 with checksum and gets a response. Commands to set temperature are received on the Duet and acted on.
    Data in json-message and without json-format are displayed in a console-window.

    Yesterday I programmed a window to type in commands on a virtual keyboard and send them. At that time I had a M575 P1 B57600 S1 in config.g and the commands were send with checksum. If I send M140 S50 the bed will heat and G28 will home my delta. So commands are recognised. But M119 will get no response.

    For testing I set M575 P1 B57600 S0 in config.g and took out code to send line-nr and checksum.
    Behavior stays the same.
    I'm confused. Is the PanelDue sending some special characters? I searched in the source code but cound't find anything special.

    Some testing:
    I connected Duet via USB to my PC and opened a serial console for debugging.
    I send with my little Duetmonitor M111 P3 S1 and debugging is on. The message is also received on the Duetmonitor.
    Then I send M408 S0. The command is recognised and I have attached a screenshot from the logic analyser.
    Direct afterwards I send M119, and attached another screenshot, where you can see, that there is no response. In USB debugging both command are recognised.

    USB debugging:

    Debugging enabled for modules: GCodes(3)
    Debugging disabled for modules: Platform(0) Network(1) Webserver(2) Move(4) Heat(5) DDA(6) Roland(7) PrintMonitor(8) Storage(9)
    aux: N14 M408 S0*89
    aux: N15 M119*30
    Class GCodes spinning.

    Send M408 S0:

    Send M119:

    I attach my config.g so you can have a look if there is something interfering.

    ; Configuration file for Mini Kossel kit from Think3DPrint3D for Duet WiFi
    ; Communication and general
    M111 S0                             	; Debug off
    M550 PMiniKosselWiFi			; Machine name and Netbios name (can be anything you like)
    M551 Preprap                        	; Machine password (used for FTP)
    ;*** If you have more than one Duet on your network, they must all have different MAC addresses, so change the last digits
    M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xED 	; MAC Address
    ;*** Wifi Networking
    M552 S1					; Enable WiFi
    M555 P2                           	; Set output to look like Marlin
    M575 P1 B57600 S0			; Comms parameters for PanelDue
    G21                                 	; Work in millimetres
    G90                                	; Send absolute coordinates...
    M83                                 	; ...but relative extruder moves
    ; Axis and motor configuration
    M569 P0 S1				; Drive 0 goes forwards
    M569 P1 S1				; Drive 1 goes forwards
    M569 P2 S1				; Drive 2 goes forwards
    M569 P3 S0				; Drive 3 goes backwards (geared Extruder)
    M569 P4 S1				; Drive 4 goes forwards
    M574 X2 Y2 Z2 S1			; set endstop configuration (all endstops at high end, active high)
    ;M574 E1 S1
    ;*** The homed height is deliberately set too high in the following - you will adjust it during calibration
    M665 R101.56 L215.0 B85 H227.31		; set delta radius, diagonal rod length, printable radius and homed height
    M666 X0.05 Y0.14 Z-0.19			; put your endstop adjustments here, or let auto calibration find them
    M350 X16 Y16 E16 I1    			; Set 16x microstepping with interpolation
    M92 X80 Y80 Z80				; Set axis steps/mm
    M906 X1000 Y1000 Z1000 E800 I60		; Set motor currents (mA) and increase idle current to 60%
    M201 X1000 Y1000 Z1000 E1000		; Accelerations (mm/s^2)
    M203 X20000 Y20000 Z20000 E7200		; Maximum speeds (mm/min)
    M566 X800 Y800 Z800 E1200		; Maximum instant speed changes mm/minute
    ; Thermistors
    M305 P0 T100000 B3950 R4700 H0 L0	; Put your own H and/or L values here to set the bed thermistor ADC correction /H36
    M305 P1 T100000 B4388 R4700 H0 L0	; Put your own H and/or L values here to set the first nozzle thermistor ADC correction /H20
    M305 P2 T100000 B4388 R4700 H0 L0	; Put your own H and/or L values here to set the second nozzle thermistor ADC correction
    ;M570 S180				; Hot end may be a little slow to heat up so allow it 180 seconds
    ; Fans
    M106 I0 				; fans are not inverting
    M106 S0 				; Turn off Fan 0
    M106 P1 F100
    M106 P1 H-1 				; disable thermostatic mode for fan 1
    M106 P1 S0
    M106 P2 I1 H-1 F87			; disable thermostatic mode for LEDs, set PWM frequency, output inverted
    M106 P2 S0.15				; LEDs on at 15%
    ; Tool definitions
    M563 P0 D0 H1                       	; Define tool 0
    G10 P0 S0 R0                        	; Set tool 0 operating and standby temperatures
    ;*** If you have a single-nozzle build, comment the next 2 lines
    ;M563 P1 H2                      	; Define tool 1
    ;G10 P1 S0 R0                       	; Set tool 1 operating and standby temperatures
    M92 E695                       		; Set extruder steps per mm (100 / gemessener Vorschub * aktuelle Steps)
    ; Z probe and compensation definition
    ;*** If you have a switch instead of an IR probe, change P1 to P4 in the following M558 command
    M558 P5 X0 Y0 Z0			; Z probe is hall sensor and is not used for homing any axes
    G31 X0 Y0 Z-0.15 P500			; Set the zprobe height and threshold (put your own values here)
    ;*** If you are using axis compensation, put the figures in the following command
    M556 S78 X0 Y0 Z0                   	; Axis compensation here
    M208 S1 Z0.0				; set minimum Z
    M207 S3.5 F4500 Z0.1			; set hardware-retraction
    M572 D0 S0.15				; set extruder advance
    M307 H0 A87.3 C285.3 D8.3 B0		; set bed heater model
    T0					; select first hot end

  • administrators

    The response to M119 and similar commands that don't have responses in json format is sent in the message field of the next M408 response. To receive it, the M408 command must have the correct R parameter, based on the sequence number in the last M408 response.

  • David, many thanks for your patience. That was the hint in the right direction, and now I get the responses to show in the console window.
    I didn't know what in the g-code wiki is meant with: "non-trivial G-code response or error message".

    Thanks again,

Log in to reply