Как я могу направить «сигнал» через программную композицию, не копируя его (с помощью некоторого кода)? Пример использования: SW-Composition имеет несколько портов RP, где данные должны быть изменены, а затем предоставлены на некоторых PPorts. Но для некоторых комбинаций RPorts / PPort данные не нужно трогать и, следовательно, «просто маршрутизировать» от RPort к PPort. Идея состоит в том, чтобы просто связать RPortPrototype с PPortPrototype с помощью DelegationSwConnector. Но согласно спецификации это невозможно. Есть идеи, как это сделать без необходимости «копировать код»?
Маршрутизация сигнала через программный компонент Composition
Ответы (2)
Если я правильно понимаю, что ваши P- и R- порты находятся в самой композиции (то есть они являются внешними портами), вы можете использовать сквозной соединитель (PassThroughSwConnector
элемент модели) для своего варианта использования. Это дочерний элемент композиций, поэтому вы добавляете PassThroughSwConnector
к своему CompositionSwComponentType
и используете его для прямого подключения двух портов.
Обратите внимание, что это будет невозможно, если между двумя портами есть другой путь через соединители сборки. Это создало бы цикл, состоящий из сквозных и сборочных соединителей, что явно запрещено в спецификации.
Программные композиции - это только структурная группа. Перед созданием Rte вы должны запустить инструмент, который создает «EcuExtract» (см. Системный шаблон), который выравнивает модель. Таким образом, входом для Rte является одна большая корневая композиция, которая содержит только атомарные компоненты и никаких других композиций. Следовательно, не будет «копирующего узла», и данные будут передаваться всегда.
Однако (с некоторыми ограничениями) возможно, что в Ecu Extract порт корневой композиции имеет другой тип, чем порт компонента, что приведет к преобразованию данных (например, изменение масштаба данных или выбор элемента из структуры ).