Получить функцию, которая возвращает имена расширяемых переменных коннектора и / или количество переменных коннектора?

Есть ли в Modelica функция get, которая возвращает имена переменных и / или количество переменных расширяемого коннектора?

Контекст выглядит следующим образом:
Моя модель имеет несколько соединений ШИНЫ (с расширяемыми разъемами), которые я хотел бы включить или выключить (Активный класс). Для этого я хочу создать переключатели на ШИНЕ, которые устанавливают определенные сигналы на 0. Переключатель должен содержать Белый список. Переменным в этом белом списке не задано значение 0, а вместо этого они передаются. Это выполняется в цикле для всех n входящих переменных шины.

Я еще не писал кода. Однако у меня есть блок-схема, которую я создал при подготовке к реализации. Фактический код должен быть довольно простым, как только я найду функцию get. Блок-схема Стрелка вниз от Установить 0 к вентилю кажется немного неправильной, потому что похоже, что мне всегда нужно устанавливать переменную на 0. На самом деле я либо передаю переменную (если она находится в белом списке) в выходной разъем, либо устанавливаю ее 0 (если не в белом списке). List), а затем передайте ноль в выходной коннектор.

Заранее большое спасибо за вашу помощь!


person Jay_At_Play    schedule 26.11.2014    source источник


Ответы (1)


В Modelica нет функций, позволяющих «исследовать» коннектор (расширяемый или иной). Кроме того, вы не можете использовать переменные для заполнения расширяемого соединителя.

При использовании Modelica необходимо помнить о нескольких аспектах языка. Во-первых, после компиляции модели количество переменных и уравнений должно оставаться фиксированным. Во-вторых, Modelica - это язык со статической типизацией. Таким образом, структура соединителей должна быть полностью известна во время компиляции.

Что вы можете сделать, так это создать соединитель, который представляет собой просто массив реальных значений (например) и связанный список строк. Затем вы можете сопоставить имена с сигналами или что-то в этом роде. Возможно, вы сможете поиграть в некоторые игры с изменением отображений во время моделирования (путем изменения значений строк и уравнений, связанных с вещественными числами). Но главное в том, что вам нужно постоянно иметь фиксированное количество уравнений и переменных.

person Michael Tiller    schedule 26.11.2014
comment
Модель, которую я использую, не предназначена для динамического подключения. Переменные, передающие переключатель, представляют изменения в существующих переменных (т.е. x_new вычисляется на принимающей стороне соединения как x_new = x_old + delta_x с delta_x передача переключателя или установка на 0). Поэтому я бы создал промежуточную переменную внутри своего переключателя, которая может либо иметь значение входящего delta_x, либо быть равным 0. Желая написать многоразовый класс для моей библиотеки, а не имена переменных жесткого кода для каждого возможный разъем, я подумал, что функция get может помочь ... - person Jay_At_Play; 02.12.2014
comment
... Я посмотрю, смогу ли я написать многоразовый класс, используя ваш подход (или, может быть, какую-то форму подстановочного знака), и обновить этот поток результатами. PS: извините за поздний ответ. Я делаю это для своей студенческой работы, которой я занимаюсь 1-2 раза в неделю, поэтому время моего ответа не всегда такое, как должно быть :) - person Jay_At_Play; 02.12.2014