Линейные перемещения

INCT_LinearMotionFormer - интерфейс SprutCAM, который реализует функциональность по упрощению формирования линейных перемещений. Интерфейс возвращает функция INCT_CLData.CreateLinearMotionFormer.

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

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

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

До интерпретации управляющей программы:

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

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

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

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

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

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

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

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

  1. Выполнить проверку новых значений координат осей со старыми на предмет изменений.

  2. Если изменение было, то:

  3. Выполнить OpenMultiMotion.

  4. Проверить значение каждой оси на предмет изменения, и, если изменение положения инструмента по оси производилось, выполнить AddMotion.

  5. Выполнить CloseMultiMotion.

А для исполнения команд, требующих перемещения в физических координатах станка, дополнительно необходимо переключение типа перемещений в gtmPhysic.

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

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

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

Метод

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

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

SetGotoMode

Метод устанавливает тип формируемых перемещений.

Входной параметр: Mode (TNCGotoMode) - тип перемещения, см. описание OpenMultiMotion.

Если тип перемещения не задан методом, то имеет значение gtmTooltip.

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

Функция может использоваться при интерпретации G53 в ISO-кодах (устанавливать тип перемещения в gtmPhysic, затем возвращать в gtmTooltip).

Get_ClearGotoMode

Функция возвращает значение параметра ClearGotoMode (логический).

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

Параметр ClearGotoMode управляет автоматическим сбросом значения тип перемещения (см. SetGotoMode) в значение gtmTooltip. Сброс типа перемещения производится в InitBlock.

Как правило, действие команды G53 распространяется только на текущий кадр, поэтому целесообразно установить значение параметра ClearGotoMode в Истина. Таким образом, после интерпретации кадра с G53 (где тип перемещения будет установлен в gtmPhysic), тип перемещения сам будет возвращён в значение gtmTooltip при очередном выполнении InitBlock.

Set_ClearGotoMode

Метод устанавливает значение параметра ClearGotoMode.

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

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

InitAxisIndex

Метод добавляет индекс оси в список.

Входные параметры: Index (целое число) - индекс добавляемой в список оси.

Используется для добавления осей, связанных с осями станка в кинематической схеме. Как правило выполняется сразу после получения интерфейса (функция INCT_CLData.CreateLinearMotionFormer) в реализации метода INCT_Interpreter.Initialize интерпретатора.

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

ClearAxesIndexes

Очистить список индексов осей

Используется при смене инструмента, если названия осей, управляющих инструментом совпадают.

InitBlock

Метод запоминает во внутренний список текущие значения координат инструмента для всех осей из списка, сформированного при помощи InitAxisIndex. Если значение параметра ClearGotoMode Истина, то тип перемещения, задаваемый в SetGotoMode устанавливается в значение gtmTooltip.

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

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

SetAxisValue

Метод запоминает во внутренний список новые значения координат инструмента для заданной оси.

Входные параметры: Abs (логическое) - тип нового значения координаты, Истина - абсолютное значение, Ложь - относительное значение (относительно текущего значения координаты, см. InitBlock); AxisIndex(целое) - индекс оси; Value - (числовое) - новое значение.

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

Используется для сохранения нового значения во внутреннем списке с целью последующего формирования команды многокоординатного перемещения. Используется при интерпретации с INCT_Interpreter.Interprete.

MakeWorkpath

Метод сравнивает список текущих координат (сохранённых в InitBlock) с новыми координатами движения инструмента (сохранённых в SetAxisValue). Если изменение координат присутствовало, в траектории движения инструмента формируется команда многокоординатных перемещений по изменённым координатам осей (INCT_CLData.OpenMultiMotion, AddMotion, CloseMultiMotion).

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

INCT_GeomLinearMotionFormer - интерфейс SprutCAM, который реализует функциональность по упрощению формирования линейных перемещений. Интерфейс возвращает функция INCT_GeomCLData.CreateLinearMotionFormer.

Предназначение соответствует интерфейсу INCT_LinearMotionFormer, только для перемещений в геометрических осях. Перемещения формируются командой CutTo3D. Поэтому для формирования первого перемещения необходимо задать значения координат всех трёх осей.

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

Метод

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

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

ClearSpecifiedAxes

Метод очищает список заданных осей для первого перемещения.

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

Необходимо использовать в начале каждой операции. Рекомендуется использовать в реализации метода INCT_Interpreter.NextOperation.

InitBlock

Метод запоминает во внутренний список текущие значения 3-х координат инструмента.

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

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

SetAxisValue

Метод запоминает во внутренний список новые значения координат инструмента для заданной оси.

Входные параметры: Abs (логическое) - тип нового значения координаты, Истина - абсолютное значение, Ложь - относительное значение (относительно текущего значения координаты, см. InitBlock); AxisIndex (целое число) - индекс оси (1-3); Value - (вещественное значение) - новое значение.

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

Используется для сохранения нового значения во внутреннем списке с целью последующего формирования команды перемещения. Используется при интерпретации с INCT_Interpreter.Interprete.

MakeWorkpath

Метод сравнивает список текущих координат (сохранённых в InitBlock) с новыми координатами движения инструмента (сохранённых в SetAxisValue). Если изменение координат присутствовало, в траектории движения инструмента и заданы значения координат для 3-х осей, формируется команда перемещений (INCT_GeomLData.CutTo3D).

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