I re-ran the single stepping tests with KmotionCNC and am summarizing for my clarity.
With S code action set "Execute Prog" and specifying VAR as #113
- persist #113 gets updated on all G-code S parameters (regardless of G96/G97 state)
- if in G96 mode, persist #113 value is correctly converted to inches/second
- if in G97 mode, persist #113 value contains the correct RPM value
With S code action set "None" or "User Call Back"
- persist #113 does not get updated in G97 mode
- persist #113 is updated in G96, but the value is (in general) WRONG. It is a conversion of the previous S parameter, not the one on the G96 Block
- the above might not be obvious on repeated runs of a G code program that doesn't change S parameters or switch between G96/G97
I know how to modify my program to work correctly, so I am good here.
That being said, it sounds like you intend for all the CSS persists to get updated regardless of the callback action, so it seems there is a bug that could be ironed out in the setting of persists #113 when the S callback is set to "User Call Back" or "None". Not a big deal to me.
I think it would be a nice addition on the next update. Not a showstopper since persist 114 has the correct value.the GCode Current Block 'D' flag/value are not exported to .NET. Only P, Q, and R are. If you would like us to add this we will.
Here are a couple of more .NET things I have noticed over the years that you might consider for future releases:
Interpreter Tool, Setup and Vars file getters
Trying to read the Interpreter's current ToolFile, VarsFile, or SetupFile will crash a .NET application. I display these on my GUI (and so maintain my own local variables when I set them). It would be nice to be able to interrogate/verify from the interpreter.
Here is a quick code snippet that will reproduce. Also, if debugging, hovering the mouse over interp will cause the error when VS does reflection on the interpreter object.
Code: Select all
KM_Interpreter interp = kflop.Controller.CoordMotion.Interpreter;
string test = interp.ToolFile;
I made a 5axis machine a while back (4.35B). The current state of TCP/RTCP compensation is not exported to .NET.
To work-around, I exposed it and recompiled the libraries. In-general I would like to not have to maintain modified versions of the Dynomotion dll libraries (prevents me from upgrading the machine to newer releases when they are avialable).
5 axis Trajectory Planning - switch between G49 and G43.4
The details here are far from my memory now, but I needed to add a custom Mcode and callback (I used M117) when switching between the compensation modes. The callback code does nothing but immediately 'return 0'. This forced some synchronization between the look-ahead planner and the G49/G43.4 state. Without it, the motion planner would not honor the correct/switched compensation mode and would continue to generate motion with incorrect kinematics/offsets.
I understand that is not much to go-on, but I can did up some old notes if your interested.