2017-02-09 7 views
0

Итак, что я пытаюсь сделать, так это: у меня есть модель моделирования потока simulink. Чтобы отобразить некоторые вещи из этой модели, я построил графический интерфейс. В этом графическом интерфейсе у меня есть кнопка, которая должна установить флаг true при нажатии, который я хочу использовать внутри моей модели stateflow, чтобы начать переход. Поэтому всякий раз, когда я вхожу в определенное состояние в stateflow, я устанавливаю значение флага в значение false, и я хочу, чтобы он был установлен в true, когда я нажимаю кнопку. К сожалению, я не могу найти способ установить локальный параметр внутри stateflow из функции обратного вызова GUI. Я попытался использовать блоки памяти хранилища данных, но даже если я могу установить значение изнутри модели stateflow, я не могу установить значение из функции обратного вызова графического интерфейса.Напишите в DataStore из скрипта Matlab

Помощь была бы действительно оценена!

ответ

0

Я когда-то построил аналогичный графический интерфейс, который я поставил в тестовой жгуте для модели Simulink. Чтобы сделать эту работу и не слишком сильно вторгаться в дизайн Simulink, я реализовал его как «S2-функцию Matlab уровня 2».

Это означает, что накладные расходы som (с настройкой портов и их параметров), но вы можете получить все, что у вас есть в качестве сигнала в или из диаграммы состояния в такой блок (вам, вероятно, понадобится az^1, если вы оба хотите получить выход и управляющий вход).

Код GUI можно вызвать из блока Start и значения, считанные в сегменте «Обновление». Если кнопка активирована, сохраните ее в переменной, которая оценивается в функции Outputs, а затем установите outport для указания этого события (при необходимости, с помощью логики сброса).

Проверьте интерактивную справку для функции 2-го уровня Matlab S-function и, в частности, msfuntmpl_basic.m, чтобы начать.

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