49

ЧПУ. Переменные и синтаксис параметрического (макро) программирования

Серия ЧПУ. Сборник постов.

Я тут частенько писал про параметрическое программирование. Примеры есть в моих постах, а вот шпаргалка под рукой никогда не помешает. Даже мне.

Итак, буду краток:

Арифметические операции

+ Сложение.

Синтаксис: [#A+#B]

- Вычитание.

Синтаксис: [#A-#B]

* Умножение.

Синтаксис: [#A*#B]

/ Деление.

Синтаксис: [#A/#B]

^ Возведение в степень

MOD Оператор используется для деления двух чисел и возвращает только остаток от деления. Любые числа с плавающей запятой предварительно округляются до целого.

Синтаксис: #100=[37 MOD 30] Переменная #100 будет содержать число 7.

Логические функции

OR Логическое ИЛИ. Оператор используется для проверки того, выполняется ли одно из двух условий. Если значение левого операнда истинно, или значение правого операнда истинно, или оба значения истинны, то логический оператор ИЛИ возвращает TRUE. В противном случае он вернет FALSE.

Синтаксис: #C=[#A OR #B]

XOR Логическая операция исключающее ИЛИ (ИЛИ-НЕ) выполняется с двумя битами (A и B). Результат выполнения логической операции XOR будет равен 1 (единице), если один из битов A или B равен 1 (единице), во всех остальных случаях, результат равен 0 (нулю).

Синтаксис: #C=[#A XOR #B]

AND Логическая операция И. Всё выражение считается истинным, только если истинен каждый операнд — каждое из составных выражений. Иными словами, AND, означает «и то, и другое».

Синтаксис: #C=[#A AND #B]

Логические или условные операторы

EQ = — Равно.

Синтаксис: [#A EQ #B]

NE ≠ — Неравно.

Синтаксис: [#A NE #B]

GT > — Больше.

Синтаксис: [#A GT #B]

LT < — Меньше.

Синтаксис: [#A LT #B]

GE ≥ — Больше либо равно.

Синтаксис: [#A GE #B]

LE ≤ — Меньше либо равно.

Синтаксис: [#A LE #B]

Тригонометрические функции

SIN Функция синуса.

Синтаксис: #C=SIN[#B]

COS Функция косинуса.

Синтаксис: #C=COS[#B]

TAN Функция тангенса.

Синтаксис: #C=TAN[#B]

ATAN Функция котангенса (арктангенса).

Синтаксис: #C=ATAN[#B]

ASIN Функция арксинуса.

Синтаксис: #C=ASIN[#B]

ACOS Функция арккосинуса.

Синтаксис: #C=ACOS[#B]

Функции округления чисел

ROUND Функция округляет число в большую сторону, если следующая цифра после запятой больше или равна 5. В противном случае число округляется в меньшую сторону.

Синтаксис: #C=ROUND[#B];

FIX Функция округляет число в меньшую сторону.

Синтаксис: #C=FIX[#B];

FUP Функция округляет число в большую сторону.

Синтаксис: #C=FUP[#B];

Дополнительные функции

SQRT Квадратный корень.

Синтаксис: #C=SQRT[#B]

ABS Функция, возвращающая абсолютное значение числа.

Синтаксис: #C=ABS[#B]

LN Функция возвращает натуральный логарифм вещественного числа Х. Число Х должно быть положительным — иначе случится ошибка времени выполнения.

EXP Функция возвращает экспоненциальное значение параметра с плавающей запятой.

Условное выполнение одиночной макрокоманды

IF «Если» — Оператор условия позволяет выполнять различные действия с условием. После оператора IF указывается некоторое выражение. Если это выражение оказывается истинным (true), то выполняется команда (например, команда безусловного перехода), находящаяся в одном кадре с IF. Если выражение оказывается ложным (false), то команда, находящаяся в одном кадре с IF, не выполняется, а управление передается следующему кадру.

Синтаксис: IF [#A GT #B] GOTO #C;

THEN «Тогда» — Оператор выполнения определённой команды только при условии истинности (true) некоторого логического выражения в конструкции IF.

Синтаксис: IF [#A GT #B] THEN #A=#C;

Циклы

WHILE Цикл с условным выражением, выполняется до тех пор, пока истинно (true) указанное условие. Если условие сразу ложно (false), цикл даже не начнёт свою работу и будет полностью пропущен, а управление перейдёт к кадру размещённому за END n

Синтаксис:

WHILE [Условное выражение>] DO n

...

<Исполняемый код>

...

END n

...

<Исполняемый код>

...

Где n идентификационный номер, может быть 1,2 или 3. Если используется номер, кроме 1, 2 и 3, то возникает сигнал тревоги P/S ном. 126.

Идентификационные номера (1-3) в цикле DO-END могут использоваться неограниченное количество раз. Тем не менее, обратите внимание на то, что если программа включает пересекающиеся циклы повтора (перекрывающиеся диапазоны DO), то возникает сигнал тревоги P/S ном. 124.

Идентификационные номера (1-3) могут использоваться неограниченное количество раз.

Диапазоны DO не могут перекрещиваться.

Циклы DO могут быть вложены до трех уровней.

Управление может переносится за пределы цикла.

Нельзя выполнить переходы к позиции внутри цикла.

Если выполняется переход к номеру последовательности, заданный оператором перехода GOTO, то осуществляется поиск номера последовательности. По этой причине обработка данных в обратном направлении занимает больше времени, чем обработка данных в прямом направлении. Использование оператора цикла WHILE для выполнения повторов сокращает время на обработку данных.

DO Начало цикла.

END Конец цикла. Если выражение в конструкции WHILE не истинно, то управление передается кадру, следующему за END

Ветвления и переходы

GOTO Происходит переход к номеру последовательности n. Если задан номер последовательности, не входящий в диапазон от 1 до 99999, то возникает сигнал тревоги P/S ном. 128. Для ввода номера последовательности также можно использовать выражение.

GOTO n; – Безусловный переход к кадру n, где n: номер последовательности (от 1 до 99999);

GOTO #10; — Вычисляемый переход к кадру, установленному переменной #10.

Синтаксис: GOTO 100

GOTO [Выражение]

ПЕРЕМЕННЫЕ

#0 Эта переменная всегда нулевая. Этой переменной нельзя присвоить никакого значения.

#1 – #33 Локальные переменные могут использоваться только внутри макропрограммы и содержат такие данные, как, например, результаты операций. При отключении питания локальные переменные обнуляются. При вызове макропрограммы локальным переменным присваиваются аргументы.

#100 – #199

#500 – #999 Общие переменные могут совместно использоваться в различных макропрограммах. При отключении питания переменные от #100 до #199 обнуляются. В переменных от #500 до #999 данные хранятся даже при отключении питания.

#1000 – #99999 Системные переменные используются для чтения и записи различной системной информации – данных о позиции инструмента, величинах компенсации, времени и др.

Диапазон значений

переменных Локальные и общие переменные могут иметь значение 0 или значение в следующих диапазонах:

от -1047 до -10-29

от 10-29 до 1047

Сборник постов по ЧПУ V-2.22

2
Автор поста оценил этот комментарий
Как раз хотел разобраться в этой теме, работаю наладчиком на фрезерном станке фанук. Вы будете примеры писать, что бы лучше понимать как использовать эти переменные, например как расточить отверстие фрезой до нужного диаметра и т. п.?
раскрыть ветку (1)
2
Некромант затейник
Автор поста оценил этот комментарий

А вон, внизу поста, ссылка. Там порыться надо. Расточка тоже должна быть.

Поосто в СимкоЭдит сначала пиши. Она понимает. Я так и разбирался, спросить негде было(

показать ответы
1
Автор поста оценил этот комментарий

А как на окуме можно просто прибавлять убавлять значения к координатам? типо X50+5 и все в таком духе. Или все математические операции только для макропрограммирования доступны? Просто при переносе с окумы на фанук некоторые сложности с этим возникли.

раскрыть ветку (1)
1
Некромант затейник
Автор поста оценил этот комментарий

Окуму вживую вообще не видел ни разу. Например на фануке и сименсе переменные по разному называются. Не все сименсы поддерживают полноценное макропрограммирование (802 вообще не поддерживает, 808D в зависимости от модификации, 840D круче фанука).

Я бросил ЧПУ, заебало за 12 лет. И, кстати, похудел на десятку за 2 месяца, когда пошёл на примитивную работу.

показать ответы
1
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
1
Некромант затейник
Автор поста оценил этот комментарий

На лазере инструмент один. И операция одна - резать.

На токарнике у тебя будет проходной резец, чистовой, канавочный, резьбовой, сверло, метчик. На токарно-фрезерном ещё фреза, а может и две разные. Да, есть станки, на которых ты просто контур рисуешь, а не программу пишешь, но инструмент, обороты и подачу всё равно указывать надо. Есть софт, который по контуру детали программу сам сгенерирует, только она получится длинная и не редактируемая. Тут где-то валяется мой пример, программа написанная компом в 7тысяч строк и я написал то же самое, уложившись в 50 строк. Да и подавляющее большинство стоек, наверное 99.9% именно под программирование.

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

1
Автор поста оценил этот комментарий
На самом деле, я нашел документацию по программированию фанукоа и мне скинули образец проги с повтором. (Пикабушница кстати-). Ну а дальше методом проб и ошибок разгребся, что интересно на 1 паз 60 строк, на 218 -65)))
раскрыть ветку (1)
1
Некромант затейник
Автор поста оценил этот комментарий

Пикабушница? Могу предположить кто это, если из Питера.

показать ответы
1
Автор поста оценил этот комментарий
Спасибо победил, блин это было не так и сложно, но я сделать))))
раскрыть ветку (1)
1
Некромант затейник
Автор поста оценил этот комментарий

Вот и молодец!

А прикинь, как я всё это изучал. Спросить негде вообще. В интернете нет ничего. Да и сейчас не особо. Начинаешь искать и, в результате, выходишь на самого себя(

показать ответы
1
Автор поста оценил этот комментарий

Это что за динозавр с таким синтаксисом? Siemens, Fanuc, Delta стойки ЧПУ вполне на языках МЭК 61131-3 программируются.

раскрыть ветку (1)
1
Некромант затейник
Автор поста оценил этот комментарий

С#

1
Автор поста оценил этот комментарий

Здравствуйте, подскажите пожалуйста, верно ли написал...У меня обработка обнизки, в программе, сначала идет винтовым движением черновой проход (коррекция отключена), а потом очертания контура с коррекцией, написано все одним блоком, если я хочу пропустить черновой проход, написал после включения коррекции на длину о опускания на заданную глубину, переместился к кадру где включается коррекция на радиус и выполняется проход по контору, но он выдал ошибку((

раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

Стойка какая?

Отвечу потом, ты меня, буквально, в двери машины застал)

1
Автор поста оценил этот комментарий

Я от поноса за 2 года похудел на 10 кг 🤣. Ну на окуме типо V1=50 и потом в программе пишешь X=V1 и можно плюсовать, умножать и так далее. Я думал что на фануке просто заменю на местные переменные типо X#500 с присвоение переменной #500 значения 50. Но он мне коворит йух тебе, неправильный синтаксис...

раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

Ну, с желудком у меня в порядке. После того, что готовила моя жена, оружейный плутоний повидлом покажется

1
Автор поста оценил этот комментарий

Я от поноса за 2 года похудел на 10 кг 🤣. Ну на окуме типо V1=50 и потом в программе пишешь X=V1 и можно плюсовать, умножать и так далее. Я думал что на фануке просто заменю на местные переменные типо X#500 с присвоение переменной #500 значения 50. Но он мне коворит йух тебе, неправильный синтаксис...

раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий
1
Автор поста оценил этот комментарий

Вот как на окуме где X=V1

Иллюстрация к комментарию
раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

Ага. Переменные это V. На сименсе R. На фануке #. На хайденхайне вообще своеобразно.

1
Автор поста оценил этот комментарий

Приветствую! А можно ли на фануке отключить автонумерацию строк?

раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

Да. В тех же экранах, где время, дата, количество деталей, переключение одно- и двух строчных циклов. Там листать надо

1
Автор поста оценил этот комментарий
Ахахахаха. Эх, жаль что ты не был мои наставником, когда я только начинал. Лещей бы получал от тебя только так наверное. Заставляют такую хрень без центра делать, что пиздец. Приходится с барфидером через двойной упор делать чтобы резьбу не дробило даже. А разматывает проточек то на 2к одораторах дай бог
раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

Так вот. О том, что я придумал, и что такое настоящая МЕГАЛЕНЬ:

Есть у нас один ДИП, модернизированный до ЧПУ стойкой Титаниум. И новая резцедержка - револьвер, на 8 инструментов, взамен старой на 4.

В резцедержке есть штифт на пружинке, или как он там правильно называется. Кароч фиксатор. Он стёрся, выработался. И станок начал ругаться ошибкой позиционирования револьвера и чем дальше - тем чаще. Ну вот сейчас в 8 из 10 случаев. Работать невозможно.

Вытачивать и фрезеровать такой же штифт мне лень. Пиздец лень.

Поэтому я прикинул хуй к пальцу: в резцедержке есть датчики Холла, отвечающие за номер инструмента, и концевик, сигнализирующий о том, что она села на место.

Из-за стёршегося фиксатора пауза между сработкой датчика Холла и концевика слишком большая и вылетает ошибка проверки синхронной сработки датчиков.

И ещё интересное: стойка закидывает в дебугер кусок программы, который между командой смены инструмента и следующей командой смены инструмента или М30. Стойка это компилирует и, если всё норм, то запускает. Если траектория очень длинная, это занимает больше времени и вылетает ошибка позиционирования. Если там пара ходов по G1, то норм, ошибка позиционирования вылезет с меньшей вероятностью.

А ещё стойка Титаниум под Линуксом и с открытым кодом на яваскрипт. Я запустил там старый добрый ДОС-навигатор и начал ковырять код. И я нашел процедуру смены инструмента. Ожидаемо, она сделана через IF и проверяет наличие 12 вольт на канале резцедержки.

Я, вообще, С++ от нехуй делать немножко занимался, но от явы на низком уровне он ничем не отличается.

Я тупо вписал таймаут на секунду между проверками датчиков Холла и концевика, чтоб уж резцедержка точно села и что угодно скомпилировалось.

Вуаля, бля! Ошибка исчезла!

Вот так я ошибку на уровне железа, причем в прямом смысле - стёршегося от старости железа, устранил костылём на яваскрипт на программном уровне.

Вот как надо лениться!!!

Иллюстрация к комментарию
1
Автор поста оценил этот комментарий
Что у нас настолько не опытные сервисники, чтобы plc ничего не исправят ? Я первые дни энкодер центра потормошил так как мы знали что он барахлит и в итоге станок остановили на неделю) дядя думает что отделался легким испугом. А я ходил комедию разыгрывал будто вы же знали что не работает раньше то чем думали, надо было тогда делать, когда работало. Ну в общем части средств мы точно его лишили и времени, но результата не добились. Нам нужны деньги за ремонт и потраченное время а этот олух, других людей нанимает
раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

Дело даже не в том, есть ои люли, которые разбираются. А их ещё поискать надо. Нужно знать, где копать.

Хотя я вчера в таком разобрался. Ты охуеешь. Я сам охуел.

показать ответы
1
Автор поста оценил этот комментарий
Задача в том чтобы никто на Урале не смог этого сделать, кроме нас
раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

Поковырять скорости торможения, например. По ПЛЦ ничего не подскажу. И сходу там не разобраться. Но если разберёшься - будешь гением

1
Автор поста оценил этот комментарий
А ничего не еба ньёт если я в plc поменяю а потом станок запустят ?
раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

Не, не ебанёт. Вылезет какая-нибудь ошибка

Ну, безвредный вариант - поставить скорость G0 примерно 100. Там должны быть 3-4 графы со скоростями 1000, 2000, 5000, 8000, примерно. Это любой сервисник в первую очередь проверит и исправит

А вот в ПЛЦ никто и ничего не исправит

показать ответы
1
Автор поста оценил этот комментарий
Термореле да видел. Вот параметры базовые. Ну и общие как стойка выглядит
Иллюстрация к комментарию
раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

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

Главное, запиши, что было. И в электроавтоматикуизагляни, которая PLC

показать ответы
1
Автор поста оценил этот комментарий
Syntec прототип фанука как говорят
Иллюстрация к комментарию
раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

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

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

показать ответы
1
Автор поста оценил этот комментарий
Нашел как то коммент в ВК, закинул тебе приглашение в др, но ты не ответил. Да и не суть. Просто в комментариях такое раскидывать дело плохое. В общем восстановили станок мы с партнером МО на договоре аренды с третьим партнером, которым изначально договаривались о доле на словах, он клялся в верности и прочем а по факту говорил давайте еще делайте и тогда оформим документы, сам понимаешь в долю нас никто не включил, партнёр пока ушел, так как дела подокументальней не продвигаются, а станок работает и я тоже, но работать за честное слово не хочется, нужны бумаги. Необходимо наказать как то, восстановили мы его в плане техническом а в программном(параметрах) смысле толком не понимаем. Вот и ищу способы сделать так чтобы его поставили в ремонт и ему пришлось вызвать моего друга
раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

Стойка какая? Это не сильно важно, но если фанук, то мне проще будет

показать ответы
1
Автор поста оценил этот комментарий
Привет. Не смог найти связь с тобой через другие сети. Есть вопрос по поводу станка
раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

Привет! И не сможешь)

Спрашивай

показать ответы
1
Автор поста оценил этот комментарий
Подскажите, а вы с управляющими файлами блюм ренишоу не разбирались?
раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

Не, не успел. Надоело мне это всё. Забросил.

1
Автор поста оценил этот комментарий
А вы мне с программой не поможете, есть колесо, на нем надо сделать 218 пазов. Но необходимо прописать на параметричесеом программировании, что бы если остановил была возможность запускать не с 0.
раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

Попробую вечером. Кидай чертёж. Хотя я писал статью про полярные координаты и поворот системы координат. До вечера попробуй сам поворотом.

показать ответы
1
Автор поста оценил этот комментарий
А какой вариант симко поставить с известного всем ресурса? там много вариантов
раскрыть ветку (1)
0
Некромант затейник
Автор поста оценил этот комментарий

Я на рутрекере нашёл сборник из Симок от 6 до 8. Все сирусификаторами.

Понимать параметрическое они от 6 точно должны. У меня 8 стоит.

И, да, к ЧПУ у меня сейчас нет доступа. Переломы, больничный.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества