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

Plant Simulation


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

У нас тележка должна носить определенное количество деталей, и от этого кол-ва зависит последующие шаги сборки. Ваша идея с "виртуальной" станции кажется вполне реальной. Попробуем. Спасибо!

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


1 час назад, bsaidov сказал:

У нас тележка должна носить определенное количество деталей, и от этого кол-ва зависит последующие шаги сборки. Ваша идея с "виртуальной" станции кажется вполне реальной. Попробуем. Спасибо!

Пожалуйста!

PS: Но и человек может носить несколько деталей (если вместимость более 1, либо если детали сложены в контейнер).

Ссылка на сообщение
Поделиться на других сайтах
11.07.2023 в 12:02, vimed сказал:

Пожалуйста!

PS: Но и человек может носить несколько деталей (если вместимость более 1, либо если детали сложены в контейнер).

Собственно, я смоделировал тележку через Track и Transporter, суть такова что необходимые комплектующие подвозятся тележкой к основной линии в станцию сборки. Написал следующий метод для выгрузки комплектующих к станции сборки (Oper40.Per2), но при выполнении метода программа требует сделать это через коннектор. 

Коннектор имеется ввиду "соединение"? если да, то оно у меня есть..  Если нет, то подскажите как правильно настроить механизм выгрузки.

 

PS Скрин метода прилагаюimage.png

 

 

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

Судя по ошибке, Oper040.Per2 - это AssemblyStation. Все объекты должны попадать на AssemblyStation только через коннекторы. Это связано с тем, что ПО, пришедшие через "главный" вход и остальные входы обрабатываются по-разному. 

Можно перед сборкой поставить 2 (или более) буфера. Один для базовой детали, остальные для комплектующих. Для комплектующих также можно использовать Store.

Если же это по каким-то причинам невозможно - остаётся сборку делать с помощью метода на обычном объекте Station.

image.png

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

Судя по ошибке, Oper040.Per2 - это AssemblyStation. Все объекты должны попадать на AssemblyStation только через коннекторы. Это связано с тем, что ПО, пришедшие через "главный" вход и остальные входы обрабатываются по-разному. 

Можно перед сборкой поставить 2 (или более) буфера. Один для базовой детали, остальные для комплектующих. Для комплектующих также можно использовать Store.

Если же это по каким-то причинам невозможно - остаётся сборку делать с помощью метода на обычном объекте Station.

image.png

Комплектующие по факту сначала распаковываются на столе, поэтому используя ваши подсказки добавил Буфер в качестве стола, проблема решиласьimage.png

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

Вопрос по визуализации в Plant Sim:

Потребовалось заменить 3д Модели Фреймов на реальные JT модели, и для этого через drag-and-drop разместил эти 3д модели на месте фреймов и сами фреймы Скрыл. Обнаружил проблему, что при повторном открытии файла 3Д модели фреймов обратно отображаются. Есть возможность это как-то исправить?image.png 

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

А зачем там фреймы - в них что-то есть? Возможно, имеет смысл графику вставлять внутрь фрейма, а не в головной.

 

Команды скрыть/показать объекты не для того - ими можно временно что-то скрывать,ть часть объектов, например, если они заслоняют нужную область.

 

Далее, когда вставляется графика, она попадает в какую-то группу (для каждого фрейма может быть свой набор групп, можно создавать свои дополнительные. Группу можно сделать невидимой. Так что стандартную графику фрейма можно просто удалить, либо сделать группу с ней невидимой - в настройках 3D свойств фрейма или в контекстном меню "Показать структуру графики".

image.png

Ссылка на сообщение
Поделиться на других сайтах
25.07.2023 в 19:04, vimed сказал:

А зачем там фреймы - в них что-то есть?

Фрейм - это станция. Внутри фрейма сущности, которые описывают операции которые выполняет станция. 3д Модель которую хочу использовать это как раз эти станции. Мне они нужны в головном для визуализации расположения всех станции. 

Описанный вами способ идеально подходит :clapping:

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

Есть ли способ добавления всех объектов в ShiftCalendar "одним кликом"?  Режим работы цеха хотим установить, но объектов очень много и все добавлять вручную - муторно 

image.png

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

Во-первых, можно выделить все объекты и перетащить их на ShiftCalendar. Правда, в выделении должны быть только объекты материалопотока. Если случайно вместе со всеми выделить, допустим, Chart - перетаскивание не сработает.

 

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

var i	: integer

For i := 1 to current.numNodes loop
	If current.Node(i).class = .MaterialFlow.Station OR
		current.Node(i).class = .MaterialFlow.ParallelStation then
		current.Node(i).ShiftCalendarObject := ShiftCalendar
	end
next

Можно использовать class, как в примере. Если в библиотеке из Station понаделано много подклассов, можно использовать атрибут InternalClassName ("Place" это Station, "Machine" это ParallelStation, "NwAssembler" это AssemblyStation и т.п. - в справке есть список). Ну или еще какой-нибудь критерий придумать. 

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

Появился еще один мне непонятный момент с тележками..

У меня есть станция А и Б между ними Track который подгружает детали из станции А везет в станцию Б и там отгружает. Я это сделал с помощью методов которые срабатывает в начале и в конце (с помощью сенсора). Все работает, но оказалось, что мой механизм отличается от фактической. Фактически существует 3 тележки в одном треке, где 2 из них после заполнения сразу едет на станцию Б для отгрузки, 3-я тележка загружается в станции А и там ожидает когда одна из тележек вернется обратно. Пустые тележки должны обратно вернуться в станцию А для следующей загрузки.

В чем проблема:

- когда тележек больше 1 то мой метод  @.backwards := true физически не может вернуть тележку обратно. Попробовал использовать TwoLineTrack, но туда свой механизм не смог внедрить 

- нет понимания контроля этих тележек, в плане что 2 тележки едет 3-я ожидает итд

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

Вот пример.

 

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

TwoLaneTrack - это как два однопутных, но! Чтобы ездить по нему вперёд-назад, нужно хвост соединить сам с собой и начало тоже. Ну, как коннектор с конца полосы А в начало полосы Б в конце дороги и аналогично в начале дороги. В модели я для наглядности сделал коннекторы видимыми, с двумя изломами.

Аналогично можно сделать два обычных трека или даже один закольцованный.

Ожидание можно сделать waituntil-ом и переменной - ждать, пока на загрузке не накопятся минимум две телеги (одна загруженная, одна в процессе).

image.png

load-unload.spp

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

Вопрос по объекту AttributeExplorer, в частности для задание времени операции ИЗ ТАБЛИЦЫ станции из этого объекта.

Ниже пример, где время операции задано по типу Формула, где идет ссылка на таблицу. Если тоже самое задать через объект AttributeExplorer, то горит красным, т.е не принимает. Возможно из-за типа Формула, но этого атрибута не нашел в AttributeExplorer, но если даже вручную поменять, то ссылку на таблицу он все равно не принимает 

image.png

Если есть понимание этого вопроса или заметили мою ошибку в ходе моделирования. Буду благодарен ответу.

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

Вопрос по объекту AttributeExplorer

 

Не совсем понял задачу, хочется смотреть атрибуты или задавать атрибуты через AttributeExplorer? Думаю, что задавать таким образом не получится.

ProcTime - атрибут, всегда имеет тип time. Если задано определение времени по таблице, распределению и т.п., ProcTime будет содержать последнее использованное значение. Ему нельзя присвоить строку, формулу и т.п. - только численное значение. Чтобы программно задать определение времени по формуле, нужно использовать метод setTypeAndAttr, например:

MyStation.setuptime.setTypeAndAttr("Formula", "Variable1/20")

 

Если же в AttributeExplorer нужно только смотреть, что задано в атрибуте, вместе с ProcTime (последнее использованное время) можно выводить ProcTime.Type и ProcTime.getAttr, пример на картинке.

 

 

image.png

Ссылка на сообщение
Поделиться на других сайтах
24.11.2023 в 13:02, vimed сказал:

Не совсем понял задачу, хочется смотреть атрибуты или задавать атрибуты через AttributeExplorer?

Задача стояла смотреть и задавать атрибуты централизовано. Я думал сущность AttributeExplorer как раз для этого.. Но ваше решение через метод тоже подходит и его мы применим. Спасибо!

Ссылка на сообщение
Поделиться на других сайтах
27.11.2023 в 12:03, bsaidov сказал:

Задача стояла смотреть и задавать атрибуты централизовано. Я думал сущность AttributeExplorer как раз для этого.. Но ваше решение через метод тоже подходит и его мы применим. Спасибо!

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

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

Интересная ситуация (Баг?) по диаграмме Ганта: 

Станции во вкладке Ресурсы добавлены по одному порядку, а на диаграмме Ганта они отображаются вперемешку..  Это ошибка программы или где-то есть параметр для сортировки?

Ссылка на сообщение
Поделиться на других сайтах
17.12.2023 в 14:51, bsaidov сказал:

Интересная ситуация (Баг?) по диаграмме Ганта: 

Станции во вкладке Ресурсы добавлены по одному порядку, а на диаграмме Ганта они отображаются вперемешку..  Это ошибка программы или где-то есть параметр для сортировки?

К сожалению, штатная сортировка не предусмотрена. Ресурсы идут в том же порядке, в котором нарисованы колбаски. Т.е. раньше стоит ресурс, на который деталь пришла раньше. Благодаря этому получается более красивая диаграмма, хотя иногда это неудобно.

Если сортировка критична, можно воспользоваться обходным способом. Получаем данные диаграммы в таблицу: GanttChart.getData (DataTable). Затем корректируем данные и записываем обратно: GanttChart.setData (DataTable).

При корректировке в начало таблицы вставляем несколько строк с колбасками по 1 секунде в нужном порядке, со временем чуть раньше, чем на диаграмме. Секундные колбаски на диаграмме в масштабе минут-часов будут практически незаметны.

image.png

 

PS: Это если речь о "новом" Ганте, который работает начиная с версии 15. "Старый" гант сортировку предусматривал, для этого в таблице параметров нужно было перечислить ресурсы в необходимом порядке. И вообще, он был более гибким для настройки, хотя тормозным и несколько топорным по виду - для него использовалось стороннее решение :)

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

Для информации: на Рутрекере есть достаточно свежая версия, Plant Simulation 2302, а также русская локализация к ней (отдельной раздачей). Но вот со справкой в этой версии не очень хорошо - отказались от справки в формате CHM, теперь только онлайн. Из РФ работает через VPN.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • gudstartup
      на то что он считает и контролирует кодер указывает наличие и отсчет в  параметре 445 надо попробовать ориентировать не g70.6 а g29.5 интересно будет разница или нет. M5 не проверял но RESET не помогает посмотрю спасибо ценник почти такой же
    • Александр1979
      Аналог датчика от guboa можно поискать.
    • AlexKaz
      Для начала, Вам видимо надо иметь HGEN только в конкретных точках, независимо от формы изделия. Так?   Если так, как обычно, в цикле for и т.п. - задать координатное распределение HGEN - найти решение линейной задачи - сравнить смещение узлов NGEN с нужным распределением - подкорректировать координатное распределение HGEN   И так до победного. Как именно Вы будете тут изменять координаты HGEN - это мягко говоря не нам подсказывать. Пусть какой-нибудь цикл с Нелдером-Мидом это считает, см. принципы оптимизации. APDL универсален и не сложен. Быстрее освоить азы apdl и самому решить эту весьма простую задачу, чем ждать готового скрипта.   Но, возможно, найти нужно что-то другое?
    • ID_Hacker
      Цель счётчика какая? Счётчик чего и как реализован? Опишите полностью задачу. Вам точно счётчик нужен, а не таймер? Просто поставьте задачу что хотите получать своими словами. Оттуда и будем исходить через что реализовывать.     Зависит от того в какой области памяти находится счётный регистр - память ПЛК, системная переменная, R параметр, GUD. А не проще Каунтер использовать? Вход счётчика сбрасывать по команде разжима/зажима + состояние разжато/зажато (например реле давления). Вот что он будет считать, это уже вопрос к автору.   Слишком сложно, можно же проще реализовать. Хотя каждому свой путь.   На 828й же доступны простые синхронные действия без опций даже в экспортном варианте.
    • Kiolis
      Прошу помочь. Пробую Конструкции из раздела Сварные детали. Создал 3д эскиз. С верхней рамкой справился, стойки тоже (пришлось каждую подрезать отдельной операцией). Нужно теперь снизу связать "ноги" снизу. Пытаюсь использовать инструмент "Отсечь/вытянуть", в итоге связку подрезает до ноги, но заодно и ногу подрезает, а это не нужно. Как врезать связки между ног?
    • Guhl
      М5 не сбрасывает режим? Служебные сигналы какие-нибудь указывают в каком текущем состоянии находится шпиндель?
    • Богоманшин Игорь
      Эта пластина не совсем походит для вашего чугуна, производитель пишет "для стали и нержавейки", чугун как опция, рекомендует для К25, а у вас К10 (перлитный). Посмотрите в том же магазине пластины, у которых диапазон применения К05-К30. Но не факт, что пойдут без задиров.  Придется нескольких производителей пробовать.
    • FAV83
      Кто может помочь по расчету полноконусной форсунки для воды, в трубопроводе? Расход  требуется 5,53 м3/ч, разница в давлении 0,434МПа. Требуется разработать чертеж под изготовление, если есть желающие - пишите в личку 
    • Zergus
      Выкладывайте сюда свои "чудеса", может по модели получится понять, что в ней не так. А если есть возможность писать в техподдержку - кидайте им свой файл, думаю разберутся.
    • FAV83
      Интересует аналогичная задача по расчету полноконусной форсунки для воды, но мне требуется разработать чертеж по опросному листу, если есть желающие - пишите в личку 
×
×
  • Создать...