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

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


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 пользователей

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




  • Сообщения

    • lem_on
      ну с дуру известно что сломать можно.
    • Viktor2004
      руку привязки так сломать легко
    • lem_on
      По моему вполне логично если станок вывалится в ошибку если рука не доехала до места. У меня так же если кулачки или деталь на пути, просто пихаеш ее до места и станок опять активен. Но нынешние пановья даже не могут написать модель станка.
    • Viktor2004
      Я согласен что скорее всего проблема механическая Но если логика прописана криво и возможно не предусмотрела остановку в промежуточном состоянии, разве не логично будет попробовать принудительно подав напряжение дернуть эту руку вверх-вниз? Возможно то что туда попало выпадет  
    • Guhl
      Если оставить за скобками вопрото том, что до м19 работает нормально, а после нет, то вы не считали сколько у него реально импульсов на оборот? с помощью стороннего плк, например  А если ориентацию м5 снимать, а не м20?
    • lem_on
      Что это за станок такой в котором сразу ладер ковырять надо, даже не смотря на возможность механической проблемы? Или профдеформация?
    • Viktor2004
      не сразу я понял в чем вопрос. Долго соображал что такое режим управления скоростью. При завершении ориентации PMC снимает сигнал G70.6 ? И если он после снятия сигнала продолжает удерживать шпиндель, при каких условиях эта ориентация все же снимается? После нажатия аварийного грибка или еще как?
    • Viktor2004
      Ладдер пришлите. Будем принудительно пробовать поднимать и опускать
    • streamdown
      Коллеги приветствую! IPS 8. Подскажите пожалуйста, кто какое серверное железо использует? Интересуют параметры при одновременной работе, ну например, 400 пользователей онлайн
    • gudstartup
      так он так и позиционируется по m19 pmc выдает g70.6 а чпу отвечает f45.7 но ориентацию и смещение в 4077 он отрабатывает нормально шпиндель встает ровно и смена происходит хорошо. вопрос почему после ввода команды управления скоростью он все еще продолжает контролировать число импульсов между нуль метками хотя в принципе уже должен отменить позиционный контроль и просто считать обороты по 0 метке как он это делает без М19? это все понятно но почему оно продолжает проверять это после завершения ориентации мне непонятно
×
×
  • Создать...