Sorry to bump an older thread, but I have the same problem. Using MSM 1.1 and mach 3.043.022
MSM does not do anything with DRO 39 (RPM) except place it on a screen (the run page). The value of the DRO is whatever it is set to my mach (or by a plug-in). I know that DRO 39 with stock Mach works as I can see it display RPM as my machines run. I also know the DRO works fine with MSM.
Issues only seem to crop up when a plug-in is involved that attempts to update DRO 39.
Now then, plug-ins tap into a very low level of Mach. What DROs a plug-in updates is totally up to the plug-in - if a plug in attempts to "take over" DRO 39, it has to cooperate with Mach to so so.
Normally, the value of DRO 39 can't be updated by any entity other than mach - consider this excerpt from the Mach programmers ref manual:
SetParam
Sub SetParam(ParamName As String, ParamVal As Double)
This function allows a number of Mach3 internal parameters (not to be confused with Gcode parameters) to be set. Each Mach3 parameter is identified by name. The parameter whose name is given by ParamName is set to the value given by ParamVal. Valid parameters are:
Parameter Name: RPMOverRide
Description: RPMOverRide When this parameter is set to 1, the True Spindle Speed DRO (OEM DRO 39) is made writeable, over-riding Mach3s normal calculation of True Spindle Speed.
This infers to me that mach itself always sets the value of DRO 39 - unless this interface is called (or some equivalent interface from the plug-in level). My suspicion is that there is a problem between the plug-in and mach - in that they both think they are updating the DRO - and since mach is not getting index pulses (as the pulses are only going to the vistaCNC hardware and hence to their plug-in), mach is setting the DRO 39 value to 0 (which is what mach sees as it's input signals).
Alas, I think this has to be referred to plug-in vendor for consideration as MSM does not use any plug-ins as part of it's implementation (a design decision made explicitly to avoid just this type of conflict).
My best theory is that this is a plug-in coding issue.
The VistaCNC manual states that some versions of mach won't let it update DRO 39 - this is why they have a configuration option to have the plug-in update a user space DRO (2222).
If you want you can modify the MSM run page to display DRO 2222 instead of 39 (and set the vistaCNC plug-in to update 2222 instead of 39). I suspect that you will then see RPM values from the plug-in in dro 2222.
That would be the same change/solution that the Huyaung guys use.
OK, let's go with the theory that both mach and the VistaCNC plug-in are trying to update DRO 39 and Mach wins. An interesting question to consider would be : Is there a simple way to get mach to not update DRO 39?
I can think of two experiments to do -
1) startup your system, open the mach script editor and enter this line:
SetParam(RPMOverRide, 1)
then execute the one line script.
Does this convince mach to let the DRO be updated by the VistaCNC plug-in?
2) I don't know for sure, but I'd expect that mach only updates the RPM dro if it has an index signal configured as an enabled input.
Look in ports and pins and see if you have the index signal enabled.
If it is enabled and mapped to a parallel port & pin, disable it (as you are not feeding the PP with an index signal anyhow).
Maybe this would get mach to stop updating DRO 39 and thus let the vistaNC plug-in control it.
The plug-in works fine with my other screen sets, just not MSM.
Plug-in gives 39 OEM, or any user DRO number (2222 default) as options.
May be nothing, but when I use the button editor, and expand, I don't see any reference showing DRO #39 set as a constant.
I don't really understand this comment.... the edit button script menu item in mach only applies to editing buttons with script in them. DRO 39 is not a button - it's a DRO - so I'm uncertain what you were trying to do or what you are referring to...?
Dave