Jump to content

системные переменные фактического состояния шпинделя


Licon

Recommended Posts

Здравствуйте, форумчане. Прошу помочь с написанием программы. Суть в следующем. Я написал параметрическую подпрограмму для funuc 0i-TD станок hwacheon cutex 240 smc, присвоил ей имя O9010 и завел ее на вызов посредством G77 {параметры}. Предполагалось, что сама программа будет проверять есть ли в данный момент вращение главного шпинделя. Делается это через параметр #4113 посредством IF[[#4113NE3]AND[#4113NE4]]GOTO50(NET VRASHINIYA). Но в процессе тестирования выяснилось, что есть перед вызовом подпрограммы сначала вызывается код М3 или М4, а после него код M8, то по данному условию получается, что вращение отсутствует. Вопрос в следующем, есть ли возможность проверить из подпрограммы непосредственное вращение шпинделя, какие переменные для этого есть. Чтение мануала пока не помогло. Желательно, чтобы можно было определять направление вращения и фактическую скорость, или хотя бы отклонение фактической скорости вращения от заданной через S. Заранее благодарю за ответы.

Link to post
Share on other sites


Вопрос в следующем, есть ли возможность проверить из подпрограммы непосредственное вращение шпинделя, какие переменные для этого есть.

Есть, наверно, соответствующие системные переменные. Как, крайний вариант, если не найдутся, записывать число 3 или 4 или 5 - соответствующее M-команде для шпинделя в переменную, например #5XX, а команды M3, M4, M5 сделать макропрограммами с использованием M-кода. Тогда и S (заданную) можно считать в качестве параметра. Но тогда нужно всегда придерживаться формы M3S..., M4S..., M5, что в принципе естественно.

 

O9XXX(M3)

M3S#19

#551=3

#552=#19

M99

 

O9XXX(M4)

M4S#19

#551=4

#552=#19

M99

 

O9XXX(M5)

M5

#551=5

IF[#19NE#0]#552=#19

M99

Link to post
Share on other sites

Спасибо, А_1. Это рабочий вариант, но тогда данную программу невозможно будет перенести на другой станок. Придется на каждом станке корректировать коды М3, М4, М5. Есть еще вариант, к которому я пришел: в разделе 15.2 руководства Fanuc 0i-TC (B-64114RU_01) в таблице 15.2(а), указаны параметры через которые можно обращаться к PMC. В разделе 5.5.8 руководства PMC programming manual (B-64393EN/02) описана функция 50 Reading the Actual Spindle Speed, думаю ее можно использовать. Вопрос в том как это реализовать через макропрограмму с G-кодами. Думаю использовать G-код G10L50, на следующей строке указывается номер параметра и его значение, далее G11. Пока не понятно как это работает. Правильно ли я понимаю, что достаточно в параметре #1132 задать значение функции 50, и тогда в параметр #1032 будет выгружаться значение фактической скорости шпинделя. Каким образом происходит активация процесса считывания/обновления скорости из PMC в параметре #1032. Значение #1032 будет обновляться каждый раз при изменении фактической скорости или как-то нужно повторно вызывать функцию 50?

Link to post
Share on other sites

не могу постич смысла сих манипуляций

но вот с А_1 я полностью согласен

ну еще все коды текущего сотояния станка занесены в параметры #, только вот подробного описания их как правило нет

хотя ссылки встречаются в документации контекстно

это значит что не нужно специально обращатся к PMC, достаточно из тела подпрограммы проверить соответствующюю переменную

никогда не занимался именно шпинделем

но напрмер после цикла привязки к отверстию текущий измеренный диаметр записывается в параметр #880 (возможно не точно, давно было )

и там гдето рядом находятся координаты центра отверстия, щас точно не помню

это я использовал чтобы автоматически делать коррекцию на радиус фрезы при чистовом фрезерования отверстия

ну тоесть первый проход с определенным корректором, потом цикл измерения ренешоу, и финишный проход с вычисленным корректором

 

********************************************************

из интереса пошарился в своей документации

переменную статуса шпинделя пока не нашел

 

#3026 Инструмент в шпинделе (только для чтения)
#3027 Скорость вращения шпинделя, об./мин. (только для
чтения)

 

Ручные коррекции системы
#3003 Переменная 3003 является параметром пропуска отдельного блока. Она обходит функцию
"покадровый режим" G-кода (т.е. является более приоритетной) В следующем примере функция
"покадровый" (Single Block) игнорируется, когда #3003 присваивается значение 1. После того, как
M3003 присвоено значение 1, все команды G-кода (строки 2-5) выполняются последовательно, даже
если функция "покадровый режим" включена. При установке #3003 на "ноль" функция "покадровый"
действует как обычно. Пользователь должен нажимать кнопку «Запуск цикла» для выполнения каждой
строки программы (строки 7-11).
#3003=1;
G54 G00 G90 X0 Y0;
S2000 M03;
G43 H01 Z.1;
G81 R.1 Z-0.1 F20.;
#3003=0;
T02 M06;
G43 H02 Z.1;
S1800 M03;
G83 R.1 Z-1. Q.25 F10.;
X0. Y0.;

Переменная #3004 обходит некоторые функции управления при выполнении.
Первый разряд отключает функцию Feed Hold (Остановка подачи). Если остановка подачи во время
выполнения части текста программы не используется, необходимо перед этими строками программы
назначить переменной #3004 значение 1. После этого фрагмента кода присвойте переменной #3004
значение 0 для восстановления функции кнопки Feed Hold (Остановка подачи). Например:
Код подвода  (Остановка подачи разрешена)
#3004=1; (Отключает кнопку Feed Hold)
Непрерываемый код  (Остановка подачи запрещена)
#3004=0; (Включает кнопку Feed Hold)
Код отвода  (Остановка подачи разрешена)
Ниже приводится схема разрядов переменной #3004 и соответствующие функции обхода.
E - Включено D - Выключено
 

#3006 Программируемый останов
Можно запрограммировать, который будет выглядеть как М00 - система управления останавливается
и ожидает нажатия кнопки Cycle Start. После нажатия кнопки Cycle Start (Запуск цикла) программа
продолжится с блока, следующего за #3006. В следующем примере в левой нижней части экрана будут
показаны первые 15 знаков комментария.
IF [#1 EQ #0] THEN #3006=101 (здесь комментарий);

 

#4001-#4021 Групповые коды последнего блока (модальные)
Группирование G-кодов позволяет повысить эффективность обработки. G-коды с близкими функциями
обычно объединяются в одну группу. Например, G90 и G91 находятся в группе 3. Эти переменные
хранят последний код или G-код по умолчанию для одной из 21 групп. При чтении группового кода
макропрограмма может изменить поведение G-кода. Если в 4003 содержится 91, макропрограмма
может определить, что все перемещения должны быть шаговыми, а не абсолютными. Нулевой группе
не соответствует переменная, G-коды нулевой группы являются немодальными.

 

#4101-#4126 Адресные данные последнего блока (модальные)
Адресные коды от А до Z (исключая G) рассматриваются как модальные значения. Информация,
представленная в последней строке кода, интерпретируемого в процессе опережающего просмотра,
содержится в переменных с 4101 по 4126. Числовое соответствие номеров переменных алфавитным
адресам такое же, как описано в разделе о соответствии алфавитных адресов. Например, значение
ранее интерпретированного адреса D находится в #4107, а последнее интерпретированное значение
I - #4104. При совмещение имен макросов М-коду нельзя передавать переменные в макропрограмму,
используя переменные 1-33. Вместо этого в макропрограмме следует использовать значения из 4101-4126.

Link to post
Share on other sites

в этой ветке народ выложил много документации http://cccp3d.ru/topic/41329-sistemnye-makroperemennye/?hl=%2B%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5+%2B%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5#entry380174

 

посмотрите, особенно англоговорящие мануалы -- в них описаний параметров намного больше

 

как указали выше, 

текущее значение числа оборотов шпинделя записывается в параметр #3027

дословно:  #3027. Spindle RPM (read only)

Вам надо просто проверить на равенство "0" этой переменной: IF [#3027 EQ 0] THEN .... шпиндель НЕ вращается в данный момент

Link to post
Share on other sites

в этой ветке народ выложил много документации http://cccp3d.ru/topic/41329-sistemnye-makroperemennye/?hl=%2B%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5+%2B%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5#entry380174

 

посмотрите, особенно англоговорящие мануалы -- в них описаний параметров намного больше

 

как указали выше, 

текущее значение числа оборотов шпинделя записывается в параметр #3027

дословно:  #3027. Spindle RPM (read only)

Вам надо просто проверить на равенство "0" этой переменной: IF [#3027 EQ 0] THEN .... шпиндель НЕ вращается в данный момент

 Сделал проверку системной переменной #3027 , при присвоении значения #1=#3027 пишет ошибку что нет такой переменной. Пролистал все параметры в разделе SYSTEM, нет ни одного параметра указывающего фактическую скорость вращения. На экране диагностики есть похожие значения (скорость вращения  и значение инкодера), но с оборотами на экране не совпадает. 

Link to post
Share on other sites

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

так что придется искать данные именно в тандеме "модель стойки - модель станка", тут "Толстые желтые фолианты" могут не иметь такой информации

ну это и так понятно, я просто озвучил

непонятно в чем такая необходимость определять статус шпинделя? есть идея на какой то хитрый макрос?

Link to post
Share on other sites

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

так что придется искать данные именно в тандеме "модель стойки - модель станка", тут "Толстые желтые фолианты" могут не иметь такой информации

ну это и так понятно, я просто озвучил

непонятно в чем такая необходимость определять статус шпинделя? есть идея на какой то хитрый макрос?

Ничего хитрого нет, макрос отрезает пруток. Будучи в прошлом компьютерным программистом, по привычке хотел сделать защиту от дурака, чтобы какой-нибудь горе оператор не ломал моей подпрограммой резцы и пластины. Поэтому в макросе хотел сделать проверку фактического вращения шпинделя.

Link to post
Share on other sites
Поэтому в макросе хотел сделать проверку фактического вращения шпинделя.

И как Вы предотвратите поломку резцов? Если шпиндель не будет вращаться, инструмент и так не будет двигаться, если оператор заменит левый резец на правый, как подпрограмма узнает, что теперь нужно контролировать вращение по M3 а не по M4? Чем сложнее программа, тем больше возможностей реализоваться ошибке, которую никто не ждет.

Link to post
Share on other sites

 

Поэтому в макросе хотел сделать проверку фактического вращения шпинделя.

И как Вы предотвратите поломку резцов? Если шпиндель не будет вращаться, инструмент и так не будет двигаться, если оператор заменит левый резец на правый, как подпрограмма узнает, что теперь нужно контролировать вращение по M3 а не по M4? Чем сложнее программа, тем больше возможностей реализоваться ошибке, которую никто не ждет.

 

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

Link to post
Share on other sites
  • 6 years later...
aiden57

Привет всем. Вопрос близкий по теме. Может знает кто, через какую системную переменную можно считать установленную в данный момент передачу (M41, M42 и т.д.)? В мануалах не нашел ничего. Нужно для условия if-then

Link to post
Share on other sites
Viktor2004
1 час назад, aiden57 сказал:

через какую системную переменную можно считать установленную в данный момент передачу (M41, M42 и т.д.)

данные команды формируются в ладдере. И для каждого станка им можно задать свою функцию. Что они означают у вас? Переключение скоростей шпинделя?

Так что в программе которую вы пишете можно использовать тег PMC который назначем для этой команды именно в вашем ладдере. Там как правило есть импульс начала исполнения М-команды, а так же импульс завершения выполнения команды. И куча промежуточных

Для какой программы нужно знать состояние М41 М42? Для дистанционного мониторинга с помощью FOCAS2 или для пользовательской программы? Если для пользовательской, то там нельзя просто так посмотреть состояние тегов PMC. Что бы его можно было посмотреть, нужный тэг надо в PMC перенаправить в тэг G54-G57 в тот бит который еще не задействован, а уже в пользовательской программе ловить его через переменные #1000 - #1031

Edited by Viktor2004
  • Чемпион 1
Link to post
Share on other sites
aiden57
6 минут назад, Viktor2004 сказал:

Что они означают у вас? Переключение скоростей шпинделя?

 

Для какой программы нужно знать состояние М41 М42? Для дистанционного мониторинга с помощью FOCAS2 или для пользовательской программы?

1. Переключение скоростей шпинделя.

2. Для пользовательской программы. Нужно считать информацию на какой скорости шпиндель в данный момент...

Спасибо за ответ. Попробую поймать через тысячные переменные...

Link to post
Share on other sites
Viktor2004
5 минут назад, aiden57 сказал:

Попробую поймать через тысячные переменные

Что бы поймать через тысячные переменные, надо что бы сигнал там сначала появился. Для этого его туда надо отправить через PMC. Давайте сюда ваш ладдер, посмотрим.

 

Link to post
Share on other sites
Viktor2004

Посмотрите по электросхеме. Там два контактора должно быть которые переключают скорости шпинделя. У этих контакторов с NO допконтактов сигналы идут в ЧПУ на входы. Хорошо бы Вы нашли на какие именно входы. Просто если ваш ладдер окажется без комментариев, нам сложно будет их там найти. Ведь именно этот сигнал надо будет перенаправить на G54.0 G54.1 (если они конечно уже чем-нибудь не задействованы и надо будет искать другие

Link to post
Share on other sites
aiden57
48 минут назад, Viktor2004 сказал:

Что бы поймать через тысячные переменные, надо что бы сигнал там сначала появился. Для этого его туда надо отправить через PMC. Давайте сюда ваш ладдер, посмотрим.

 

Вот коллеги скинули. А чем его открывать?

PMC

Link to post
Share on other sites
Viktor2004

Я вижу в этом ладдере три скорости

М41 LOW

M42 MIDDLE

M43 HIGH

 

Это так?

Link to post
Share on other sites
aiden57
2 минуты назад, Viktor2004 сказал:

Я вижу в этом ладдере три скорости

М41 LOW

M42 MIDDLE

M43 HIGH

 

Это так?

Да. И ещё есть M40 - нейтральная

Edited by aiden57
Link to post
Share on other sites
Viktor2004

Добавил в ладдер три строчки.

Теперь

#1000 это SPINDLE GEAR LOW

#1001 это SPINDLE GEAR MIDDLE

#1002 это SPINDLE GEAR HIGH

проверяйте

 


       | R0036.3                         G0054.0 |
 00939 *----||------------------------------()---*
       |  SGL.L                                  |
       |                                         |
       | R0036.4                         G0054.1 |
 00940 *----||------------------------------()---*
       |  SGM.L                                  |
       |                                         |
       | R0036.5                         G0054.2 |
 00941 *----||------------------------------()---*
       |  SGH.L                                  |
       |                                         |

PMC1.000

 

Высланный мной исправленный ладдер надо загрузить в станок вместо вашего

Link to post
Share on other sites
aiden57
1 минуту назад, Viktor2004 сказал:

Добавил в ладдер три строчки.

Теперь

#1000 это SPINDLE GEAR LOW

#1001 это SPINDLE GEAR MIDDLE

#1002 это SPINDLE GEAR HIGH

проверяйте

Огромное спасибо.

Link to post
Share on other sites
Viktor2004

Проверить надо обязательно. Вдруг я ошибся и взял импульсные сигналы или не подтвержденные. Тогда надо будет искать другие. Я же не вижу включение-выключение в динамике на работающем станке

Link to post
Share on other sites
gudstartup
1 час назад, aiden57 сказал:

2. Для пользовательской программы. Нужно считать информацию на какой скорости шпиндель в данный момент...

Для мониторинга используйте функции Focas2 и не надо влезать в ладдер 

Ступени вашей коробки скоростей программу мониторинга не должны интересовать

Link to post
Share on other sites
Viktor2004

Лучше вот этот ладдер загрузите. Добавил нейтральный режим

#1000 это SPINDLE GEAR LOW

#1001 это SPINDLE GEAR MIDDLE

#1002 это SPINDLE GEAR HIGH

#1003 это SPINDLE GEAR NEUTRAL

 

       | R0036.3                         G0054.0 |
 00939 *----||------------------------------()---*
       |  SGL.L                                  |
       |                                         |
       | R0036.4                         G0054.1 |
 00940 *----||------------------------------()---*
       |  SGM.L                                  |
       |                                         |
       | R0036.5                         G0054.2 |
 00941 *----||------------------------------()---*
       |  SGH.L                                  |
       |                                         |

       | R0036.7                         G0054.3 |
 00942 *----||------------------------------()---*
       |  SGN.L                                  |
       |                                         |

PMC1.000

Edited by Viktor2004
Link to post
Share on other sites
gudstartup

Ладдер сам определяет какую ступень скорости включить в зависимости от значения S кода

Link to post
Share on other sites
Viktor2004
1 минуту назад, gudstartup сказал:

Ладдер сам определяет какую ступень скорости включить в зависимости от значения S кода

Не каждый. Есть такие, которые при задании скорости выше нормы круьят шпиндель с максимальной скоростью для той ступени которая стоит, пока не получит нужную М команду.

Автор хочет использовать информацию о ступени в пользовательской программе станка, а не в FOCAS

Link to post
Share on other sites
gudstartup
2 минуты назад, Viktor2004 сказал:

Лучше вот этот ладдер загрузите. Добавил нейтральный режим

Смысл вводить дополнительные уравнения в ладдер, если программе нужна только скорость вращения шпинделя ?

Зачем программе знать на какой ступени находится коробка передач станка?

Link to post
Share on other sites
Viktor2004
6 минут назад, gudstartup сказал:

Зачем программе знать на какой ступени находится коробка передач станка?

Откуда мы знаем что хочет автор вопроса? Может при высокой скорости станок цветомузыку запускает на крыше.

Хотя, на прошлой работе меня шеф попросил отмотать у него счетчик назад. Я всегда удивляюсь желаниям руководства. Приносят ремонтировать пылесосы и кофейники которые я сам у себя такие выкидываю. Ну снял я ему счетчик. Переключил в лаборатории обмотки и отмотал на НОЛЬ. Так как он и просил. А когда установил обратно, спросил, а зачем ему это надо? Говорит, что купил новую квартиру, а там счетчик не ноль показывает. Меня же заставят за это платить. Твоюжмать. Чего же ты раньше не сказал? Как дети. Вызываешь представителя энергонадзора, он фиксирует показания счетчика и все. Ну а теперь у него НОЛЬ.

Edited by Viktor2004
Link to post
Share on other sites
gudstartup
1 минуту назад, Viktor2004 сказал:

Не каждый. Есть такие, которые при задании скорости выше нормы круьят шпиндель с максимальной скоростью

 

Кстати поздравляю вас с праздником!

Link to post
Share on other sites
Viktor2004
Только что, gudstartup сказал:

Кстати поздравляю вас с праздником!

Спасибо

Link to post
Share on other sites
gudstartup
17 минут назад, Viktor2004 сказал:

Хотя, на прошлой работе меня шеф попросил отмотать у него счетчик назад.

Показания счетчика фиксируются при постановке его на учет в ЖЭУ и даже с завода  эти показания не равны нулю так как он проходит поверку.

Если счетчик на учете то его значение не  может просто так изменится на ноль!

Ждите и он вскоре попросит вас подмотать ему несколько сот кубометров !:biggrin:

Edited by gudstartup
Link to post
Share on other sites
Viktor2004
3 минуты назад, gudstartup сказал:

Ждите и он вскоре попросит

15 лет прошло

Link to post
Share on other sites
gudstartup

 

1 минуту назад, Viktor2004 сказал:

15 лет прошло

Много воды утекло с тех пор, а в штат учетчиков хронический недобор!:smile:

Link to post
Share on other sites
aiden57
14 минут назад, Кит сказал:

А #4113 и #4313 не подходят?

Нет, т.к. команда выбора ступени не всегда присутствует...

Link to post
Share on other sites
gudstartup
Только что, aiden57 сказал:

Нет, т.к. команда выбора ступени не всегда присутствует...

У вас что выбор ступени описывается в технологической программе?

 

 

Какая у вас максимальная скорость шпинделя?

Что станкостроитель не определил в ладдере переключение диапазонов по S коду ?

Для чего нужно вашей программе знать о том на какой ступени сейчас работает коробка скоростей S вашего станка ведь скорость вращения и так обеспечивается равной скорости в коде S заданной в  вашей программе?

Link to post
Share on other sites
Кит
1 час назад, aiden57 сказал:

Нет, т.к. команда выбора ступени не всегда присутствует...

Как это?

Link to post
Share on other sites
gudstartup
2 часа назад, aiden57 сказал:

Нет, т.к. команда выбора ступени не всегда присутствует...

При нормальном ладдере  в ней нет необходимости!:no:

Link to post
Share on other sites
Viktor2004

Автор, а действительно непонятно, как Вы собираетесь использовать это? Что собираетесь делать по условию в зависимости от состояния GEAR ?

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.



×
×
  • Create New...