I think Mach4 has some issue presenting correct feedrate...
Be careful with blanket statements like that. Mach only "presents" what it is fed back to it from the motion controller. What are you changing? You are changing ESS parameters in the ESS plugin, not changing anything in Mach. Maybe ESS has some issue with feed rate reporting at frequencies higher than 160. But it isn't Mach. It could depend on the type of G code file you are running as well. If you are running a 3D file with CV and the ESS is reporting back to Mach faster that it was at the lower frequencies, then you will see more feed rate deviation. So is it a > 160 ESS problem or just a symptom of faster reporting? I don't know. But again, it isn't Mach.
Another issue is motor capability. Mach will cap the velocity of a move to the slowest motor in the move's capability. So if X is able to move at 300 inches a minute and Y is only able to move at 200 inches per minute, then Y will limit X to 200 inches a minute in an XY move, even if you set F300.
Remember, just because you specify F60 in the G code, that doesn't mean the machine is going to actually do that. CV and motor velocity capping can and will change it if the conditions warrant.
if the feed rate fluctuations are a symptom of the type of G code being run and you wish to see a more consistent feed rate, you may want to implement some sort of averaging scheme. One could do that in the PLC script. But if CV is causing the feed rate fluctuations, you would consistently see a lower feed rate average than what you specified with F in the G code. Think of F as a maximum feed rate allowed when using CV.
Steve