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

Создание пользовательских глобальных переменных


Vladislav-dobrynin

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

Кто подскажет, каким образом правильно создать свои глобальные переменные в sinumerik

В инструкции по расширенному программированию описан способ задания в программе

DEF NCK REAL _XX[99]

Вопрос - кто-то проверял и данный метод работает? То есть, по месту пишу данную строку и появляется переменная с глобальной областью видимости, значение которой храниться до перезапуска станка?

в GUD прописывать ее не обязательно? а если там прописать, то после перезагрузки станка ей скорее всего будет приравниваться прописанное там значение, или актуальное значение до перезагрузки?

Кто пользовался и знает как это работает?

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


UnPinned posts

Здравствуйте. Для создания глобальных переменных добавлял строку в файл UGUD.DEF (в определениях):

DEF NCK REAL var_name[30]

Эти переменные становятся доступными во всех программах, и для всех каналов. После перезагрузки станка сохраняют свои значения. Ну, и обращаемся к ним (в этом случае) по индексу от 0 до 29:

X=var_name[29]

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

Здравствуйте. Для создания глобальных переменных добавлял строку в файл UGUD.DEF (в определениях):

DEF NCK REAL var_name[30]

Эти переменные становятся доступными во всех программах, и для всех каналов. После перезагрузки станка сохраняют свои значения. Ну, и обращаемся к ним (в этом случае) по индексу от 0 до 29:

X=var_name[29]

Приветствую. По месту инициализировать если в конкретной главной программе - не работает?   

Можно ли прописать переменную используя интерфейс стойки , или только в ручную - открывать этот файл и прописывать ?

Сам всегда пользовался локальными переменными, объявляя их по месту. Но сейчас появились интересные задачи с измерениями, где необходимо хранить множества результатов  расчетов после измерений. До станка пока добраться времени нет, поэтому спрашиваю, возможно кто знает 

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

Можно ли прописать переменную используя интерфейс стойки , или только в ручную - открывать этот файл и прописывать ?

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

 

44 минуты назад, Vladislav-dobrynin сказал:

По месту инициализировать если в конкретной главной программе - не работает?

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

DEF REAL _X

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

Здравствуйте. Для создания глобальных переменных добавлял строку в файл UGUD.DEF (в определениях):

DEF NCK REAL var_name[30]

Эти переменные становятся доступными во всех программах, и для всех каналов. После перезагрузки станка сохраняют свои значения. Ну, и обращаемся к ним (в этом случае) по индексу от 0 до 29:

X=var_name[29]

 

Возможно сможете мне еще другой момент пояснить.

Пример. Стандартный цикл CYCLE116 вызывается со списком значений _CAL[ ] - переменная является локальной в главной программе.

Вот что пишут в расширенном программировании:

 

DEF INT _MODE
DEF REAL _CAL[13]= (3,0,10,-10,0,0,-10,0,0,0,0,0,0) ;с задачей 3 точек P1: 0,10 P2: -10,0 P3: 0,-10

 

CYCLE116(_CAL[ ], _MODE) ;результат: _CAL[9]=0 _CAL[10]=0 _CAL[11]=10 _CAL[12]=0 _ALM=0

 

Каким образом происходит передача значений локальной переменной (_CAL[9]=0 _CAL[10]=0 и т.д) обратно в главную программу?

 

Если открыть CYCLE116

PROC CYCLE116 (VAR REAL _CAL[],VAR INT _MODE)

 

Получается слово VAR - (Кодовое слово для передачи параметров по ссылке) дает возможность возвратить на уровень выше рассчитанные значения переменных в подпрограмме? Я правильно понимаю? Тестирую на уровне симулятора станка в NX, данные в главную программу не возвращаются. Но на реальном станке это работает именно так?

 

 

 

 

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

И еще к Вам вопрос, по другой теме. Приходилось ли Вам сталкиваться на Sinumerik 840D с ограничением количества символов в одном кадре?

Какая максимальная длинна кадра, которую может обработать данная стойка?

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

Каким образом происходит передача значений локальной переменной (_CAL[9]=0 _CAL[10]=0 и т.д) обратно в главную программу?

Не сталкивался с передачей массива значений в вызывающую программу, но, для простых переменных работает так:

 

PROC SUBPROG(real _a1, real _a2, var real _a3, var real _a4)

_a3=_a1+_a2

_a4=_a1*_a2

M17

 

Вызываем:

SUBPROG(20, 30, R10, _X)

Переменные _a1, _a2 - обычные, примут значения 20 и 30 соответственно, а рассчитанные значения _a3, _a4 попадут в R10 (50) и _X (600), _X локальная переменная, недоступная в подпрограмме.

Как работает это с массивом, не знаю, наверно так, как Вы написали.

 

51 минуту назад, Vladislav-dobrynin сказал:

Приходилось ли Вам сталкиваться на Sinumerik 840D с ограничением количества символов в одном кадре?

Количество символов в кадре, наверно, не ограничено, проверял максимальное количество цифр в номере кадра n55555555555555....., и не смог получить ошибку)

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

Вызываем:

SUBPROG(20, 30, R10, _X)

Переменные _a1, _a2 - обычные, примут значения 20 и 30 соответственно, а рассчитанные значения _a3, _a4 попадут в R10 (50) и _X (600), _X локальная переменная, недоступная в подпрограмме.

Как работает это с массивом, не знаю, наверно так, как Вы написали.

Идея понятна, спасибо. на днях проверю на массиве значений, отпишусь 

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

Какая максимальная длинна кадра, которую может обработать данная стойка?

 

Максимально 512 символов.
В последнем издании информация не изменилась.
(NC programming, 07/2021, 6FC5398-2EP40-0BA2)

 

 

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • andrey2147
      Ну так-то да, Виктор скажет какая секретная кнопка или битик для мотора. Счас получается что М коды не могут отработаться . ? Вероятно из-за красной ощибки. Тогда да, даддер скачивай.
    • Viktor2004
      На руке Marpos привод электромоторчик
    • pps270391
      Требуется чтобы при назначении материалов, данные автоматически записывались в строки: - Заготовка - Типоразмер - Материал (для материала уже существует автоматическая команда "SW-Material@@По умолчанию@"наименование модели".SLDPRT", которая записывается автоматически) Есть ли возможность, чтобы в модель записывались остальные строки, с учетом доработки материалов. Я так понимаю доработка свойств материала делается как на предоставленном фото
    • Anat2015
      Привод наверное пневматика, вручную клапана нажимать.
    • Limon2986
    • scrimline
      А возьми в учëт тот факт что рука уже сорвалась с места, датчик нагрузки сработал и выключил привод руки. Соответственно рука то уже может нормально функционировать, просто необходимо запусть еë принудительно, проблема в том что я не знаю как это сделать. 
    • andrey2147
      Конечно, раскоксовать поможет форум.
    • Guhl
      Есть вот такие штуки. Если не лень, то можете на оптопарах hcpl спаять самому На плк простая программа с высокоскоростным счетчиком  Как вариант, по прерываню от нуль метки переписывать значенин счетчика в регистр     А фанук сам не умеет разве в диагностике показывать количество импульсов, которые насчитал?
    • gudstartup
      это как например у датчика уровни ttl какой плк работает с ttl уровнями а если уж проверять то нужен тестер сигналов например lir 590 но надо жгут изготавливать и разъем который на аi приводах стоит для энкодера проще всего проверить заменой датчика только вот со сроками покупки беда  хотя может шестерня виновата??
    • scrimline
      Сомневаюсь что попало что-то, скорее всего оператор который работал до меня этой рукой не пользовался да и за эмульсией не следил. Думаю скорее закоксовалось, поскольку после команды рука стояла на месте секунды 2-3 и начала опускаться с рывком. По поводу ладдера, постараюсь скинуть, но на нашем предприятии проблемы и с флешками и с общей сетью, да и ПК на рабочем месте нет. 
×
×
  • Создать...