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

Системные переменные 802D sl


zarathustra

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

Такой вопрос: возможно ли в Sinumerik 802D sl использование в программе системных переменных типа значений смещений нулей G54,G55...; текущая позиция; время; дата; значения корректоров на длину и радиус; модальная информация G, T, D, F, итд. ? А также возможность передачи переменных из главной программы в подпрограмму как это реализовано в fanuc с помощью G65? Работал только с фануками, предстоит изучать siemens. На фануках очень такие вещи были удобны.

Например в фануке присвоение переменной #1 значения текущей координаты X в G54 выглядит так: #1=#5041. А как ето будет выглядеть в siemens R1=? ?

Или присвоение значению смещения координаты Y (нуля G54) текущей координаты Y в системе координат станка: #5222=#5022 что удобно применять при установке нулей. Есть ли что-то подобное в сименс?

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


чета молчат профи...

G54-G57, G505-G599 - это у сименса так называемые SZS[0-99], G54 соответствует системной переменной P_UIFR[1], номер активной szs хранится в P_UIFRNUM, то что вы хотите делается так: "R1=$P_UIFR[1, X, TR]", TR - это от translation.

А вот с присвоением SZS.Y текущего положения в ск станка сложнее, у сименсов длинная цепочка преобразований систем координат: что-то вроде "Система координат станка(MCS)"->"Базовая система координат(BCS)"->"Базовая нолевая система(BCS)"->"Настраиваемая нолевая система(SZS)"->"Система координат заготовки(WCS)", в SZS[1](G54) хранятся преобразования относительно BZS. Так что, примерно так: "$P_UIFR[1, Y, TR]=$AA_IBN[Y]".

насчет передачи параметров в функции - можно объявить функцию с параметрами, типа так: "proc myfunc(var1type var1, ...)" - для передачи параметров по значению и "proc myfunc(var var1type var1, ...)" - для передачи параметров по ссылке. - можно еще и по-другому, но так - железобетонно.

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

чета молчат профи...

G54-G57, G505-G599 - это у сименса так называемые SZS[0-99], G54 соответствует системной переменной P_UIFR[1], номер активной szs хранится в P_UIFRNUM, то что вы хотите делается так: "R1=$P_UIFR[1, X, TR]", TR - это от translation.

А вот с присвоением SZS.Y текущего положения в ск станка сложнее, у сименсов длинная цепочка преобразований систем координат: что-то вроде "Система координат станка(MCS)"->"Базовая система координат(BCS)"->"Базовая нолевая система(BCS)"->"Настраиваемая нолевая система(SZS)"->"Система координат заготовки(WCS)", в SZS[1](G54) хранятся преобразования относительно BZS. Так что, примерно так: "$P_UIFR[1, Y, TR]=$AA_IBN[Y]".

насчет передачи параметров в функции - можно объявить функцию с параметрами, типа так: "proc myfunc(var1type var1, ...)" - для передачи параметров по значению и "proc myfunc(var var1type var1, ...)" - для передачи параметров по ссылке. - можно еще и по-другому, но так - железобетонно.

ну и просто дополню - совершенно не обязательно использовать R-переменные, в Сименсе можно использовать свои переменные разного типа.

Например так:

DEF REAL Y_PROGRAM_ZERO=-999 ;*****

DEF REAL Z_PROGRAM_ZERO=-999 ;*****

DEF REAL A_PROGRAM_ZERO=180.000 ;*****

DEF REAL KOLI4ESTVO_DETALEI = 1 ;*****

это их объявление с присвоением, а потом в программе можно с ними делать все что угодно.

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

Спасибо.

Только не понял на счёт объявления функций. Например надо вызвать подпрограмму выполняющую цикл глубокого сверления, передав ей параметры: недоход®, глубину сверления(Z), глубину на каждое сверление(Q), подачу(F). В скобках аналог фануков. Где надо объявить функцию, в главной или подпрограмме? Начал изучать станок, оказалось что там нет стандартных кукол CYCLE82, CYCLE83, может и ещё каких - все не проверял. Решил эти циклы заменить вызовом подпрограммы. Но приходится вначале вызова присваивать значения переменным R1®, R2(Z), R3(Q), R4(F). Всё работает, но так не очень удобно. На счёт системы координат сименсов- это какой-то геморой, непонятно для чего нужный(пока не разобрался). Скачал литру по синумерик 840D системные переменные, там по текущему положению осей нашел $P_EP[] и $P_EPM[] соответственно для координат заготовки и координат станка. Проверил - работает. Но не нашёл переменные смещения нулей G54, G55... т.е. типа #5222, я так понял это $P_UIFR[] когда искал смутило слово фрейм поэтому даже не обратил внимание. Чё значит- фрейм?

Завтра проверю на станке $P_UIFR[]. Если заработает буду просто счастлив. Короче приходится изучать стойку методом научного тыка.

То что можно объявлять свои переменные это хорошо, более понятная программа будет, а то напишешь, а через пол года чё нибудь подправить - начинаешь вспоминать.

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

Да, ещё вопрос. Кроме IF есть ли чё нибудь типа WHILE? Видел в книжке по системным переменным примерно следующее: WHEN R1<12.0 DO... чё это и что надо писать после DO?

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

Уважаемый, а как насчет все-таки мат. часть почитать? Там ведь все есть...

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

Спасибо.

Только не понял на счёт объявления функций. Например надо вызвать подпрограмму выполняющую цикл глубокого сверления, передав ей параметры: недоход®, глубину сверления(Z), глубину на каждое сверление(Q), подачу(F). В скобках аналог фануков. Где надо объявить функцию, в главной или подпрограмме? Начал изучать станок, оказалось что там нет стандартных кукол CYCLE82, CYCLE83, может и ещё каких - все не проверял. Решил эти циклы заменить вызовом подпрограммы. Но приходится вначале вызова присваивать значения переменным R1®, R2(Z), R3(Q), R4(F). Всё работает, но так не очень удобно. На счёт системы координат сименсов- это какой-то геморой, непонятно для чего нужный(пока не разобрался). Скачал литру по синумерик 840D системные переменные, там по текущему положению осей нашел $P_EP[] и $P_EPM[] соответственно для координат заготовки и координат станка. Проверил - работает. Но не нашёл переменные смещения нулей G54, G55... т.е. типа #5222, я так понял это $P_UIFR[] когда искал смутило слово фрейм поэтому даже не обратил внимание. Чё значит- фрейм?

Завтра проверю на станке $P_UIFR[]. Если заработает буду просто счастлив. Короче приходится изучать стойку методом научного тыка.

То что можно объявлять свои переменные это хорошо, более понятная программа будет, а то напишешь, а через пол года чё нибудь подправить - начинаешь вспоминать.

А что, для подпрограмм Fanuc не надо перед вызовом присваивать значения переменным, если подпрограмма вызывается не G65, а через Lxxxx? С системами координат для Siemens нет никакого гемора. FRAME - это система координат. $P_UIFR и есть переменная смещения нулей, удобна тем, что значения смещения нулей программы заносятся вначале программы и оператору не надо помнить, куда их заносить в системе.

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

В той документации что у меня есть описан только IF. Где взять мат. часть?

Гемор с системой координат в том что если у фанука система координат станка- то она всегда система координат станка, система координат детали - с.к. детали через смещение от координат станка. Запутаться крайне сложно. В сименс же система координат детали: пока действует G54 ,например, значения на экране одни, после м2 или reset, значения уже другие, хотя написано WCS. Причём по X и Y координаты совпадают с MCS, а по Z разница 69,9.. мм. Зачем так сложно? Кому от етого легче?

По присваиванию значений переменным: с помощью G65 по моему намного удобней передавать параметры, чем перед вызовом Lxxxx. Поэтому хотелось узнать аналог G65 на сименсе, что-то типа своих собственных CYCLE.

Сегодня проверил $P_UIFR- это то что искал, спасибо. Остался вопрос по обьявлению функций и передаче в них параметров.

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

В той документации что у меня есть описан только IF. Где взять мат. часть?

Гемор с системой координат в том что если у фанука система координат станка- то она всегда система координат станка, система координат детали - с.к. детали через смещение от координат станка. Запутаться крайне сложно. В сименс же система координат детали: пока действует G54 ,например, значения на экране одни, после м2 или reset, значения уже другие, хотя написано WCS. Причём по X и Y координаты совпадают с MCS, а по Z разница 69,9.. мм. Зачем так сложно? Кому от етого легче?

По присваиванию значений переменным: с помощью G65 по моему намного удобней передавать параметры, чем перед вызовом Lxxxx. Поэтому хотелось узнать аналог G65 на сименсе, что-то типа своих собственных CYCLE.

Сегодня проверил $P_UIFR- это то что искал, спасибо. Остался вопрос по обьявлению функций и передаче в них параметров.

Аналога G65 на сименсе нет. Но если точнее, есть CYCLEХХХХ. Только цикл нужно написать самому. У Fanuc на дисплее отображаются положения всех систем координат: станка, программы. У Sinumerik надо переключать отображение MCS, WCS. все это - дело привычки. Тоже пришлось привыкать к Sinumerik после Fanuc.

А тут мат.часть <noindex>http://www.automation-drives.ru/mc/support/doc/</noindex>

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

Гемор с системой координат в том что если у фанука система координат станка- то она всегда система координат станка, система координат детали - с.к. детали через смещение от координат станка. Запутаться крайне сложно. В сименс же система координат детали: пока действует G54 ,например, значения на экране одни, после м2 или reset, значения уже другие, хотя написано WCS. Причём по X и Y координаты совпадают с MCS, а по Z разница 69,9.. мм. Зачем так сложно? Кому от етого легче?

В левой нижней части окна с координатами G54 заменяется на G500 при ресете или М2/30?
Ссылка на сообщение
Поделиться на других сайтах

Спасибо за ссылку, скачал расширенное программирование буду изучать, там действительно всё есть.

G54 меняется на G500: но почему по X и Y значения совпадают с системой координат MCS а по Z различие в 70мм. Это при том что в основе(кажется так называется) все оси по нулям.

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

Спасибо за ссылку, скачал расширенное программирование буду изучать, там действительно всё есть.

G54 меняется на G500: но почему по X и Y значения совпадают с системой координат MCS а по Z различие в 70мм. Это при том что в основе(кажется так называется) все оси по нулям.

посмотрите базовое смещение координат, это собственно G500, а то, на что сбрасывается после reset- система координат станка.

Проверить можно, забив в MDA изменение на G500 и паузу.

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

После ресет на экране в строке ниже осей, где модальная информация короче, пишет G500. Я тоже думал что сбрасывается на сист. коорд. станка, но на экане оффсетов где показаны вместе координаты в WCS и в MCS по Z разница 70мм.

Ещё почему-то не могу обьявить собственные переменные в подпрограмме, выдаёт ошибку, а в основной всё работает.

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

Например, хочу сделать подпрограмму для глубокого сверления. Название DDRILL.SPF И вызывать её так: DDRILL(2,-20,40,3). Это должно работать или я что-то неправильно пишу?

PROC DDRILL(REAL ZNACH,REAL ZKON,REAL PODACHA,REAL GLREZ)

MSG("DEEP DRILL")

R0=$AA_IW[Z]

R1=$P_GG[10]; G60-G64

SOFT

G60

G0Z=ZNACH

R5=ZNACH-GLREZ

STRTDRL:

G1Z=R5 F=PODACHA

G0Z=ZNACH

R6=R5+0.35

G0Z=R6

R5=R5-GLREZ

IF R5>ZKON GOTOB STRTDRL

G1Z=ZKON F=PODACHA

G4F0.5

G0Z=R0

IF R1<1.5

G60

ELSE

G64

ENDIF

MSG()

M2

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

Сначала нужно определить эти переменные, а то система их не понимает:

DEF имя_переменной

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

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

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

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

Сначала нужно определить эти переменные, а то система их не понимает:

DEF имя_переменной

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

PROC DDRILL(REAL ZNACH,REAL ZKON,REAL PODACHA,REAL GLREZ)

Это и есть уже определение. Насколько я знаю после того как SPF создана ее надо в циклы изготовителя забросить и станок перегрузить.

И еще, подпрограмма не М2 заканчивается, а М17, а лучше RET (опять же про мат часть не забываем :) )

По математике подпрограммы особо не вникал, но помоему с IFами там не все ладно в конце особенно.

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

Пробовал с RET - не работает, поэтому сделал с М2 и $P_GG[10] - так работает. Как я вычитал из книг - для циклов должны быть на станке файлы COV.COM и UC.COM. И поставляться они должны на дискете. Короче нет дискеты нет и на станке.

IFы нормально работают, как надо.

Строку PROC DDRILL(REAL ZNACH,REAL ZKON,REAL PODACHA,REAL GLREZ) вставляю в главную программу и всё работает. Но это лишняя писанина, уж лучше параметры передавать в Lxxxx с помощью Rxx.

А что, объявлять переменные можно только в начале программы? Если объявляю не в начале - выдаёт ошибку. Если тока в начале - это не есть гуд.

Как забросить подпрограмму в циклы производителя кто нибудь подскажет?

Да, смещение в 70 мм это цифира такая в геометрии инструмента стояла (длина). Коррекция на инструмент всегда учитывается в siemens даже после ресет, привык блин к фанукам.

Короче с первого взгляда система более навороченная чем фанук(много возможностей, даже операции со строками есть- офигеть), но некоторые моменты непривычны.

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

Конечно, переменные надо объявлять в начале программы, иначе для системы они не существуют.

Чтобы не было этого - "смещение в 70 мм это цифира такая в геометрии инструмента стояла (длина)" - при выходе в 0 по Z в конце обработки, надо в кадре указать D0 - отменится коррекция.

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

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

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

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

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

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

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

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

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

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

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



×
×
  • Создать...