Линейные перемещения
INCT_LinearMotionFormer - интерфейс CAM системы, который реализует функциональность по упрощению формирования линейных перемещений. Интерфейс возвращает функция INCT_CLData.CreateLinearMotionFormer.
Предназначение:
Процесс формирования линейных перемещений по кадру управляющей программы происходит следующим образом. Текст управляющей программы транслируется, т.е. разбирается на регистры со значениями. Регистры со значениями добавляются в список объектов для интерпретации. Объекты списка интерпретируются. При интерпретации объектов, по изменившимся значениям регистров, которые связаны с осями станка кинематической схемы, в траекторию движения инструмента (INCT_CLData) добавляется команда многокоординатных перемещений (INCT_CLData.OpenMultiMotion, AddMotion, CloseMultiMotion).
Если рассмотреть этот процесс детальнее, получим следующий набор действий.
До интерпретации управляющей программы:
- Получить список регистров, связанных с осями станка в кинематической схеме.
- Организовать хранение списка регистров с индексами осей.
Перед интерпретацией кадра:
- Получить текущие значения координат положения инструмента для всех осей, связанных с осями станка в кинематической схеме.
При интерпретации регистров:
- Получить новые значения регистров кадра, связанных с осями станка в кинематической схеме.
- Установить новые значения для всех изменённых регистров кадра, связанных с осями станка в кинематической схеме.
После интерпретации кадра или в процессе интерпретации, но после интерпретации всех регистров:
- Выполнить проверку новых значений координат осей со старыми на предмет изменений.
- Если изменение было, то:
- Выполнить OpenMultiMotion.
- Проверить значение каждой оси на предмет изменения, и, если изменение положения инструмента по оси производилось, выполнить AddMotion.
- Выполнить CloseMultiMotion.
А для исполнения команд, требующих перемещения в физических координатах станка, дополнительно необходимо переключение типа перемещений в gtmPhysic.
Действия из списка выше, выделенные наклонным шрифтом, реализованы в формирователе линейных перемещений (INCT_LinearMotionFormer). Использование формирователя позволяет упростить написание интерпретатора.
Рекомендуем создавать один формирователь линейных перемещений на весь цикл интерпретации управляющей программы. Создание производить при инициализации интерпретатора (INCT_Interpreter.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); Index (целое) - индекс оси; Value - (числовое) - новое значение. Выходных параметров нет. | Используется для сохранения нового значения во внутреннем списке с целью последующего формирования команды многокоординатного перемещения. Используется при интерпретации с INCT_Interpreter.Interprete. |
| MakeWorkpath | Метод сравнивает список текущих координат (сохранённых в InitBlock) с новыми координатами движения инструмента (сохранённых в SetAxisValue). Если изменение координат присутствовало, в траектории движения инструмента формируется команда многокоординатных перемещений по изменённым координатам осей (INCT_CLData.OpenMultiMotion, AddMotion, CloseMultiMotion). | Для формирования команды многокоординатного перемещения. Используется при интерпретации в INCT_Interpreter.Interprete, после интерпретации всех регистров (добавить в конец списка объектов для интерпретации). Либо в INCT_Interpreter.AfterInterprete. |
INCT_GeomLinearMotionFormer - интерфейс CAM системы, который реализует функциональность по упрощению формирования линейных перемещений. Интерфейс возвращает функция INCT_GeomCLData.CreateLinearMotionFormer.
Предназначение соответствует интерфейсу INCT_LinearMotionFormer, только для перемещений в геометрических осях. Перемещения формируются командой CutTo3d. Поэтому для формирования первого перемещения необходимо задать значения координат всех трёх осей.
Описание методов интерфейса:
| Метод | Описание метода | Описание использования |
|---|---|---|
| ClearSpecifiedAxes | Метод очищает список заданных осей для первого перемещения. Входных и выходных параметров нет. |
Необходимо использовать в начале каждой операции. Рекомендуется использовать в реализации метода INCT_Interpreter.NextOperation. |
| InitBlock | Метод запоминает во внутренний список текущие значения 3-х координат инструмента. Входных и выходных параметров нет. |
Необходимо использовать перед интерпретацией объектов, связанных с регистрами. Рекомендуется использовать в реализации метода INCT_Interpreter.BeforeInterprete. |
| SetAxisValue | Метод запоминает во внутренний список новые значения координат инструмента для заданной оси. Входные параметры: Abs (логическое) - тип нового значения координаты, Истина — абсолютное значение, Ложь — относительное значение (относительно текущего значения координаты, см. InitBlock); Index (целое число) - индекс оси (1-3); Value - (вещественное значение) - новое значение. Выходных параметров нет. |
Используется для сохранения нового значения во внутреннем списке с целью последующего формирования команды перемещения. Используется при интерпретации с INCT_Interpreter.Interprete. |
| MakeWorkpath | Метод сравнивает список текущих координат (сохранённых в InitBlock) с новыми координатами движения инструмента (сохранённых в SetAxisValue). Если изменение координат присутствовало, в траектории движения инструмента и заданы значения координат для 3-х осей, формируется команда перемещений (INCT_GeomCLData.CutTo3d). | Для формирования команды перемещения. Используется при интерпретации в INCT_Interpreter.Interprete, после интерпретации всех регистров (добавить в конец списка объектов для интерпретации). Либо в INCT_Interpreter.AfterInterprete. |