Господа!
Да, я новичок, но уж простите, новичок-новичку рознь. У меня станок и в точку смены инструмента и в G28 и в G30 и по-кругу и джигу пляшет (если скорость большую указать, то даже со стола норовит на пол и в пляс)

.
И я понимаю, что Вы тут все знатоки (уж точно круче меня) и совсем не обязаны мне отвечать и помогать. Но отвечаете и помогаете.
Именно по-этому я не задаю дурацких вопросов типа: "А почему М2 едет по прямой к точке смены, она же инструмент сломает и заготовку испортит?" На подобное способен ответить сам и не пишу об этом тут чтобы Вас не отвлекать по-пустякам.
Но приступать к "выпиливанию" не решаюсь пока я "плаваю" во всем этом хозяйстве. Понадобилось тут срочно вырезать деталь - я это сделал. За 1 день без подготовки и тестов. Сразу начисто. Только подачу подкрутить пришлось по-ходу. А так 6 колпаков для фонарей уже украшают эти самые фонари. Но, делая эти колпаки я понял, что не просто профан, а 0 полный. И начал грызть гранит.
В данный момент я обламываю свой мозг на компенсациях, калибровках и прочих выдумках предков. И вообще тестирую все встреченные мной G-коды. Хочу понять принцип. Найти стиль, если хотите. И, возможно, даже, задумку автора увидеть.
Вот, кажется мне, что смещение начала отсчета после калибровки (которые Геннадий так любезно предложил, да еще и с плюшкой в виде ini подмены М кода) не совсем правильно. Координатные системы для другого. А "для этого" - коррекция на длину инструмента. Вот она-то у меня и не работает, зараза. Тестировать-тестирует, коды выполняет - ничего не меняется.
А думалось мне, что, если, коррекция будет введена как положено, как праотцами задумывалось, то даже в абсолютных координатах станок не поедет обламывать инструмент об стол. (хотя, в абсолютных - это я многого хочу, но вдруг?).
Хотя, если вспомнить цех в НИИ в 1985-6 годах, где меня учили на фрезерах с ЧПУ работать и программу на перфоленте составлять, так вот там, если фреза калибровалась в "0", то даже с ручного пульта ее воткнуть в стол было нельзя. Так что может мечтаю я не о несбыточном.
Я пытался сократить свой вопрос до рамок темы и по-существу. По этой причине не указал всей программы и всего остального. Начинаю:
1. Задача: "погонять" станок в разные позиции, останавливаться в них по M2 (чтобы можно было отключить), периодически "заглядывать" к датчику и проверять калибровку.
2. Задача решена полностью двумя вложенными циклами, (один "гоняет", и в конце "прогона" вызывает измерение, а другой "накладной" вызывает предыдущий, но "просит" инструмент сменить через параметр функции) за одним исключением и одной особенностью. Все переменные, их разницы, суммы, распределения и статистика записываются в log-файл.
Исключение (собственно вопрос по-теме): Ввод коррекции на длину инструмента G43.1 Z[#5063+#<sacrificialTableWidth>] не делает ни фига и последующие G00 или G01 "едут" куда ехали. Не понимаю куда смотреть. (Не спрашивайте, включал ли я G53-59, да, по-всякому делал. Смена координат - проходит. Компенсация - нет)
Особенность (примечание, не совсем по-теме): Если указан код M06 TХ и новыйХ=старыйХ, то станок "долетает" до точки смены и сразу, без сообщений и остановок, начинает тестироваться. То, что он в точку смены не ездит - это был мой нубский промах. Датчик находится под точкой смены. По-сему я "думал", что если он не останавливается, то и не "ездит". Ездит, но без остановки.
Хотя, в этой связи возникает вопрос, а если я хочу инструмент Т109452 поменять на такойже, ну источился тот, программа длинная и все такое. Фигли он за меня думает? Сказано "менять" - значит менять. А он, вонючка, только дразницца.