Я хотел бы использовать expandable connector
(например, Шиноподобная структура ) для моделирования (в основном) input
и output
соединений для более сложных подсистем (An array
будет не позволяет иметь разные единицы для своих элементов и сплюснутые списки становится громоздким, в то время как record
не позволяет легко подключать только одну из его переменных без написания уравнений).
Хотя вы можете просто подключитьпеременная в пусто expandable connector
без проблем, ее unit
(и другие атрибуты) не будут переданы.Таким образом, я хотел бы гибко объявлять переменные внутри расширяемого соединителя (например, как x[:]
) и иметь их размеры, определяемые фактическим соединением.
К сожалению, это также не проверяется в OpenModelica и Wolfram System Modeler :
package FirstAttempt
model SimpleBusModel
DataBus dataBus;
Modelica.Blocks.Interfaces.RealOutput x[ nout ](each unit = "widgets");
parameter Integer nout = 2;
equation
x = ones( nout );
connect( x, dataBus.x );
end SimpleBusModel;
expandable connector DataBus
Real[:] x(each unit = "widgets");
end DataBus;
end FirstAttempt;
... и не объявление connector
в качестве подкомпонента и передача размера массива через inner
и outer
не работают:
model SimpleBusModel
DataBus dataBus;
Modelica.Blocks.Interfaces.RealOutput x[ nout ](each unit = "widgets");
inner parameter Integer nout = 2;
expandable connector DataBus
Real[nout] x(each unit = "widgets");
outer parameter Integer nout;
end DataBus;
equation
x = ones( nout );
connect( x, dataBus.x );
end SimpleBusModel;
Как настроить expandable connector
с гибкими предопределенными переменными массива?
Обновление :
Похоже, этоявляется проблемой, относящейся к OpenModelica и Wolfram System Modeler, поскольку приведенные примеры прекрасно работают в Dymola (см. комментарий f.wue ниже).Я перекрестно опубликовал похожий вопрос по Wolfram Community .
В Моделике Спецификация (Версия 3.2, Редакция 2), которую мы находим в Раздел 9.1.3 Расширяемые соединители :
Перед созданием уравнений соединения непараметрические скалярные переменные и непараметрические элементы массива, объявленные в расширяемых соединителях, помечаются как потенциально присутствующие.Элемент массива без параметров может быть объявлен с размерами массива «:», указывающими, что размер неизвестен.Это относится как к переменным простых типов, так и к переменным структурированных типов.
Как указано f.wue, мы должны подключить connectors
, а не просто входы и выходы.Я изменил это в своем коде выше, но это не решает проблему.