как создать блок передачи Simulink в реальном времени

У меня есть простая идея, но я думаю, что ее трудно реализовать на simulink. Я создал сервер TCP/IP между BeagleBone и блоком Simulink, используя код C. У меня есть переключатель, подключенный к кости бигля в качестве входа, и моя идея состоит в том, чтобы отображать на блоке simulink отображение, закрыт или открыт переключатель. Я не мог этого сделать, потому что мой клиент (блок Simulink) представляет собой код c, и он выполнит задание только один раз, поскольку код C завершает выполнение функции после возврата, чтобы получить значение переключателя. Ребята, вы знаете какой-нибудь режим передачи Simulink или причудливую подсказку C для передачи данных между клиентским блоком Simulink и дисплеем?


person KJohn    schedule 14.02.2013    source источник


Ответы (1)


В симуляторе, над которым я работал, мы использовали блок Sink с удаленным IP-адресом и IP-портом для экспорта данных, рассчитанных в режиме реального времени, на внешний прослушиватель (это может быть на той же машине или подключено через сеть), что в нашем случае был компьютер, выполняющий рендеринг графики, который затем подбирался кодом C++, написанным с использованием Ogre 3D, и другой моделью simulink с использованием исходного блока.

У нас также был интерактивный дисплей картплоттера (указание местоположения GPS, если хотите). Мы могли бы получить доступ к значениям, сгенерированным из simulink, вызвав следующую команду в любое время, когда это было необходимо:

variable = get_param('Simulator/Chartplotter/YDot','RuntimeObject');

Вы также можете вызвать «set_param», чтобы изменить постоянное значение, расположенное внутри модели simulink.

У меня нет опыта работы с биглем, но я полагаю, что ваш код C может выполнить сценарий Matlab, который изменит логическую константу, присутствующую в вашей модели simulink, чтобы указать, открыт ли переключатель или нет.

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

Надеюсь это поможет.

person Artur    schedule 23.02.2013