При обмене данными между отправителем и получателем (S-R) в очереди AUTOSAR компоненты программного обеспечения AUTOSAR считывают и записывают данные в другие компоненты или службы. Данные, отправленные программным компонентом отправителя AUTOSAR, добавляются в очередь, предоставляемую средой выполнения AUTOSAR (RTE). Вновь полученные данные не перезаписывают существующие непрочитанные данные. Позднее программный компонент приемника считывает данные из очереди.
Для реализации связи S-R в очереди программные компоненты AUTOSAR определяют:
Интерфейс отправитель-получатель AUTOSAR с элементами данных.
AUTOSAR предоставляет и требует порты, которые отправляют и получают данные из очереди.
В Simulink ® можно:
Создайте интерфейсы и порты S-R в очереди AUTOSAR с помощью словаря AUTOSAR.
Модель AUTOSAR предоставляет и требует порты, используя порты и порты корневого уровня Simulink.
Сопоставьте выходы и входы с АВТОЗАР, предоставляющими и требующими порты, с помощью редактора сопоставлений кодов. Установите режимы доступа к данным AUTOSAR в значение QueuedExplicitSend или QueuedExplicitReceive.
Для моделирования отправки и получения данных AUTOSAR с использованием очереди используйте блоки Simulink Send и Receive. Если реализация связи S-R в очереди включает состояния или требует логики принятия решений, используйте диаграммы Stateflow ®. Можно обрабатывать ошибки, возникающие, когда очередь пуста или заполнена. Можно указать размер очереди. Дополнительные сведения см. в разделе Обзор сообщений Simulink.
Можно смоделировать связь отправителя-получателя (S-R) в очереди AUTOSAR между моделями компонентов, например, при моделировании на уровне композиции. Отправители и получатели данных могут работать с разными скоростями. Несколько отправителей данных могут взаимодействовать с одним приемником данных.

Чтобы начать работу, можно импортировать компоненты с установленными в очередь интерфейсами S-R и портами из файлов ARXML в Simulink или использовать Simulink для создания интерфейсов и портов.
Рабочий процесс Simulink для моделирования автоматической отправки и получения в очереди
Настройка компонентов отправителя и получателя AUTOSAR для связи в очереди
Настройка моделирования связи отправителя и получателя в очереди AUTOSAR
Моделирование обмена данными между отправителем и получателем в очереди N-to-1 AUTOSAR
Моделирование связи отправителя и получателя с помощью AUTOSAR, управляемой событиями
Внедрение функции отправки и получения в очереди AUTOSAR с использованием сообщений Stateflow
Эта процедура описывает общий рабочий процесс моделирования компонентов отправителя и получателя в очереди AUTOSAR в Simulink.
Настройте одну или несколько моделей как компоненты отправителя в очереди AUTOSAR, а одну модель - как компонент получателя в очереди AUTOSAR. Для каждой модели компонента используйте словарь AUTOSAR и редактор сопоставления кодов, чтобы:
Создайте интерфейс данных S-R и его элементы данных.
Создайте порт отправителя или получателя.
Сопоставьте порт отправителя или получателя с исходящим портом Simulink для отправки или ввода для получения. Установите режим доступа к данным AUTOSAR в значение QueuedExplicitSend или QueuedExplicitReceive.
Например, см. раздел Настройка компонентов отправителя и получателя AUTOSAR для связи в очереди.
Для реализации поведения компонента отправителя или получателя в очереди AUTOSAR используйте блоки Simulink Send и Receive. Дополнительные сведения см. в разделе Обзор сообщений Simulink.
Если реализация связи S-R в очереди включает состояния или требует логики принятия решений, используйте диаграммы Stateflow.
Дополнительные сведения см. в разделе Реализация сообщений отправки и получения в очереди AUTOSAR.
При построении модели компонента отправителя или получателя в очереди AUTOSAR:
Сгенерированный код C содержит вызовы AUTOSAR Rte_Send_<port>_<DataElement> или Rte_Receive_<port>_<DataElement> API.
Созданный код обрабатывает состояние принимаемых сообщений.
Обработка состояния отправки сообщений (например, переполнение очереди) может быть смоделирована только в Stateflow. Созданный код обрабатывает состояние отправки сообщений только в том случае, если компонент отправителя в очереди реализует логику Stateflow.
Экспортированные файлы ARXML содержат описания для связи отправителя и получателя в очереди. Произведенный ComSpec для порта в очереди включает тип порта и длину очереди (на основе свойства сообщения Simulink QueueCapacity). В SwDataDefProps генерируется для элемента данных порта в очереди, SwImplPolicy имеет значение Queued.
Чтобы смоделировать связь между отправителем и получателем в очереди AUTOSAR в Simulink, создайте содержащую композицию, систему или модель электрического жгута. Включить компоненты отправителя и получателя в очередь в качестве ссылочных моделей.
Чтобы обеспечить логику организации очередей между компонентами отправителя и получателя, можно вставить блок очереди Simulink или логику Stateflow. С помощью блока «Очередь» можно моделировать очередь с определенной емкостью. При непосредственном соединении компонентов отправителя и получателя Simulink вставляет очередь по умолчанию с емкостью 1.
Пример непосредственного подключения компонентов см. в модели компоновки «1 к 1», используемой в разделе Настройка моделирования связи отправителя и получателя с очередью AUTOSAR.
Примеры вставки блока очереди или логики потока состояний между компонентами отправителя и получателя см. в разделах Simulate N-to-1 AUTOSAR Queed Sender-Receiver Communication and Simulate Event-Driven AUTOSAR Steued Sender-Receiver Communication.
В этом примере настраиваются компоненты отправителя и получателя в очереди AUTOSAR в Simulink. В примере используются две модели в папке (matlabroot/help/toolbox/autosar/examplescd в папку). При копировании файлов в рабочую папку скопируйте модели. Чтобы просмотреть эти модели, подключенные для моделирования, см. раздел Настройка моделирования связи отправителя и получателя в очереди AUTOSAR.
mAutosarSlSenderSWC1.slx
mAutosarSlReceiverSWC.slx
Откройте модель AUTOSAR, которую необходимо настроить как компонент отправителя или получателя в очереди. Для создания интерфейса данных S-R и порта отправителя или получателя в очереди:
Откройте словарь AUTOSAR.
Выберите S-R Interfaces. Для создания интерфейса данных S-R нажмите кнопку Add.
Укажите его имя и количество связанных элементов данных S-R. В этом примере используется один элемент данных в компонентах отправителя и получателя.
Выберите и разверните новый интерфейс S-R. Выберите DataElements и измените атрибуты элемента данных. На этом рисунке показан элемент данных DE1 для компонента отправителя.

Разверните узел AtomicComponents и выберите компонент AUTOSAR. Разверните компонент.
Выберите режим просмотра SenderPorts или Ports и используйте его для добавления требуемого порта отправителя или получателя. Для каждого порта S-R выберите созданный интерфейс S-R. Для компонента отправителя на этом рисунке показан порт отправителя MsgOut, который использует интерфейс S-R Out1.

Откройте редактор сопоставлений кода. Выберите вкладку «Inports» или «Outports» и используйте ее для сопоставления входного или исходящего порта Simulink с портом S-R в очереди AUTOSAR. Для каждого порта ввода или вывода выберите порт AUTOSAR, элемент данных и режим доступа к данным. Установите режим доступа к данным AUTOSAR в значение QueuedExplicitSend или QueuedExplicitReceive. В компоненте отправителя на этом рисунке показан внешний порт Simulink MsgOut, который сопоставлен с портом отправителя AUTOSAR MsgOut и элемент данных DE1, с режимом доступа к данным QueuedExplicitSend.

При сопоставлении входного порта с портом-получателем, находящимся в очереди AUTOSAR, можно использовать представление «Инспектор свойств» (или «Словарь AUTOSAR») порта для изменения его атрибута спецификации связи AUTOSAR (ComSpec). QueueLength. Дополнительные сведения см. в разделе Настройка ComSpecs порта отправителя-получателя AUTOSAR.

При построении модели компонента отправителя или получателя в очереди AUTOSAR:
Сгенерированный код C содержит вызовы AUTOSAR Rte_Send_<port>_<DataElement> или Rte_Receive_<port>_<DataElement> API. Созданный код обрабатывает состояние отправляемых и принимаемых вызовов.
Экспортированные файлы ARXML содержат описания для связи отправителя и получателя в очереди. Произведенный ComSpec для порта в очереди включает тип порта и длину очереди (на основе свойства сообщения Simulink QueueCapacity). В SwDataDefProps генерируется для элемента данных порта в очереди, SwImplPolicy имеет значение Queued.
Для реализации режима обмена сообщениями компонента отправителя или получателя, находящегося в очереди AUTOSAR, используйте Simulink или Stateflow. См. раздел Реализация сообщений отправки и получения в очереди AUTOSAR или Реализация сообщений отправки и получения в очереди AUTOSAR с использованием Stateflow.
Для моделирования поведения компонента отправителя и получателя в очереди AUTOSAR используется следующий пример:
Блоки сообщений Simulink для реализации обмена сообщениями.
Диаграммы потока состояний для реализации логики принятия решений.
В этом примере объясняется построение моделей-примеров mAutosarSlSenderSWC1.slx и mAutosarSlReceiverSWC.slx. Эти модели находятся в папке (matlabroot/help/toolbox/autosar/examplescd в папку).
Другие примеры развертывают одни и те же модели отправителя и получателя в конфигурациях 1-1 и N-to-1 сообщений. Посмотрите настраивают моделирование стоявшей в очереди коммуникации отправителя-приемника AUTOSAR и моделируйте стоявшую в очереди коммуникацию отправителя-приемника N-1 AUTOSAR.
На этом рисунке показан верхний уровень компонента отправителя, поставленного в очередь AUTOSAR mAutosarSlSenderSWC1. Модель содержит:
Диаграмма статофлоу Turn Signal Generator.
Блок отправки сообщения Simulink, заключенный в включенную подсистему.

Схема имеет выходы сигнала поворота и сообщения-управления, которые подключены к включенной подсистеме. Когда сигнал управления сообщениями становится положительным, подсистема активируется. Внутри подсистемы блок Send считывает значение данных сигнала поворота и отправляет сообщение, содержащее это значение, на корневой выход. MsgOut.
На этом рисунке показана логика, реализованная в Turn Signal Generator диаграмма. Диаграмма имеет четыре состояния - ActivateLeft, DeactivateLeft, ActivateRight, и DeactivateRight. Каждое состояние содержит действия ввода, которые назначают значение данных сигнала поворота и устанавливают значение управления сообщением в true. (См. раздел Взаимодействие с диаграммами потока состояний посредством отправки сообщений (поток состояний).) Периодическая синхронизация управляет выводом сообщения.

На этом рисунке показан верхний уровень компонента приемника, находящегося в очереди AUTOSAR mAutosarSlReceiverSWC. Модель содержит:
Блок получения сообщения Simulink.
Диаграмма статофлоу HMILogic.

Корневой входной порт MsgIn предоставляет сообщение в блок приема, который извлекает значение данных сигнала поворота из сообщения. Затем блок выводит значения данных принятого сообщения и сигнала поворота на диаграмму Stateflow.
Для параметров блока приема установлены значения по умолчанию Simulink. Например, выбрано Показать состояние получения, флажок Использовать внутреннюю очередь очищен, а параметр Источник значения, когда очередь пуста, имеет значение Hold last value.
На этом рисунке показана логика, реализованная в HMILogic диаграмма. HMILogic содержит состояния HMIRequestProcessing, LeftTurnSignal, и RightTurnSignal.
HMIRequestProcessing принимает входные данные принятого сообщения и сигнала поворота, устанавливает isNewData флаг, вызывает функцию для обработки данных сигнала поворота, а затем очищает isNewData флаг. processRequest функция проверяет полученные данные сигнала поворота на значения, потенциально установленные отправителем сообщения -- LeftTurnOn, RightTurnOn, LeftTurnOff, или RightTurnOff. На основе полученного значения функция увеличивает или уменьшает переменную счетчика запросов. leftTurnReqs или rightTurnReqs. Периодическая синхронизация управляет вводом сообщения.
LeftTurnSignal и RightTurnSignal каждое содержит состояния Off и On. Они переходят от Off кому On на основе значения счетчика запросов leftTurnReqs или rightTurnReqs и временной интервал. Если значение счетчика запросов больше нуля, диаграммы устанавливают переменную. leftSignalOut или rightSignalOut, на 1. По истечении временного интервала они переходят обратно в Off состояние и набор leftSignalOut или rightSignalOut в 0.

Примеры реализации нескольких компонентов отправителя в очереди в конфигурации N-to-1 сообщений см. в примерах моделей, используемых в Simulate N-to-1 AUTOSAR Queued Sender-Receiver Communication.
Примеры реализации сообщений в очереди на основе событий см. в примерах моделей, используемых в Simulate Event-Driven AUTOSAR Queued Sender-Receiver Communication.
Чтобы смоделировать связь между отправителем и получателем в очереди AUTOSAR в Simulink, создайте содержащую композицию, систему или модель электрического жгута. Включить компоненты отправителя и получателя в очередь в качестве ссылочных моделей.
При наличии одного компонента отправителя и одного компонента получателя модели могут быть связаны непосредственно. В этом примере непосредственно соединяются модели компонентов отправителя и получателя.
При моделировании N-to-1 или сообщений на основе событий предоставляется дополнительная логика между моделями компонентов отправителя и получателя. Например, см. разделы Simulate N-to-1 AUTOSAR Steued Sender-Reciper Communication и Simulate Event-Driven AUTOSAR Queed Sender-Receiver Communication.
В этом примере показана модель на уровне композиции, которая содержит модели компонентов отправителя и получателя в очереди и реализует связь «1 к 1». Периодическая синхронизация управляет передачей сообщений. В этом примере используются три модели в папке (matlabroot/help/toolbox/autosar/examplescd в папку). При копировании файлов в рабочую папку скопируйте модели.
mAutosarSlQueuedMsgs_1_1.slx (верхняя модель)
mAutosarSlSenderSWC1.slx
mAutosarSlReceiverSWC.slx

Модели mAutosarSlSenderSWC1 и mAutosarSlReceiverSWC являются одинаковыми компонентами отправителя и получателя, настроенными в разделе Настройка компонентов отправителя и получателя AUTOSAR для связи в очереди и реализованными в разделе Реализация сообщений отправки и получения в очереди AUTOSAR. Модель уровня состава mAutosarSlQueuedMsgs_1_1 включает их в качестве ссылочных моделей и подключает порт компонента отправителя MsgOut в порт компонента приемника MsgIn.
Верхняя модель mAutosarSlQueuedMsgs_1_1 только для моделирования. Можно создать код AUTOSAR C и файлы ARXML для моделей компонентов отправителя и получателя, но не для содержащей модели уровня композиции.
Аналогично, можно запустить моделирование программного обеспечения в цикле (SIL) для моделей компонентов отправителя и получателя, но не для модели уровня композиции.
В этом примере показана модель на уровне композиции, которая содержит три модели компонентов отправителя и одного получателя и реализует N-to-1 связь. Периодическая синхронизация управляет передачей сообщений. Пример расширяет пример 1 к 1, добавляя две дополнительные модели отправителя и предоставляя логику потока между отправителями и получателем.
В этом примере используются четыре модели в папке (matlabroot/help/toolbox/autosar/examplescd в папку). При копировании файлов в рабочую папку скопируйте модели.
mAutosarSlQueuedMsgs_N_1.slx (верхняя модель)
mAutosarSlSenderSWC1.slx
mAutosarSlSenderSWC2.slx
mAutosarSlSenderSWC3.slx
mAutosarSlReceiverSWC.slx

Модель уровня состава mAutosarSlQueuedMsgs_N_1 включает три компонента отправителя и компонент получателя в качестве ссылочных моделей. Он соединяет компонент отправителя. MsgOut порты к промежуточным MsgJoin логика обработки, которая, в свою очередь, подключается к компоненту приемника MsgIn порт.
Модели mAutosarSlSenderSWC1 и mAutosarSlReceiverSWC являются одинаковыми компонентами отправителя и получателя, настроенными в разделе Настройка компонентов отправителя и получателя AUTOSAR для связи в очереди и реализованными в разделе Реализация сообщений отправки и получения в очереди AUTOSAR. Второй и третий компоненты отправителя, mAutosarSlSenderSWC2 и mAutosarSlSenderSWC3, аналогичны mAutosarSlSenderSWC1, но реализуют второй тип ввода сообщения для обработки приемником.
На этом рисунке показан верхний уровень компонента отправителя, поставленного в очередь AUTOSAR mAutosarSlSenderSWC2. Содержит диаграмму Stateflow Hazard Signal Generator, что обеспечивает логику для левоповоротных сигналов. Вывод строки сообщения диаграммы подключен к корневому порту Simulink MsgOut. Передача Hazard Signal Generator в компоненте отправителя появляется диаграмма для обработки сигналов поворота вправо mAutosarSlSenderSWC3.

На этом рисунке показана логика, реализованная в Hazard Signal Generator диаграмма. Диаграмма имеет два состояния - HazardOff и HazardOn. Каждое состояние содержит действия ввода, которые присваивают значения данным сообщения и отправляют сообщения. (См. раздел Взаимодействие с диаграммами потока состояний посредством отправки сообщений (поток состояний).) Периодическая синхронизация управляет выводом сообщения.

Между компонентами отправителя и получателя блок слияния сообщений и блок очереди обеспечивают слияние и постановку сообщений в очередь.
Блок слияния сообщений объединяет 3 строки сообщений и выводит сообщения в блок очереди.
Блок Queue сохраняет сообщения из 3 строк в очереди на основе порядка поступления.
Емкость очереди устанавливается равной 16 сообщениям.
Когда очередь заполнена и приходит сообщение, блок устанавливается для перезаписи самого старого сообщения входящим сообщением.
Политика сортировки сообщений устанавливается на политику, поддерживаемую AUTOSAR, first-in first-out (FIFO).

Каждый элемент в начале очереди отходит, когда нисходящий ReceiverSWC блок готов принять его.
Верхняя модель mAutosarSlQueuedMsgs_N_1 только для моделирования. Можно создать код AUTOSAR C и файлы ARXML для ссылочных моделей компонентов отправителя и получателя, но не для содержащей модели уровня композиции.
Аналогично, можно запустить моделирование программного обеспечения в цикле (SIL) для моделей компонентов отправителя и получателя, но не для модели уровня композиции.
В этом примере показана модель на уровне композиции, в которой событие ввода вызова функции Simulink активирует обработку компонента приемника сообщения в очереди. Пример реализуется с помощью сообщений Stateflow. Дополнительные примеры сообщений Stateflow см. в разделе Реализация сообщений AUTOSAR с очередью отправки и получения с помощью сообщений Stateflow.
В этом примере используются три модели в папке (matlabroot/help/toolbox/autosar/examplescd в папку). При копировании файлов в рабочую папку скопируйте модели.
mAutosarDREventMsgs.slx (верхняя модель)
mAutosarMsgSender.slx
mAutosarHMILogicEvent.slx

Модель уровня состава mAutosarDREEventMsgs включает в себя компонент отправителя и компонент получателя в качестве ссылочных моделей. Он соединяет порт сообщения отправителя DashLight посредничать Data Receive Trigger логика, которая в свою очередь подключается к порту сообщений получателя MsgIn и порт триггера функции Trigger.
На этом рисунке показан верхний уровень компонента отправителя, поставленного в очередь AUTOSAR mAutosarMsgSender, который содержит диаграмму Stateflow Turn Signal Generator. Вывод строки сообщения диаграммы подключен к корневому порту Simulink DashLight. (Этот компонент отправителя аналогичен компоненту mAutosarSenderSWC1 в примерах моделирования Stateflow 1-to-1 и N-to-1 в разделе «Реализация передачи и получения в очереди AUTOSAR с использованием сообщений Stateflow».)

На этом рисунке показана логика, реализованная в Turn Signal Generator диаграмма. Диаграмма имеет четыре состояния - ActivateLeft, DeactivateLeft, ActivateRight, и DeactivateRight. Каждое состояние содержит действия ввода, которые присваивают значение данным сообщения и отправляют сообщение. (См. раздел Взаимодействие с диаграммами потока состояний посредством отправки сообщений (поток состояний).) Периодическая синхронизация управляет выводом сообщения.

На этом рисунке показаны Data Receiver Trigger диаграмма, расположенная между компонентами отправителя и получателя.

Для получения сообщения логика приемника в очереди использует receive(M):
Если существует допустимое сообщение M, receive(M) возвращает значение true.
Если допустимое сообщение не существует, диаграмма удаляет сообщение из связанной с ним очереди, и receive(M) возвращает значение true. Если receive(M) удаляет сообщение из очереди, длина очереди уменьшается на единицу.
Если сообщение M является недопустимым, и другое сообщение не может быть удалено из очереди, receive(M) возвращает значение false.
Можно разместить receive при переходе (например, [receive(M)]. Или, в пределах состояния, использовать if условие (например, if(receive(M))). Дополнительные сведения см. в разделе Взаимодействие с диаграммами Stateflow посредством отправки сообщений (Stateflow).
На этом рисунке показана логика, реализованная в Data Receiver Trigger диаграмма. Диаграмма получает сообщения в очереди от компонента отправителя. Для каждого принятого сообщения диаграмма копирует полученные данные сообщения в исходящее сообщение, посылает данные и посылает событие вызова функции. (См. раздел Взаимодействие с диаграммами потока состояний посредством отправки сообщений (поток состояний).)

На этом рисунке показан верхний уровень компонента приемника, находящегося в очереди AUTOSAR mAutosarHMILogicEvent, которая содержит подсистему вызова функции Simulink. Входы подсистемы представляют собой триггер функционального вызова и порт получателя сообщений DashLight, который сконфигурирован для режима доступа к данным AUTOSAR QueuedExplicitReceive.

Подсистема вызова функций содержит диаграмму потока состояний ProcessHMIRequests и блок порта триггера. Вход строки сообщения диаграммы подключен к корневому входу Simulink Msg. Область сконфигурирована для отображения значения InvalidPath переменная.
Блок порта триггера конфигурируется для триггера вызова функции и времени запуска выборки. События ввода вызова функции, отправленные из Data Receiver Trigger диаграмма в верхней модели активирует диаграмму.

На этом рисунке показана логика, реализованная в ProcessHMIRequests диаграмма. ProcessHMIRequests содержит состояния HMIRequestProcessing, LeftTurnSignal, и RightTurnSignal. (Эта диаграмма приемника аналогична диаграмме HMILogic в примерах моделирования от 1 до 1 и N-to-1).
HMIRequestProcessing получает сообщение из очереди сообщений, вызывает функцию для обработки сообщения, а затем отбрасывает сообщение. processRequest функция проверяет полученные данные сообщения на значения, потенциально установленные отправителем сообщения -- LeftTurnOn, RightTurnOn, LeftTurnOff, или RightTurnOff. На основе полученного значения функция увеличивает или уменьшает переменную счетчика запросов. leftTurnReqs или rightTurnReqs. События ввода вызова функции управляют вводом сообщения. Если диаграмма активирована неправильно, InvalidPath переменная имеет значение 1.
LeftTurnSignal и RightTurnSignal каждое содержит состояния Off и On. Они переходят от Off кому On на основе значения счетчика запросов leftTurnReqs или rightTurnReqs. Если значение счетчика запросов больше нуля, диаграммы устанавливают переменную. leftSignalOut или rightSignalOut, на 1. Затем они переходят обратно в Off состояние и набор leftSignalOut или rightSignalOut в 0.

Верхняя модель mAutosarDREventMsgs только для моделирования. Можно создать код AUTOSAR C и файлы ARXML для ссылочных моделей компонентов отправителя и получателя, но не для содержащей модели уровня композиции.
Аналогично, можно запустить моделирование программного обеспечения в цикле (SIL) для моделей компонентов отправителя и получателя, но не для модели уровня композиции.
Реализация сообщений отправки и получения в очереди AUTOSAR с помощью сообщений Stateflow
Настройка моделирования связи отправителя и получателя в очереди AUTOSAR
Моделирование обмена данными между отправителем и получателем в очереди N-to-1 AUTOSAR
Для реализации поведения компонента отправителя или получателя в очереди AUTOSAR в этом примере используются сообщения Stateflow. Чтобы создать диаграмму потока состояния, выполните общую процедуру, описанную в разделе Модель питателя линии сборки (поток состояния).
Добавьте диаграмму к модели компонента отправителя или получателя в очереди AUTOSAR. Назовите диаграмму.
Откройте диаграмму и добавьте состояния, связанные с сообщениями.
Для каждого состояния добавьте действия ввода. Поддерживаемые ключевые слова сообщений:
send(M) -- Отправить сообщение М.
receive(M) - Получение сообщения М.
isvalid(M) -- Проверьте, действительно ли сообщение M (всплывает и не отбрасывается).
discard(M) - Явно отклонить сообщение M. Сообщения неявно отбрасываются при выходе из состояния после завершения операции получения сообщения.
Добавьте строки перехода состояния и укажите условия перехода или события на этих строках.
Условия используются при необходимости перехода на основе условного оператора или изменения входного значения из блока Simulink. Дополнительные сведения см. в разделе Переходы (поток состояний).
События используются при необходимости перехода на основе инициированного Simulink или события ввода вызова функции. Дополнительные сведения см. в разделе Синхронизация компонентов модели по широковещательным событиям (Stateflow).
Определите данные, хранящие переменные состояния.
Подключите входы и выходы строки сообщений диаграммы к корневым входам и выходам Simulink.
Дополнительные сведения см. в разделе Сообщения (Stateflow).
В контексте диаграммы Stateflow можно изменять свойства сообщений, такие как тип данных и емкость очереди. (Список свойств см. в разделе Задание свойств сообщения (поток состояний).) Доступ к свойствам сообщения можно получить в Инспекторе свойств, диалоговом окне «Свойства сообщения» или в Обозревателе моделей. Чтобы просмотреть или изменить свойства сообщения с помощью инспектора свойств:
Откройте диаграмму, использующую сообщения.
На вкладке «Моделирование» откройте панель «Символы» и инспектор свойств.
В представлении «Символы» выберите сообщение. Инспектор свойств отображает панели свойств данных сообщений и дополнительных свойств.
Если диаграмма находится в компоненте-получателе, инспектор свойств также отображает свойства очереди сообщений. Чтобы настроить компонент получателя на использование внешних очередей сообщений AUTOSAR RTE, убедитесь, что свойство Use internal queue сброшено.

По умолчанию значения типа данных сообщения и емкости очереди наследуются из сообщения Stateflow, к которому подключен корневой порт Simulink. Данные сообщений могут использовать следующие типы данных параметров Simulink: int типы, uint типы, типы с плавающей запятой, boolean, Enum, или Bus (struct).
При использовании импортированных типов данных шины или перечисления в диаграммах Stateflow для моделирования требуются типы. Для автоматического создания типов выберите опцию конфигурации Simulink Генерировать типы для импортированных типов шины и перечисления. В противном случае используйте параметр конфигурации Simulink Цель моделирования > Пользовательский код > Файл заголовка, чтобы включить файлы заголовка с определениями.
Примеры реализаций компонентов отправителя и получателя в очереди в конфигурации «1 к 1» см. в примерах моделей компонентов, используемых в разделах Настройка компонентов отправителя и получателя AUTOSAR для связи в очереди и Настройка моделирования связи отправителя и получателя в очереди AUTOSAR. Модели mAutosarSenderSWC1.slx и mAutosarReceiverSWC.slx находятся в папке (matlabroot/help/toolbox/autosar/examplescd в папку).
На этом рисунке показан верхний уровень компонента отправителя, поставленного в очередь AUTOSAR mAutosarSenderSWC1, который содержит диаграмму Stateflow Turn Signal Generator. Вывод строки сообщения диаграммы подключен к корневому порту Simulink MsgOut.

На этом рисунке показана логика, реализованная в Turn Signal Generator диаграмма. Диаграмма имеет четыре состояния - ActivateLeft, DeactivateLeft, ActivateRight, и DeactivateRight. Каждое состояние содержит действия ввода, которые присваивают значение данным сообщения и отправляют сообщение. (См. раздел Взаимодействие с диаграммами потока состояний посредством отправки сообщений (поток состояний).) Периодическая синхронизация управляет выводом сообщения.

На этом рисунке показан верхний уровень компонента приемника, находящегося в очереди AUTOSAR mAutosarReceiverSWC, который содержит диаграмму Stateflow HMILogic. Вход строки сообщения диаграммы подключен к корневому входу Simulink MsgIn.

Для получения сообщения логика приемника в очереди использует receive(M):
Если существует допустимое сообщение M, receive(M) возвращает значение true.
Если допустимое сообщение не существует, диаграмма удаляет сообщение из связанной с ним очереди, и receive(M) возвращает значение true. Если receive(M) удаляет сообщение из очереди, длина очереди уменьшается на единицу.
Если сообщение M является недопустимым, и другое сообщение не может быть удалено из очереди, receive(M) возвращает значение false.
Можно разместить receive при переходе (например, [receive(M)]. Или, в пределах состояния, использовать if условие (например, if(receive(M))). Дополнительные сведения см. в разделе Взаимодействие с диаграммами Stateflow посредством отправки сообщений (Stateflow).
На этом рисунке показана логика, реализованная в HMILogic диаграмма. HMILogic содержит состояния HMIRequestProcessing, LeftTurnSignal, и RightTurnSignal.
HMIRequestProcessing получает сообщение из очереди сообщений, вызывает функцию для обработки сообщения, а затем отбрасывает сообщение. processRequest функция проверяет полученные данные сообщения на значения, потенциально установленные отправителем сообщения -- LeftTurnOn, RightTurnOn, LeftTurnOff, или RightTurnOff. На основе полученного значения функция увеличивает или уменьшает переменную счетчика запросов. leftTurnReqs или rightTurnReqs. Периодическая синхронизация управляет вводом сообщения.
LeftTurnSignal и RightTurnSignal каждое содержит состояния Off и On. Они переходят от Off кому On на основе значения счетчика запросов leftTurnReqs или rightTurnReqs и временной интервал. Если значение счетчика запросов больше нуля, диаграммы устанавливают переменную. leftSignalOut или rightSignalOut, на 1. По истечении временного интервала они переходят обратно в Off состояние и набор leftSignalOut или rightSignalOut в 0.

Примеры реализации компонентов отправителя и получателя в очереди в конфигурации N-to-1 см. в примерах моделей, используемых в Simulate N-to-1 AUTOSAR Queued Sender-Receiver Communication.
Примеры реализации сообщений в очереди на основе событий см. в примерах моделей, используемых в Simulate Event-Driven AUTOSAR Queued Sender-Receiver Communication.
Чтобы смоделировать связь между отправителем и получателем в очереди AUTOSAR в Simulink, создайте содержащую композицию, систему или модель электрического жгута. Включить компоненты отправителя и получателя в очередь в качестве ссылочных моделей.
При наличии одного компонента отправителя и одного компонента получателя модели могут быть связаны непосредственно. В этом примере непосредственно соединяются модели компонентов отправителя и получателя.
При моделировании N-to-1 или сообщений на основе событий предоставляется дополнительная логика между моделями компонентов отправителя и получателя. Например, см. разделы Simulate N-to-1 AUTOSAR Steued Sender-Reciper Communication и Simulate Event-Driven AUTOSAR Queed Sender-Receiver Communication.
В этом примере показана модель на уровне композиции, которая содержит модели компонентов отправителя и получателя в очереди и реализует связь «1 к 1». Периодическая синхронизация управляет передачей сообщений. В этом примере используются три модели в папке (matlabroot/help/toolbox/autosar/examplescd в папку). При копировании файлов в рабочую папку скопируйте модели.
mAutosarQueuedMsgs_1_1.slx (верхняя модель)
mAutosarSenderSWC1.slx
mAutosarReceiverSWC.slx

Модели mAutosarSenderSWC1 и mAutosarReceiverSWC являются одинаковыми компонентами отправителя и получателя, настроенными в разделе Настройка компонентов отправителя и получателя AUTOSAR для связи в очереди и реализованными в разделе Реализация сообщений отправки и получения в очереди AUTOSAR. Модель уровня состава mAutosarQueuedMsgs_1_1 включает их в качестве ссылочных моделей и подключает порт компонента отправителя MsgOut в порт компонента приемника MsgIn.
Верхняя модель mAutosarQueuedMsgs_1_1 только для моделирования. Можно создать код AUTOSAR C и файлы ARXML для моделей компонентов отправителя и получателя, но не для содержащей модели уровня композиции.
Аналогично, можно запустить моделирование программного обеспечения в цикле (SIL) для моделей компонентов отправителя и получателя, но не для модели уровня композиции.
В этом примере показана модель на уровне композиции, которая содержит две модели компонентов отправителя и одного получателя и реализует N-to-1 связь. Периодическая синхронизация управляет передачей сообщений. Пример расширяет пример 1 к 1, добавляя вторую модель отправителя и предоставляя логику потока между отправителями и получателем.
В этом примере используются четыре модели в папке (matlabroot/help/toolbox/autosar/examplescd в папку). При копировании файлов в рабочую папку скопируйте модели.
mAutosarQueuedMsgs_N_1.slx (верхняя модель)
mAutosarSenderSWC1.slx
mAutosarSenderSWC2.slx
mAutosarReceiverSWC.slx

Модель уровня состава mAutosarQueuedMsgs_N_1 включает в себя два компонента отправителя и компонент получателя в качестве ссылочных моделей. Он соединяет компонент отправителя. MsgOut порты к промежуточным MsgJoin логика обработки, которая, в свою очередь, подключается к компоненту приемника MsgIn порт.
Модели mAutosarSenderSWC1 и mAutosarReceiverSWC являются одинаковыми компонентами отправителя и получателя, настроенными в разделе Настройка компонентов отправителя и получателя AUTOSAR для связи в очереди и реализованными в разделе Реализация сообщений отправки и получения в очереди AUTOSAR. Второй компонент отправителя, mAutosarSenderSWC2, аналогичен mAutosarSenderSWC1, но реализует второй тип ввода сообщения для обработки приемником.
На этом рисунке показан верхний уровень компонента отправителя, поставленного в очередь AUTOSAR mAutosarSenderSWC2, который содержит диаграмму Stateflow Hazard Signal Generator. Вывод строки сообщения диаграммы подключен к корневому порту Simulink MsgOut.

На этом рисунке показана логика, реализованная в Hazard Signal Generator диаграмма. Диаграмма имеет два состояния - HazardOff и HazardOn. Каждое состояние содержит действия ввода, которые присваивают значения данным сообщения и отправляют сообщения. (См. раздел Взаимодействие с диаграммами потока состояний посредством отправки сообщений (поток состояний).) Периодическая синхронизация управляет выводом сообщения.

На этом рисунке показаны MsgJoin диаграмма, расположенная между компонентами отправителя и получателя.

На этом рисунке показана логика, реализованная в MsgJoin диаграмма. Диаграмма принимает сообщения в очереди от обоих компонентов отправителя и выводит их по одному в компонент получателя. Сообщения от первого компонента отправителя, mAutosarSenderSWC1.slx, обрабатываются первыми. Для каждого принятого сообщения диаграмма копирует принятые данные сообщения в исходящее сообщение, отправляет данные и отбрасывает полученное сообщение. (См. раздел Взаимодействие с диаграммами потока состояний посредством отправки сообщений (поток состояний).)

Верхняя модель mAutosarQueuedMsgs_N_1 только для моделирования. Можно создать код AUTOSAR C и файлы ARXML для ссылочных моделей компонентов отправителя и получателя, но не для содержащей модели уровня композиции.
Аналогично, можно запустить моделирование программного обеспечения в цикле (SIL) для моделей компонентов отправителя и получателя, но не для модели уровня композиции.
Чтобы проверить, потеряно ли сообщение из-за того, что оно было отправлено в очередь, которая уже заполнена, используйте поток состояний overflowed оператор:
overflowed(message_name)
overflowed , установите модель в значение autosar.tlc target для моделирования и генерации кода и убедитесь, что сообщение inport или outport соединяется с внешней очередью. На каждом шаге времени значение этого оператора устанавливается, когда диаграмма добавляет сообщение в очередь или удаляет сообщение из очереди. Недопустимо использовать overflowed оператор перед отправкой или извлечением сообщения на том же временном шаге или для проверки состояния переполнения локальной очереди сообщений.По умолчанию при переполнении очереди сообщений моделирование прекращается с ошибкой. Чтобы предотвратить ошибку во время выполнения и разрешить overflowed чтобы динамически реагировать на отброшенные сообщения, задайте для свойства «Диагностика переполнения очереди» значение Warning или None. Дополнительные сведения см. в разделе Диагностика переполнения очереди (Stateflow).
Проверьте переполнение входного сообщения. Чтобы проверить состояние переполнения очереди входящих сообщений, сначала удалите сообщение из очереди. Вы можете:
Защитите переход с сообщением и overflowed оператор.

Защитите переход с сообщением и вызовите overflowed оператор во входном действии состояния назначения.

Охранять состояние on действие с сообщением и вызовите overflowed оператор в действии.

В действии состояния используйте receive оператор, за которым следует overflowed оператор.

Вызов overflowed оператор перед извлечением входного сообщения на том же шаге времени приводит к ошибке времени выполнения.
Проверьте переполнение выходного сообщения. Чтобы проверить состояние переполнения очереди выходных сообщений, сначала добавьте сообщение в очередь. Вы можете:
Используйте send оператор, за которым следует overflowed оператор.

Используйте forward оператор, за которым следует overflowed оператор.

Вызов overflowed оператор перед отправкой или пересылкой выходного сообщения в тот же шаг времени приводит к ошибке времени выполнения.