Перемещения по дуге

INCT_CircularMotionFormer - интерфейс SprutCAM, который реализует функциональность, позволяющую упростить формирования перемещений по дуге. Интерфейс возвращают функции INCT_CLData.CreateCircularMotionFormer, INCT_GeomCLData.CreateCircularMotionFormer.

Предназначение:

Процесс формирования перемещений по дуге по кадру управляющей программы происходит следующим образом. Текст управляющей программы транслируется, т.е. разбирается на регистры со значениями. Регистры со значениями добавляются в список объектов для интерпретации. Объекты списка интерпретируются. При интерпретации объектов, по изменившимся значениям регистров, которые связаны с осями станка кинематической схемы, в траекторию движения инструмента (INCT_CLData/INCT_GeomCLData) добавляется команда перемещений по дуге (INCT_CLData.AddCircle/INCT_GeomCLData.ArcTo3d).

Если рассмотреть этот процесс детальнее, получим следующий набор действий.

Перед интерпретацией кадра:

  1. Получить индексы осей X, Y, Z, для текущего инструмента или рабочего объекта.

  2. Организовать хранение индексов осей.

  3. Получить текущие значения координат положения инструмента для сохранённых в списке осей, отдельно для точки центра дуги.

При интерпретации регистров:

  1. Получить новые значения регистров кадра, связанных с точкой центра, конечной точкой, радиусом или углом, направлением, дуги.

  2. Установить новые значения для всех изменённых параметров дуги.

После интерпретации кадра или в процессе интерпретации, но после интерпретации всех регистров:

  1. Выполнить расчёт недостающих параметров, для использования в INCT_CLData.AddCircle/INCT_GeomCLData.ArcTo3d.

  2. Выполнить INCT_CLData.AddCircle/INCT_GeomCLData.ArcTo3d.

Действия из списка выше, выделенные наклонным шрифтом, реализованы в формирователе перемещений по дуге (INCT_CircularMotionFormer). Использование формирователя позволяет упростить написание интерпретатора.

Рекомендуем создавать один формирователь перемещений по дуге на весь цикл интерпретации управляющей программы. Создание производить при инициализации интерпретатора (INCT_Interprete.Initialize).

Описание методов интерфейса:

Метод

Описание метода

Описание использования

InitBlock

Метод запоминает во внутренний список индексы осей и текущие значения для координат X, Y, Z текущего инструмента или рабочего объекта.

Входных и выходных параметров нет.

Необходимо использовать перед интерпретацией объектов, связанных с регистрами. Рекомендуется использовать в реализации метода INCT_Interpreter.BeforeInterprete.

InitCenterPoint

Метод запоминает текущие значения координат X, Y, Z текущего инструмента или рабочего объекта как точку центра.

Входных и выходных параметров нет.

Необходимо использовать перед интерпретацией объектов, связанных с регистрами. Рекомендуется использовать в реализации метода INCT_Interpreter.BeforeInterprete или INCT_Interpreter.Interprete (если точка центра окружности задаётся не в текущем кадре).

SetConstructMode

Метод задаёт режим построения дуги.

Входной параметр: Mode (TNCConstructArcMode) - режим построения дуги:

caByCircleCenter - по направлению, конечной точке и центру дуги
caByRadius - по направлению, конечной точке и радиусу дуги

Выходных параметров нет.

Необходимо использовать при интерпретации регистров в реализации метода INCT_Interpreter.Interprete.






SetMode

Метод задаёт режим направления дуги.

Входной параметр: Mode (TNCCircularMode) - направление дуги:

cmCW - по часовой стрелке;
cmCCW - против часовой стрелки.

Выходных параметров нет.

SetEndPoint

Метод задаёт значение координаты одной из осей конечной точки.

Входные параметры: Abs (логическое) - тип значения конечной точки, Истина - абсолютное значение, Ложь - относительное значение (относительно текущего значения координаты, см. InitBlock); AxisType (TNCAxisType) - ось axX - ось X, axY - ось Y, axZ - ось Z; Value - (числовое) - значение координаты.

Выходных параметров нет.

SetEndPointByAngle

Метод задаёт значение конечной точки дуги по заданному углу относительно текущей точки.

Входные параметры: Plane (TNCPlaneType) - текущая плоскость ptXY - плоскость XY, ptYZ - плоскость YZ, ptZX - плоскость ZX; Angle - (числовое) - заданный угол дуги.

Выходных параметров нет.

Важно! Если выполняется построение полной окружности (угол дуги окружности равен 360 градусов), необходимо конечную точку траектории принудительно приравнять значению начальной (текущей) точке. Иначе, может возникнуть ситуация, в результате которой из за погрешности вычислений координат конечной точки в одной сотой или тысячной части числа, следующая команда перемещения окажется некорректной.

Это особенно актуально для тех команд, в которых начальная точка используется при расчете вспомогательных параметров, участвующих в построении траектории (например, при перемещении инструмента по дуге окружности, заданной координатами ее центра, конечной точки и направлением движения).

SetCenterPoint

Метод задаёт значение координаты одной из осей точки центра дуги.

Входные параметры: Abs (логическое) - тип значения точки центра, Истина - абсолютное значение, Ложь - относительное значение (относительно текущего значения координаты, см. InitCenterPoint); AxisType (TNCAxisType) - ось axX - ось X, axY - ось Y, axZ - ось Z: ; Value - (числовое) - значение координаты.

Выходных параметров нет.

SetRadius

Метод задаёт значение радиуса дуги.

Входной параметр: Value - (числовое) - значение радиуса.

Выходных параметров нет.

MakeWorkpath

Метод рассчитывает конечную точку дуги, если был введён угол (SetEndPointByAngle). В зависимости от режима построения дуги (SetConstructMode) рассчитывает недостающие параметры для AddCircle.

В траектории движения инструмента добавляет команду перемещения по дуге (INCT_CLData.AddCircle/INCT_GeomCLData.ArcTo3d) с рассчитанными ранее параметрами.

Для формирования команды перемещения по дуге. Используется при интерпретации в INCT_Interpreter.Interprete, после интерпретации всех регистров (добавить в конец списка объектов для интерпретации). Либо в INCT_Interpreter.AfterInterprete.