Разработка постпроцессоров
  • Разработка постпроцессоров
v20.0.1
Search Results for

    Show / Hide Table of Contents

    Массив GMA

    Массив GMA — это удобство sppx для обработки многоосевых перемещений MULTIGOTO: он представляет управляемые координаты станка (с их новыми/предыдущими значениями, флагами вывода и результатами приведения углов) в единой индексируемой структуре.

    Только sppx. Прямого аналога GMA в .NET нет. В .NET-постпроцессоре многоосевое перемещение читается из строго типизированной команды MULTIGOTO (ICLDMultiGotoCommand) — её коллекция Axes даёт каждую ось и значение — а работа с регистрами, которую GMA выполняет в sppx, делается через API регистров .NET. См. раздел Доступ из .NET команды MULTIGOTO.

    Доступ из sppx

    Используйте предопределённый массив GMA для удобной обработки команды многоосевого перемещения MULTIGOTO в технологической программе и в шаблоне команды. Массив GMA инициализируется непосредственно перед обработкой технологической команды MULTIGOTO.

    Каждый элемент массива GMA соответствует управляемой координате схемы станка. Элементы массива GMA могут добавляться вручную через интерфейс генератора постпроцессоров либо импортироваться напрямую из схемы станка CAM-системы.

    При необходимости координаты можно добавлять в массив GMA во время выполнения постпроцессора с помощью следующего синтаксиса оператора:

    GMA(<AxisName> {,<RegisterName>})
    

    Здесь AxisName — допустимое выражение, возвращающее строку. Имя новой координаты будет равно AxisName, используйте его для доступа к новому элементу. Необязательный параметр RegisterName — имя регистра, связанного с новой координатой.

    Пример

    GMA("AxisXPos")
    

    Используйте имя координаты для доступа к её свойствам GMA:

    GMA[<AxisName>].<Property>
    

    Или для шаблонов:

    <Axisname>.<Property>
    

    Здесь AxisName — допустимое строковое выражение, которое должно быть корректным именем координаты. В следующем примере имя координаты AxisXPos используется для доступа к текущему значению координаты:

    GMA["AxisXPos"].Vn ! Vn — текущее значение координаты
    

    Структура GMA

    Элемент массива GMA имеет следующую структуру:

    GMA[<AxisName>].OutFlag
    GMA[<AxisName>].Vn
    GMA[<AxisName>].Vp
    GMA[<AxisName>].Axis
    GMA[<AxisName>].Reg
    GMA[<AxisName>].TurnCount
    GMA[<AxisName>].Dir
    
    • GMA[<AxisName>].OutFlag — поле типа Integer, которому присваиваются значения 1 или 0. Используйте этот флаг для определения того, указана ли координата с именем AxisName в данной команде MULTIGOTO. GMA[<AxisName>].OutFlag имеет значение 1 (флаг установлен), если в данной команде MULTIGOTO есть координата с именем AxisName, иначе флаг равен 0.
    • GMA[<AxisName>].Vn — поле типа Real, значение которого — новое значение координаты AxisName, установленное командой MULTIGOTO. Используйте поле Vn для чтения или задания нового значения координаты.
    • GMA[<AxisName>].Vp — поле типа Real, содержащее значение координаты AxisName, назначенное предыдущей командой MULTIGOTO. Используйте поле Vp для чтения или задания предыдущего значения координаты.
    • GMA[<AxisName>].Axis — поле типа String, являющееся именем координаты и равное AxisName. Поле доступно только для чтения.
    • GMA[<AxisName>].Reg — поле типа String, значение которого — имя регистра, связанного с координатой. Поле доступно только для чтения.
    • GMA[<AxisName>].TurnCount — поле типа Integer, которому присваивается число полных оборотов поворотной оси. Поле доступно только для чтения.
    • GMA[<AxisName>].Dir — значение типа Integer, которому присваивается +1, если значение координаты возрастает, иначе устанавливается -1. Поле доступно только для чтения.

    Используйте поля TurnCount и Dir для обработки перемещения поворотных осей. CAM-система передаёт перемещения поворотных осей в абсолютных значениях, тогда как некоторые системы ЧПУ принимают для этих координат только значения в ограниченных диапазонах, например от 0º до 360º или от 180º до -180º. Используйте диалог Параметры осей станка для задания параметров границ и диапазонов поворотных осей. Если для данной координаты определено приведение углов, то при обработке команды MULTIGOTO система приведёт значение координаты Vn к заданному диапазону, присвоит полю TurnCount число полных оборотов координаты и установит знак поля Dir в зависимости от предыдущего (не приведённого) значения координаты.

    Ниже несколько примеров, иллюстрирующих, как система инициализирует свойства элементов массива GMA при обработке технологической команды MULTIGOTO. Пусть поворотная ось C (AxisCPos) привязана к значениям от 0º до 360º.

    1. Команда:
    MULTIGOTO COUNT 4, AxisXPos(18) 80, AxisYPos(20) 19.877,
    AxisZPos(22) -200, AxisCPos(24) 0
    

    Массив GMA для команды MULTIGOTO:

    Имя координаты OutFlag Vn Vp Axis Reg TurnCount Dir
    AxisXPos 1 80 -//-//- "AxisXPos" "X" -//-//- -//-//-
    AxisYPos 1 19.877 -//-//- "AxisYPos" "Y" -//-//- -//-//-
    AxisZPos 1 -200 -//-//- "AxisZPos" "Z" -//-//- -//-//-
    AxisCPos 1 0 -//-//- "AxisCPos" "C" -//-//- -//-//-

    Знак "-//-//-" означает, что значения свойств координат не могут быть определены, поскольку нет информации о предыдущей команде.

    1. Команда:
    MULTIGOTO COUNT 1, AxisCPos(24) 270
    

    Массив GMA для команды MULTIGOTO:

    Имя координаты OutFlag Vn Vp Axis Reg TurnCount Dir
    AxisXPos 0 80 80 "AxisXPos" "X" -//-//- -//-//-
    AxisYPos 0 19.877 19.877 "AxisYPos" "Y" -//-//- -//-//-
    AxisZPos 0 -200 -200 "AxisZPos" "Z" -//-//- -//-//-
    AxisCPos 1 270 0 "AxisCPos" "C" 0 +1
    1. Команда:
    MULTIGOTO COUNT 2, AxisZPos(22) 250, AxisCPos(24) -745
    

    Массив GMA для команды MULTIGOTO:

    Имя координаты OutFlag Vn Vp Axis Reg TurnCount Dir
    AxisXPos 0 80 80 "AxisXPos" "X" -//-//- -//-//-
    AxisYPos 0 19.877 19.877 "AxisYPos" "Y" -//-//- -//-//-
    AxisZPos 1 250 -200 "AxisZPos" "Z" -//-//- -//-//-
    AxisCPos 1 335 270 "AxisCPos" "C" 2 -1

    В последнем примере система применила приведение углов для координаты AxisCPos(C). Значение, переданное CAM-системой, "-745 º", приводится к диапазону от 0º до 360º по следующим правилам:

    TurnCount = |(Vn' - Vp') \ 360|
    TurnCount = |(-745 -270) \ 360| = 2
    Dir = Sgn(Vn'-Vp')
    Dir = Sgn(-745 -270) = -1
    Vn = Vn' - (Vn' \ 360)*360, if Vn' > 360
    Vn = Vn' - (Vn' \ 360)*360 + 360, if Vn' < 0
    Vn = -745 - (-745\360)*360 + 360 = 335
    

    Vn' — текущее не приведённое значение координаты, Vp' — предыдущее не приведённое значение координаты.

    Ниже приведён пример простой программы команды MULTIGOTO, использующей массив GMA:

    program MultiGoto
      ! Используйте поля GMA, чтобы присвоить
      ! соответствующим регистрам их новые значения
      if GMA["AxisXPos"].OutFlag>0 then
        X = GMA["AxisXPos"].Vn
      if GMA["AxisYPos"].OutFlag>0 then
        Y = GMA["AxisYPos"].Vn
      if GMA["AxisZPos"].OutFlag>0 then
        Z = GMA["AxisZPos"].Vn
      if GMA["AxisCPos"].OutFlag>0 then
        C = GMA["AxisCPos"].Vn
      ! Вывод сформированных значений в управляющую программу
      OutBlock
    end
    

    Сопутствующие ссылки

    • Предопределённые функции
    • Команда MULTIGOTO
    • Шаблоны
    • Функции и операторы доступа к CLData
    In this article