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

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


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

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




  • Сообщения

    • Ветерок
      Не понял что это за процедура такая "перенос в 2D".   Наверное, скрывать объекты на том или ином виде надо на соответствующем виде чертежа, а не в сборке. Или создать в сборке соответствующую конфигурацию и отображать не чертеже её.
    • Viktor2004
    • Denis_12
      Доброго времени суток! Ребят, ни как не могу решить проблему авто-обновления чертежного вида 3D сборки, к примеру скрываешь все кроме основания каркаса сборки, переносишь это в 2D (чертежный вид) указываешь размеры и т.п. (ставишь галочки "исключить из авто-обновления") после чего начинаешь в 3D сборке показывать дополнительно стойки (для создания нового вида), и вот в ранее созданном виде даже с отключенным авто-обновлением они тоже начинают проявляться. Как решить эту проблему? Нужно зафиксировать вид, чтобы он не обновлялся без моего участия. SolidWorks 2022 года.
    • Зинаида
      Возможно Вы смотрите не в той перспективе. Проверьте в перспективе "Мой Teamcenter" стоя на ревизии объекта. Возможно Вы смотрите не в той перспективе. Проверьте в перспективе "Мой Teamcenter" стоя на ревизии объекта.
    • alek77
      Да, спасибо, я уже из интереса ее нашел. Еще раз повторю, чтобы не выхватить, сам я такими методами указния размеров не пользуюсь, это самая вредная практика из всех, что встречал. В свое время имел много проблем в автокаде, корректируя чужие чертежи. Но там и отртогональные линии под углом в 0,001 градуса были в норме, и миллион линий одна поверх другой, и незамкнутые отрезки и много всего, от чего волосы дыбом. В солиде, думал, не столкнусь с таким, наивный. Поэтому искал и нашел макрос который косяки размеров подсвечивает. Он вполне рабочий, но не стабильный. В чем причина не разбирался, так как со своей задачей он справляется. Причем отрабатывает и галочки, и замену текста в размере. Хорошо, что @malvi.dp нашел время и что-то корректирует, спасибо отдельное ему за это. Макрос достаточно полезный при работе с чужими документами. И если удастся сохранить все начальные функции этого макроса против изощренных методов вредительства - будет офигенно.
    • Kelny
      Если этой ссылки достаточно для отображения материала и материал уже есть в обозначенной модели, то возможно подойдёт TabBuilder: https://help.solidworks.com/2023/russian/SolidWorks/SWHelp_List.html?id=e68c1877b4fa431483f8c751bd9fcc78&_gl=1*lby1j3*_up*MQ..*_ga*NTEyNjA5NDQ3LjE3MTQxMTU3MzA.*_ga_XQJPQWHZHH*MTcxNDExNTcyOS4xLjEuMTcxNDExNTczNy4wLjAuMA..#Pg0   В старых версиях при написанни ссылок такого радо в некоторых случаях можно было не писать имя файла, а достаточно было вместо имени файла модели оставить ПРОБЕЛ.SLDPRT и имя после этого подставлялось само. Пробовать надо.   Так же можете глянуть макрос по изменению свойств файла (методы и функции там устаревшие, но возможно даже будет работать и можно поковыряться в коде): https://kelnyproject.ucoz.ru/load/6-1-0-8 по програмированию так же есть справка (версию в ссылке поменяйте на свою, что бы справка была актуальна для вашей версии): https://help.solidworks.com/SearchEx.aspx?query=get custom property&version=2010&lang=english,enu&prod=api
    • gudstartup
      только перед обновлением обязательно выполните  все что написано в руководстве и касается сохранения состояния станка и чпу. и обязательно сделайте образ диска и помните что слишком новые версии могут не заработать на вашем чпу относительно безопасно ставить только сервиспаки
    • NordCom
      Большое спасибо! Через это меню удалось зайти в меню. 95148->MOD
    • Danil89nur
      Доброе время суток. Столкнулся с проблемой на новой работе. Много деталей у который в свойствах отсутствует раздел "Материал" и приходится каждый раз вручную заходить туда, создавать раздел и выбирать там ""SW-Material@Name.SLDPRT". Возможно кто-то знает, либо сможет помочь с написанием простенького макроса, при нажатии на который в свойствах детали будет создаваться необходимый раздел и в нем сразу написан выбранный материал (желательно, чтоб там было указано сразу наименование материала, а не формула для его получения ""SW-Material@Name.SLDPRT"). Пытался самостоятельно через ChatGPT, но так как в програмировании я 0, то ничего не получилось)
    • Bot
      Коллеги, Благодарю вас за интерес к проекту электронной энциклопедии в области инженерного программного обеспечения PLMpedia, который более 15 лет развивался группой компаний ЛЕДАС. Представленный ниже скриншот передаёт содержание и структуру базы данных энциклопедии, накопленной за эти годы: именно такую начальную страницу, можно было до сегодняшнего дня увидеть, придя по адресу https://plmpedia.ru/ В последние несколько лет ЛЕДАС особенно интенсивно и результативно вкладывает все ресурсы в развитие своего основного бизнеса: см. ниже «О компании ЛЕДАС». Сегодня я с некоторым сожалением констатирую, что у компании ЛЕДАС более нет возможности отвлекать ресурсы своих сотрудников на некоммерческий (фактически волонтерский) проект PLMpedia. Вся база данных ресурса может быть безвозмездно передана любому юридическому или физическому лицу с единственным условием: наш преемник должен будет публично объявить о состоявшейся передаче и взятии на себя [...] View the full article
×
×
  • Создать...