|
|
  |
Simulink подменяет уравнение |
|
|
|
Jul 24 2013, 08:49
|
Вечный студент
   
Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262

|
Моделирую в 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;
Прикрепленные файлы
k02.rar ( 6.92 килобайт )
Кол-во скачиваний: 7
|
|
|
|
|
Jul 24 2013, 13:16
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Когда матлаб расшифровывает ваши уравнения в симулинке, то он создает модель, где есть набор интеграторов, функций и т.п. Все сигналы в этой модели заводятся на один мультиплексор и, соответственно, все они становяться u(какой-то номер). Разумеется, сохраняется однозначное соответствие исходным сигналам, но его надо руками смотреть. Так что это не подмена формулы, а переименование сигналов. Почему такая ошибка называется ошибкой синтаксиса -загадка, скрытая где-то в недрах того, как движок симулинка обрабатывает блок Fcn, так как именно на этих блоках реализуются ваши функции. Мне тоже такая ошибка кажется странной, но что поделать.
|
|
|
|
|
Jul 24 2013, 14:53
|
Вечный студент
   
Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262

|
По ходу дела еще вопросы вылезают (первые шаги в Симулинке). Если не очень затруднит… Во-первых (чтобы не выкладывать файл по новой), вместо того самого DP должно быть x(2). А во-вторых, собственно вопрос. Увеличиваю константу kI. Где-то до 180 все нормально. Если больше 200, то начинаются какие-то глюки. График в окне Scope появляется только во время расчетов, а по окончании пропадает. При нажатии Ctrl (случайно обнаружил) появляется его кусок (чем больше kI, тем кусок меньше). Кроме того, время обсчета, похоже, пропорционально этой kI. При 1е6 уже не дождаться, а мне надо до 1е12. Предполагаю, что в Configuration parameters надо что-то порулить. У Черных ответ не нашел, да и описан там явно более старый матлаб
|
|
|
|
|
Jul 24 2013, 16:22
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
В параметрах скопа на второй, кажется, вкладке, надо снять галочку, ограничиваующую число точек, которые сохраняет скоп. По умолчанию там стоит 5000, кажется. Так же желательно задать в настройках скопа в явном виде время семплирования, чтоб огранчиить потребление им памяти. Что касается моделирования - надо возтиться с настройками. Поиграть с точностью, например. Хотя вряд ли это ускорит моделирование. Можно поменять решатель. Так, если при 1e10 дифура становится жесткой (stif), то и решатель нужен соответсвующий. Еще можно попробовать поставить fixed step и поискать такой компромисный фиксированный шаг, что и точность хорошая, и моделируется на приемлимое время. Не факт, что эта задача имеет решение. Может придется моделятор на ночь оставлять
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|