Bumping this thread because I ran into exactly the same issue as the OP. A DRO set to DRO Code "Spindle True RPM" just flashes erratically between 0 and the real RPM at a high rate. Looking in Register Diagnostics, the value coming back on modbus is nice and stable.
As a test, I did the following in the PLC script:
rc = mc.mcSpindleSetSensorRPM(inst,freq*60/100)
RPM, rc = mc.mcSpindleGetSensorRPM(inst)
scr.SetProperty('droTestRpm','Value',tostring(RPM))
I set the sensor RPM using the frequency read from the VFD, and then immediately read the sensor RPM back and use it to set the value of another DRO (which has no "DRO Code" selected). That DRO works fine, nice and stable, no flickering. This seems to support OP's theory that something in the background is erroneously stomping on the "Spindle True RPM" DRO.
Technically the test code above is a usable workaround for this issue, but it is a bit of a hack - it would be nice to understand what's really wrong here.