В поставленной в очередь коммуникации AUTOSAR данные, отправленные компонентом программного обеспечения отправителя AUTOSAR, добавляются к очереди, предоставленной Средой выполнения AUTOSAR (RTE). Недавно полученные данные не перезаписывают существующие непрочитанные данные. Позже, компонент программного обеспечения получателя считывает данные из очереди.
В Simulink® можно использовать сообщения Stateflow® для образцовой отправки и получения данные AUTOSAR с помощью очереди. Можно обработать ошибки, которые происходят, когда очередь пуста или полна. Можно задать размер очереди.
Можно моделировать поставленный в очередь получатель отправителя AUTOSAR (S-R) связь между моделями компонента, например, в симуляции уровня состава. Отправители данных и получатели могут запуститься на различных уровнях. Несколько отправителей данных могут связаться с одним получателем данных.
Чтобы начать, можно импортировать компоненты с отправителем с очередями и портами получателя из файлов arxml
в Simulink, или использовать Simulink, чтобы создать поставленного в очередь отправителя и порты получателя.
Рабочий процесс Simulink для моделирования AUTOSAR, с очередями, отправляет и получает
Сконфигурируйте компоненты отправителя и получателя AUTOSAR для коммуникации с очередями
Реализуйте AUTOSAR, с очередями, отправляют и получают обмен сообщениями
Конфигурируйте моделирование AUTOSAR коммуникация получателя отправителя с очередями
Моделируйте N-1 AUTOSAR коммуникация получателя отправителя с очередями
Моделируйте событийно-управляемый AUTOSAR коммуникация получателя отправителя с очередями
Вот общий рабочий процесс для моделирования поставленного в очередь отправителя AUTOSAR и компонентов получателя в Simulink.
Сконфигурируйте одну или несколько моделей, когда AUTOSAR поставил в очередь компоненты отправителя и одну модель, как AUTOSAR поставил компонент получателя в очередь. Для каждой модели компонента используйте редактор Отображений Словаря и Кода AUTOSAR для:
Создайте интерфейс данных S-R и его элементы данных.
Создайте порт получателя или отправитель.
Сопоставьте отправителя или порт получателя к выходному порту Simulink для отправки или импортируйте для получения. Установите режим доступа к данным AUTOSAR на QueuedExplicitSend
или QueuedExplicitReceive
.
Например, смотрите, Конфигурируют Компоненты Отправителя и Получателя AUTOSAR для Коммуникации С очередями.
Реализовывать AUTOSAR поставило в очередь отправителя или поведение компонента получателя, используйте сообщения Stateflow. Выполните общую процедуру, описанную в Модели Фидер Сборочного конвейера (Stateflow). Создайте график, добавьте состояния сообщения, реализуйте действия записи состояния, задайте условия изменения состояния или события, и задайте данные, чтобы сохранить переменные состояния. Наконец, соедините вводы и выводы строки сообщения графика с корневым импортом Simulink и выходными портами.
Для получения дополнительной информации смотрите Реализацию, которую AUTOSAR, С очередями, Отправляют и Получают Обмен сообщениями.
То, когда вы создаете AUTOSAR, поставило в очередь модель компонента получателя или отправитель:
Сгенерированный код C содержит вызовы Rte_Send_<port>_<DataElement>
AUTOSAR или API Rte_Receive_<port>_<DataElement>
. Сгенерированный код обрабатывает состояние сообщения, отправляют и получают вызовы.
Экспортируемые файлы arxml
содержат описания для коммуникации получателя отправителя с очередями. Сгенерированный ComSpec
для порта с очередями включает тип порта и длину очереди (на основе свойства QueueCapacity
сообщения Simulink). В SwDataDefProps
, сгенерированном для элемента данных порта с очередями, SwImplPolicy
установлен в Queued
.
Моделировать AUTOSAR поставило коммуникацию получателя отправителя в очередь в Simulink, создайте содержание состава, системы или модели тестовой обвязки. Включайте отправителя с очередями и компоненты получателя как модели, на которые ссылаются.
Если у вас есть один компонент отправителя и один компонент получателя, потенциально можно соединить модели непосредственно. Например, смотрите 1 к 1, модель состава, используемая в, Конфигурирует Моделирование AUTOSAR Коммуникация Получателя Отправителя С очередями.
Если вы моделируете N-1 или событийно-управляемый обмен сообщениями, вы обеспечиваете дополнительную логику между моделями компонента получателя и отправителем. Например, смотрите, Моделируют N-1 AUTOSAR Коммуникация Получателя Отправителя С очередями и Моделируют Событийно-управляемый AUTOSAR Коммуникация Получателя Отправителя С очередями.
Этот пример конфигурирует поставленного в очередь отправителя AUTOSAR и компоненты получателя в Simulink. Пример использует две модели в (открытой)
папке
. Если вы копируете файлы в рабочую папку, располагаете модели. Чтобы видеть эти модели, соединенные для симуляции, смотрите, Конфигурируют Моделирование AUTOSAR Коммуникация Получателя Отправителя С очередями.matlabroot/help/toolbox/autosar/examples
mAutosarSenderSWC1.slx
mAutosarReceiverSWC.slx
Откройте модель AUTOSAR, которую вы хотите сконфигурировать как отправитель с очередями или компонент получателя. Чтобы создать данные S-R взаимодействуют через интерфейс и отправитель с очередями или порт получателя:
Откройте словарь AUTOSAR.
Выберите S-R Interfaces. Чтобы создать интерфейс данных S-R, нажмите кнопку Add. Задайте его имя и количество связанных элементов данных S-R. Этот пример использует один элемент данных и в отправителе и в компонентах получателя.
Выберите и расширьте новый интерфейс S-R. Выберите DataElements и измените атрибуты элемента данных. Вот является элемент данных DE1
для компонента отправителя.
Расширьте узел AtomicComponents и выберите компонент AUTOSAR. Расширьте компонент.
Выберите представление SenderPorts или ReceiverPorts и используйте его, чтобы добавить отправителя или порт получателя, которого вы требуете. Для каждого порта S-R выберите интерфейс S-R, который вы создали. Для компонента отправителя вот порт MsgOut
отправителя, который использует интерфейс S-R Out1
.
Редактор Отображений Открытого кода. Выберите вкладку Inports или Outports и используйте ее, чтобы сопоставить импорт Simulink, или выходной порт к AUTOSAR поставил порт S-R в очередь. Для каждого импорта или выходного порта, выберите порт AUTOSAR, элемент данных и режим доступа к данным. Установите режим доступа к данным AUTOSAR на QueuedExplicitSend
или QueuedExplicitReceive
. В компоненте отправителя вот является выходной порт Simulink MsgOut
, который сопоставлен с портом MsgOut
отправителя AUTOSAR и элементом данных DE1
с режимом QueuedExplicitSend
доступа к данным.
То, когда вы создаете AUTOSAR, поставило в очередь модель компонента получателя или отправитель:
Сгенерированный код C содержит вызовы Rte_Send_<port>_<DataElement>
AUTOSAR или API Rte_Receive_<port>_<DataElement>
. Сгенерированный код обрабатывает состояние сообщения, отправляют и получают вызовы.
Экспортируемые файлы arxml
содержат описания для коммуникации получателя отправителя с очередями. Сгенерированный ComSpec
для порта с очередями включает тип порта и длину очереди (на основе свойства QueueCapacity
сообщения Simulink). В SwDataDefProps
, сгенерированном для элемента данных порта с очередями, SwImplPolicy
установлен в Queued
.
Реализовывать обменивающееся сообщениями поведение AUTOSAR поставило в очередь отправителя или компонент получателя, используйте сообщения Stateflow. Смотрите Реализацию, которую AUTOSAR, С очередями, Отправляют и Получают Обмен сообщениями.
Реализовывать AUTOSAR поставило в очередь отправителя или поведение компонента получателя, используйте сообщения Stateflow. Чтобы создать диаграмму Stateflow, выполните общую процедуру, описанную в Модели Фидер Сборочного конвейера (Stateflow).
Добавьте, что график к AUTOSAR поставил в очередь модель компонента получателя или отправитель. Назовите график.
Откройте график и добавьте связанные с сообщением состояния.
Для каждого состояния добавьте действия записи. Поддерживаемые ключевые слова сообщения включают:
send(M)
- Отправьте сообщение M.
receive(M)
- Получите сообщение M.
isvalid(M)
- Проверяйте, допустимо ли сообщение M (вытолканный и не отброшенное).
discard(M)
- Явным образом отбросьте сообщение M. Сообщения неявно отбрасываются на выходе состояния после того, как сообщение получает операцию, завершается.
Добавьте строки изменения состояния и задайте условия перехода или события на тех строках.
Используйте условия когда это необходимо для перехода на основе условного оператора или изменения входного значения от блока Simulink. Для получения дополнительной информации смотрите Типы Действия Перехода (Stateflow).
Используйте события когда это необходимо для перехода на основе инициированного Simulink или входное событие вызова функции. Для получения дополнительной информации смотрите, Синхронизируют Компоненты модели Широковещательными Событиями (Stateflow).
Задайте данные, которые хранят переменные состояния.
Соедините вводы и выводы строки сообщения графика с корневым импортом Simulink и выходными портами.
Для получения дополнительной информации см. сообщения (Stateflow).
В контексте диаграммы Stateflow можно изменить свойства сообщения, такие как способность очереди и тип данных. (Для списка свойств смотрите Set Properties для сообщения (Stateflow).) Можно получить доступ к свойствам сообщения в Property Inspector, диалоговом окне свойств сообщения или Model Explorer. Просмотреть или изменить свойства сообщения с Property Inspector:
Откройте график, который использует сообщения.
В окне модели выберите View> Property Inspector и View> Symbols.
В представлении Symbols выберите сообщение. Property Inspector отображает панели для свойств Message Data Properties и Advanced. Если график находится в компоненте получателя, Property Inspector также отображает Message Queue Properties.
По умолчанию передайте тип данных, и полные значения очереди наследованы от сообщения Stateflow, до которого присоединяется корневой порт Simulink. Обменивайтесь сообщениями данные могут использовать типы данных параметров Simulink, такие как int
вводит, типы uint
, типы с плавающей точкой, фиксированные точки, boolean
, Enum
или Bus
(struct
).
Если вы используете импортированные типы шины или типы данных перечисления в диаграммах Stateflow, определения типов требуются для симуляции. Чтобы сгенерировать определения типов автоматически, выберите параметр конфигурации Simulink Generate typedefs for imported bus and enumeration types. В противном случае используйте параметр конфигурации Simulink Simulation Target > Custom Code> Header file, чтобы включать заголовочные файлы с определениями.
Для демонстрационных реализаций отправителя с очередями и компонентов получателя в 1 к 1 настройке, смотрите модели компонента в качестве примера, используемые, и в Сконфигурируйте Компоненты Отправителя и в Получателя AUTOSAR для Коммуникации С очередями и Конфигурируйте Моделирование AUTOSAR Коммуникация Получателя Отправителя С очередями. Модели mAutosarSenderSWC1.slx
и mAutosarReceiverSWC.slx
расположены в (открытой)
папке
.matlabroot/help/toolbox/autosar/examples
Вот является верхний уровень поставленного в очередь компонента отправителя AUTOSAR mAutosarSenderSWC1
, который содержит диаграмму Stateflow Turn Signal Generator
. Строка сообщения графика вывод соединяется с корневым выходным портом Simulink MsgOut
.
Вот логика, реализованная в графике Turn Signal Generator
. График имеет четыре состояния – ActivateLeft
, DeactivateLeft
, ActivateRight
и DeactivateRight
. Каждое состояние содержит действия записи, которые присваивают значение, чтобы передать данные и отправить сообщение. (См., Связываются с диаграммами Stateflow путем Отправки сообщений (Stateflow).) Периодическая синхронизация управляет сообщением вывод.
Вот является верхний уровень поставленного в очередь компонента получателя 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-1, смотрите, что модели в качестве примера, используемые в, Моделируют N-1 AUTOSAR Коммуникация Получателя Отправителя С очередями.
Для демонстрационных реализаций событийно-управляемого обмена сообщениями с очередями смотрите, что модели в качестве примера, используемые в, Моделируют Событийно-управляемый AUTOSAR Коммуникация Получателя Отправителя С очередями.
Моделировать AUTOSAR поставило коммуникацию получателя отправителя в очередь в Simulink, создайте содержание состава, системы или модели тестовой обвязки. Включайте отправителя с очередями и компоненты получателя как модели, на которые ссылаются.
Если у вас есть один компонент отправителя и один компонент получателя, потенциально можно соединить модели непосредственно. Этот пример непосредственно соединяет модели компонента получателя и отправитель.
Если вы моделируете N-1 или событийно-управляемый обмен сообщениями, вы обеспечиваете дополнительную логику между моделями компонента получателя и отправителем. Например, смотрите, Моделируют N-1 AUTOSAR Коммуникация Получателя Отправителя С очередями и Моделируют Событийно-управляемый AUTOSAR Коммуникация Получателя Отправителя С очередями.
Вот модель уровня состава, которая содержит отправителя с очередями и модели компонента получателя и реализации 1 к 1 коммуникация. Периодическая синхронизация управляет обменом сообщениями. Этот пример использует три модели в (открытой)
папке
. Если вы копируете файлы в рабочую папку, располагаете модели.matlabroot/help/toolbox/autosar/examples
mAutosarQueuedMsgs_1_1.slx
(топ-модель)
mAutosarSenderSWC1.slx
mAutosarReceiverSWC.slx
Модели mAutosarSenderSWC1
и mAutosarReceiverSWC
являются тем же отправителем, и компоненты получателя, сконфигурированные в, Конфигурируют Компоненты Отправителя и Получателя AUTOSAR для Коммуникации С очередями и реализованный в Реализации, которую AUTOSAR, С очередями, Отправляют и Получают Обмен сообщениями. Модель mAutosarQueuedMsgs_1_1
уровня состава включает их как порт MsgOut
компонента отправителя моделей и подключений, на который ссылаются, к порту MsgIn
компонента получателя.
Топ-модель mAutosarQueuedMsgs_1_1
для симуляции только. Можно сгенерировать код С AUTOSAR и arxml файлы для отправителя и моделей компонента получателя, но не для содержания модели уровня состава.
Точно так же можно запустить программное обеспечение в цикле (SIL) симуляция для отправителя и моделей компонента получателя, но не для модели уровня состава.
Вот модель уровня состава, которая содержит двух отправителей и модели компонента получателя, и реализует коммуникацию N-1. Периодическая синхронизация управляет обменом сообщениями. Этот пример расширяет 1 к 1 пример путем добавления второй модели отправителя и обеспечения логики потока между отправителями и получателем. Этот пример использует четыре модели в (открытой)
папке
. Если вы копируете файлы в рабочую папку, располагаете модели.matlabroot/help/toolbox/autosar/examples
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
. Каждое состояние содержит действия записи, которые присваивают значения, чтобы передать данные и отправить сообщения. (См., Связываются с диаграммами Stateflow путем Отправки сообщений (Stateflow).) Периодическая синхронизация управляет сообщением вывод.
Вот график MsgJoin
, расположенный между компонентами получателя и отправителем.
Вот логика, реализованная в графике MsgJoin
. График получает поставленные в очередь сообщения от компонентов отправителя и выводит их, по одному, к компоненту получателя. Сообщения от первого компонента отправителя, mAutosarSenderSWC1.slx
, обрабатываются сначала. Для каждого полученного сообщения график копирует полученные данные о сообщении в исходящее сообщение, отправляет данные и отбрасывает полученное сообщение. (См., Связываются с диаграммами Stateflow путем Отправки сообщений (Stateflow).)
Топ-модель mAutosarQueuedMsgs_N_1
для симуляции только. Можно сгенерировать код С AUTOSAR и arxml файлы для отправителя, на которого ссылаются, и моделей компонента получателя, но не для содержания модели уровня состава.
Точно так же можно запустить программное обеспечение в цикле (SIL) симуляция для отправителя и моделей компонента получателя, но не для модели уровня состава.
Вот модель уровня состава, в которой входное событие вызова функции Simulink активирует обработку компонента получателя сообщения с очередями. Этот пример использует три модели в (открытой)
папке
. Если вы копируете файлы в рабочую папку, располагаете модели.matlabroot/help/toolbox/autosar/examples
mAutosarDREventMsgs.slx
(топ-модель)
mAutosarMsgSender.slx
mAutosarHMILogicEvent.slx
Модель mAutosarDREEventMsgs
уровня состава включает компонент отправителя и компонент получателя как модели, на которые ссылаются. Это соединяет порт DashLight
сообщения отправителя с промежуточной логикой Data Receive Trigger
, которая в свою очередь соединяется с портом MsgIn
сообщения получателя и функциональным триггерным портом Trigger
.
Вот является верхний уровень поставленного в очередь компонента отправителя AUTOSAR mAutosarMsgSender
, который содержит диаграмму Stateflow Turn Signal Generator
. Строка сообщения графика вывод соединяется с корневым выходным портом Simulink DashLight
. (Этот компонент отправителя подобен mAutosarSenderSWC1
компонента в 1 к 1 и примеры симуляции N-1.)
Вот логика, реализованная в графике Turn Signal Generator
. График имеет четыре состояния – ActivateLeft
, DeactivateLeft
, ActivateRight
и DeactivateRight
. Каждое состояние содержит действия записи, которые присваивают значение, чтобы передать данные и отправить сообщение. (См., Связываются с диаграммами Stateflow путем Отправки сообщений (Stateflow).) Периодическая синхронизация управляет сообщением вывод.
Вот график 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
. График получает поставленные в очередь сообщения от компонента отправителя. Для каждого полученного сообщения график копирует полученные данные о сообщении в исходящее сообщение, отправляет данные и отправляет событие вызова функции. (См., Связываются с диаграммами Stateflow путем Отправки сообщений (Stateflow).)
Вот является верхний уровень поставленного в очередь компонента получателя AUTOSAR mAutosarHMILogicEvent
, который содержит подсистему вызова функций Simulink. Импорт подсистемы является триггером вызова функции и портом DashLight
получателя сообщения, который сконфигурирован для режима QueuedExplicitReceive
доступа к данным AUTOSAR.
Подсистема вызова функций содержит диаграмму Stateflow ProcessHMIRequests
и Триггерная Блокировка порта. Вход строки сообщения графика соединяется с корневым импортом Simulink Msg
. Осциллограф сконфигурирован, чтобы отобразить значение переменной InvalidPath
.
Триггерная Блокировка порта сконфигурирована для триггера вызова функции и инициированного шага расчета. Входные события вызова функции, отправленные от графика Data Receiver Trigger
в топ-модели, активируют график.
Вот логика, реализованная в графике ProcessHMIRequests
. ProcessHMIRequests
содержит, утверждает HMIRequestProcessing
, LeftTurnSignal
и RightTurnSignal
. (Этот график получателя подобен, чтобы строить диаграмму HMILogic
в 1 к 1 и примеры симуляции N-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 и arxml файлы для отправителя, на которого ссылаются, и моделей компонента получателя, но не для содержания модели уровня состава.
Точно так же можно запустить программное обеспечение в цикле (SIL) симуляция для отправителя и моделей компонента получателя, но не для модели уровня состава.