Sensorless/Stallguard WebUI graph tool

It is omitted because there are some bandwidth limitation on TMC UART.
You actually see it in debug output, as -1.

This is a complicated question. Good explanation of everything is available here:
https://www.analog.com/en/resources/app-notes/an-002.html
And partly in your driver datasheet.

I suspect you have to have problem, to try to fix it.
Generally we expect to see values > 0 when motor spins faster than minimal speed.
Then as noted in the guide above, you can try to apply force and got some idea of how it is behave under the load and when it stops.
Also, I would expect that SG output would rise with acceleration, stabilize around some value with constant speed and goes down with deceleration/force applied.

SG2 (SpreadCycle specific) != SG4 (StealthChop specific).
SG2 shifted by the SGT value, until your workable range is roughly 0..100, under your load.
SG4 just show the values, and you have to detect what the minimal value (SGTHRS) is meant as the full stop.
Simply speaking:

  • SGTHRS does not alter the output of SG4 (current, load, speed does).
  • SGT does alter the output of SG2 (current, voltage, load, speed also does).

Small suggestion here, I think it would be much handier, if you initially put your SG4 (TMC2209) motor in stealthchop, so you would always see the output.
As example:

[stepper_x]
stealthchop_threshold: 99999

or

SET_TMC_FIELD STEPPER=stepper_x FIELD=TPWMTHRS VALUE=1
# TMC2209 specific (IIRC)
SET_TMC_FIELD STEPPER=stepper_x FIELD=en_spreadcycle VALUE=0

Then you can simply play with thresholds (from klipper docs):

# SG2 drivers
SET_TMC_FIELD STEPPER=stepper_x FIELD=SGTHRS VALUE=<0..255>
# or  SG4 drivers
SET_TMC_FIELD STEPPER=stepper_x FIELD=sgt VALUE=<-64..0..63>
# Modify current as example:
SET_TMC_CURRENT STEPPER=stepper_x CURRENT=1.0

That would allow to not touch the printer.cfg at all, while you are working with that.

If it is not convenient to apply load/breaking force to the motor by hand:
you can also actually hit your limit without homing procedure, with something like:

# totally untested, this is just an example to show
# that it is possible that way
G91
SET_KINEMATIC_POSITION X=110
G1 X-110
// hit at -100
G1 X100
// repeat
SET_KINEMATIC_POSITION X=110
G1 X-110
G1 X100
...

Hope that helps.