Можно ли использовать модель публичной локальной переменной в качестве глобальной переменной в области видимости? - PullRequest
0 голосов
/ 30 октября 2019

Я новичок в modelica (я использую OpenModelica), и я пытаюсь смоделировать систему с двойной пружиной - Mass. Угол между пружинным соединением должен быть 90 градусов для всего моделирования, поэтому у каждого из них есть только 1 ось c (translationalSpringConstant) компонента. Для этого я определяю плоское + призматическое ограничение, которое позволяет перемещать пружину моей оси Y в плоскости xz и сжимать ее только по оси Y. Для пружины оси Z Modelica не позволяйте мне ставить другое призматическое или плоское ограничение, поэтому я хотел бы сказать, что его позиция frame_a равна {0, springY.r_rel_0 [2], - s_unstreached}, поэтому, когда Y-one сжимаетсяZ не имеет наклонного компонента, а только ее компонент оси. Очевидно, я не могу сделать это с fixedTranslation или fixed, потому что они не принимают переменную в качестве входных данных, поэтому я создал новую модель fixedTranslation (называемую mobileTranslation) с более высокой вариабельностью определения r и написал это r (перевод из frame_bот пружины Y_axis до frame_a пружины оси Z) имеет эти входные значения {0, springY.r_rel_0 [2], - s_unstreached}. Когда я пытаюсь проверить модель или скомпилировать, я получаю сообщение об ошибке: springY.r_rel_0 [2] не найден в области mobileTranslation, и я не знаю почему. Обе модели (springY и mobileTranslation принадлежат одному и тому же пакету)

Я ожидал, что это сработает, поскольку r_rel_0 [2] не должно быть защищенной переменной. Кажется, что защищенный префикс не является проблемой, если я пытаюсь определить любую переменную (случайную, такую ​​как: константа Real q = 3) и вызвать ее из модели mobileTranslation, я получаю ту же ошибку с соответствующими изменениями

...