Создание уравнения

Я пытаюсь смоделировать насосную систему. Система состоит из контроллера, двух двухпозиционных клапанов и рабочего объема, действующего как камера. Контроллер отвечает за состояние клапанов, а также за наполнение объема и его откачку. При соединении всех компонентов вместе я начал получать ошибки с сообщением «Не удалось создать уравнение между компонентами», например, между рабочим объемом и первым клапаном. Я попытался удалить клапаны из всей системы и подключить поршень напрямую к источнику, но затем я получил сообщение об ошибке «Не удалось создать уравнение ...» между смещением поршня и его входом.

Я не мог понять, в чем моя проблема, если быть точным. Их нельзя связать вместе с самой моделью, или мне что-то еще не хватает?

Я, конечно, не эксперт в моделизме, но основы, конечно, у меня есть.

Чтобы было понятнее, вот ссылка на мою модель:

https://www.dropbox.com/s/g9dr40jame3lk2n/pumpsystem.zip?dl=0

Любая помощь будет оценена.


person data99    schedule 10.07.2019    source источник


Ответы (1)


OpenModelica жалуется на устаревшие соединения. В вашей модели много связей между компонентами, которых больше не существует.

Например:

connect(ChamberController.PistonDisplacment, sweptVolume1.flange) annotation(...);
connect(close.on, ChamberController.deflate)  annotation(...);

Чтобы удалить эти соединения, просто щелкните ссылку в браузере сообщений, и вы попадете прямо в нужную позицию в коде.

введите описание изображения здесь

person marco    schedule 11.07.2019
comment
Ага, это правда. Я подумал, что удаляю соединения прямо из представления диаграммы, оно также будет напрямую удалено из исходного кода. Спасибо за ответ. Итак, я исправил связи и попытался проверить эту модель, но модель говорит, что я получил 385 уравнений с 384 переменными, что приводит к переопределенной системе. Мой вопрос в том, есть ли способ отследить недостающую переменную или где именно я ее пропускаю? - person data99; 12.07.2019
comment
Обычно OpenModelica также удаляет соединения из кода. Понятия не имею, что пошло не так. Что касается отсутствующей переменной: самый простой и часто единственный способ найти такие ошибки - это создать минимальные примеры для каждого компонента, чтобы изолировать проблему. - person marco; 15.07.2019
comment
Не могли бы вы рассказать мне больше о создании минимальных примеров моих компонентов? что вы имеете в виду или с чего мне начать? оценил @marco - person data99; 15.07.2019
comment
Создайте экземпляры компонентов, которые вы хотите протестировать, в новой модели и предоставьте только необходимые входные данные. Установите для всех параметров простые буквальные значения, подключите базовые компоненты к физическим портам (например, заземление для электрических компонентов), подключите простые сигналы к входам блоков (обычно постоянным) и т. Д. Когда это сработает, последовательно увеличивайте сложность. - person marco; 15.07.2019