Alex2172 0 16 февраля, 2005 Опубликовано 16 февраля, 2005 · Жалоба В Stateflow достаточно наглядно можно описать алгоритм работы устройства в виде состояний и переходов, промоделировать, сгенерить Си-код, вставить в свою программу. Так, например, лет 5 назад нарисовал алгоритм работы радиотелефона (интерфейс пользователя), вставил в DSP со своими драйверами - милое дело. Начальник говорит, что изменить - меняешь стрелку или добавляешь состояние, генеришь Си-код, компилишь - все Ок. Надо промоделировать - моделируешь. А если, например, надо промоделировать одновременно работу N устройств с одним и тем же алгоритмом (N=10..1000). Как это реализовать в Simulink? Не копировать же экземпляр блока Stateflow 1000 раз. Может алгоитм Stateflow можно как-то вставить в M-скрипт и выполнять итеррационно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
s_yakov 0 17 марта, 2005 Опубликовано 17 марта, 2005 · Жалоба А эти N устройств между собой как-то связаны? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex2172 0 17 марта, 2005 Опубликовано 17 марта, 2005 · Жалоба А эти N устройств между собой как-то связаны? <{POST_SNAPBACK}> Да, они должны взаимодействовать друг с другом, через некоторую модель среды. Вот пример 1: моделируем поезд, 100 вагонов, на каждом вагоне установлен один и тот же механизм, работа которого описана в stateflow, механизмы связаны друг с другом, например посредством тормозной магистрали, т.е. все механизмы должы использовать один внешний параметр - давление в тормозной магистрали. Вот пример 2: сеть Embedded устройств с заданным алгоритмом (stateflow), устройства обмениваются (скажем по RS485 или еще как-то) каким-либо параметром, от которого зависит работа этого алгоритма. В Matlabe я не вижу другого способа, как только размножить блоки Stateflow в окне Simulink и связать их, но это не удобно - т.к. устройств много. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
s_yakov 0 17 марта, 2005 Опубликовано 17 марта, 2005 · Жалоба Сделайте s-функцию из блока, будет компактнее выглядеть и быстрее считаться. Если Вас в процессе симуляции интересует поведение каждого блока, то, видимо, придется их "размножать". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex2172 0 17 марта, 2005 Опубликовано 17 марта, 2005 · Жалоба Сделайте s-функцию из блока, будет компактнее выглядеть и быстрее считаться. Если Вас в процессе симуляции интересует поведение каждого блока, то, видимо, придется их "размножать". <{POST_SNAPBACK}> Поясните пожалуйста. Насколько я понимаю, Вы предлагаете засунуть экземпляр алгоритма в S-функцию, а что дальше? Тогда придется блоки S-функций размножать в окне Simulink. Или Вы предлагаете в одной S-функции реализовать N алгоритмов? Вообще было бы наглядно, если на вход блока, реализующего алгоритм, подавать вектор(или матрицу) параметров, и в зависимости от размерности созавалось бы определенное количество экземпляров алгоритма. Как, например в случае, когда мы подаем на вход sin(x) вектор, то и на выходе получаем вектор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
s_yakov 0 17 марта, 2005 Опубликовано 17 марта, 2005 · Жалоба Можно разбить на группы по М блоков в S-функции - для удобства размещения на Simulink диаграмме. Можно также попробовать последовательное переключение входных параметров к блоку - в цикле. Вы писали: "Вообще было бы наглядно, если на вход блока, реализующего алгоритм, подавать вектор(или матрицу) параметров, и в зависимости от размерности созавалось бы определенное количество экземпляров алгоритма. Как, например в случае, когда мы подаем на вход sin(x) вектор, то и на выходе получаем вектор." - я такое делал в LabView. Там это "автоматом" получается, в Simulinke размерность нужно явно указывать. Может связку попробовать "LabView-Matlab"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex2172 0 18 марта, 2005 Опубликовано 18 марта, 2005 · Жалоба Можно разбить на группы по М блоков в S-функции - для удобства размещения на Simulink диаграмме. Можно также попробовать последовательное переключение входных параметров к блоку - в цикле. Вы писали: "Вообще было бы наглядно, если на вход блока, реализующего алгоритм, подавать вектор(или матрицу) параметров, и в зависимости от размерности созавалось бы определенное количество экземпляров алгоритма. Как, например в случае, когда мы подаем на вход sin(x) вектор, то и на выходе получаем вектор." - я такое делал в LabView. Там это "автоматом" получается, в Simulinke размерность нужно явно указывать. Может связку попробовать "LabView-Matlab"? <{POST_SNAPBACK}> Интересное предложение, надо будет попробовать. А на счет разбиения - пробовал при моделировании динамики поезда, объединяя 10 вагонов в экипаж, и рисуя 10 экипажей - тормозит страшно - это цена за наглядность представления. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться