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

Гармонический анализ. Макрос работает очень медленно. Оптимизация?


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

 

Ниже макрос для постпроцессора (Гармонический анализ). Макрос в цикле считывает последовательно кривые для каждой точки по отдельности, для каждой оси (X,Y,Z,RotX,RotY и RotZ) и сохраняет их в файл. Для каждого случая отдельный файл.

file.rts – примерно 60 гигабайт.

Всего 164 точки и 6 результатов (X,Y,Z,RotX,RotY и RotZ).

Частота от 0 до 1000 Гц. Шаг частоты – примерно 0,6 Гц. Получается 1500 точек в диапазоне.

Сам гармонический анализ длиться примерно 4 часа. А макрос работает больше 8 часов.

 

Вопрос. Это нормально или можно переписать/оптимизировать, что значительно уменьшить время работа макроса примерно на порядок? Например, как-то считывать не в одной точке, а сразу во всех? Или сразу по 6 направлениям (X,Y,Z,RotX,RotY и RotZ)?

Может другие команды, что будут работать значительно быстрее?

 

 

/POST26

FILE,'file','rst','.'  

/UI,COLL,1 

NUMVAR,200 

SOLU,191,NCMIT 

STORE,MERGE

PLCPLX,0

PRCPLX,1

FILLDATA,191,,,,1,1

REALVAR,191,191

 

 

KolStr=1500   ! Eto zadaetsa kolitsestvo Strok

NuPo1=15    ! Eto nomera Uzlov. Vsego 164

NuPo2=44

! ______ …..

! ______ …..

! NuPo164=578562

J1=-4

IbZ=0

STORE,MERGE

*CREATE,scratch,gui

*DO,IbZ,1,164,1

NSOL,J1+6,NuPo%IbZ%,ROT,X,ROTX_%IbZ%,  

*DEL,_P26_EXPORT

*DIM,_P26_EXPORT,TABLE,KolStr,2

VGET,_P26_EXPORT(1,0),1

VGET,_P26_EXPORT(1,1),J1+6,,0 

VGET,_P26_EXPORT(1,2),J1+6,,1 

/OUTPUT,'RotX_%IbZ%','prn',

*VWRITE,'FREQ','ROTX_%IbZ%',' '

%C, %C, %C

*VWRITE,' ','REAL','IMAGINARY' 

%C, %C, %C 

*VWRITE,_P26_EXPORT(1,0),_P26_EXPORT(1,1),_P26_EXPORT(1,2) 

%G, %G, %G

/OUTPUT,TERM

! ******************************************************

! ******************************************************

NSOL,J1+7,NuPo%IbZ%,ROT,Y,ROTY_%IbZ%,  

*DEL,_P26_EXPORT

*DIM,_P26_EXPORT,TABLE,KolStr,2

VGET,_P26_EXPORT(1,0),1

VGET,_P26_EXPORT(1,1),J1+7,,0 

VGET,_P26_EXPORT(1,2),J1+7,,1 

/OUTPUT,'RotY_%IbZ%','prn',

*VWRITE,'FREQ','ROTY_%IbZ%',' '

%C, %C, %C

*VWRITE,' ','REAL','IMAGINARY' 

%C, %C, %C 

*VWRITE,_P26_EXPORT(1,0),_P26_EXPORT(1,1),_P26_EXPORT(1,2) 

%G, %G, %G

/OUTPUT,TERM

! ******************************************************

! ******************************************************

NSOL,J1+8,NuPo%IbZ%,ROT,Z,ROTZ_%IbZ%,  

*DEL,_P26_EXPORT

*DIM,_P26_EXPORT,TABLE,KolStr,2

VGET,_P26_EXPORT(1,0),1

VGET,_P26_EXPORT(1,1),J1+8,,0 

VGET,_P26_EXPORT(1,2),J1+8,,1 

/OUTPUT,'RotZ_%IbZ%','prn',

*VWRITE,'FREQ','ROTZ_%IbZ%',' '

%C, %C, %C

*VWRITE,' ','REAL','IMAGINARY' 

%C, %C, %C 

*VWRITE,_P26_EXPORT(1,0),_P26_EXPORT(1,1),_P26_EXPORT(1,2) 

%G, %G, %G

/OUTPUT,TERM

! ******************************************************

! ******************************************************

NSOL,J1+9,NuPo%IbZ%,U,X,UX_%IbZ%,  

*DEL,_P26_EXPORT

*DIM,_P26_EXPORT,TABLE,KolStr,2

VGET,_P26_EXPORT(1,0),1

VGET,_P26_EXPORT(1,1),J1+9,,0 

VGET,_P26_EXPORT(1,2),J1+9,,1 

/OUTPUT,'UX_%IbZ%','prn',

*VWRITE,'FREQ','UX_%IbZ%',' '

%C, %C, %C

*VWRITE,' ','REAL','IMAGINARY' 

%C, %C, %C 

*VWRITE,_P26_EXPORT(1,0),_P26_EXPORT(1,1),_P26_EXPORT(1,2) 

%G, %G, %G

/OUTPUT,TERM

! ******************************************************

! ******************************************************

NSOL,J1+10,NuPo%IbZ%,U,Y,UY_%IbZ%,  

*DEL,_P26_EXPORT

*DIM,_P26_EXPORT,TABLE,KolStr,2

VGET,_P26_EXPORT(1,0),1

VGET,_P26_EXPORT(1,1),J1+10,,0 

VGET,_P26_EXPORT(1,2),J1+10,,1 

/OUTPUT,'UY_%IbZ%','prn',

*VWRITE,'FREQ','UY_%IbZ%',' '

%C, %C, %C

*VWRITE,' ','REAL','IMAGINARY' 

%C, %C, %C 

*VWRITE,_P26_EXPORT(1,0),_P26_EXPORT(1,1),_P26_EXPORT(1,2) 

%G, %G, %G

/OUTPUT,TERM

! ******************************************************

! ******************************************************

NSOL,J1+11,NuPo%IbZ%,U,Z,UZ_%IbZ%,  

*DEL,_P26_EXPORT

*DIM,_P26_EXPORT,TABLE,KolStr,2

VGET,_P26_EXPORT(1,0),1

VGET,_P26_EXPORT(1,1),J1+11,,0 

VGET,_P26_EXPORT(1,2),J1+11,,1 

/OUTPUT,'UZ_%IbZ%','prn',

*VWRITE,'FREQ','UZ_%IbZ%',' '

%C, %C, %C

*VWRITE,' ','REAL','IMAGINARY' 

%C, %C, %C 

*VWRITE,_P26_EXPORT(1,0),_P26_EXPORT(1,1),_P26_EXPORT(1,2) 

%G, %G, %G

/OUTPUT,TERM

*ENDDO

*END

/INPUT,scratch,gui 

! End of time history save

 

 

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


В 11.10.2019 в 17:13, Инжмаш сказал:

Это нормально или можно переписать/оптимизировать, что значительно уменьшить время работа макроса примерно на порядок?

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

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

Ссылка на сообщение
Поделиться на других сайтах
В 11.10.2019 в 16:13, Инжмаш сказал:

Сам гармонический анализ длиться примерно 4 часа. А макрос работает больше 8 часов.

 А бывает, что считается пол часа, а анализируешь пол года :)

 

В 11.10.2019 в 16:13, Инжмаш сказал:

Это нормально

Нет. Посмотрите какая команда дольше всего выполняется. Сиса может время выдергивать текущее кажется.

Ссылка на сообщение
Поделиться на других сайтах
12 часа назад, Борман сказал:

Посмотрите какая команда дольше всего выполняется.

наверное, существует список основных принципов отладки и оптимизации кода. и расставить таймстампы с комментариями -  один из его пунктов.

Ссылка на сообщение
Поделиться на других сайтах
В 29.10.2019 в 22:46, Борман сказал:

Нет. Посмотрите какая команда дольше всего выполняется. Сиса может время выдергивать текущее кажется.

Тут и смотреть нечего. Даже не запуская скажу, NSOL.

Можно попробовать обмануть систему и самому поиграть в POST26. Запустить цикл по всем временным шагам:

DO,i,1,...

SET,1,i

...

И внутри каждого шага цикла считывать результаты по всем точкам, накапливая всё это в массиве.

Смысл в том, что каждый NSOL суть тот же цикл чтения эрэстеншника с накоплением результата в переменной и надо максимально сократить число "подходов к снаряду".

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Bot
      Компания «Топ Системы» открывает Весеннюю школу САПР 2024 — серию уроков в формате открытых вебинаров по теме «T‑FLEX CAD как часть платформенного решения T‑FLEX PLM». Когда? 22-27 апреля 2024, начало в 11.00 МСК Какой формат? ONLINE вебинары продолжительностью 2-2,5 часа Что в программе? Демонстрация экспертного опыта работы с технологиями программного комплекса T‑FLEX PLM. Опыт АЗ Урал, Борлас, НИЯУ МИФИ. Знакомство на практических примерах с функционалом и алгоритмами работы программ комплекса T‑FLEX PLM. Опыт миграции с иностранных решений на программный комплекс T-FLEX PLM. РЕГИСТРАЦИЯ Есть ограничения по участникам, требования к слушателям указаны на сайте регистрации. View the full article
    • alex0800
      вылет большой это раз фрезу отгибает.уменьшить глубину резания .и для снятия фаски это не тот инструмент. виктор они вам морочат голову. но проверь люфт по оси может разболтаны болты на шаровой. или поменяйте направление подачи может в этом случае будет без подрыва  
    • Клиент
      @Viktor2004 , почему второй станок делает лучше можно разбираться. Но здесь реально большой вылет фрезы, слышно как звенит. Может быть, стоит с оборотами поиграть (уменьшить или увеличить. Может быть нагрузку (съём) на фрезу больше дать. Режимы явно нетехнологичны. Судя по всему серия, над технологией поработать нужно, поставьте такую фрезу, она не дорогая:  
    • gudstartup
      @Viktor2004 вопросы к технологам при такой обработке рябь обеспечена это сильно сказано прям таки зеркало? да и ряби на фото не видно @Viktor2004 это вы рябью называете это какое-то дробление материала а не рябь притом только сверху вижу поставите это зеркало на ваш с рябью и сделайте небольшой съем и посмотрите чего зарябит и вообще чего нельзя стол повернуть и фаску продольно снять что за дикий метод
    • Viktor2004
      мне в пример приводят соседний станок. Там все то же самое, такой же вылет, такие же режимы. Но там дает зеркало
    • Leksunkin
      Вылет великоват, сделать припуск поменьше на фаску, как вариант пройти предварительно ступеньками предыдущим инструментом. Фреза похожа на сферическую, если да то лучше по кругу послойно закатать. Станок не виноват.
    • gudstartup
      ну пока еще мы вам никак не помогли но возможно удастся после изучения бэкапа
    • Viktor2004
      Товарищи, подскажите пожалуйста что можно поднастроить При снятии фаски получается рябь. SERVO ERROR в пределах 5 микрон Series31i Model B   VID_20240420_145644.mp4 CNCIDNUM.TXT CNC-PARA.TXT
    • Maik812
      все работает.. привязывать правильно нужно.
    • maxx2000
      @Павлуха так и я о том же.
×
×
  • Создать...