Линейные перемещения
INCT_LinearMotionFormer - интерфейс SprutCAM, который реализует функциональность по упрощению формирования линейных перемещений. Интерфейс возвращает функция INCT_CLData.CreateLinearMotionFormer.
Предназначение:
Процесс формирования линейных перемещений по кадру управляющей программы происходит следующим образом. Текст управляющей программы транслируется, т.е. разбирается на регистры со значениями. Регистры со значениями добавляются в список объектов для интерпретации. Объекты списка интерпретируются. При интерпретации объектов, по изменившимся значениям регистров, которые связаны с осями станка кинематической схемы, в траекторию движения инструмента (INCT_CLData) добавляется команда многокоординатных перемещений (INCT_CLData.OpenMultiMotion, AddMotion, CloseMultiMotion).
Если рассмотреть этот процесс детальнее, получим следующий набор действий.
До интерпретации управляющей программы:
Получить список регистров, связанных с осями станка в кинематической схеме.
Организовать хранение списка регистров с индексами осей.
Перед интерпретацией кадра:
Получить текущие значения координат положения инструмента для всех осей, связанных с осями станка в кинематической схеме.
При интерпретации регистров:
Получить новые значения значения регистров кадра, связанных с осями станка в кинематической схеме.
Установить новые значения для всех изменённых регистров кадра, связанных с осями станка в кинематической схеме.
После интерпретации кадра или в процессе интерпретации, но после интерпретации всех регистров:
Выполнить проверку новых значений координат осей со старыми на предмет изменений.
Если изменение было, то:
Выполнить OpenMultiMotion.
Проверить значение каждой оси на предмет изменения, и, если изменение положения инструмента по оси производилось, выполнить AddMotion.
Выполнить 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. |