Pull to refresh
169
178.5
Вячеслав @petuhoff

Моделирование сложных технических систем

Send message
То есть модель двигателя брали не готовую, в которой два вида ЭДС трапеции и синусойда а разрабатывали сами из стандратных блоков?
www.grs.de/en/content/support-software
И немцы SimInTech используют для того что бы не платить за лицензию!
The ATHLET GCSM Modeler was developed by GRS on the basis of the software SimInTech by 3V-Services, Russia (free run time licence). It substitutes the former GCSM Input Data Generator based on the expert system shell G2 of Gensym, USA, which required a license.
Так в этом вся и разница, один гребет, другой дразнится.
Когда вы настраиваете чужой продукт, без доступа к разработчику — вы бьетесь головой о стену, найти автора не представляется возможным физически и исправить по вашему желанию ничего нельзя. Потому что западному разработчику на 0.001% мирового рынка просто плевать. А когда вы можете зайти к разработчикам и поговорить о ваших проблемах, и для вас внесут изменения в ядро и допишут нужные функции это бесценно.
Или вот это недавник кейс, когда просто солнечную батарейку Simulink не осили в нужно постановке для заказчика. Простую солнечную батарейку.
simintech.ru/articles/2017_solar_panels.pdf
Вы сильно удивитесь на SimInTech стоит не сильно дешевле Simulink. В свое время его удалось продать даже Вексельбергу у которого даже яйца Фаберже. Когда проектировали трубопровод Восточная Сибирь Тихий Океан. Там покупалось все самое модное западное и фенушуйное. Но когда встал вопрос в каком моделирующем пакете собрать модель системы управления, оказалось что Simulink c Matlab валятся при попытке смоделировать управление одной насосной станцией, не говоря уже о десятке.
Да что вы говорите. Генерится в миландр из коробки? Смешно.
Модель более точную они покажут? У них на стенде модель с реальной не совпадают в вебинаре выше ссылка. А здесь для двигателя с нестандартной ЭДС, да еще на нашем Миландре который сам по себе работает не так как написано в документации у них все заработает. Да верю, конечно в эти сказки венского леса.
По какому нажатю кнопки изменяется такт? Посмотрите внимательно это пример из матлаба, в коде шаг интегрирования в виде числа 0.1. Запускать это код с другим тактам просто нельзя.
уже посмотрел это я ошибся. воздействия не двигатель действительно, а не на код. Просто листал быстро.
Высокочастотное управление не сложно реализовать, сложно посчитать обратное воздействие, что будет на сенсоре для этого нужна модель объекта, которым мы управляем.
Ошибся, извиняюсь, нормально там процесс показан. Только если бы там был двигатель с нестандартной ЭДС то расхождение было бы еще больше чем в видео семинара показано. И отладки непосредственно на схеме я не увидел, смотрят готовые графики записи.
Она перекидывает кода текст прокручиваешь и он уходит за пределы экрана.
Это костыли и палки от продавцов в России, у которых нет доступа к ядру системы MatLab. Но даже при условии доступа к исходным кодам, продраться через три продукта до ядра, та еще задача. А если вспомнить что для получение кода таргета из Simulink нужно использовать 3 (ТРИ!!!) продукта:
1)MATLAB Coder
2)Simulink Coder
3)Embedded Coder
К тому же модель электродвигателя в этом проекте из Simulink не подходит. В реальности она работает по другому см. рисунок 1
Потом нельзя отобразить на схеме в процессе отладки кода в контролере его работу. Последний рисунок из модели которая подключена к контроллеру и отображает его работу на схеме.
Ну и сам код ПО из автоматического кодогенератора, тоже не без странностей. Например, для интегратора matlab генерирует такой код:

Отличное решение, -0.01 это временной шаг интегрирования.
Как только запустил с другим шагом система не работает. Опять генерит код, опять заливаем.
А ведь определение оптимального такта работы управляющей программы это практическая и реальная задача, при проектировании любой системы управления.
Так что восторг участников когда у них реально заработала понятен
Да что угодно поддерживает, если среда открыта и настраиваема, то обеспечить поддержку любого МК не является проблемой.
Объект управления в реальном времени в FPGA это возможно только для ограниченного набора моделей. Например уложить в логику FPGA модель какой нибудь теплообменника с «честной» теплофизикой вряд ли возможно.
С моей точки зрения, попытки загнать работу модели в «реальное время» на стадии отладки и проектирования ПО, не всегда оправданы. На стадии проектирования, достаточно обеспечить синхронизацию работы управляющей программы по тактам с модельным временем. И добиться того, что при заданных входных воздействиях система управляет объектом, так как требует проект. Даже если моделирование происходит медленнее или быстрее реального времени. После этого достаточно убедится, что цикл вычислений укладывается в временной такт работы в реальном времени на контроллере.
Хотя возможно для систем, где простые алгоритмы и главная проблема обеспечить передачу данных от сенсоров в контроллер и воздействия на исполнительные механизмы тестирование реальном времени действительно необходимы.
Кстати пример dSPACE как раз и показывает, что для того что бы код из Simulink загнать на контроллер и посмотреть как же он всетаки работает нужно еще отдельную компанию подключать, которая смоделирует таргет. (dSPACE например)
«VEOS is part of the MathWorks Connections Program. dSPACE works closely together with MathWorks to make sure that C code generated with the Simulink® Coder™ can be integrated and simulated with VEOS.»
А если вспомнить что для получение кода таргета и Simulink нужно использовать 3 (ТРИ!!!) продукта:
1)MATLAB Coder
2)Simulink Coder
3)Embedded Coder
При этом вся это красота сразу перестает работать, как только вы берете отечественный Миландр и проектируете свою плату, для которого нет поддержки соответствующего таргета.
В статье же пример реальный, когда весь процесс (Модель объекта — Создание ПО — Загрузка — Отладка на контроллере), выполняется в одной среде отсюда и восторг участников процесса.
Кстати пример dSPACE как раз и показывает, что для того что бы код из Simulink загнать на контроллер и посмотреть как же он всетаки работает нужно еще отдельную компанию подключать, которая смоделирует таргет. (dSPACE например)
Все что вы этометили это оносится скорее не к теории экономики, а к бухгалтерии. По сути дело это посмертаня констатация факта, зарплата, амортизация, прибыль. Если перейти к аналогии — хорошо начились кидать камни и учитывать куда они упали. Но создать формулу траекторию и предстаказать куда улитит конкретный брошенный камень так и не смогли
Вполне возможно, только это не поможеть использовать готовую модель из Simulik

Что бы загрузить код сгенерированный из matlab в микроконтроллер и отладить вам нужно столько же програмистов, сколько для того, что бы его написать + специалист по matlab. А если у вас двигатель такой как в статье см. Рис.1, где модель двигателя из Simulinka не подойдет. И нужно будет писать еще и модель двигателя.
Ну и удаленная отладка, когда работа алгоритма, в контроллере отображается на схеме, этого тоже нет в Simulink.
А стоимость ПО это не главное.

А что касается системной части, с учетом уже конкретной реализации на конкретной аппаратной платфореме, то вот видео с примером отладки системной части. Алгоритм технологический мы отладили без превязки к аппаратуре и уверены, что при поступлении данных с сенсора, у нас отработет система как надо.
Паралельно отлаживает системную часть и убеждаемся, что данные с сенсоров оказываются в нужной переменной в нужное время.
https://vk.com/video-96293467_456239036

Таки да. UML это совсем не про MBD. Это крафическое пердасталвение архитекуры ПО. Здесь же мы говорим про модель объекта для которого это пишем управляющее ПО, что бы получит время востановления давления в гидроаккумуляторе в примере или время открытия задвижки с учетом нагрузки. И полученное время мы учитываем в управлющем ПО. UML здесь не помощник.
На самом деле нет, вы правы и не правы одновременно, сгенерированный код будет полностью рабочим и робастным, но не полным. В предложеном подходе предпологается разделение управляющего ПО на две условные части:
1) Технологический алгоритм.
2) Системный алогритм.
Технологический алгоритм в этом случае это тот алгоритм, который получает значение показание датчика (датчиков), и должен выработать команду на исполнительный механизм (механизьмы). Это то для чего управляющее ПО и пишется. Для его проверки и нужна модель объекта управления. Именна эта часть алгоритма и поределяет будет у вас двигатель ауди иметь 192 лошадей и 250 лошадей. Механика и датчики одинаковые, а замена кода технологического алгоритма дает 25% прироста мощности. Такие вот самые по вашим словам «базовые тестовые воздействия», которые и определяют суть программы управления.
Системный алгоритм, это алгоритм который обеспечит поступления показания датчика в нужную переменную технологического алгоритма в нужный момент времени. А так же обеспечит доставку команды (открыть — закрыть), из переменной технологического алгоритма до исполнительного механизма. Системные алгоритмы важная часть ПО и без него действительно работать не будет. Но предоженный подход позволяет безопасно и надежно отлаживать технологический алогитм и генерировать код который легко и не принужденно ложится в любую аппаратуру, хотите в QNX на Intel Атом, хотите в безоперационную STM32 или миландр. Измените системную часть, которая аппаратно зависима, и вперед генерируйте себе на здоровье рабочий код. Ранее в статье про ООП в графических языках разобран пример обработки показания датчика. Привожу картинку, видите на ней вход показания TK21FO2B1_ai — это показания датчика в миливольтах. Если мы работаем под QNX, эту переменную на заданном такте обновит драйвер платы ввода вывода, это значение может быть получено по сети от другого прибора, при распределенной системе управления. Если мы работаем на микропроцессора миландр, то это значение в переменной может быть полученого со встроеного АЦП на кристалле. Но остальная схема и автоматически сгенерированый код Си не поменяется. Вы хотите проверит робастность? Да не вопрос, в моделе на схеме ставите белый шум подаете в схему TK21FO2B1_ai с шумами заданного уровня. У вас возможна задержка по времени? Опять не вопрос, добавте к шуму еще и плавающую задержку. Сигнал может пропадать на несколько тактов работы? Сделайте модель обрывов и смотрите как ваш алгоритм справляется с такой ситуацией.
image
А что касается реального времени, на рис. 3 видно, что в процессе моделирования, мы задаем для каждого проекта в пакете, такт расчета (преобразования входа в выход) и такт синхронизации, в масштабе модельного времени. И если ваш системный алгоритм обеспечит заданные такт на аппратной платформе, то вы получите полное совпадение работы расчетной схемы и сгенерированого ПО в реальной аппаратуре.

Information

Rating
24-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity