реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Моделирование в StateFlow (Matlab), когда моделируемых устройств >100
Alex2172
сообщение Feb 16 2005, 13:38
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



В Stateflow достаточно наглядно можно описать алгоритм работы устройства в виде состояний и переходов, промоделировать, сгенерить Си-код, вставить в свою программу.
Так, например, лет 5 назад нарисовал алгоритм работы радиотелефона (интерфейс пользователя), вставил в DSP со своими драйверами - милое дело. Начальник говорит, что изменить - меняешь стрелку или добавляешь состояние, генеришь Си-код, компилишь - все Ок. Надо промоделировать - моделируешь.

А если, например, надо промоделировать одновременно работу N устройств с одним и тем же алгоритмом (N=10..1000). Как это реализовать в Simulink? Не копировать же экземпляр блока Stateflow 1000 раз. Может алгоитм Stateflow можно как-то вставить в M-скрипт и выполнять итеррационно?
Go to the top of the page
 
+Quote Post
s_yakov
сообщение Mar 17 2005, 08:13
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 464
Регистрация: 20-10-04
Пользователь №: 924



А эти N устройств между собой как-то связаны?
Go to the top of the page
 
+Quote Post
Alex2172
сообщение Mar 17 2005, 10:01
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



Цитата(s_yakov @ Mar 17 2005, 11:13)
А эти N устройств между собой как-то связаны?
*


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

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

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

В Matlabe я не вижу другого способа, как только размножить блоки Stateflow в окне Simulink и связать их, но это не удобно - т.к. устройств много.
Go to the top of the page
 
+Quote Post
s_yakov
сообщение Mar 17 2005, 10:04
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 464
Регистрация: 20-10-04
Пользователь №: 924



Сделайте s-функцию из блока, будет компактнее выглядеть и быстрее считаться. Если Вас в процессе симуляции интересует поведение каждого блока, то, видимо, придется их "размножать".
Go to the top of the page
 
+Quote Post
Alex2172
сообщение Mar 17 2005, 13:19
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



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

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

Вообще было бы наглядно, если на вход блока, реализующего алгоритм, подавать вектор(или матрицу) параметров, и в зависимости от размерности созавалось бы определенное количество экземпляров алгоритма. Как, например в случае, когда мы подаем на вход sin(x) вектор, то и на выходе получаем вектор.
Go to the top of the page
 
+Quote Post
s_yakov
сообщение Mar 17 2005, 20:33
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 464
Регистрация: 20-10-04
Пользователь №: 924



Можно разбить на группы по М блоков в S-функции - для удобства размещения на Simulink диаграмме. Можно также попробовать последовательное переключение входных параметров к блоку - в цикле.

Вы писали: "Вообще было бы наглядно, если на вход блока, реализующего алгоритм, подавать вектор(или матрицу) параметров, и в зависимости от размерности созавалось бы определенное количество экземпляров алгоритма. Как, например в случае, когда мы подаем на вход sin(x) вектор, то и на выходе получаем вектор." - я такое делал в LabView. Там это "автоматом" получается, в Simulinke размерность нужно явно указывать. Может связку попробовать "LabView-Matlab"?
Go to the top of the page
 
+Quote Post
Alex2172
сообщение Mar 18 2005, 08:34
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



Цитата(s_yakov @ Mar 17 2005, 23:33)
Можно разбить на группы по М блоков в S-функции - для удобства размещения на Simulink диаграмме. Можно также попробовать последовательное переключение входных параметров к блоку - в цикле.

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

Интересное предложение, надо будет попробовать.
А на счет разбиения - пробовал при моделировании динамики поезда, объединяя 10 вагонов в экипаж, и рисуя 10 экипажей - тормозит страшно - это цена за наглядность представления.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd June 2024 - 01:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01408 секунд с 7
ELECTRONIX ©2004-2016