Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Simulink подменяет уравнение
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
Diusha
Моделирую в Simulink; MATLAB R2008a.
Cоздал редактор дифуров. Запускаю – говорит, ошибка в ур-нии

-(kP+kI*u(1))*u(2)+k_I*(D0-u(2)-u(3))+(k_P+kR)*DP

Но я такого уравнения не писал! Я писал

-(kP+kI*u(1))*x(1)+k_I*(D0-x(1)-x(2))+(k_P+kR)*DP

(это первое ур-ние)
Т. е. x(1) он при запуске почему-то меняет на u(2), x(2) – на u(3).

На всякий случай константы:
D0=0.001; kI=1; k_I=1; kP=0.1; k_P=1; kR=1; wR=1; kRX=1; k30=1; k_30=1; k50=1; k_50=1; kQ=1; wQ=1; kQX=1;
RHnd
DP определите. А матлаб все правильно делает.
Diusha
Спасибо, RHnd! Проблема решена!
Но по поводу "все правильно делает" все же интересно (спортивный интерес). Мне кажется правильным выдать сообщение о неизвестном идентификаторе (как делают обычно все компиляторы). Ну на худой конец, показать строку с ошибкой, но только не переделывать ее. Думаю, что в последнем случае я бы быстро нашел, что дело в DP.
Хочется просто идеологию понять, чтобы меньше на грабли наступать
RHnd
Когда матлаб расшифровывает ваши уравнения в симулинке, то он создает модель, где есть набор интеграторов, функций и т.п. Все сигналы в этой модели заводятся на один мультиплексор и, соответственно, все они становяться u(какой-то номер). Разумеется, сохраняется однозначное соответствие исходным сигналам, но его надо руками смотреть. Так что это не подмена формулы, а переименование сигналов.

Почему такая ошибка называется ошибкой синтаксиса -загадка, скрытая где-то в недрах того, как движок симулинка обрабатывает блок Fcn, так как именно на этих блоках реализуются ваши функции. Мне тоже такая ошибка кажется странной, но что поделать. sm.gif
Diusha
По ходу дела еще вопросы вылезают (первые шаги в Симулинке).
Если не очень затруднит…
Во-первых (чтобы не выкладывать файл по новой), вместо того самого DP должно быть x(2).
А во-вторых, собственно вопрос. Увеличиваю константу kI. Где-то до 180 все нормально. Если больше 200, то начинаются какие-то глюки. График в окне Scope появляется только во время расчетов, а по окончании пропадает. При нажатии Ctrl (случайно обнаружил) появляется его кусок (чем больше kI, тем кусок меньше).
Кроме того, время обсчета, похоже, пропорционально этой kI. При 1е6 уже не дождаться, а мне надо до 1е12.
Предполагаю, что в Configuration parameters надо что-то порулить. У Черных ответ не нашел, да и описан там явно более старый матлаб
RHnd
В параметрах скопа на второй, кажется, вкладке, надо снять галочку, ограничиваующую число точек, которые сохраняет скоп. По умолчанию там стоит 5000, кажется. Так же желательно задать в настройках скопа в явном виде время семплирования, чтоб огранчиить потребление им памяти.

Что касается моделирования - надо возтиться с настройками. Поиграть с точностью, например. Хотя вряд ли это ускорит моделирование. Можно поменять решатель. Так, если при 1e10 дифура становится жесткой (stif), то и решатель нужен соответсвующий. Еще можно попробовать поставить fixed step и поискать такой компромисный фиксированный шаг, что и точность хорошая, и моделируется на приемлимое время. Не факт, что эта задача имеет решение. Может придется моделятор на ночь оставлять sm.gif
Diusha
Спасибо, галочка скопу помогла.
С остальным попробую поиграть. Если поделитесь ссылочкой (если имеется), с которой эта игра станет для меня более осознанной, будет совсем здорово
RHnd
Цитата(Diusha @ Jul 24 2013, 21:35) *
Спасибо, галочка скопу помогла.
С остальным попробую поиграть. Если поделитесь ссылочкой (если имеется), с которой эта игра станет для меня более осознанной, будет совсем здорово

Увы, не поделюсь. Читайте хелп матлаба, экспериментируйте.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.