RRF 3.2-RC1 - JSON ObjectModel errors and stepper failure
-
Printer jerks as only one of two CoreXY steppers move. It happens right on the G0 X500.
Using nested macros for my homing.[debug] Processing G0 X500 F30000 ; Wipe Backwards, and move away from other tools, incase next move is Y only. (To tool coordinates) [debug] Requesting update of key sensors, seq 4 -> 6 [debug] Waiting for finish of G0 X500 F30000 ; Wipe Backwards, and move away from other tools, incase next move is Y only. (To tool coordinates) [debug] HTTP: Sent G0 X500 F30000 ; Wipe Backwards, and move away from other tools, incase next move is Y only. (To tool coordinates), remaining space 952, needed 40 [error] Failed to merge JSON: {"key":"sensors","flags":"d99vn","result":{"analog":[{"lastReading":21.5,"name":"Bed Heater","type":"thermistor"},{"lastReading":22.1,"name":"T0 Heater","type":"remote"},{"lastReading":21.9,"name":"T1 Heater","type":"remote"},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,{"lastReading":23.8,"name":"Bed Failsafe","type":"thermistor"}],"endstops":[{"triggered":false,"type":"inputPin"},{"triggered":false,"type":"inputPin"},null,{"triggered":true,"type":"inputPin"}],"filamentMonitors":[],"gpIn":[{"value":1},{"value":0},{"value":0},{"value":1},null,null,{"value":0},{"value":1},null,null,null,null,null,null,{"value":0}],"probes":[{"calibrationTemperature":25.0,"deployedByUser":false,"disablesHeaters":false,"diveHeight":5.0,"lastStopHeight":null,"maxProbeCount":2,"offsets":[0,0],"recoveryTime":0,"speed":4.2,"temperatureCoefficient":0,"temperatureCoefficients":[0,0],"threshold":500,"tolerance":0.020,"travelSpeed":400.0,"triggerHeight":-1.000,"type":8,"value":[0]}]}} System.Text.Json.JsonException: Failed to deserialize property [Probe].LastStopHeight (type Single) from JSON null ---> System.Text.Json.JsonException: The JSON value could not be converted to System.Single. Path: $ | LineNumber: 0 | BytePositionInLine: 4. ---> System.InvalidOperationException: Cannot get the value of a token type 'Null' as a number. at System.Text.Json.Utf8JsonReader.TryGetSingle(Single& value) at System.Text.Json.Utf8JsonReader.GetSingle() at System.Text.Json.Serialization.Converters.JsonConverterSingle.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) at System.Text.Json.JsonPropertyInfoNotNullable`4.OnRead(ReadStack& state, Utf8JsonReader& reader) at System.Text.Json.JsonPropertyInfo.Read(JsonTokenType tokenType, ReadStack& state, Utf8JsonReader& reader) at System.Text.Json.JsonSerializer.HandleNull(Utf8JsonReader& reader, ReadStack& state) at System.Text.Json.JsonSerializer.ReadCore(JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& readStack) --- End of inner exception stack trace --- at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& readStack, Utf8JsonReader& reader, Exception ex) at System.Text.Json.JsonSerializer.ReadCore(JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& readStack) at System.Text.Json.JsonSerializer.ReadCore(Type returnType, JsonSerializerOptions options, Utf8JsonReader& reader) at System.Text.Json.JsonSerializer.Deserialize(String json, Type returnType, JsonSerializerOptions options) at DuetAPI.ObjectModel.ModelObject.UpdateFromJson(JsonElement jsonElement, Boolean ignoreSbcProperties) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetAPI/ObjectModel/Base/ModelObject.cs:line 321 --- End of inner exception stack trace --- at DuetAPI.ObjectModel.ModelObject.UpdateFromJson(JsonElement jsonElement, Boolean ignoreSbcProperties) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetAPI/ObjectModel/Base/ModelObject.cs:line 336 at DuetAPI.ObjectModel.ModelCollectionHelper.UpdateFromJson(IList list, Type itemType, JsonElement jsonElement, Boolean ignoreSbcProperties) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetAPI/ObjectModel/Base/ModelCollection.cs:line 243 at DuetAPI.ObjectModel.ModelObject.UpdateFromJson(JsonElement jsonElement, Boolean ignoreSbcProperties) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetAPI/ObjectModel/Base/ModelObject.cs:line 291 at DuetAPI.ObjectModel.ObjectModel.InternalUpdateFromModel(String key, JsonElement jsonElement, Boolean ignoreSbcProperties) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetAPI/ObjectModel/ObjectModel.cs:line 175 at DuetAPI.ObjectModel.ObjectModel.UpdateFromFirmwareModel(String key, JsonElement jsonElement) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetAPI/ObjectModel/ObjectModel.cs:line 139 at DuetControlServer.Model.Updater.Run() in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/Model/Updater.cs:line 170 [debug] Completed G1 H2 Z+5 F6000 ; Lift z so we don't crash [debug] Waiting for execution of M400 ; Wait for current moves to finish (macro code) [debug] Processing M400 ; Wait for current moves to finish [debug] Completed G90 ; Return to absolute [debug] Waiting for execution of ; Check so the tool is mounted steady. (macro code) [debug] Completed ; Set Z Probe settings [debug] Completed M558 P8 C"1.io2.in" F250 H5 T24000 A2 S0.02 ; Set the pin of Z probe [debug] Completed G31 Z-1 ; Set probe height as -1 so 0 is 1mm below the probe [debug] Completed M400 ; Wait for current moves to finish [debug] HTTP: Suspending code G53 G0 X500 Y515 F20000 ; Rapid to the approach position with tool-0. (park_x, park_y - offset). Y next to make a square move. [debug] HTTP: Suspending code G53 G0 X590 F30000 ; Fast Move to the pickup position with tool. [debug] HTTP: Suspending code G53 G0 X598 F3000 ; Slow Move to the pickup position with tool-0. [debug] HTTP: Suspending code M98 P"/sys/custom/tool_lock.g" ; Lock the tool [debug] HTTP: Suspending code G53 G0 X580 F6000 ; Wipe Backwards, and move away from other tools, incase next move is Y only. [debug] HTTP: Suspending code G0 X500 F30000 ; Wipe Backwards, and move away from other tools, incase next move is Y only. (To tool coordinates) [info] Starting macro file /sys/custom/EndStop_X-Max_Deactivate.g on channel HTTP [debug] HTTP: ==> Starting code M98 P"/sys/custom/EndStop_X-Max_Deactivate.g" ; Don't use the X max as EmergencyStop. [debug] Waiting for finish of M400 ; Wait for current moves to finish [debug] Processing ; Check so the tool is mounted steady. [debug] Waiting for finish of ; Check so the tool is mounted steady. [debug] Completed M208 X600 ; Set axis software limits and min/max switch-triggering positions. Extended with tools [debug] Waiting for execution of M950 J14 C"nil" ; Don't use the input pin on io4 on the exp1 board as X max. (macro code) [debug] Processing M950 J14 C"nil" ; Don't use the input pin on io4 on the exp1 board as X max. [debug] Waiting for finish of M950 J14 C"nil" ; Don't use the input pin on io4 on the exp1 board as X max. [debug] HTTP: Sent M950 J14 C"nil" ; Don't use the input pin on io4 on the exp1 board as X max., remaining space 1492, needed 44 [debug] Completed M950 J14 C"nil" ; Don't use the input pin on io4 on the exp1 board as X max. [debug] Finished codes from macro file /sys/custom/EndStop_X-Max_Deactivate.g [info] Finished macro file /sys/custom/EndStop_X-Max_Deactivate.g [debug] HTTP: ==> Unfinished starting code: M98 P"/sys/custom/EndStop_X-Max_Deactivate.g" ; Don't use the X max as EmergencyStop. [debug] HTTP: Disposing macro file /sys/custom/EndStop_X-Max_Deactivate.g [debug] Completed M98 P"/sys/custom/EndStop_X-Max_Deactivate.g" ; Don't use the X max as EmergencyStop. [debug] HTTP: Sent G53 G0 X500 Y515 F20000 ; Rapid to the approach position with tool-0. (park_x, park_y - offset). Y next to make a square move. , remaining space 1488, needed 48 [debug] HTTP: -> Resumed suspended code [debug] HTTP: Sent G53 G0 X590 F30000 ; Fast Move to the pickup position with tool., remaining space 1448, needed 40 [debug] HTTP: -> Resumed suspended code [debug] HTTP: Sent G53 G0 X598 F3000 ; Slow Move to the pickup position with tool-0., remaining space 1408, needed 40 [debug] HTTP: -> Resumed suspended code [debug] HTTP: Sent M98 P"/sys/custom/tool_lock.g" ; Lock the tool, remaining space 1352, needed 56 [debug] HTTP: -> Resumed suspended code [debug] HTTP: Sent G53 G0 X580 F6000 ; Wipe Backwards, and move away from other tools, incase next move is Y only. , remaining space 1312, needed 40 [debug] HTTP: -> Resumed suspended code [debug] HTTP: Sent G0 X500 F30000 ; Wipe Backwards, and move away from other tools, incase next move is Y only. (To tool coordinates), remaining space 1272, needed 40 [debug] HTTP: -> Resumed suspended code [debug] HTTP: Sent M400 ; Wait for current moves to finish, remaining space 1248, needed 24 [debug] Requesting update of key inputs, seq 20 -> 21 [debug] Cancelled ; Check so the tool is mounted steady. [info] Aborted macro file tpost49.g [debug] Cancelled G53 G0 X580 F6000 ; Wipe Backwards, and move away from other tools, incase next move is Y only. [debug] Cancelled ;Lock the tool [debug] Cancelled M98 P"/sys/custom/tool_lock.g" ; Lock the tool [debug] Completed G53 G0 X500 Y515 F20000 ; Rapid to the approach position with tool-0. (park_x, park_y - offset). Y next to make a square move. [debug] Cancelled ; Move nozzle to purge area [debug] Cancelled M400 ; Wait for current moves to finish [debug] Cancelled G53 G0 X590 F30000 ; Fast Move to the pickup position with tool. [debug] Cancelled G0 X500 F30000 ; Wipe Backwards, and move away from other tools, incase next move is Y only. (To tool coordinates) [debug] Cancelled G53 G0 X598 F3000 ; Slow Move to the pickup position with tool-0. [debug] HTTP: Suspending code G53 G0 X580 F6000 ; Wipe Backwards, and move away from other tools, incase next move is Y only. [debug] HTTP: Suspending code G0 X500 F30000 ; Wipe Backwards, and move away from other tools, incase next move is Y only. (To tool coordinates) [debug] HTTP: Suspending code M400 ; Wait for current moves to finish [info] Starting macro file /sys/custom/tool_lock.g on channel HTTP [debug] Updated key inputs [debug] Requesting update of key move, seq 67 -> 68 [debug] HTTP: ==> Starting code M98 P"/sys/custom/tool_lock.g" ; Lock the tool [debug] Waiting for execution of ; Engage the toolchanger lock. RepRap Firmware V2.0.1 version. (macro code) [debug] Processing ; Engage the toolchanger lock. RepRap Firmware V2.0.1 version. [debug] Waiting for execution of G91 ; Set relative mode (macro code) [debug] Waiting for finish of ; Engage the toolchanger lock. RepRap Firmware V2.0.1 version. [debug] Processing G91 ; Set relative mode [debug] Waiting for execution of G0 U10 F9000 H0 ; Back off the limit switch with a small move (macro code) [debug] Waiting for finish of G91 ; Set relative mode [debug] Processing G0 U10 F9000 H0 ; Back off the limit switch with a small move [debug] Completed ; Engage the toolchanger lock. RepRap Firmware V2.0.1 version. [debug] Waiting for finish of G0 U10 F9000 H0 ; Back off the limit switch with a small move [debug] Waiting for execution of M400 (macro code) [debug] Processing M400 [debug] Waiting for finish of M400 [debug] Waiting for execution of M906 U1200 ; Set to 120% of rated current (macro code) [debug] Waiting for execution of ;G0 U200 X0.5 F9000 H1 ; Perform up to one rotation looking for the torque limit switch (macro code) [debug] Waiting for execution of G0 U200 F9000 H1 ; Perform up to one rotation looking for the torque limit switch (macro code) [debug] Waiting for execution of M400 (macro code) [debug] Waiting for execution of M906 U900 ; Set to 90% of rated current (macro code) [debug] Processing M906 U1200 ; Set to 120% of rated current [debug] Waiting for finish of M906 U1200 ; Set to 120% of rated current [debug] Processing ;G0 U200 X0.5 F9000 H1 ; Perform up to one rotation looking for the torque limit switch [debug] Waiting for finish of ;G0 U200 X0.5 F9000 H1 ; Perform up to one rotation looking for the torque limit switch [debug] Processing G0 U200 F9000 H1 ; Perform up to one rotation looking for the torque limit switch [debug] Waiting for finish of G0 U200 F9000 H1 ; Perform up to one rotation looking for the torque limit switch [debug] Processing M400 [debug] Waiting for finish of M400 [debug] Processing M906 U900 ; Set to 90% of rated current [debug] Waiting for finish of M906 U900 ; Set to 90% of rated current [debug] Waiting for execution of G90 ; Set absolute mode (macro code) [debug] Processing G90 ; Set absolute mode [debug] Waiting for finish of G90 ; Set absolute mode [debug] Finished codes from macro file tpost49.g [debug] HTTP: Sent G91 ; Set relative mode, remaining space 1516, needed 20 [debug] HTTP: Sent G0 U10 F9000 H0 ; Back off the limit switch with a small move, remaining space 1472, needed 44 [debug] HTTP: Sent M400, remaining space 1452, needed 20 [debug] HTTP: Sent M906 U1200 ; Set to 120% of rated current, remaining space 1420, needed 32 [debug] HTTP: Sent G0 U200 F9000 H1 ; Perform up to one rotation looking for the torque limit switch, remaining space 1372, needed 48 [debug] HTTP: Sent M400, remaining space 1348, needed 24 [debug] HTTP: Sent M906 U900 ; Set to 90% of rated current, remaining space 1316, needed 32 [debug] HTTP: Sent G90 ; Set absolute mode, remaining space 1292, needed 24 [debug] Updated key move [debug] Requesting update of key sensors, seq 6 -> 8 [debug] Completed G91 ; Set relative mode [debug] Completed G0 U10 F9000 H0 ; Back off the limit switch with a small move [error] Failed to merge JSON: {"key":"sensors","flags":"d99vn","result":{"analog":[{"lastReading":21.5,"name":"Bed Heater","type":"thermistor"},{"lastReading":22.0,"name":"T0 Heater","type":"remote"},{"lastReading":21.8,"name":"T1 Heater","type":"remote"},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,{"lastReading":23.7,"name":"Bed Failsafe","type":"thermistor"}],"endstops":[{"triggered":false,"type":"inputPin"},{"triggered":false,"type":"inputPin"},null,{"triggered":true,"type":"inputPin"}],"filamentMonitors":[],"gpIn":[{"value":1},{"value":0},{"value":0},{"value":1},null,null,{"value":0},{"value":1}],"probes":[{"calibrationTemperature":25.0,"deployedByUser":false,"disablesHeaters":false,"diveHeight":5.0,"lastStopHeight":null,"maxProbeCount":2,"offsets":[0,0],"recoveryTime":0,"speed":4.2,"temperatureCoefficient":0,"temperatureCoefficients":[0,0],"threshold":500,"tolerance":0.020,"travelSpeed":400.0,"triggerHeight":-1.000,"type":8,"value":[0]}]}} System.Text.Json.JsonException: Failed to deserialize property [Probe].LastStopHeight (type Single) from JSON null ---> System.Text.Json.JsonException: The JSON value could not be converted to System.Single. Path: $ | LineNumber: 0 | BytePositionInLine: 4. ---> System.InvalidOperationException: Cannot get the value of a token type 'Null' as a number. at System.Text.Json.Utf8JsonReader.TryGetSingle(Single& value) at System.Text.Json.Utf8JsonReader.GetSingle() at System.Text.Json.Serialization.Converters.JsonConverterSingle.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) at System.Text.Json.JsonPropertyInfoNotNullable`4.OnRead(ReadStack& state, Utf8JsonReader& reader) at System.Text.Json.JsonPropertyInfo.Read(JsonTokenType tokenType, ReadStack& state, Utf8JsonReader& reader) at System.Text.Json.JsonSerializer.HandleNull(Utf8JsonReader& reader, ReadStack& state) at System.Text.Json.JsonSerializer.ReadCore(JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& readStack) --- End of inner exception stack trace --- at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& readStack, Utf8JsonReader& reader, Exception ex) at System.Text.Json.JsonSerializer.ReadCore(JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& readStack) at System.Text.Json.JsonSerializer.ReadCore(Type returnType, JsonSerializerOptions options, Utf8JsonReader& reader) at System.Text.Json.JsonSerializer.Deserialize(String json, Type returnType, JsonSerializerOptions options) at DuetAPI.ObjectModel.ModelObject.UpdateFromJson(JsonElement jsonElement, Boolean ignoreSbcProperties) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetAPI/ObjectModel/Base/ModelObject.cs:line 321 --- End of inner exception stack trace --- at DuetAPI.ObjectModel.ModelObject.UpdateFromJson(JsonElement jsonElement, Boolean ignoreSbcProperties) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetAPI/ObjectModel/Base/ModelObject.cs:line 336 at DuetAPI.ObjectModel.ModelCollectionHelper.UpdateFromJson(IList list, Type itemType, JsonElement jsonElement, Boolean ignoreSbcProperties) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetAPI/ObjectModel/Base/ModelCollection.cs:line 243 at DuetAPI.ObjectModel.ModelObject.UpdateFromJson(JsonElement jsonElement, Boolean ignoreSbcProperties) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetAPI/ObjectModel/Base/ModelObject.cs:line 291 at DuetAPI.ObjectModel.ObjectModel.InternalUpdateFromModel(String key, JsonElement jsonElement, Boolean ignoreSbcProperties) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetAPI/ObjectModel/ObjectModel.cs:line 175 at DuetAPI.ObjectModel.ObjectModel.UpdateFromFirmwareModel(String key, JsonElement jsonElement) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetAPI/ObjectModel/ObjectModel.cs:line 139 at DuetControlServer.Model.Updater.Run() in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/Model/Updater.cs:line 170 [debug] Completed M906 U1200 ; Set to 120% of rated current [debug] Completed ;G0 U200 X0.5 F9000 H1 ; Perform up to one rotation looking for the torque limit switch [debug] Completed M400
-
M122 output would probably be of interest to Christian and DC42 as it will show if RRF crashed (ideally capture this as soon as possible after a problem). Probably worth zipping up your macro files and the start of the gcode file that you were printing and either uploading them here or making them available through some sort of file share.
-
I know, wanted to but it got lost when I couldn't post it because the message was too long.
Don't think it would have mattered anyway because the board was reset as it hit a endstop in a second or so. My endstops are configured as killswitches when not homing. This is to save my hardware from software glitches. General info is in my other post. -
@TypQxQ said in RRF 3.2-RC1 - JSON ObjectModel errors and stepper failure:
LastStopHeight
Thanks, I'll have a look and fix it as part of RC2.
-
I can let you have an interim build of RRF to fix that. Which Duet are you using?
-
Thank you!
I use a Duet3 6HC+3HC+SBC -
Are you able to verify if this is still an issue in RC2?
-
I included a fix for this in RC2 so it should no longer be a problem.