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

    Show / Hide Table of Contents

    AXESBRAKE - Управление тормозами осей станка

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

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

    AXESBRAKE COUNT N, Axis1Pos(n1) State1, Axis2Pos(n2) State2, ...,
    AxisNPos(nN) StateN
    

    Команда AXESBRAKE используется для включения и выключения тормозов осей, если на станке есть тормоза осей. Чаще всего эта команда используется для включения/выключения тормоза шпинделя (ось C) на токарно-фрезерных станках при переключении с точения на фрезерование и обратно. При токарной обработке шпиндель вращается на высокой скорости, а при фрезеровании шпиндель фиксируется тормозом в определённом угловом положении. Использование тормозов позволяет увеличить нагрузку на шпиндель и снизить износ механизмов точного позиционирования шпинделя. Также тормоза используются на фрезерных станках на поворотных осях для выполнения обработки с делением (индексацией).

    Доступ из sppx

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

    Параметр Массив CLD Описание
    N CLD[1] Число осей, затрагиваемых этой командой.
    n1 CLD[2] Индекс оси с именем Axis1Pos в списке координат.
    State1 CLD[3] Новое состояние оси Axis1Pos: ON(71) - тормоз включён, OFF(72) - тормоз выключен.
    n2 CLD[4] Индекс оси Axis2Pos в списке координат.
    State2 CLD[5] Новое состояние оси Axis2Pos: ON(71) - тормоз включён, OFF(72) - тормоз выключен.
    … … …
    nN CLD[2*N] Индекс оси AxisNPos в списке координат.
    StateN CLD[2*N+1] Новое состояние оси AxisNPos: ON(71) - тормоз включён, OFF(72) - тормоз выключен.

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

    TCLDAxesBrake: ComplexType Команда переключения состояний тормозов осей.
    Axes: Array, Key="AxisID" cmd.Ptr["Axes"] - Массив структур типа AxisBrake. Таким образом, одна команда может менять состояние тормоза сразу нескольких осей.
    AxisBrake: ComplexType cmd.Ptr["Axes"].Item[Index] или cmd.Ptr["Axes(AxisName)"] - Отдельный элемент массива Axes. Содержит состояние тормоза одной оси станка. Доступ к элементам массива возможен как по индексу, так и по ключевому полю. Здесь AxisName — значение ключевого поля, которое должно совпадать со значением поля AxisID.
    AxisID: String cmd.Str["Axes(AxisName).AxisID"] - Идентификатор оси станка, для которой задано новое состояние тормоза. Определяется схемой станка.
    BrakeState: Integer cmd.Int["Axes(AxisName).BrakeState"] - новое состояние тормоза оси станка: 0 - выключен, 1 - включён.

    Синтаксис команды допускает изменение состояний тормозов нескольких осей одновременно. Список координат, имена которых фигурируют в этой команде, определяется схемой станка CAM-системы.

    Ниже приведены два простых примера обработчиков-программ для этой команды.

    program AxesBrake
      Index: Integer ! Счётчик цикла
      AxisNumber: Integer ! Индекс оси в списке осей станка
      BrakeState: Integer ! Новое состояние тормоза оси
      Index = 1
      while Index<=CLD[1] do begin
        AxisNumber = CLD[2*Index]
        BrakeState = CLD[2*Index+1]
        case AxisNumber of
          4: begin ! Индекс AxisAPos(A) в списке осей станка
            if BrakeState=71 then Output "M680" ! Включить тормоз оси A
            else Output "M690" ! Выключить тормоз оси A
          end
          6: begin ! Индекс AxisAPos(A) в списке осей станка
            if BrakeState=71 then Output "M68" ! Включить тормоз оси C
            else Output "M69" ! Выключить тормоз оси C
          end
        end
        Index = Index + 1
      end
    end
    

    Ещё один пример с использованием оператора cmd.

    program AxesBrake
      if cmd.Ptr["Axes(AxisAPos)"]<>0 then begin ! Ось A присутствует в этой команде
        if cmd.Int["Axes(AxisAPos).BrakeState"]=1 then Output "M680" ! Включить тормоз оси A
        else Output "M690" ! Выключить тормоз оси A
      end
      if cmd.Ptr["Axes(AxisCPos)"]<>0 then begin ! Ось C присутствует в этой команде
        if cmd.Int["Axes(AxisCPos).BrakeState"]=1 then Output "M68" ! Включить тормоз оси C
        else Output "M69" ! Выключить тормоз оси C
      end
    end
    

    Доступ из .NET

    Обработчик:

    public override void OnAxesBrake(ICLDAxesBrakeCommand cmd, CLDArray cld)
    

    Наследование: ICLDAxesBrakeCommand : ICLDCommand.

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

    Член Тип Описание
    cmd.AxesCount int Число осей в списке "Axis".
    cmd.Axis ICLDBrakeAxesIndexer Список состояний тормозов осей Axis[i] или Axis["AxisCPos"].
    cmd.Axes IEnumerable Объект-перечислитель осей тормозов, позволяющий использовать удобный синтаксис foreach.
    cmd.HasAxis(...) bool Возвращает "True", если список "Axis" содержит ось с указанным текстовым ID. Иначе возвращает "False".

    Пример - OnAxesBrake (из постпроцессора Fanuc (30i)_Mill_DN):

    public override void OnAxesBrake(ICLDAxesBrakeCommand cmd, CLDArray cld)
    {
        foreach(CLDAxisBrake ax in cmd.Axes) {
            if (ax.IsA) {
                if (ax.StateIsOn)
                    nc.MABrake.v = 593;
                else
                    nc.MABrake.v = 592;
            } else if (ax.IsB) {
                if (ax.StateIsOn)
                    nc.MBBrake.v = 595;
                else
                    nc.MBBrake.v = 594;
            } else if (ax.IsC) {
                if (ax.StateIsOn)
                    nc.MCBrake.v = 597;
                else
                    nc.MCBrake.v = 596;
            }
        }
        if (nc.MABrake.Changed || nc.MBBrake.Changed || nc.MCBrake.Changed)
            nc.Block.Out();
    }
    

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

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