Jump to content

Правка постпроцессора


Насибулла

Recommended Posts

Насибулла

Здравствуйте!

Прошу помощи с правкой постпроцессора под синумерик 828д. Станок фрезерный трехкоординатный.

При сверлении отверстий пост выдает цикл на каждое отверстие. Мне нужно, чтобы выводился один цикл с MCALL. Плюс нужно, чтобы всегда выводились координаты по двум осям (X Y)

 

Сейчас получается так

;centr sverlo
N10 T9
N20 M6
N30 G17 G54
N40 S3000 M3
N50 G0 X-56 Y-32 Z10
N60 M8 F150
N70 CYCLE81(10,0,1,-2)
N80 G0 X-72
N90 CYCLE81(10,0,1,-2)
N100 G0 Y32
N110 CYCLE81(10,0,1,-2)
N120 G0 X-56
N130 CYCLE81(10,0,1,-2)
N140 G0 X-40
N150 CYCLE81(10,0,1,-2)
N160 G0 M5 M9

N170 M30

 

Как должно быть

;centr sverlo
N10 T9
N20 M6
N30 G17 G54
N40 S3000 M3
N50 G0 X-56 Y-32 Z10
N60 M8 F150
N70 MCALL CYCLE81(10,0,1,-2)

N75 G0 X-56 Y-32 ; координаты Х и У дублируются из кадра N50
N80 G0 X-72 Y-32
N100 G0 X-72 Y32
N120 G0 X-56 Y32
N140 G0 X-40 Y32

MCALL
N160 G0 M5 M9

N170 M30

 

 

насколько я понимаю править нужно ExtCycle

Сейчас там вот что

program ExtCycle  
  !Prms: array of Real  ! Cycle parameters
  i: Integer
  CycleNumber: Integer ! Cycle number
  CycleName: String    ! Cycle name
  CycleGeomName: String ! Имя подпрограммы-геометрии цикла
  CDIR: Integer        ! Thread direction 2-G2, 3-G3
  SDIR: Real           ! Spindle rotation direction
  CurPos: Real         ! Current position (applicate)
  CPA: Real            ! Absciss
  CPO: Real            ! Ordinate
  TempCoord: Real      ! Auxiliary variable
  RTP: Real
  RFP: Real
  SDIS: Real
  DP: Real
  DPR: Real

  if cld.SubCmd=71 then begin
    CycleOn = 1      ! ON
    if CLD[9]=1 then
      GFeed=94
    else
      GFeed=95
    Feed_=CLD[10]!; Feed_@=MaxReal
    outblock
  end
  else if cld.SubCmd=72 then CycleOn = 0 ! OFF
  else if cld.SubCmd=52 then begin ! CALL
    call CheckAxesBrake(2, 2, 2)

    for i = 1 to 30 do Prms[i] = MaxReal
    CycleNumber = 0
    CycleName = "CYCLE"
    CycleGeomName = ""
    case cld.SubType of
      473,481,482,
      483,484,485,
      486,487,488,
      489,490,491: begin ! 5D Drilling cycles
        ! Define current position
        case abs(GPlane) of
          17: begin ! XY
            CurPos = Z
            CPA = X
            CPO = Y
          end
          18: begin ! ZX
            CurPos = Y
            CPA = Z
            CPO = X
          end
          19: begin ! YZ
            CurPos = X
            CPA = Y
            CPO = Z
          end
          else begin
            print "Undefined cycle plane"
            CurPos = Z
            CPA = X
            CPO = Y
          end
        end
        if GPlane<0 then begin
          TempCoord = CPA
          CPA = CPO
          CPO = TempCoord
        end
        ! Define base levels
        RTP = CurPos
        RFP = CurPos - cld[7]*sgn(GPlane) ! CurPos - Tp
        SDIS = cld[7] - cld[6] ! Tp - Sf
        DP = CurPos - cld[8]*sgn(GPlane) ! CurPos - Bt
        DPR = cld[8] - cld[7] ! Bt - Tp
        ! CycleXX(RTP,RFP,SDIS,DP)
        Prms[1] = RTP
        Prms[2] = RFP
        Prms[3] = SDIS
        Prms[4] = DP
        CycleNumber = 81
        case cld.SubType of
          481,482,485,486,487,488,489: begin ! Simple drilling
            CycleNumber = cld.SubType - 400
            if cld[15]>0 then Prms[6] = cld[15] ! Delay in seconds
            ! Spindle rotation direction
            if S>0 then SDIR = 3
                   else SDIR = 4
            if (cld.SubType=486) or (cld.SubType=488) then
              Prms[7] = SDIR
            else if cld.SubType=487 then
              Prms[6] = SDIR
            if cld.SubType=485 then begin
              Prms[7] = cld[10] ! WorkFeed
              Prms[8] = cld[14] ! ReturnFeed
            end else if cld.SubType=486 then begin
              Prms[8] = 0 ! RPA
              Prms[9] = 0 ! RPO
              Prms[10] = 0 ! RPAP
              Prms[11] = 0 ! POSS
            end
          end
          473,483: begin ! Deep drilling (473-chip breaking, 483-chip removing)
            CycleNumber = 83
            Prms[6] = CurPos - (cld[7]+cld[17])*sgn(GPlane) ! FDEP = CurPos-(Tp+St)
            Prms[8] = cld[18] ! DAM - degression
            Prms[9] = cld[15] ! DTB - Bottom delay
            Prms[10] = cld[16] ! DTS - Top delay
            Prms[11] = 1 ! FRF - First feed coef
            if cld.SubType=473 then Prms[12] = 0 ! VARI - breaking or removing
                               else Prms[12] = 1
            Prms[14] = CLD[18] ! _MDEP - Minimal deep step (=degression)
            if cld.SubType=473 then
              Prms[15] = cld[20] ! _VRT - LeadOut
            else
              Prms[17] = cld[19] ! _DIS1 - Deceleration
            Prms[16] = 0 ! _DTD - finish delay (if 0 then = DTB)
          end
          484: begin ! Tapping
            if S>0 then SDIR = 3
                   else SDIR = 4
            if cld[19]=1 then begin ! Fixed socket
              CycleNumber = 84
              Prms[7] = SDIR ! SDAC
              if S>0 then Prms[9] = cld[17] ! PIT
                     else Prms[9] = -cld[17]
              Prms[10] = cld[18] ! POSS
              Prms[14] = 1 !  PTAB
            end else begin  ! Floating socket
              CycleNumber = 840
              Prms[7] = 0 ! SDR
              Prms[8] = SDIR ! SDAC
              Prms[9] = 11 ! ENC
              if S>0 then Prms[11] = cld[17] ! PIT
                     else Prms[11] = -cld[17]
              Prms[13] = 1
            end
            if IsFirstCycle>0 then begin
              VARI = 0
              DAM = cld[2]/5
              VRT = DAM/5
              Input "Введите параметры цикла нарезания резьбы CYCLE84:",
                    "Подтип цикла VARI (0-простое, 1-ломка стружки, 2-удаление стружки)", VARI,
                    "Шаг для ломки стружки (DAM)", DAM,
                    "Отвод при ломке стружки (VRT)", VRT
            end
            if VARI>0 then begin
              Prms[16] = VARI  !VARI
              Prms[17] = DAM  !DAM
              Prms[18] = VRT  !VRT
            end
          end
          490: begin ! Thread milling
            CycleNumber = 90
            Prms[6] = cld[16] ! DIATH - Outer diameter
            Prms[7] = cld[16] - cld[22]*2 ! KDIAM - Inner diameter
            Prms[8] = cld[17] ! PIT - thread step
            Prms[9] = cld[10] ! FFR - Work feed
            CDIR = cld[19] ! CDIR - Spiral direction
            if (CDIR<>2) and (CDIR<>3) then begin
              if (S>0) and (CDIR=0) then       CDIR = 3
              else if (S<=0) and (CDIR=0) then CDIR = 2
              else if (S>0) and (CDIR=1) then  CDIR = 2
              else if (S<=0) and (CDIR=1) then CDIR = 3
            end
            Prms[10] = CDIR
            Prms[11] = cld[18] ! TYPTH - 0-inner, 1-outer thread
            Prms[12] = CPA ! CPA - Center X
            Prms[13] = CPO ! CPO - Center Y
          end
          491: begin ! Hole pocketing
            CycleNumber = 4
            CycleName = "POCKET"
            Prms[5] = 0.5*CLD[16] ! PRAD - Radius
            Prms[6] = CPA ! PA - Center X
            Prms[7] = CPO ! PO - Center Y
            Prms[8] = cld[20] ! MID - Deep step
            Prms[9] = 0 ! FAL - finish wall stock
            Prms[10] = 0 ! FALD - finish deep stock
            Prms[11] = cld[10] ! FFP1 - Work feed
            Prms[12] = cld[12] ! FFD - Plunge feed
            CDIR = cld[19]
            if CDIR<=1 then CDIR = 1 - CDIR
            Prms[13] = CDIR ! CDIR - Spiral direction
            Prms[14] = 21 ! VARI - Rough spiral machining
            Prms[15] = cld[22] ! MIDA - Horizontal step
            Prms[18] = 0.5*cld[18] ! RAD1 - Spiral radius
            Prms[19] = cld[17] ! DP1 - Spiral step
          end
        end
      end ! 5D Drilling cycles
    end ! case cld.SubType
    if CycleNumber>0 then begin
      OutBlock
      call OutCycle(CycleName+Str(CycleNumber), CycleGeomName)
      Interp_@ = MaxReal
      IsFirstCycle = 0
    end
  end ! if CALL
end

 

Смотрел видео по основам создания постпроцессоров, какое то представление появилось, как это работает. С программированием на Вы, и код выше для меня абракадабра. Но если долго сидеть, вникать, разобраться смогу. Но как обычно столько времени нет. Поэтому кому не сложно, подскажите как лучше сделать. 

 

Link to post
Share on other sites


Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.




  • Сообщения

    • Viktor2004
      У меня тоже кое что осталось после подключения барфидера к станку NOMURA с Mitsubishi   Барфидером управляет программа 5555 И вот образец программы изготовления детали из которой эта 5555 вызывается     5555 O8016
    • Artut
      Спасибо, помогло. Как тут плюсануть в репутацию?
    • Udav817
      Под полным скруглением вы подразумеваете вырождение плоскостей первоначального тела? Чтобы у пирамиды не осталось плоских граней? Ну такое Компас точно не может. Да и не только Компас. У меня в Solid Edge тоже ошибку выдаёт. Даже последовательное скругление не поможет. И, кстати, это в целом с геометрией так. Уберите цилиндр и попробуйте отдельно пирамиду так скруглить. И вас геометрическое ядро так же пошлёт учить матан и логику.  Это вам надо искать программу, которой геометрический движок позволит такое вытворять, вырождая поверхности полностью, даже не превращая их в точку (в точку, кстати, тоже не всякое ядро сможет).  
    • Kelny
      Для символа по ГОСТ доступ к полям не доступен через API. Можно попробовать поковырять через WinAPI.   Если речь об установках электронных компонентов, то там возможно проще блоки использовать, а в блоках на ставится элемент сварка/пайка/наклеивание и соответственно приходится использовать заметку и простой эскиз для значков.   Как вариант к заметке дорисовывать эскизы (как бы внутри элемента заметки - API это позволяет), но не уверен что можно будет нарисовать эскиз привязанный к направлению линии выноски. Возможно для контроля выноски и положения значка можно втиснуть в файл встроенный макрос, который будет следить за выноской и перерисовывать значок. Из минусов этого метода, что доступ к эскизам заметки только средствами API, но проблем с отображением на других машинах, где нет макроса, вроде быть не должно (ну только что без макроса редактировать/обновлять эскизы в таких заметках не получиться).   В Solidworks часто в записи бывает мало полезного. А вот уже готовые похожие примеры в справке по API попадаются.
    • Kelny
      Возможно программа ранее задавала какие-то вопросы на которые вы поставили галочку БОЛЬШЕ НЕ СПРАШИВАТЬ и возможно в выборе было НЕ СОХРАНЯТЬ, вот и не сохраняет. Возможно стоит вернуть все или нужные запросы системы, что на этот раз ответить правильно или не ставить больше галочек БОЛЬШЕ НЕ СПРАШИВАТЬ.   Инструменты-Параметры...-Настройки пользователя-Запросы и уведомления (или как-то так)        
    • Kelny
      Зачем? Чем не устроил ГОСТ 13682-80 МЕСТА ПОД КЛЮЧИ ГАЕЧНЫЕ? Например:  и т.п.
    • Kelny
      Окно точно полностью на экран умещается? Размер окна пробовали менять? Уменьшить за рамку (например, сверху рамки) или увеличить (например квадратик рядом с крестиком в правом верхнем углу заголовка окна). Возможно в какой-то момент было уменьшено разрешение экрана и окно перестало влезать на экран.
    • Kelny
      Возможно, отобразить только одну деталь и можно делать чертёж на одну деталь. В некоторых случаях деталь можно изготовить по файлу модели. А где сам макрос/программа?
    • Tumkalo
      Здравствуйте, подскажите пожалуйста постпроцессор на Hartford под какую САМ программу? Буду очень благодарен вам)))
    • Александр apdbox
      Здравствуйте! SOS! MAYDAY! HELP!   Работаю оператором ЧПУ, токарный, стойка Siemens SINUMERIK 828D.   Наше предприятие решило купить Вертикальный токарный обрабатывающий центр с ЧПУ FULLTONTECH CK5112 HM, система: SINUMERIK 828D.   По факту оказалось, что справиться с поставленной задачей непросто. И выбор в оказании помощи в виде консультанта выпал на меня. Раннее не занимался решением вопросов покупки станков и их комплектацией. Отнесся к этому вопросу с пониманием и серьезно.   Что касается дополнительной комплектации станка железом, вопросов не возникло. Но с системой ЧПУ SINUMERIK 828D вопросов очень много.   Вот несколько из них. Начну с истоков.   ПЕРВЫЙ ВОПРОС: Производитель  устанавливает на станок подходящую по функционалу Аппаратную часть для СЧПУ (PPU). По умолчанию эта СЧПУ (PPU) активируется и имеет бессрочную возможность функционирования.  Как люди говорят. Это основа.   У Siemens есть каталог дополнительных опций, а именно: SIEMENS AG GLOSSARY FUNCTION AND TERMS. Где все дополнительные опции имеют определенный код для заказа, например: Advanced Position Control APC, Option M13,  Article No.: 6FC5800-0AM13-0YB0.   Возникает вопрос. Какой Article No. у самой СЧПУ (PPU)? Мы хотим знать конкретно, что это и как это будет работать в данной ситуации в мире на нашем станке. Степень нашей защиты от сбоев ПО на станке.     ВТОРОЙ ВОПРОС: Все станки различны по виду операций на них возложенных. Для определенных операций на СЧПУ (PPU) активируются опции. Эти опции имеют определенный срок своего функционирования или бессрочны.   Вернемся к SIEMENS AG GLOSSARY FUNCTION AND TERMS. Например, опция Axis collision protection PROT, Option N06, Article No.: 6FC5800-0AN06-0YB0. Как я понимаю, ответственный производитель должен посоветовать какие опции для покупаемой модели станка нужны. Объясняет, как происходит их активация и сообщает стоимость указанных опций. В итоге, покупатель получает станок укомплектованный ПО и железом, и не переживает, что через какое-то время ПО или дополнительные функции отключатся.   ТРЕТИЙ ВОПРОС: Вертикальный токарный обрабатывающий центр с ЧПУ FULLTONTECH CK5112 HM, система: SINUMERIK 828D. После проверок предложенных опций я остановился на следующих из каталога.   SINUMERRIK 828D OPTIONAL FUNCTIONS 1.       6FC5800-0AS35-0YB0 2.       6FC5800-0AP58-0YB0 3.       6FC5800-0AP16-0YB0 4.       6FC5800-0AP17-0YB0 5.       6FC5800-0AP05-0YB0 6.       6FC5800-0AP13-0YB0 7.       6FC5800-0AP25-0YB0 8.       6FC5800-0AP22-0YB0 9.       6FC5800-0AP28-0YB0 10.     6FC5800-0AP01-0YB0 11.     6FC5800-0AM78-0YB0 12.     6FC5800-0AP30-0YB0 13.     6FC5800-0AM08-0YB0 14.     6FC5800-0AS07-0YB0 15.     6FC5800-0AS17-0YB0 16.     6FC5800-0AS16-0YB0 17.     6FC5800-0AP18-0YB0 18.     6FC5800-0AP67-0YB0 19.     6FC5800-0AP56-0YB0 20.     6FC5800-0AP77-0YB0 21.     6FC5800-0AP75-0YB0   Я правильно сориентировался в данном вопросе? Этот список опций полный для данного станка или надо дополнить? Не окажется так, что есть лишние опции, которые ну совсем не пригодятся, и мы зря вложим деньги?   Спасибо за уделенное мне время. Помощь и ответы. Наилучшие пожелания. С уважением, Александр.
×
×
  • Create New...