Получение одного из внутренних параметров модели

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

Модератор: Admin

Altemir
Пользователь
Сообщения: 6
Зарегистрирован: Вс ноя 13, 2005 9:32 pm

Получение одного из внутренних параметров модели

Сообщение Altemir » Вс ноя 13, 2005 9:48 pm

Всем - здравствуйте!
С пакетом Matlab работаю недавно и возникла следующая проблема:
Создаю в Simulink-е блок Fcn из User-Defined Functions, в котором в качестве u (входной переменной) должен выступать один из внутренних параметров моделей Sources (к примеру, период модели Pulse Generator). Подскажите, каким образом получать автоматически это значение, т.е. не вводить его каждый раз в Fcn? Может, использовать другой блок пользовательских функций? Какой и как?
Пробовал получить это значение через Signal Attributes. Безуспешно.

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

Сообщение chernykh » Пн ноя 14, 2005 7:20 am

Ф-ция get_param:
http://matlab.exponenta.ru/simulink/book1/12.php#12_13
+ Поиск

Черных И.В.

Altemir
Пользователь
Сообщения: 6
Зарегистрирован: Вс ноя 13, 2005 9:32 pm

Сообщение Altemir » Чт ноя 17, 2005 12:37 am

Что-то я не могу в User-Defined Functions Simulink-а вызвыть эту функцию. В Command Window Matlab-а - без проблем. Каким образом, к примеру, на Display вывести параметр блока (не в виде подписи под блоком его параметра)?

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

Сообщение chernykh » Чт ноя 17, 2005 7:35 am

Нужно написать m-функцию (S-функцию) и подключить ее через MATLAB Fcn.

Черных И.В.

Altemir
Пользователь
Сообщения: 6
Зарегистрирован: Вс ноя 13, 2005 9:32 pm

Сообщение Altemir » Сб ноя 19, 2005 12:29 am

Ответ программиста - столь же точен, сколь и бесполезен.
Вы сами пробовали это сделать? Пример, пожалуйста...

best_varvar
Пользователь
Сообщения: 131
Зарегистрирован: Ср сен 22, 2004 4:49 pm
Откуда: Екатеринбург

Сообщение best_varvar » Сб ноя 19, 2005 9:34 am

Сайт читайте
http://matlab.exponenta.ru/simulink/book1/16.php
а лучше help

Altemir
Пользователь
Сообщения: 6
Зарегистрирован: Вс ноя 13, 2005 9:32 pm

Сообщение Altemir » Сб ноя 19, 2005 8:12 pm

Воистину - ответы теоретиков. Если так всё просто, то давно бы привели эти 4-N строчек кода...

Мною уже давно было реализовано решение поставленной задачи через SubSystem, но подобный способ не всегда удобен, потому и спрашиваю КОНКРЕТНОГО совета, а не ссылки на общие вопросы и хелпы далеко не самого высокого уровня.

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

Сообщение chernykh » Вс ноя 20, 2005 8:49 am

Дело в том, что функция get_param возвращает строковую переменную, а не число. Поэтому дополнительно необходимо использовать функцию str2num. Если Вы вызывали функцию из командного окна, то наверняка заметили, что ответ функции в Workspace обозначен как "abc", а не как матрица.

Итак, задача:
Пусть имеется модель 'My_model' в которой находится блок 'Constant'. Требуется вывести на 'Display' значение константы.
Решение:
Ставим в модель блок 'MATLAB Fcn'. Его выход на 'Display'. Параметр 'MATLAB function' задаем как
str2num(get_param('My_model/Constant','Value'))
Запускаем. Радуемся.

Думаю, что если бы Вы в своем втором обращении привели текст сообщения об ошибке, то получили бы нужный ответ быстрее. Если Вы полагаете, что фраза "Что-то я не могу ... вызвыть эту функцию..." содержит всю необходимую информацию для описания проблемы, то Вы ошибаетесь - это не так.
Хотелось бы также узнать, что в пособии по Simulink является "...далеко не самого высокого уровня.". Мне, как ведущему раздела Simulink, это достаточно важно.

Черных И.В.

Marks
Пользователь
Сообщения: 3
Зарегистрирован: Вс фев 15, 2009 12:08 am

Сообщение Marks » Вс фев 15, 2009 1:21 am

Поскажите как можно управлять моделью SimMechanics в действии т.е.
считывать угловые параметры 'Revolute' через 'Joint Sensor' в переменную и менять параметры k,b,x0 блока 'Joint Spring & Damper' в каждый момент времени?