Маршрутизация сигнала через программный компонент Composition

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


person Oliver Scheid    schedule 22.11.2017    source источник


Ответы (2)


Если я правильно понимаю, что ваши P- и R- порты находятся в самой композиции (то есть они являются внешними портами), вы можете использовать сквозной соединитель (PassThroughSwConnector элемент модели) для своего варианта использования. Это дочерний элемент композиций, поэтому вы добавляете PassThroughSwConnector к своему CompositionSwComponentType и используете его для прямого подключения двух портов.

Обратите внимание, что это будет невозможно, если между двумя портами есть другой путь через соединители сборки. Это создало бы цикл, состоящий из сквозных и сборочных соединителей, что явно запрещено в спецификации.

person DUman    schedule 22.11.2017
comment
Спасибо. Это именно то, что я искал. Теперь, когда я знал, что искать в спецификации, похоже, что PassThroughSwConnector был введен в AR версии 4.1 (и поэтому я этого еще не знал). Еще раз спасибо за вашу поддержку! - person Oliver Scheid; 23.11.2017

Программные композиции - это только структурная группа. Перед созданием Rte вы должны запустить инструмент, который создает «EcuExtract» (см. Системный шаблон), который выравнивает модель. Таким образом, входом для Rte является одна большая корневая композиция, которая содержит только атомарные компоненты и никаких других композиций. Следовательно, не будет «копирующего узла», и данные будут передаваться всегда.

Однако (с некоторыми ограничениями) возможно, что в Ecu Extract порт корневой композиции имеет другой тип, чем порт компонента, что приведет к преобразованию данных (например, изменение масштаба данных или выбор элемента из структуры ).

person ZzetT    schedule 22.11.2017
comment
Я понимаю, что программная композиция не имеет кода и исчезает при выравнивании. Но у меня был другой вопрос: у меня есть порт получателя и порт отправителя. Я хочу напрямую соединить SenderPort с ReceiverPort, чтобы не создавать для этого никакого кода. - person Oliver Scheid; 22.11.2017
comment
Возможно, вы имеете в виду сквозной соединитель. - person ZzetT; 22.11.2017
comment
Да, пожалуйста, проверьте PassThroughSwConnector в шаблоне программного компонента - person ZzetT; 22.11.2017
comment
Да, в шаблоне программного компонента есть PassThroughSwConnector. - person ZzetT; 22.11.2017
comment
Спасибо. Это именно то, что я искал. Но я думаю, что это часть СОСТАВА ПО (а не компонент). Но все равно спасибо! - person Oliver Scheid; 23.11.2017