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

    Show / Hide Table of Contents

    WAIT - Ожидание точки синхронизации

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

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

    WAIT ID(<SynchPointID>), Index(<SynchPointIndex>)
    

    Команда WAIT используется для синхронизации нескольких параллельных потоков управления (нескольких управляющих программ, каждая из которых может управлять отдельным рабочим элементом станка). Для этой команды в управляющую программу следует добавлять кадры (метки), реализующие приостановку программы до достижения аналогичной метки в другой (параллельной) программе.

    Доступ из sppx

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

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

    TCLDSyncPoint: ComplexType Команда ожидания точки синхронизации
    SyncPointID: String cmd.Str["SyncPointID"] - уникальный идентификатор точки синхронизации, заданный пользователем.
    Index: Integer cmd.Int["Index"] - порядковый номер точки синхронизации, автоматически формируемый системой.

    Если в проекте применяется операция «Токарного перехвата», которая должна быть синхронизирована с операцией «Токарной отрезки», то в командах меток ожидания параметр SyncPointID имеет свои строго определённые значения:

    • Takeover1: метка ожидания с таким идентификатором выводится непосредственно после команд PPFUN TECHINFO (58) обеих операций. Оба канала ожидают взаимной синхронизации.
    • Takeover2: с достижением метки ожидания с таким идентификатором операция «Токарного перехвата» перемещается к главному шпинделю и захватывает деталь в нём. Операция «Токарной отрезки» при этом находится в состоянии ожидания до достижения метки ожидания с идентификатором Takeover3.
    • Takeover3: с достижением метки ожидания с таким идентификатором операция «Токарной отрезки» выполняет отрезку готовой детали из главного шпинделя. Операция «Токарного перехвата» в состоянии захвата отрезаемой детали ждёт окончания отрезки, то есть метки ожидания с идентификатором Takeover4.
    • Takeover4: с достижением метки ожидания с таким идентификатором операция «Токарного перехвата» начинает отвод противошпинделя с захваченной отрезанной деталью. Операция «Токарной отрезки» ожидает, пока не будет выполнен отвод противошпинделя на расстояние подачи возврата, что обозначается меткой ожидания с идентификатором Takeover5.
    • Takeover5: по достижении этой метки ожидания операция «Токарной отрезки» выполняет отвод инструмента (при необходимости), операция «Токарного перехвата» отводит противошпиндель в исходное положение.
    SyncPointID Операция «Токарной отрезки» Операция «Токарного перехвата»
    Takeover1 Ожидание взаимной синхронизации Ожидание взаимной синхронизации
    Takeover2 Находится в состоянии ожидания до достижения метки Takeover3. Перемещается к главному шпинделю и захватывает деталь в нём.
    Takeover3 Выполняет отрезку готовой детали из главного шпинделя. В состоянии захвата отрезаемой детали ждёт окончания отрезки (метки Takeover4).
    Takeover4 Ожидает, пока не будет выполнен отвод противошпинделя на расстояние подачи возврата (метка Takeover5). Начинает отвод противошпинделя с захваченной отрезанной деталью.
    Takeover5 Выполняет отвод инструмента (при необходимости). Отводит противошпиндель в исходное положение.

    Пример (из постпроцессора PUMA MX series):

    program Wait
        Call OutBl
        if NextCode= CodeOfCmd("PPFUN") then begin
          output "M01";
          NeedM1 =0;
        end
        i : integer;
        i = Cmd.Int["Index"];
        call AddWait(i);
    end
    

    Доступ из .NET

    Обработчик:

    public override void OnSyncWait(ICLDSyncWaitCommand cmd, CLDArray cld)
    

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

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

    Член Тип Описание
    cmd.PointIndex int Порядковый номер точки синхронизации, автоматически формируемый системой.
    cmd.PointID string Уникальный текстовый идентификатор точки синхронизации, заданный пользователем.

    Пример - OnSyncWait (из постпроцессора HanwhaSwissType):

    public override void OnSyncWait(ICLDSyncWaitCommand cmd, CLDArray cld)
    {
        int PntN = 0;    
        if (NCFiles.OutputDisabled)
            return;
        if (cmd.PointID.Contains("SubAxial2"))
            return; //Средняя метка в ожидании операции главного шпинделя.
        if (SameText(cmd.PointID, "Takeover1")) return;
    
        if (SameText(cmd.PointID, "Takeover2")) {
            PntN = 2;
            SynchPoints.OutPrev(cmd.PointIndex,1);
            if (nc==nc1)
            {
                SyncSpindles(true);
            }
        } else if (SameText(cmd.PointID, "Takeover3")) {
            PntN = 3;
            if (activeChannel>0)
              outClamp(false,true);
            SynchPoints.OutPrev(cmd.PointIndex,1);
            nc.WriteLine(GetSyncZCode(true));
        } else if (SameText(cmd.PointID, "Takeover4")) {
            PntN = 4;
            SynchPoints.OutPrev(cmd.PointIndex,2);
            nc.WriteLine(GetSyncZCode(false));
            if (nc==nc1) {
                SyncSpindles(false);
            } else {
                IncrementalMove=true;
            }
            SynchPoints.OutPrev(cmd.PointIndex,1);
            if (nc==nc1) {
                nc.WriteLine("S0");
            } else {
                nc.WriteLine("S40");
            }
        } else if (SameText(cmd.PointID, "Takeover5")) {
            PntN = 5;
            IncrementalMove=false;
        }
    
        SynchPoints.Add(cmd.PointIndex);
    
        if (PntN==4)
            OutDetectBrokenTool();
    
        if ((nc==nc2) && (PntN==2)) {
            outAirBlower(0);
            outClamp(false, false);
        }
        if ((nc==nc2) && (PntN==5)) {
            nc.WriteLine("M95");
            nc.WriteLine("/M91");
            nc.WriteLine("M96");
        }
    
    }
    

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

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