|
История этого постпроцессора началась еще в 97-х годах прошлого столетия. В то время, я учился еще в универе, а на одном из предприятий решили купить и внедрить UniGraphics (в то время версии 13). Не знаю, кто и как, почему принимал решение, как проводился тендер. Но спустя много лет - думаю, без лапы, и подкупа не обошлось. Дело в том, что судя по изделиям и т.д и т.п - лучшем выбором для этого предприятия должна быть Catie. Но, обратное как говориться уже не воротишь.
Ну так вот, в процессе внедрения модуля обработки - встал вопрос: как
получить управляющие программы (УП) для станков в большинстве своем
управляемых ЧПУ класса Н33 (Курс322, ПФСТ-1250, Луч-33, ..., Атака) -
имеющие одинаковую математическую основу и разные аппаратные
составляющие.
Этой задачей занялась Маринина Наташа - очень
умная девушка, сейчас уже мама двоих дочек, дай ей здоровья и ума, и
всего хорошего.
Почти всё, что ниже будет выложено, принадлежит Ей. Она
создавала. Стояла у станка с часами. Испытывала и многое другое.
|
Руководства по программированию:
Таблица кодировки вращения шпинделя одного из станков : |
Результат её труда, состоял из целого комплекса программ:
Unix\Motif (1998-2003 гг.) |
|
Назвали постпроцессор немудрено:
NEW_GPM - так он и начал свою жизнь. Для использования этого постпроцессора необходимо: 1. Создать операцию обработки в UG. 2. Сгенерируйте CLS файл. 3. В модуле Manufacturing, войдите в Tools-->CLSF... 4. Выберите CLS файл (который Вы сгенерировали в п.2). 5. В меню CLSF Manager выберите Postprocess. 6. В меню NC Postprocessing в поле MDF Name, выберите файл станка alpha.mdfa или fp17smn.mdfa или ma655a2.mdfa. 7. В меню Postprocessor вместо gpm выбрать new_gpm.
8. Остальные опции
этого меню можно оставить по умолчанию.
Процесс работы состоял в том, что new_gpm
запускал gpm+mdf(a),
а после, полученную управляющую программу передавал на вход других
программ: Исходники вспомогательных программ лежали в свободном доступе и состояли из следующих элементов:
|
Я понял, что дальнейшим развитием постпроцессоров в Unigraphics будет дальнейшее развитие MOM. Более того, пользоваться сим созданием было крайне не удобно. Необходимо было переделать этот постпроцессор под Tcl. Но. Я столкнулся с 2-мя ограничениями, а именно, постпроцессор должен был в один - в один совпадать с рабочим. Вы спросите: "Почему?". Вы знаете - я был молодым специалистом, мне никто не помогал, не давал советов, я был не нужен и поэтому "варился" в собственном соку. Мне казалось, что развитие бюро, в котором я работал - шло не в том направлении. Поэтому я начал работу на свой страх и риск. Еще одним препятствием были старые опытные технологи. Они составляли основной костяк в работе отдела. Наизусть знали G-код и замечали малейшее изменение в УП, так как обычно просматривали их вручную. Задав себе целью постепенно перевести разработку всех постпроцессоров под PB (PostBuilder) - я изменил "шапку" УП одного постпроцессора, через 30 минут старый технолог пошел к зам. нач. отдела, чтобы выяснить причину изменения, еще через 15 минут - эта делегация стояла перед моим глазами. Можете представить мое состояние - "не стояния".
На досуге - я перевел программы ВЫШЕ на tcl\tk:
а также дополнил программой проверки формата для Н33 : checkH33.tcl checkH33w.tcl
ptp_to_up.ui.tcl - кодирование подачи УП, формирование разгона-торможения, подсчет контрольных сумм,.. ( ptp_to_up_with_dialog.tcl ) time_cnt.ui.tcl - расчет времени выполнения УП, на основе файла и ускорения
Windows (2002-2003 гг.) | |
в 2002 году Наташа переделала свои программы под Windows. Объединив все 4-е
программы в одной. Она сделала это в
CBuilder : new_gpm_13_11_03.zip (исходные коды были получены без её ведома, выдал её начальник для исправления некоторых ошибок моему начальнику). Для начала мне было нужно решить несколько проблем, и я сразу начал оптимизировать алгоритм, дополнять его. Все переделки носили косметический характер - мешал начальник, типа: - "постпроцессор работающий - не фиг вводить новшества и что-то менять".
В итоге получилось вот это - new_gpm.zip
(2.9 мб) |
Вообще, мне надоело запускать ptp_t_up.exe и time_cnt.exe из командной строки и я сделал быстренький проект на CBuilder:
Исходник: CorrectFeedH33.zip (программа 2003 года):Делать мне было нечего, и в раздумьях как и что мне сделать, я создал 2 класса :):) (вот - делать мне было нечего:):)).
Class_Ptp_to_up.zip Class_Time_cnt.zip class Ptp_to_up { public: Ptp_to_up(); virtual ~Ptp_to_up(); int SPEED_LIMIT; /* Максимально допустимая подача при полном реверсе (мм/мин)*/ int FEED_MAX; /* Максимально допустимая подача холостого хода (мм/мин)*/ int a; /* Ускорение (мм в сек*сек) */ int acenter; /* Центростремительное ускорение */ int PLANE; /* Плоскость круговой интерполяции */ int G; /* G=2 - круговая интерполяция по часовой стрелке; G=3 - круговая интерполяция против часовой стрелки */ int flag; char UP_file[100]; struct post { char kadr[80]; /* кадр */ int feed; /* подача */ double span; /* перемещение */ }P[20]; int i; /* Индекс для массива структур P */ int k; /* Счетчик кадров */ int f; /* Подача текущего кадра curr */ int mode; /* Флаг */ double SUMX,SUMY,SUMZ; char s_curr[200],*curr,s_next[200],*next; FILE *input,*out; int read_word(char *, char, char *); void replace_word(char *,char,char *); void feed_convert(int,int,char *); void feed_del(char *kadr); void analiz(char *curr,char *next) ; int otkat(int j); void tangent(double ,double ,double *,double *); int main_Ptp_to_up(void); private : protected: FILE *log_file; // указатель на лог-файл int flError,SUMErr; // код ошибки, их количество char strFileLog; // имя лог-файла int issueError (int ecode, char *format, ... ) ; //Error time_t t1; //Time double system_tolerance; //..системный допуск }; class Time_cnt { public: Time_cnt(); virtual ~Time_cnt(); double a; /* ГбЪЮаХЭШХ (ЬЬ Т бХЪ*бХЪ) */ struct post { int feed; /* ЯЮФРзР */ double span; /* ЯХаХЬХйХЭШХ */ }P[3]; int i; /* ёЭФХЪб ФЫп ЬРббШТР бвагЪвга P */ int f; /* їЮФРзР вХЪгйХУЮ ЪРФаР */ char s_prev[200],*prev,s_curr[200],*curr,s_next[200],*next; FILE *inp; double TIME; int F4; /* їаШЧЭРЪ аХЦШЬР вЮаЬЮЦХЭШп */ int read_word (char *, char, char *); int feed_convert1(int ff); void push(char *kadr); double analiz(void) ; int main_Time_cnt(void); private : protected: FILE *log_file; // указатель на лог-файл int flError,SUMErr; // код ошибки, их количество char strFileLog; // имя лог-файла time_t t1; //Time double system_tolerance; //..системный допуск int issueError (int ecode, char *format, ... ) ; //Error };H33title_windows.zip - также в раздумьях, создал окна постпроцессора для диалога: выбора станка и параметров на Tcl\Tk.
Программа для построения диаграмм подач (Tcl/Tk) - из разряда простейшие :):)
Историей создания преследовало 2-е цели, с одной стороны графически увидеть подачи в управляющей программе ЧПУ Н33 для исследования динамики, с другой стороны чисто образовательные цели (более глубокое освоение Tk).
Исходники: diagFeed_TCL.zipПовторяю, делать было нечего - я думал :)):) : поэтому создал несколько простейших шаблонов для буферизации данных на Tcl : readFileBuf_TCL_BC.zip
Постпроцессор для Н33.
Вся моя работа шла на общественных началах, без приказа
свыше. В итоге, после долгих компромиссов, поисков, я создал постпроцессор, который считал более экспериментальным, чем рабочим. Но он стал рабочим, к сожалению:(. Создал я его на основе собственно исходников Наташи Марининой, дополнил алгоритмами от Геммы, Катрана, и хотел создать свой постпроцессор на основе старого алгоритма ЛКИ - обязательно только на Tcl. Но доделать не успел:(, не дали. Скриншоты:
Исходники: H33.zip
Вообще то, по-хорошему,
следовало отказаться от диалога выбора. Практика подтвердила, что
технологу глубоко пофиг на это окно, он не изменяет параметры, а только
выбирает станок. ############################################################################### но, никто отмашку не давал. Я лишь пожал плечами, потому - что уже получал по голове - за своевольную перестановку и переименование постпроцессоров в основном списке. :) |
В 2008 году моя "тупая"
(простите за слово)
начальница потребовала от меня сделать в постпроцессоре деление
программы (файла) на несколько частей. Чтобы Вы поняли до конца: вот примерно какая ситуация могла возникнуть в металле
Откуда
постпроцессор знает где металл?? где кончается?? где начинается
деталь??? |
Copyright © 2001—2009 че