Статическая переменная в S-function

Обсуждение вопросов, связанных с Simulink

Модератор: Admin

dmks
Пользователь
Сообщения: 4
Зарегистрирован: Пт июл 22, 2005 2:33 am

Статическая переменная в S-function

Сообщение dmks » Вт окт 11, 2005 9:04 pm

Есть S-function (на MatLab'овском языке). Нужно добавить туда что-то вроде пользовательской переменной, чтобы её значения сохранялись между вызовами - что-то вроде static переменной в С++. Где-то я это видел, но сейчас не могу найти. Заранее спасибо.

chernykh
Эксперт
Сообщения: 4526
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение chernykh » Ср окт 12, 2005 7:07 am

1. Это переменная PERSISTENT. Но сдедует иметь в виду, что, если в модели окажется несколько таких S-функций, то ВСЕ они будут записывать данные в одну и ту же переменную.

2. Лучше использовать параметр UserData для хранения данных между вызовами S-функции как, например, здесь:
viewtopic.php?t=787&highlight=userdata
(последний пример).

Черных И.В.

dmks
Пользователь
Сообщения: 4
Зарегистрирован: Пт июл 22, 2005 2:33 am

Сообщение dmks » Ср окт 12, 2005 10:47 am

Спасибо, это то что надо. И ещё вопрос: можно-ли и как узнать шаг моделирования в S-функции (если, например, он наследуется от предшествующего блока).

chernykh
Эксперт
Сообщения: 4526
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение chernykh » Ср окт 12, 2005 11:13 am

Запоминать предыдущее значение времени (переменная t) в параметре UserData и вычитать его из текущего значение времени.

Черных И.В.