Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Моделирование в StateFlow (Matlab)
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
Alex2172
В Stateflow достаточно наглядно можно описать алгоритм работы устройства в виде состояний и переходов, промоделировать, сгенерить Си-код, вставить в свою программу.
Так, например, лет 5 назад нарисовал алгоритм работы радиотелефона (интерфейс пользователя), вставил в DSP со своими драйверами - милое дело. Начальник говорит, что изменить - меняешь стрелку или добавляешь состояние, генеришь Си-код, компилишь - все Ок. Надо промоделировать - моделируешь.

А если, например, надо промоделировать одновременно работу N устройств с одним и тем же алгоритмом (N=10..1000). Как это реализовать в Simulink? Не копировать же экземпляр блока Stateflow 1000 раз. Может алгоитм Stateflow можно как-то вставить в M-скрипт и выполнять итеррационно?
s_yakov
А эти N устройств между собой как-то связаны?
Alex2172
Цитата(s_yakov @ Mar 17 2005, 11:13)
А эти N устройств между собой как-то связаны?
*


Да, они должны взаимодействовать друг с другом, через некоторую модель среды.

Вот пример 1: моделируем поезд, 100 вагонов, на каждом вагоне установлен один и тот же механизм, работа которого описана в stateflow, механизмы связаны друг с другом, например посредством тормозной магистрали, т.е. все механизмы должы использовать один внешний параметр - давление в тормозной магистрали.

Вот пример 2: сеть Embedded устройств с заданным алгоритмом (stateflow), устройства обмениваются (скажем по RS485 или еще как-то) каким-либо параметром, от которого зависит работа этого алгоритма.

В Matlabe я не вижу другого способа, как только размножить блоки Stateflow в окне Simulink и связать их, но это не удобно - т.к. устройств много.
s_yakov
Сделайте s-функцию из блока, будет компактнее выглядеть и быстрее считаться. Если Вас в процессе симуляции интересует поведение каждого блока, то, видимо, придется их "размножать".
Alex2172
Цитата(s_yakov @ Mar 17 2005, 13:04)
Сделайте s-функцию из блока, будет компактнее выглядеть и быстрее считаться. Если Вас в процессе симуляции интересует поведение каждого блока, то, видимо, придется их "размножать".
*

Поясните пожалуйста.
Насколько я понимаю, Вы предлагаете засунуть экземпляр алгоритма в S-функцию, а что дальше? Тогда придется блоки S-функций размножать в окне Simulink. Или Вы предлагаете в одной S-функции реализовать N алгоритмов?

Вообще было бы наглядно, если на вход блока, реализующего алгоритм, подавать вектор(или матрицу) параметров, и в зависимости от размерности созавалось бы определенное количество экземпляров алгоритма. Как, например в случае, когда мы подаем на вход sin(x) вектор, то и на выходе получаем вектор.
s_yakov
Можно разбить на группы по М блоков в S-функции - для удобства размещения на Simulink диаграмме. Можно также попробовать последовательное переключение входных параметров к блоку - в цикле.

Вы писали: "Вообще было бы наглядно, если на вход блока, реализующего алгоритм, подавать вектор(или матрицу) параметров, и в зависимости от размерности созавалось бы определенное количество экземпляров алгоритма. Как, например в случае, когда мы подаем на вход sin(x) вектор, то и на выходе получаем вектор." - я такое делал в LabView. Там это "автоматом" получается, в Simulinke размерность нужно явно указывать. Может связку попробовать "LabView-Matlab"?
Alex2172
Цитата(s_yakov @ Mar 17 2005, 23:33)
Можно разбить на группы по М блоков в S-функции - для удобства размещения на Simulink диаграмме. Можно также попробовать последовательное переключение входных параметров к блоку - в цикле.

Вы писали: "Вообще было бы наглядно, если на вход блока, реализующего алгоритм, подавать вектор(или матрицу) параметров, и в зависимости от размерности созавалось бы определенное количество экземпляров алгоритма. Как, например в случае, когда мы подаем на вход sin(x) вектор, то и на выходе получаем вектор." - я такое делал в LabView. Там это "автоматом" получается, в Simulinke размерность нужно явно указывать. Может связку попробовать "LabView-Matlab"?
*

Интересное предложение, надо будет попробовать.
А на счет разбиения - пробовал при моделировании динамики поезда, объединяя 10 вагонов в экипаж, и рисуя 10 экипажей - тормозит страшно - это цена за наглядность представления.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.