Перейти к публикации

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


Licon

Рекомендованные сообщения

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

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


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

Есть, наверно, соответствующие системные переменные. Как, крайний вариант, если не найдутся, записывать число 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

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

Спасибо, А_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?

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

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

но вот с А_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.

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

в этой ветке народ выложил много документации 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 .... шпиндель НЕ вращается в данный момент

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

в этой ветке народ выложил много документации 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, нет ни одного параметра указывающего фактическую скорость вращения. На экране диагностики есть похожие значения (скорость вращения  и значение инкодера), но с оборотами на экране не совпадает. 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

 

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

 

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

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

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

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

 

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

PMC

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

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

М41 LOW

M42 MIDDLE

M43 HIGH

 

Это так?

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

Изменено пользователем aiden57
Ссылка на сообщение
Поделиться на других сайтах

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

Теперь

#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

 

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

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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

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




  • Сообщения

    • karlf
      Тут красная не должна гореть   А тут должна зелёная гореть  Есть ещё самый первый бэкап, который со станком приехал, но он в формате .ВСК, не пойму чем и как его открыть
    • tompsongun
      Коперник 4.4.2 - исправил регресс - свойство Наименование из имени файла при запуске затиралось, если в свойстве конфига модели его не было, но если ввести символ при переименовке, то считывание из имени файла происходило. сделал проверку, и если Наименование и Обозначение в свойствах модели иные чем имя файла - включится чек-бокс Своё;  - считывание свойств Формат, Примечание, Раздел, Наименование из свойств общих, если они не обнаружены в конфиге. Коперник 4.4.2.zip  
    • adolf80
      А реально ЛИР-390Ф кто ни будь ставил вместо РОН285? Работает на хенде?
    • Larionov
      Доброго дня, коллеги! Подобная беда. Настроил по инструкции Fanuc Oi-mf. Пинг есть. Но при смене устройства. Ищет папку и не выдает ошибку поиска. Подскажите в какую сторону копать? Где может быть проблема?  
    • Koels
      А вообще, я потрогал сам радиатор привода в работе, и не смотря на включённые вентиляторы на самом радиаторе, он был очень горячий. Прикрутили два здоровых вентиля к этому привода, может дело было в перегреве. Дк меняли целиком привод новый, я писал, до меня ещё дело было. Меняли привод каждые пол года
    • Anat2015
      Бывает, что виноват не сам вентилятор, а схема его контролирующая, в приводе стоит.
    • Koels
      Про все это в курсе. И про внутренний вентилятор и про радиатор. Разъём тоже в норме. Вот это очень полезно. Спасибо.
    • Anat2015
      Это не описание ошибки, а описание массива ошибок. О чем ваша конкретная ошибка говорит должно быть в мануале на станок. Если энкодеры по оси абсолютные и наверняка есть программные конечники, можно попробовать их изменить, чтобы ось оказалась в разрешенной зоне. Если есть аппаратные датчики overtravel - заблокировать их. Только все очень аккуратно, чтоб еще дальше не уехать и не сломать механику. А с какого перепугу шпиндель поехал выше точки смены инструмента? Кто то порылся в параметрах? Опять человеческий фактор?
    • Anat2015
      @Madmax70 Это клон уже обсуждаемого. Админу надо просто удалить это.
    • Maks Horhe
      Можно и так сказать) Пока я не выслал бэкап посмотрите пожалуйста, будет работать уп? Станок 3х фрезер, fanuc 0i mf plus. Именно в таком виде, в одном файле, может где ошибся, подскажите. Пока не пробовал. %  O0001(FREZA D40R5) G21 G0 G17 G40 G49 G80 G90 T1 M6 (D40) G0 G90 G54 X0. Y0. S800 M3 G43 H1 Z20. M8 G1 F500. X0. Y0. G66 P8888 X0. Y0. G67 G66 P8889 X0. Y0. G67 G66 P8890 X0. Y0. G67 M5 M9 M30 % O8888 #20=20(RFrezi) #21=63.7(DNach) #22=-121.0(Z) #23=4.5(Angle) #24=1(step Z) #25=0.25(step CIRC) #33=-1(G2-1 G3+1) (****************) G90 G1 Z1.0 #11=0 #12=0 #13=1.0 #26=ROUND[3.142*#21/#25](N) #27=#21/2-#20 #31=#27 #28=0 #29=#24*TAN[#23] #30=#29/#26 #32=360/#26 N1 #1=#11+#27*COS[#28] #2=#12+#27*SIN[#28] #3=#13+[#27-#31]/TAN[#23] IF [#3 LT #22] GOTO2 G1 X#1 Y#2 Z#3 #27=#27-#30 #28=#28+#32*#33(G2 or G3) IF [ABS[#28] GE 360] THEN #28=0 IF [#27 LE 0.1] GOTO3 GOTO1 N2 X#1 Y#2 G2 I[#11-#1] J[#12-#2] N3 G1 X#11 Y#12  (Z[#13+5]) X#11 Y#12 M99 % O8889 #20=20(RFrezi) #21=45(DNach) #22=-121(Z) #23=0.001(Angle) #24=0.5(step Z) #25=0.25(step CIRC) #33=-1(G2-1 G3+1) (****************) G90 G1 Z-113.0 #11=0 #12=0 #13=-113. #26=ROUND[3.142*#21/#25](N) #27=#21/2-#20 #31=#27 #28=0 #29=#24*TAN[#23] #30=#29/#26 #32=360/#26 N4 #1=#11+#27*COS[#28] #2=#12+#27*SIN[#28] #3=#13+[#27-#31]/TAN[#23] IF [#3 LT #22] GOTO5 G1 X#1 Y#2 Z#3 #27=#27-#30 #28=#28+#32*#33(G2 or G3) IF [ABS[#28] GE 360] THEN #28=0 IF [#27 LE 0.1] GOTO6 GOTO4 N5 X#1 Y#2 G2 I[#11-#1] J[#12-#2] N6 G1 X#11 Y#12  (Z[#13+5]) X#11 Y#12 M99 % O8890 #20=20(RFrezi) #21=44.969(DNach) #22=-195(Z) #23=-4.5(Angle) #24=0.5(step Z) #25=0.25(step CIRC) #33=-1(G2-1 G3+1) (****************) G90 G1 Z-121.0 #11=0 #12=0 #13=-121.0 #26=ROUND[3.142*#21/#25](N) #27=#21/2-#20 #31=#27 #28=0 #29=#24*TAN[#23] #30=#29/#26 #32=360/#26 N7 #1=#11+#27*COS[#28] #2=#12+#27*SIN[#28] #3=#13+[#27-#31]/TAN[#23] IF [#3 LT #22] GOTO8 G1 X#1 Y#2 Z#3 #27=#27-#30 #28=#28+#32*#33(G2 or G3) IF [ABS[#28] GE 360] THEN #28=0 IF [#27 LE 0.1] GOTO9 GOTO7 N8 X#1 Y#2 G2 I[#11-#1] J[#12-#2] N9 G1 X#11 Y#12  G1 Z[0+10] F2000. X#11 Y#12 M99 %  
×
×
  • Создать...