Белегнар, учу быть не гуманитарием.
Между деталью в CAD-программе и деталью на столе лежит некоторый путь.
Из модели делают программу. Обычно на стандартных для этого средствах в стандартных терминах. Т.е. в g-code. Этот язык оперирует миллиметрами, системами координат, скоростями подачи и т.п. Короче, погугли разок, да?
И программу на этом языке еше время от времени просматривает и корректирует человек. И ему весьма понятны команды вида "поехать по оси Х на 2.2мм".
На каждом конкретном станке приводы разные. Иногда принципиально разные. Иногда одна и та же команда может интерпретироваться физически по разному, учитывая текущее и предыдущие состояния станка.
Поэтому есть еще один слой, который хорошую и красивую программу описания детали переводит в последовательность команд исполнительным механизмам КОНКРЕТНОГО станка. Например, миллиметр перемещения по оси Х может быть на одном станке 200 шагов, а на другом 1000.
Опять же, есть команда в ж-кодах, которая перемещает инструмент по окружности. На большинстве станков это перемещение будет происходит одновременным перемещением по двум независимым осям.
И будет производиться какая-то интерполяция, что дискретные шаги сложились в гладкую окружность. На разных станках (и даже на одинаковых с разными управляющими компьютерами) эта интерполяция СУЩЕСТВЕННО разная.
Да, можно сделать готовую стойку для конкретного станка, которая будет принимать программу, и сразу управлять станком (опять же "сразу" это тебе так будет казаться). Но если ты делаешь не готовый станок, а ШМ+контроллер, то у тебя это не выйдет.
Понимаешь, почему? Или тоже надо пояснять? Теперь-то тебе понятно, почему нужен промежуточный слой с промежуточным набором команд?
Ну и на, просвещайся: *ссылка удалена* За одно можешь погуглить, что такое BackEMF.