Про ЧПУ
Статьи
Категории раздела
Программирование [3]
Статьи об управляющих программах и постпроцессорах

Сейчас на сайте:
Комментарии: 14
Форум: 132/152
Новости: 5
Файлы: 20
Статьи: 3

Форма входа
Логин:
Пароль:

Тэги

Block title

Приветствую Вас, Гость · RSS 15.05.2024, 19:41

Главная » Статьи » Промышленные системы ЧПУ » Программирование

Параметрическое программирование, часть 1

Параметрическое программирование.


В этой статье мы поговорим о параметрических программах и языке программирования Macro B (который присутствует в системах Fanuc, а также в немного изменёном виде в некоторых других системах) . Во многих отношениях макропрограммирование это высший уровень программирования в G-кодах. Оно предлагает большую гибкость в составлении программ. Без него G-код не полноценная программа, а лишь вручную заданная серия шагов

. Если , например, в станке нет стандартоного цикла сверления (такого как G83), то приходится писать код ввода-вывода сверла вручную - долго, муторно, а если ещё опечататься, то можно на ускоренном одводе и в заготовку врезаться. А если в станке нет функции копировать/вставить, то уже не получится кусок кода отвественный за сверление просто скопировать и вставить в новую программу - приходится набивать всё заново в ручную. Вместо этого можно написать небольшую программку, где чтобы поменять глубину сверления достаточно поменять лишь одну переменную. Таким образом, владея языком macroB можно значительно снизить время написания программ со стойки, не говоря уже про написание универсальных программ, макропрограмм (если надо делать однотипные детали, отличающиеся размерами). В общем знание языка macroB может значительно упростить жизнь оператору. По возможностям параметрическое программирование превосходит простой G-код как алгебра превосходит арифметику. Итак, приступим непосрественно к изучению.


Переменные.


Переменная представляет собой имя области памяти, где хранятся данные. Переменным присваиваются значения и при обращении к ним возвращают эти самые значения. Переменные в macroB записываются в виде цифры, перед которой идёт решётка. Например, #1 (переменная 1), #123 и т.д. Переменные бывают локальные, общие и системные. Локальные переменные это переменные от #1 до #33, значения из этих переменных будут доступны только в текущей программе и не передаются в подпрограммы, при выключениее питания стойки эти переменные обнуляются.

Общие переменные хранятся в области памяти, доступной всем программам. Значения этих переменных можно передавать в другие подпрограммы. Переменные в диапазоне #100 - #199

обнуляются при выключении пиания, в диапазоне #500-#999 сохраняют свои значения даже при выключенном питании.

Системные переменные. Это переменные, начинающиеся с #1000 и дальше. В этих переменных хранятся значения параметров, если вы не знаете значения этих переменных то их не стоит трогать.

Также сущесвует переменная #0, которая не хранит никаких значений и всегда равна нулю.

В Mach3 10.320 переменных от #0 до #10320. Значения переменных не сбрасываются при отключении питания.

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


#101 = 10 // мы присвоили значение переменной #1

G0 X0Z#101; // револьвер или шпиндель или что там ещё на станке катается переедет в координаты X0Z10

С переменными можно производить различные арифметические и геометрические операции, такие как сложение(+), вычитание(-), умножение(*), деление(/), возведение в степень (**), извлечение квадратного корня (SQRT), вычисление косинуса (cos) и подобные. Более подробно мы их рассмотрим позже.

Пример:


#101 = 8;

#102 = 2;

G0X#101Z#101;

#101 = #101 + #102; // мы прибавили к значению переменной #101 значение переменной #102, таким образом #101 теперь у нас равняется 10.

G0X#101;


Также для переменных доступны операторы сравнения, такие как EQ (равно), LE (меньше или равно) и т.д. См. таблицу операторов сравнения macroB.


Где нельзя применять переменные?


- в номерах программ (т.е запись O#101 недопустима);

- в номерах кадров (N#110 - недопустимо);

- в адресе block skip (/120 - допустимо, /#120 - недопустимо);

- в цикле WHILE...DO...END (DO#1 - недопутимо);


Зачем нужны переменные?


Переменные имеет смысл использовать там, где надо подставить некоторое вычисленное значение. Например в циклах (о циклах репь пойдёт в следующей части статьи).

Пример: нам необходимо сделать широкую (30мм) наружную канавку отрезным резцом, с шириной пластины 3 мм. Можно 10 раз прописывать координаты вручную, а можно написать циклом. Диаметр заготовки 50мм, диаметр шейки 40 мм.


#101 = -13; // начальное положение Z;

#102 = 3; // ширина резца;

#103 = -37; // конечный Z;

T101;

G50 S1400 M4;

G96 S120 M8;

G0 X51Z#101; // выводим резец на начальное положение

WHILE [#101 GE #103] DO1; // Пока [#101 больше или равно #103] выполнять блок

G1 X40 F0.05; //между DO1 и END1

G0 X51;

#101 = #101 - #102; // резец смещается по Z на ширину резца

END1;

G0 X52;

Z#101; // переходим в начальное положение

G0 X41 ;

G1 X40 F0.05;

Z#103F0.03; // и делаем чистовой проход до конечного Z

G0 X60; // уходим на безопасный X

G28U0W0; // уходим в реферрентную точку

M30;

Вот и вся программа, а сколько пришлось бы писать вручную. А если канавку в следующий раз надо сместить на пару миллиметров? Вот тут то и проявляется вся прелесть знания языка macroB. А если ввести ещё переменные для оси X, то изменять размеры шейки можно будет изменив всего 5 переменных (в кадрах, где мы подводим резец просто пишем X[#104+1], если, конечно за X у нас будет отвечать переменная #104). Также в следующий раз, когда нам надо будет сделать шйку или зарезьбовую канавку мы можем просто скопировать кусок кода и подставить актуальные значения.

Данный пример подходит только для канавок, ширина которых кратна ширине резца (т.к просто тупо смещает Z на ширину резца каждую итерацию цикла). Конечно туда следует добавить дополнительное условие, но давайте к более сложным примерам перейдём в поледующих статьях.

Категория: Программирование | Добавил: Andrew (12.12.2012)
Просмотров: 3735 | Комментарии: 5 | Теги: Fanuc, macroB, программирование | Рейтинг: 5.0/3
Всего комментариев: 5
3 DEMONTER  
А чем нам не нравится цикл G87 для канавок...

G 30 U0 W0
G21 G54 G99
TO1O1
G50 S1400
G96 S120 M3
G0 X51 Z-13 M8
G87 X40 Q2000 F0.05
Z-16
Z-19
Z-21
.....
Z-37
G80
G30 U0 W0 M9
M30

4 Главред  
0
Хотя бы тем, что не на всех станках этот цикл есть.

5 DEMONTER  
На самом деле G87 это помоему цикл радиального сверления(просто используется для канавок или наоборот для сверления ), и почему его должно не быть, не понимаю, ведь торцевое сверление G74  G83 всегда есть... А по поводу смещения канавки есть команда плавающего нуля G50 W-5 например, тока послеентого незабыть назад смещение координат вернуть , А ТО НЕКРАСИВО ПОЛУЧИТСЯ )))... Да и координаты по Х можно менять в цикле как и по зету...

1 Алексей  
А где последующие части статей??

2 Andrew  
Уже почти готовы. В течении недели будет следующая часть.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Aboutcnc.ru про чпу © 2014-2024
Создать бесплатный сайт с uCoz