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

    Show / Hide Table of Contents

    FROM - Начальная точка

    Отображение команды

    Как команда отображается в списке команд CLData:

    FROM COUNT 5, MACHINE, X 0, Y 0, Z 254, A 0, C 0, GEOM X 10, Y 0, Z 194, NX 0, NY 0, NZ 1, NW 0, MSF 0, Time 0
    

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

    Доступ из sppx

    Обработчик: program From

    Параметр Массив CLD Имя CLD Описание
    X
    Y
    Z
    CLD[1]
    CLD[2]
    CLD[3]
    CLD.X
    CLD.Y
    CLD.Z
    Пространственные координаты исходной точки кончика инструмента относительно активной системы координат заготовки
    NX
    NY
    NZ
    NW
    CLD[4]
    CLD[5]
    CLD[6]
    CLD[7]
    CLD.NX
    CLD.NY
    CLD.NZ
    CLD.NW
    Ориентация системы координат инструмента в исходной точке относительно активной системы координат заготовки. Способ задания ориентации зависит от настройки в схеме станка. Это могут быть углы Эйлера в различных соглашениях, вектор нормали инструмента, кватернион или повёрнутый вектор.
    MSF CLD[8] CLD.MSF Флаги состояния станка (флипы). Актуально для роботов и станков, которые могут иметь несколько конфигураций физических осей для одной и той же пространственной позиции. См. описание в следующей таблице.
    Time CLD[9] CLD.Time Время перемещения.
    AxesCount CLD[10] CLD.AxesCount Количество физических координат станка, задействованных в этой команде.
    r1 CLD[11] Индекс оси с именем Axis1Pos в списке координат.
    Val1 CLD[12] Значение координаты станка Axis1Pos.
    r2 CLD[13] Индекс оси с именем Axis2Pos в списке координат.
    Val2 CLD[14] Значение координаты станка Axis2Pos.
    … … …
    rN CLD[2*N+9] Индекс оси с именем AxisNPos в списке координат.
    ValN CLD[2*N+10] Значение координаты станка AxisNPos.

    Параметры, доступные через оператор cmd

    TCLDFrom: ComplexType Команда координат исходной точки
    Axes: Array, Key="AxisID" cmd.Ptr["Axes"] - массив структур типа Axis. Одна команда может включать перемещение по нескольким осям, положение каждой из которых хранится в этом массиве.
    Axis: ComplexType cmd.Ptr["Axes"].Item[Index] или cmd.Ptr["Axes(AxisName)"] - отдельный элемент массива Axes. Содержит информацию о перемещении по одной оси станка. Доступ к элементам массива возможен как по индексу, так и по ключевому полю. Здесь AxisName - значение ключевого поля, которое должно совпадать со значением поля AxisID.
    AxisID: String cmd.Str["Axes(AxisName).AxisID"] - идентификатор оси станка, для которой задана новая позиция. Определяется схемой станка.
    Value: Double cmd.Flt["Axes(AxisName).Value"] - новая позиция оси станка, в которую она перемещается.
    Pos5D: ComplexType cmd.Ptr["Pos5D"] - структура, содержащая координаты, определяющие конечное положение инструмента в пространстве. Определяет не только положение настроечной точки инструмента (поля X, Y и Z - декартовы координаты), но и ориентацию инструмента относительно текущей системы координат (поля NX, NY, NZ и NW). В зависимости от конфигурации системы (заданной в схеме станка) ориентация инструмента может задаваться: вектором нормали n = (NX, NY, NZ); пространственными углами поворота вокруг осей координат - углами Эйлера (порядок поворотов также задаётся настройками) A = NX, B = NY, C = NZ; кватернионом q = (NX, NY, NZ, NW).
    X: Double cmd.Flt["Pos5D.X"] - декартова координата X точки кончика инструмента.
    Y: Double cmd.Flt["Pos5D.Y"] - декартова координата Y точки кончика инструмента.
    Z: Double cmd.Flt["Pos5D.Z"] - декартова координата Z точки кончика инструмента.
    NX: Double cmd.Flt["Pos5D.NX"] - в зависимости от конфигурации системы может быть компонентой NX вектора нормали инструмента, углом поворота вокруг одной из осей координат или коэффициентом кватерниона.
    NY: Double cmd.Flt["Pos5D.NY"] - в зависимости от конфигурации системы может быть компонентой NY вектора нормали инструмента, углом поворота вокруг одной из осей координат или коэффициентом кватерниона.
    NZ: Double cmd.Flt["Pos5D.NZ"] - в зависимости от конфигурации системы может быть компонентой NZ вектора нормали инструмента, углом поворота вокруг одной из осей координат или коэффициентом кватерниона.
    NW: Double cmd.Flt["Pos5D.NW"] - если выбран способ ориентации инструмента в виде кватерниона, это четвёртый коэффициент кватерниона.
    MachineStateFlags: Integer cmd.Ptr["MachineStateFlags"].Bit[i], i=(0..31). Целое число, являющееся битовым полем из 32 бит от 0 до 31. Если для заданного положения инструмента в пространстве существует несколько вариантов расположения осей станка, каждый бит этого поля определяет выбор одного из возможных решений. Например, для большинства положений инструмента у пятиосевого станка с осями A и C есть два возможных решения - с положительным значением оси A и с отрицательным значением оси A. Нулевой бит этого поля выберет одно из этих решений. Для стандартного шестиосевого сочленённого робота многие положения инструмента в пространстве могут быть обеспечены разными комбинациями положений трёх его ключевых сочленений (основания, локтя и запястья), что даёт в сумме 8 возможных решений. В этом случае нулевой бит этого поля будет определять положение основания, первый бит - положение локтя, а третий бит будет задавать положение запястья робота. Таким образом, значение каждого из этих битов полностью определяется используемой схемой станка. При использовании станков, для которых эти флаги не нужны, вывод этого параметра в CLData можно отключить в схеме станка.
    Time: Double Время перемещения в минутах.

    Список координат, передаваемых через CLData команды FROM, определяется схемой станка CAM-системы.

    Используйте массив GMA для обработки команды FROM. Свойствам массива GMA автоматически присваиваются предварительно рассчитанные значения параметров координатного перемещения. Параметры команды также доступны через оператор cmd.

    Пример (из постпроцессора Heidenhain (iTNC530)_Mill):

    program From  
      !X = CLD[1]; X@ = X; XT_ = X
      !Y = CLD[2]; Y@ = Y; YT_ = Y
      !Z = CLD[3]; Z@ = Z; ZT_ = Z
      !A = 0; A@ = A; AT_ = A
      !B = 0; B@ = B; BT_ = B
      !C = 0; C@ = C; CT_ = C
    End
    

    Доступ из .NET

    Обработчики:

    public override void OnBeforeMovement(ICLDMotionCommand cmd, CLDArray cld)   // групповой обработчик - перед любой командой перемещения
    public override void OnFrom(ICLDFromCommand cmd, CLDArray cld)
    public override void OnAfterMovement(ICLDMotionCommand cmd, CLDArray cld)   // групповой обработчик - после любой команды перемещения
    

    Наследование: ICLDFromCommand : ICLDMultiMotionCommand : ICLDMotionCommand : ICLDCommand.

    Читайте параметры из строго типизированного объекта cmd (рекомендуется); доступны также «сырой» массив cld[i] (те же индексы, что и в sppx) и именованные обёртки cmd["..."]. В таблице перечислены члены команды, включая унаследованные от базовых интерфейсов; общие члены ICLDCommand (навигация, CLD, CLDFile, TechOperation, ...) описаны в разделе Модель доступа к CLData.

    Член Тип Описание
    cmd.EN TInpRotation Конечная нормаль или ориентация перемещения в декартовой системе координат. В зависимости от текущих настроек схемы станка это может быть вектор нормали, углы Эйлера, кватернион и т. д.
    cmd.MSFlags BitArray Флаги состояния станка или флипы робота, которые вместе с декартовыми координатами помогают определить конкретное состояние механизма в случае избыточности. То, какой бит отвечает за какой флаг, зависит от типа и конфигурации оборудования.
    cmd.Time double Продолжительность перемещения в минутах.
    cmd.AxesCount int Количество осей, которые перемещение содержит в списке Axis[].
    cmd.Axis ICLDMultiMotionAxesIndexer Список осей перемещения [0..(AxesCount-1)].
    cmd.Axes IEnumerable Объект-перечислитель осей перемещения для удобного использования синтаксиса foreach.
    cmd.HasAxis(...) bool Возвращает "true", если перемещение содержит ось с указанным текстовым идентификатором. Иначе возвращает "false".
    cmd.EP TInp3DPoint Конечная точка (X, Y, Z) перемещения

    Пример - OnFrom (из постпроцессора Sinumerik (840D)_Mill_DN):

    public override void OnFrom(ICLDFromCommand cmd, CLDArray cld)
    {
        nc.X.Hide(cld[1]); nc.Y.Hide(cld[2]); nc.Z.Hide(cld[3]);
        LastPnt.X = cld[1]; LastPnt.Y = cld[2]; LastPnt.Z = cld[3];
    }
    

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

    • Модель доступа к CLData
    In this article