Pinned posts

ID: 1   Опубликовано: (изменено)

Здравствуйте.
Извиняюсь за много букоф, попытался объяснить как смог и, вероятно, моё объяснение будет ужасным.
С SolidCAM познакомился недавно, поэтому есть несколько вопросов по настройке файла станка, настройке фрезерной обработки и в последствии написании\допиливания постпроцессора. Карусельно-фрезерный станок(или вертикальный токарно-фрезерный) с физическими тремя координатами: линейные "X-Z", поворотная "C". Стойка Sinumerik 840D и на неё имеется фишка с мнимой\виртуальной линейной осью "Y"(через TRANSMIT), с помощью которой можно сделать прямые линии при обработке по торцу детали(да и не только на торце полагаю), которая часто используется.
Оси и расположение инструмента попытался изобразить на рисунке.

Скрытый текст

5b166c0b1bc4e_.PNG.815cbaae3083bc7f75bc95f0a26c4d81.PNG


Ещё одна фишка с этой мнимой осью "Y" такая, что эта ось относительная. Сначала поворачиваем деталь на нужный угол "С", потом включается TRANSMIT и ось "C" становится осью "Y" и в этот момент "Y"=0. После выключении TRANSMIT поворачивается на следующий угол "C" и при включении TRANSMIT в этот момент снова "Y"=0. При движении по "Y" станок физически одновременно поворачивает планшайбу и доводит координату "X".
Пазы пробовал обрабатывать функцией "Обработка кармана". И пока просто всё выглядит не плохо, да вот значения координат не те. Если оставить как есть, то координаты "Y" будут выдаваться не от середины паза, где можно было бы задать "C"=0 и от него бы другие пазы на других заданных углах делать. Трансформацию в SolidCAM я пробовал и все бы ничего, если пазы у нас однаковые. Но если на торце есть разные пазы на разных углах, то при трансформации первый паз в визуализации всегда имеет "C"=0, а не относительно заданной МАС-позиции. От этого я не могу понять, как и где нужно отредактировать постпроцессор\файл станка, чтобы поворот оси C на угол был относительно одной точки, а не постоянно равен нулю при создании нового перехода и повороте плоскости при трансформации. И так же если делать сверление отверстий будь то на торце или наружном диаметре требуется правильное позиционирование по углу "C" Что я делаю не так и куда тыкать мозгов у меня уже не хватает.

Скрытый текст

Снимок44.jpg

Снимок55.jpg

 

Изменено пользователем Jacksam
1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах


UnPinned posts

у вас токарно фрезерный модуль у меня тоже имеется токарно фрезерный обрабатывающий центр  по визуализации ничего не скажу также ось с не изменяет значения. Вообщем вам нужен пост процессор  нормальный на токарно фрезерную группу который будет работать в полярной системе кординат.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Оно и понятно, что нужен нормальный постпроцессор, но где же его взять.:smile:Если у кого такой имеется я бы на него поглазел:biggrin(old):. А из-за его отсутствия пробую ковырять что есть, а точнее чего даже нет.

Появилась идея-костыль, как можно вывести нужные уголы в УП, но надо подумать как правильно реализовать это в постпроцессоре. А идея следующая. Ввести переменную в файле станка - "Фрезерование - Доп. параметры" в которую, при создании перехода, необходимо будет написать начальный угол на котором будет производиться обработка. А так как при трансформации выводится относительный угол(насколько я понимаю) "вокруг 4ой оси" для первого выбранного контура, то в постпроцессоре вычислять уже настоящий угол от вписанного начального.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У нас на предприятии стоит похожий стерлитамакского производства 800VT. Программы для фрезерной обработки пишем как для обычного 3-х осевого. Пример программы прилагаю.

D14.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Находим центр стола и записываем полученные координаты в G54. Потом в MDA прописываем G54 TRANSMIT нажимаем пуск,станок переводится в X,Y и подводим к предполагаемому нулю детали, без сброса G54 и TRANSMIT записываем в G55 полученные  координаты(В "С" записываем координаты Y).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мы делаем иначе. Если нужна ширина паза 100мм по торцу, то поворачиваем на нужный угол(относительно выставленного в G54, если он имеется), который делит паз пополам и включаем TRANSMIT. Так Y будет меняется от +(100/2-Rфрезы) до -(100/2-Rфрезы). Так как подобная фрезеровка пишется вручную, то использую расширенное программирование через переменные,оператор условия IF, оператор цикла с предусловием WHILE.

 

Возвращаясь к основной теме, я думал уже обрадоваться, что может получиться вывести нужный угол в УП через процедуры "@tmatrix" и "@transform_info", как прилетает процедура "@arc" с своим блэкджэком и координатами.:black_eye: Пока мучался с углами не замечал, что "@arc" выдаёт не то, что надо и даже trace показывает, что другого он выдать не может(или я не туда смотрю), что как-то не логично. А вот с @line, вроде, всё нормально.

 

Вырезал часть сгенерированного кода с trace

Скрытый текст

;>>> P-contour6 >>>
N410 M0
N420 G0 C307.5
N430 ONTRANSMIT
N440    X524.368 Y5 Z25
N450    Z-140
(1)@line            ==> xpos:450.000T ypos:5.000F zpos:-140.000F feed:0.200T feed_teeth:0.050T spin:500.000F
                    ..> xhpos:277.910T yhpos:-353.965T zhpos:-140.000F
                    ..> next_direction:270.000 feed_type:'feed_rate'
                    ..>
N460 G1 X450 F0.2
(1)@line            ==> xpos:450.000F ypos:-5.000T zpos:-140.000F feed:0.200F feed_teeth:0.050F spin:500.000F
                    ..> xhpos:269.976T yhpos:-360.052T zhpos:-140.000F
                    ..> next_direction:0.000 feed_type:'feed_rate'
                    ..>
N470    Y-5
(1)@line            ==> xpos:524.368T ypos:-5.000F zpos:-140.000F feed:0.200F feed_teeth:0.050F spin:500.000F
                    ..> xhpos:315.248T yhpos:-419.053T zhpos:-140.000F
                    ..> next_direction:0.000 feed_type:'feed_rate'
                    ..>
N480    X524.368
N490 G0 Z25
N500    Y15
N510    Z-140
(1)@line            ==> xpos:445.000T ypos:15.000F zpos:-140.000F feed:0.200F feed_teeth:0.050F spin:500.000F
                    ..> xhpos:282.799T yhpos:-343.911T zhpos:-140.000F
                    ..> next_direction:180.000 feed_type:'feed_rate'
                    ..>
N520 G1 X445
(1)@arc             ==> xpos:427.595T ypos:-104.221T zpos:-140.000F feed:0.200F
                    ..> feed_teeth:0.050F spin:500.000F
                    ..> arc_direction:ccw radius:5.000
                    ..> xcenter:432.425 ycenter:-105.515
                    ..> arc_plane:xy next_direction:270.000
                    ..> start_angle:90.000 end_angle:180.000 arc_size:90.000
                    ..> xcenter_rel:0.000 ycenter_rel:-5.000 zstart:-140.000
                    ..> feed_type:'feed_rate' arc_feed:0.067
                    ..> xhpos:275.789T yhpos:-342.987T zhpos:-140.000F
                    ..> xhcenter:278.833 yhcenter:-346.954 zhcenter:-140.000
                    ..> xhstart:282.799 yhstart:-343.911 zhstart:-140.000
                    ..> xhcenter_rel:-3.967 yhcenter_rel:-3.043 zhcenter_rel:0.000
                    ..> arc_plane_h:xy arc_direction_h:ccw start_angle_h:90.000 end_angle_h:180.000
                      > N530 G3 X855.191 Y-104.221 Z-140 CR=5.
(1)@line            ==> xpos:440.000F ypos:-10.000T zpos:-140.000F feed:0.200F feed_teeth:0.050F spin:500.000F
                    ..> xhpos:259.922T yhpos:-355.164T zhpos:-140.000F
                    ..> next_direction:270.000 feed_type:'feed_rate'
                    ..>
N540 G1 Y-10
(1)@arc             ==> xpos:425.955T ypos:-129.663T zpos:-140.000F feed:0.200F
                    ..> feed_teeth:0.050F spin:500.000F
                    ..> arc_direction:ccw radius:5.000
                    ..> xcenter:427.249 ycenter:-124.833
                    ..> arc_plane:xy next_direction:0.000
                    ..> start_angle:180.000 end_angle:270.000 arc_size:90.000
                    ..> xcenter_rel:5.000 ycenter_rel:0.000 zstart:-140.000
                    ..> feed_type:'feed_rate' arc_feed:0.067
                    ..> xhpos:258.999T yhpos:-362.174T zhpos:-140.000F
                    ..> xhcenter:262.966 yhcenter:-359.130 zhcenter:-140.000
                    ..> xhstart:259.922 yhstart:-355.164 zhstart:-140.000
                    ..> xhcenter_rel:3.044 yhcenter_rel:-3.966 zhcenter_rel:0.000
                    ..> arc_plane_h:xy arc_direction_h:ccw start_angle_h:180.000 end_angle_h:270.000
                      > N550 G3 X851.91 Y-129.663 Z-140 CR=5.
(1)@line            ==> xpos:524.368T ypos:-15.000F zpos:-140.000F feed:0.200F feed_teeth:0.050F spin:500.000F
                    ..> xhpos:307.315T yhpos:-425.140T zhpos:-140.000F
                    ..> next_direction:0.000 feed_type:'feed_rate'
                    ..>
N560 G1 X524.368
N570 G0 Z25
OFTRANSMIT
;<<< KONEC P-contour6 <<<

 

Скрытый текст

6a71389c9u.jpg

TTBh0S8Fe2.jpg

 

 

 

Процедура "@arc"

Скрытый текст

@arc
{nb}
    if arc_direction eq CCW then
        gcode = 3
    else         ; CW
        gcode = 2
    endif
    ;{['G'gcode] ' X'xend:'5.3(/1p)' ' Y'yend ' Z'zend}
     {['G'gcode] ' X'xpos:'5.3(/1p)' ' Y'ypos ' Z'zpos}
        
if arc_size > 180 then
            radius = -radius
        endif
        {' CR='radius}
 if feed_unit eq css

        if m_feed_flag eq 1
           {' F'feed }
           m_feed_flag = 0
        else
           {[' F'feed] }
        endif
    else
        if m_feed_flag eq 1
           {' F'feed:'5.0(p)'}
           m_feed_flag = 0
        else
           {[' F'feed:'5.0(p)']}
        endif
    endif  
 endp

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Jacksam сказал:

Возвращаясь к основной теме, я думал уже обрадоваться, что может получиться вывести нужный угол в УП через процедуры "@tmatrix" и "@transform_info", как прилетает процедура "@arc" с своим блэкджэком и координатами.:black_eye: Пока мучался с углами не замечал, что "@arc" выдаёт не то, что надо и даже trace показывает, что другого он выдать не может(или я не туда смотрю), что как-то не логично. А вот с @line, вроде, всё нормально.

нужные процедура которые вам требуется прописать это

@move_5x

xrad1=xrpos*2
gcode = 0
    {nb, 'G' gcode, ' ', ['X' xrad1:'5.3(p)', ' '] , ['Z' zpos, ' '] , ['C' apos' ']}

endp

@line_5x

xrad1=xrpos*2

if next_command eq '@turn_endproc'
        blknum_exist = true
    endif
     gcode = 101
    {nb, 'G' gcode, ' '}
    

If bTurnCycle eq TRUE Then
    {['X' xrad1:'5.3(p)', ' '], ['Z' zpos, ' '] , ['C' apos, ' ']}    
    Else
        If Prev_command eq '@compensation' then
        {'G' iCompSide, ' '}
        endif
    
    {['X' xrad1:'5.3(p)', ' '], ['Z' zpos, ' '], ['C' apos, ' ']}
      If bFLineMv eq TRUE Then
      {['F' feed]}
      Endif
    
      Endif
endp


@arc_5x
if arc_direction eq CCW then
        gcode = 103
    else         ; CW
        gcode = 102
    endif
    {nb,'G' gcode, ' '}
    If Prev_command eq '@compensation' then
        {'G' iCompSide, ' '}
    endif
    {['X' xrpos], ['Z' zpos], ['C'apos]' '}
    if arc_size >= 180 then
        radius = - radius
    endif
    {['R' radius, ' ']}
    If bFArcMv eq TRUE Then          
        If feed_unit eq mm_rev Then
            {'F' feed : sFeedUpr_f}
        Else
            {'F' feed : sFeedUpm_f}
        Endif
    Else
        If bCycleFeed eq TRUE Then
            If feed_unit eq mm_rev Then
                {['F' finish_feed : sFeedUpr_f]}
            Else
                {['F' finish_feed : sFeedUpm_f]}
            Endif
        Else
            If feed_unit eq mm_rev Then
                {['F' feed : sFeedUpr_f]}
            Else
                {['F' feed : sFeedUpr_f]}
            Endif
        Endif
    Endif
    bFLineMv = FALSE                    
    bFArcMv = FALSE                    
    if prev_command eq '@turn_proc'
        blknum_exist = false
    endif    
endp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ID: 8   Опубликовано: (изменено)

4 часа назад, Povar1 сказал:

нужные процедура которые вам требуется прописать это

Скрытый текст

@move_5x

xrad1=xrpos*2
gcode = 0
    {nb, 'G' gcode, ' ', ['X' xrad1:'5.3(p)', ' '] , ['Z' zpos, ' '] , ['C' apos' ']}

endp

@line_5x

xrad1=xrpos*2

if next_command eq '@turn_endproc'
        blknum_exist = true
    endif
     gcode = 101
    {nb, 'G' gcode, ' '}
    

If bTurnCycle eq TRUE Then
    {['X' xrad1:'5.3(p)', ' '], ['Z' zpos, ' '] , ['C' apos, ' ']}    
    Else
        If Prev_command eq '@compensation' then
        {'G' iCompSide, ' '}
        endif
    
    {['X' xrad1:'5.3(p)', ' '], ['Z' zpos, ' '], ['C' apos, ' ']}
      If bFLineMv eq TRUE Then
      {['F' feed]}
      Endif
    
      Endif
endp


@arc_5x
if arc_direction eq CCW then
        gcode = 103
    else         ; CW
        gcode = 102
    endif
    {nb,'G' gcode, ' '}
    If Prev_command eq '@compensation' then
        {'G' iCompSide, ' '}
    endif
    {['X' xrpos], ['Z' zpos], ['C'apos]' '}
    if arc_size >= 180 then
        radius = - radius
    endif
    {['R' radius, ' ']}
    If bFArcMv eq TRUE Then          
        If feed_unit eq mm_rev Then
            {'F' feed : sFeedUpr_f}
        Else
            {'F' feed : sFeedUpm_f}
        Endif
    Else
        If bCycleFeed eq TRUE Then
            If feed_unit eq mm_rev Then
                {['F' finish_feed : sFeedUpr_f]}
            Else
                {['F' finish_feed : sFeedUpm_f]}
            Endif
        Else
            If feed_unit eq mm_rev Then
                {['F' feed : sFeedUpr_f]}
            Else
                {['F' feed : sFeedUpr_f]}
            Endif
        Endif
    Endif
    bFLineMv = FALSE                    
    bFArcMv = FALSE                    
    if prev_command eq '@turn_proc'
        blknum_exist = false
    endif    
endp

 

Эти процедуры, вроде как, для многоосевой обработки, а я использую обычный "Переход обработки кармана" в "2.5D Переходы"(пока писал сообщение уже попробовал и "Обработка паза" и "Контур 3D", но результат тот же). Поэтому процедура "@arc" как раз мне и нужна, но мне не понятно, почему она выдаёт мне координаты относительно какой-то другой системы координат(MAC1-позиция1, насколько я понимаю), когда я специально сделал другую МАС1-позиция2, где ось "X" смотри в середину паза, тем самым Y=0 будет серединой паза. Далее произвожу трансформацию "4-я ось" на нужные углы(Судя по выводу координат в "@line", то МАС1-позиция2 поворачивается тоже). В постпроцессоре уже даже прописал расчет углов по "C" относительно новой MAC-позиции и трансформации и пока на моей выдуманной детали они записываются в УП даже правильно, но "@arc" всё загадочно портит. Прям так и напрашивается ощущение, что может это какой-то глюк\баг, а может чего в файле станка недокрутил.

 

Изменено пользователем Jacksam

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, Jacksam сказал:

Эти процедуры, вроде как, для многоосевой обработки

эти процедуры для вывода полярных кординат

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу