All streams
Search
Write a publication
Pull to refresh
180
0
Вячеслав @petuhoff

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

Send message

Выше рабочая сила? Ну посмотрите зарпалаты например Java в той же Италии:

Если пересчитать по говядине то программист в Италии год работает примерно за 924 кг хоршего мясаи из перекрестка. (с учетом зарплаты 24 000 и миниматльного налога 23%)

Если в россии покупать мясо в перекрестке, то такая зраплата итальянского разработсика Software Developer соотвествует 69 300 рублям на руки или 80 000 рублей без налогов.

С доставкой 800 рублей без скидки в перекрестке
С доставкой 800 рублей без скидки в перекрестке

Да ладно вам говядина в перкрестке в Италии за 20 евро за килограмм в 2017 году, это +- такие же? Таких даже на самоо дорого рынке в моске в 2024 году нет. Или у вас такие же когда порядок не отличается. Если не в 10 раз то +_

на Западе меньше жадность? Ржу в голос. Вы там цены видели?

так я уже. Картинка выше!

https://disk.yandex.ru/d/KQ_3mkpe_OtFnA

Все просто есть такты переключения состояний, которые связаны с работой нагревателя, они вообще могут просходит в любое время, поскольку нагреватель в реальности работает с реальной средой где есть изменения, например воду слили горячую и добавили холодную. Нагреватель может в произвольны момент времени включится. Автомат переключения состояния для мигания диодами включается с задержкой, которая зависит от плавающего шага интегрирования, которые меняются в зависимости от процессов, быстрые процессы мы считаем с мелким шагом, что бы попасть в заданную точность расчета - меньше шаг интегрирования, - меньше задержки при перклюяения состояний. Когда процесс плавный SimInTech увеличиваетс шаг интегрирования. Сответвенно задрежки при перключении тоже меняются. В предеалах заданной точности расчета

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

Либо задайте фиксированый шаг для модели контроллера

А вот вам еще пример, где в SimInTech конечные автоматы с сотояниями внутри которые работает регулятор на базе нечеткой логики, и все это в виде функционально блочных диаграмм выполнено

А как должно быть кстати? У нас три процесса 1) перключения красного индикатора, 2) перключение зеленого индикатора) 3) переключения нагревателя. Каждый работает с заданой частотой но со сдивгом, почему они вообще должны синхронно работать - то?

эти диаграмма когда меандры отбивающие такт находятся в сосотояниях и замирают на врем когда состояние не активно, в момент активации состоянии меандры на ходистя в том состоянии в котором они были при дезактивации. Поэтому они сдивнуты относительно друг друга. По зеленому индикатору это отлично видно. При выходе из состояния меандр находится в нулевом состоянии и замирает, при входе начинает работать с нулевого сосотояния выдерживает 5 секунд и включается, именно так они и должне работать, когда находится вутири блока состояние. Тоже самое с красным.

если важно получить такты, просто вынесите меандры из блоков состояний выше уже указано:

При этот сам SimInTech хорошая штучка. Обраруживаю знакомые черты. Например пакет проектов. Здесь отдельный проект пакета - это как бы отдельное автоматное пространство в ВКПа. Как-то так :)

Не совсем так. Автоматы с разными временами переключения можно и внутри одного проекта запускать. В пример как раз переключение автомата индикторов происходит, то с частотой 5 секунд, то с частостой 1 секунда, сама выдережка задается в дргом автомате.

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

https://habrastorage.org/r/w1560/getpro/habr/upload_files/08b/090/259/08b090259acf5d100c11ac1b59e98f73.png

Если говорить про то, что индикатор четенько включается и отключается то это конечно хорошо и даже местами замечательно. Только вот нахуа это нужно совсем не понятно. Будет ли какой зведец если моргнет не так, или всем пох на его моргание не в такт? Ответить на этот вопрос может только модель объекта к которому ваш автомат присобаен в реальности. А без модели объекта можно хуачть уеву тучу автоматов и непонять как они будут с объектом взаимодействовать. Если вдруг не так и не в такт моргнет.

та уже решение выше, вынести истончник меандр из блока состояние автомата, что бы он не попадал в остановку, когда состояние не активно. Теория автоматов это маленький частный случай математики, ну совсем маленький. По сути это правила как связать руки разработчику ограничить его инструменты, что бы он дебил сделал меньше ошибок. Функционально блочные диаграммы это раздел дифференциального исчиления который гораздо шире узкой темы конечных автоматов. Если бы я хотел издеватся я бы вам вмето интегратора в модель предложил поставить бак с нагревателем и попросил бы создать это в виде конечных автоматов. Как например в этой статье:

Девушка и водонагреватель

В том то и дело, что скорее всего товарищи с нашей лунной программой писали совой софт согласно теории автоматов Миля, Мура и какого то еще Хера, но хер проверяли с моделью объекта. Был бы у них SimInTech для моделирования этот лунный трактор у них кувыркунулся бы при моделирование на компьюторе и не раз. Даже в простой модели невооруженны глазом вы увидели что моргает состояни индикатора как то не так, как хочется. Для этого SimInTech и делали после Чернобыля, что бы видеть как лунный тарактор кувыркается в модели, не вокруг луны.

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

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

Сдвинутый сигнал красного индикатора.
Сдвинутый сигнал красного индикатора.

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

Источник сигнала красного индиктора вынесе из состояния
Источник сигнала красного индиктора вынесе из состояния
Задние источника мигания красного индикатора вне субстуркутуры состояния
Задние источника мигания красного индикатора вне субстуркутуры состояния

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

Автор явно апологет конечных автоматов, до фундаметального фанатизьма. Когда у человека в руках молоток, каждая проблема кажется гвоздем. Тут все в мире конченные автоматы. Даже таймер это тоже конечный автомат. Нужно еще операции сложения в виде конченных автоматах записать и будет вообще заипись. Что-то слабенький наезд, не очень понятно что тут ответить. На статью пока не тянет вот видео ответ:

А что плоходо в шоу? Я тоже считаю что главное в преподавании это шоу. Книжку я и сам почитать могу, а преподователь долже жечь глаголам сердца студентов.

Давайте я вам дам мою state machine в Similink и сделайте ее сгенерированный код в 5 раз быстрее. (это риторика, конечно вы его быстрее не сделаете, его даже вручную уже несоптимизировать)

@Indemsys Вот это хорошее предложение, давайте вашу модель повторим в SimInTech к тому же мы тут планируем с Вячеславом Любченко @lws0954Устроить мортал комбат он давно говорит что state mashine в SimInTech полное говно и в его системе в 100500 раз лучше и правильнее Вот и проведем честное независимое тестирование и пусть победит сильнейший!

Ну это, скажет так, просто реверсинжениринг. Хитрыми уловками вы могли просто скомпилить .exe или .dll в Simulink и представить это своим заказчикам, как результат компиляции SimInTech.

Можете сами взять модель и посмотреть там все честно тестирование вплоть по субмоделям шло. Задача была показать зазкачику с Simulink, что в SimInTech он получит ровно те же результаты. То что скорость больше это бонус, главно было доказать, что используя те же блоки сумматоры интеграторы и прочее математические блоки в SimInTech результат не будет отличатся от Simulink.

И так видно что Simulink пока гораздо сильнее в плане отладочных инструментов и косвенно это подтверждается скоростью ваших моделей.

Для чистоты эксперемента высталвяю метод Эйлера в Simulink модели ракеты от корейского университета, запускаю в отладчике вижу почему то вместо 30000 шагoв только 29186 (время 30 секунд модель начинает разваливатся), но считает.

Отключаю режим отладки. Вытаскиваю часы виндовс нажимаю на старт секундомера и старт расчета. Вместо 18 секунд которые обещала отладка. от страта до конца расчета проходит 41 секунда. Результат на табло:

Запуск модели в Simulink без отладки - 41 секунда
Запуск модели в Simulink без отладки - 41 секунда

Открываю ракету в SimInTech выставляю метод Элера, то же самое время расчет 30 секунд. Модель так же начинает разваливатся. Но количество шагов показывает 30000 как и должно быть при шаге 0.001 и 30 секунда расчета. Запускаю таймер виндовс и расчет в SimInTech - 7 секунд

Запуск модели в SimInTech - 7 секунд
Запуск модели в SimInTech - 7 секунд

Это чисто расчет методо Эйлера без всяких хитрых методов которые в SimInTech лучше для жестких задач.

можете убедится сами: Модель в SimInTech здесь

модель в Simulink здесь....

А вот тут мы мучаем ядро Simulink и SimInTech жесткой задачей. Где уже проверяется методы подбора адаптивного шага интегрирования.

так мы в очете и показываем все потороха, и лупа тут не нужна, кстати блок ISA атмосферы открыт в Simulink

Если посмотреть под маску
Если посмотреть под маску

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity