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

Подпрограммы


kosmonaft

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

Доброго времени суток! Давно порываюсь спросить и вот сегодня решил, только просьба сильно не бить если глупость, но вот в чем состоит вопрос по Sinumeric 840D:

Есть подпрограмма которая выполняет некоторый расчет, на выходе из нее есть три параметра R1, R2, R3, как можно сделать так, чтобы все последующие за вызовом подпрограммы кадры (до какого либо зараннее определенного символа или слова) умножались на эти параметры, т.е. R1*X, R2*Y, R3*Z, при этом кадры следующие за подпрограммой не изменять не добавлять, а в подпрограмму добавлять можно что угодно????

Например: подпрограмма Proba, на выходе из которой есть параметры R1=2, R2=0,5, R3=1, конец действия подпрограммы обозначается словом konec, основная программа выглядит след образом

X... Y...Z...

Proba

X1 Y2 Z3

X2 Y5

Y10

....

....

konec

X...Y... Z...

А выполнение программы должно идти по координатам между словами Proba и konec:

X=2 Y=1 Z=3

X=4 Y=2.5

Y=5

Зараннее спасибо всем кто сможет помочь

P.S. по поводу круговой интерполяции и корекции я еще не думал!!!

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


В Синумерик возможно указание присвоения значения координат без расчётов в адресе, типа: G1 X=R1 Y=R2 Z=R3 F5

или добавление: G1 X6-R1 Y3+R2 Z10-R3 F5. Расчёты надо осуществлять заранее перед текущим адресом или ещё раньше.

Фирменная запись позволяет осуществлять расчёты в самом адресе,

её вид: G1 @440 R1=3.14156*R55 R50=1 @440 R2=3.14156*R56 R51=2 @440 R3=3.14156*R57 R52=3 F5.

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

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

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

Если не менять текст программы, то хотя бы текст должен содержать вменяемые элементы, а не произвольную запись. А так на гольные значения X.. Y.. Z.. можно влиять только масштабированием. Может такая функция и есть, ни разу не пользовался.

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

может можно что то добавить в саму подпрограмму, чтоб последующие кадры умножались на выходные параметры подпрограммы, но вот как это сделать - незнаю!!!

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

Зачем это надо? Надо честно, открыто писать в тексте программы, пусть это будет ваша программа, команды, где адреса равняются значениям вычисленых переменных, полученных от перемножения на другие переменные R1, R2 и т.д. Всё просто и нечего усложнять.

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

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

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

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

Только есть одна трудность, как переменную строкового типа перевести в real-тип чтобы выполнить математическое действие; не знаю, возможно ли это в Sinumerik.

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

выход r1 r2 r3

program:

r11=a*r1

r12=b*r2

r13=c*r3

x=r11 y=r12 z=r13

или

x=a*r1 y=b*r2 z=c*r3 (без r11,r12,r13)

Владимиру56. G1 x=56*r1 (зачем ещё собаки440??)

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

выход r1 r2 r3

program:

r11=a*r1

r12=b*r2

r13=c*r3

x=r11 y=r12 z=r13

или

x=a*r1 y=b*r2 z=c*r3 (без r11,r12,r13)

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

Да уж!!! Спасибо за предложенные варианты, но я о них знал!!! Зачем мне это надо? - отвечу чуть уклончиво, "велосипед изобретаю", хотя понимаю что ни к чему!!! может кто то с этим встречался, поделитесь опытом, ПОЖАЛУЙСТА!!! :rolleyes:

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

выход r1 r2 r3

program:

r11=a*r1

r12=b*r2

r13=c*r3

x=r11 y=r12 z=r13

или

x=a*r1 y=b*r2 z=c*r3 (без r11,r12,r13)

Владимиру56. G1 x=56*r1 (зачем ещё собаки440??)

Это фишка языка.

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

В Синумерик возможно указание присвоения значения координат без расчётов в адресе, типа: G1 X=R1 Y=R2 Z=R3 F5

или добавление: G1 X6-R1 Y3+R2 Z10-R3 F5. Расчёты надо осуществлять заранее перед текущим адресом или ещё раньше.

Фирменная запись позволяет осуществлять расчёты в самом адресе,

её вид: G1 @440 R1=3.14156*R55 R50=1 @440 R2=3.14156*R56 R51=2 @440 R3=3.14156*R57 R52=3 F5.

Уважаемый Владимир56, а можно поподробнее о фирменной записи, вы привели строчку что она делает? где заветные буквы x, y, z?
Ссылка на сообщение
Поделиться на других сайтах

Я там местами значения неправильно указал, склероз.

Фирменые подпрограммы для Sinumerik 810 примерно стремятся к универсальности и специфичности. Поэтому там не указываются конкретно оси, ты их указываешь сам по номеру 1,2,3, или циклы сами находят значения.

Поэтому пример:

R2=5

---------------

R50=1 R51=2 R52 =3 - подпрограмма автоматически присваевает хитрыми командами в зависимости от плоскости

G0 @440 R52 R2 ускореное перемещение 3й оси в точку Z5.

В руководстве есть описание всех кодов @. Для 840 может не подойти язык.

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

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

Только есть одна трудность, как переменную строкового типа перевести в real-тип чтобы выполнить математическое действие; не знаю, возможно ли это в Sinumerik.

Да, в Sinumerik это возможно.
Ссылка на сообщение
Поделиться на других сайтах

Да, в Sinumerik это возможно.

Уважаемый А_1 подскажите пожалуйста как, если Вам не трудно!!!! :blush::helpsmilie:

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

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

Уважаемый А_1 подскажите пожалуйста как, если Вам не трудно!!!! :blush::helpsmilie:

Вот недавно отработал чтение числа из файла FDATA (файл лежит в той же папке, что и основная программа и содержит число, например 321.15 ) и выход (для проверки правильности работы) по оси X на эту координату. Для Вашего случая можно поменять кадр N100 ... на N100 EXECSTRING("UXZ=R1*"<<Result[0]).

Эта возможность позволяет сделать так, чтобы станок сам генерировал программу по строковым исходным данным и потом её выполнял.

Def Int Error

Def String[255] Result[1]

Def real UXZ

N90 Read(Error,"FDATA",1,1,Result)

N100 EXECSTRING("UXZ="<<Result[0])

N110 G0 G54 X1=UXZ

N120 M0

N130 M30

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

Спасибо, но пока не понятно!!! А если в строке несколько адресов например X20 Y50 Z10, тогда как прочитает???

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

Спасибо, но пока не понятно!!! А если в строке несколько адресов например X20 Y50 Z10, тогда как прочитает???

Нужно обрабатывать строки.

Для этого есть команды MATCH, Index, Substr,...

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

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

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

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

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

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

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

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

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

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

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




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