Clayton,
Eu sei que quando se trata de interpretação de códigos G a coisa não reage muito em tempo real, pois há prioridades que devem ser respeitadas.
O interpretador de movimentos escalona certos comandos que são executados primeiro, e deixa em segundo plano valores como o de avanço para depois, mas há coisas que já foram previstas.
Por exemplo no caso de um torno, tem como usinar com velocidade de corte constante ou seja, variando o diametro da peça varia a rotação da placa (de forma contínua) no intuito de manter a VC constante - e isso tem um código G específico (entenda esta variação nas operações de faceamento e não de cilindrar)
O avanço durante um corte deveria ser função fixa isto é - há uma faixa de velocidades de avanço ótima em função de cada material a ser cortado e que também depende da operação a ser executada e da ferramenta empregada - normalmente não se varia a velocidade de avanço durante um corte, então se há necessidade de um possivel ajuste, pode ser feito telo comando tradicional mesmo porque uma vez que se chegou ao resultado desejado não há necessidade de ajustes posteriores.
Por exemplo, quando se está fazendo alguma usinagem "nova", é comum ajustar os avanços nas primeiras peças durante as usinagens de testes - depois que se chegou a um resultado satisfatório, se editam os arquivos para que contenham as novas velocidades e pronto.
De qualquer forma, para se controlar alguma coisa "fora" da interpretação do Mach3 há como usar o "Brain" - através dele pode-se controlar a execução de diversas funções em paralelo.
Dá uma olhadela nesta página aqui, onde o autor aborda alguns assuntos que podem te dar uma luz para resolver a coisa.
http://henriksplace.se/cnc/cnc_mach3_modbus_3.htmlVoce pode selecionar um DRO do Mach3 - como o "FRO - Feed Override" e fazer variar seu valor "on the fly", talvez através de um potenciometro (e um circuito) ou mesmo através de alguma variável pré programada.