Сконфигурируйте коммуникацию клиент-сервер AUTOSAR

В Simulink® можно смоделировать коммуникацию клиент-сервер AUTOSAR для симуляции и генерации кода. Для получения информации о блоках Simulink вы используете и высокоуровневый рабочий процесс, видите Интерфейс Клиент-сервер.

К серверам модели AUTOSAR и клиентам, можно сделать или или оба из следующего:

  • Импортируйте серверы AUTOSAR и клиенты из кода ARXML в модель.

  • Сконфигурируйте серверы AUTOSAR и клиенты от блоков Simulink.

Эта тема обеспечивает примеры сервера AUTOSAR и клиентской настройки, которые начинают с блоков Simulink.

Сконфигурируйте сервер AUTOSAR

В этом примере показано, как сконфигурировать блок Simulink Function как сервер AUTOSAR. Пример использует эти файлы в папке matlabroot/help/toolbox/autosar/examples (cd к папке):

Если вы копируете файлы в рабочую папку, располагаете файл MATLAB® с файлом модели.

  1. Откройте модель, в которой вы хотите создать и сконфигурировать сервер AUTOSAR или открыть модель mControllerWithInterface_server.slx в качестве примера.

  2. Добавьте блок Simulink Function в модель. В Браузере Библиотеки Simulink блок Simulink Function находится в User-Defined Functions.

    Модель в качестве примера обеспечивает два блока Simulink Function, doOverride и readData.

  3. Сконфигурируйте блок Simulink Function, чтобы реализовать функцию сервера. Сконфигурируйте прототипа функции и реализуйте алгоритм функции сервера.

    В модели в качестве примера называют содержимое блока Simulink Function readData реализуйте функцию с именем сервера readData.

    Содержимое включает:

    • Блок Trigger readData, представление триггерного порта для функции сервера. В свойствах блока Trigger Trigger type установлен в Function call. Кроме того, опция Treat as Simulink function выбрана.

    • Блок Argument Inport Op и Argument Outport блокирует Data, ERR, и NegCode, соответствие прототипу функции [Data,ERR,NegCode]=readData(Op).

      Примечание

      При конфигурировании аргументов функции сервера необходимо задать тип данных сигнала, размерности порта и тип сигнала на вкладке Signal Attributes блоков выходного порта и импорта. Настройка AUTOSAR приводит валидацию к сбою, если атрибуты сигнала отсутствуют для аргументов функции сервера.

    • Блоки, реализующие readData функциональный алгоритм. В этом примере несколько простых блоков обеспечивают Data, ERR, и NegCode выходные значения с минимальной манипуляцией. Блок Constant представляет значение ошибки приложения, заданной для функции сервера. Значение Op переданный вызывающей стороной проигнорирован. В реальном приложении алгоритм мог выполнить более комплексную манипуляцию, например, выбрав путь к выполнению на основе переданного значения Op, создание выходных данных, требуемых приложением и проверкой состояние ошибки.

  4. Когда функция сервера будет работать в Simulink, настройте блок Simulink Function в модели, сконфигурированной для AUTOSAR. Например, сконфигурируйте текущую модель для AUTOSAR или скопируйте блок в модель AUTOSAR.

    Модель в качестве примера является моделью AUTOSAR, в который блок Simulink Function readData был скопирован. Вместо значимого Op входное значение для readData функция, линия передачи данных Simulink CurVal обеспечивает входное значение, которое используется в функциональном алгоритме.

  5. Необходимые элементы, чтобы сконфигурировать сервер AUTOSAR, в общем порядке, они создаются:

    • AUTOSAR интерфейс (C-S) клиент-сервер

    • Одна или несколько операций AUTOSAR, для которых интерфейс C-S обрабатывает клиентские запросы

    • Порт сервера AUTOSAR, чтобы получить клиентские запросы о работе сервера

    • Для каждой работы сервера, сервер AUTOSAR, выполнимый, чтобы выполнить клиентские запросы

    Откройте Словарь AUTOSAR. К интерфейсам представления AUTOSAR C-S в модели перейдите к представлению C-S Interfaces. Модель в качестве примера уже содержит интерфейсы клиент-сервер.

    Если интерфейс C-S еще не существует в вашей модели, создайте тот.

    1. В представлении интерфейсов C-S нажмите кнопку Add. Это действие открывает диалоговое окно Add Interfaces.

    2. В диалоговом окне назовите новый Интерфейс C-S и задайте количество операций, которые вы намереваетесь сопоставить с интерфейсом. Оставьте другие параметры в их значениях по умолчанию. Нажмите Add. Новый интерфейс появляется в представлении интерфейсов C-S.

  6. Под C-S Interfaces создайте одну или несколько работы сервера AUTOSAR, для которой интерфейс C-S обрабатывает клиентские запросы. Каждая операция соответствует функции сервера Simulink в модели.

    Расширьте C-S Interfaces и расширьте отдельный интерфейс C-S, в который вы хотите добавить работу сервера. (В модели в качестве примера расширьте CsIf1.), Чтобы просмотреть операции для интерфейса, выберите Operations. Модель в качестве примера уже содержит работу сервера AUTOSAR под названием doOverride и readData.

    Если работа сервера еще не существует в вашей модели, создайте тот. (Если ваш интерфейс C-S содержит операцию заполнителя под названием Operation1, можно безопасно удалить его.)

    1. В представлении операций нажмите кнопку Add. Это действие открывает диалоговое окно Add Operation.

    2. В диалоговом окне введите Operation Name. Задайте имя соответствующей функции сервера Simulink.

    3. Если соответствующая функция сервера Simulink имеет аргументы, выберите функцию в списке Simulink Function. Это действие заставляет аргументы операции AUTOSAR быть автоматически созданными на основе аргументов функции сервера Simulink. Нажмите OK. Операция и ее аргументы появляются в представлении операций.

  7. Исследуйте аргументы, перечисленные на работу сервера AUTOSAR. Расширьте Operations, расширьте отдельную операцию (например, readData), и выберите Arguments. Перечисленные аргументы соответствуют прототипу функции сервера Simulink.

  8. К портам сервера представления AUTOSAR в модели перейдите к представлению портов сервера. Расширьте AtomicComponents, расширьте отдельный компонент, который вы конфигурируете и выбираете ServerPorts. Модель в качестве примера уже содержит порт сервера AUTOSAR под названием sPort.

    Если порт сервера еще не существует в вашей модели, создайте тот.

    1. В представлении портов сервера нажмите кнопку Add. Это действие открывает диалоговое окно Add Ports.

    2. В диалоговом окне назовите новый порт сервера и выберите интерфейс C-S, для которого вы сконфигурировали работу сервера. Нажмите Add. Новый порт появляется в представлении портов сервера.

  9. Для каждой работы сервера AUTOSAR сконфигурируйте сервер AUTOSAR, выполнимый, чтобы выполнить клиентские запросы. К представлению AUTOSAR runnables в модели, выберите Runnables. Модель в качестве примера уже содержит сервер, выполнимый для readData, названный Runnable_readData.

    Если подходящий выполнимый сервер еще не существует в вашей модели, создайте тот.

    1. В представлении runnables нажмите кнопку Add. Это действие добавляет запись таблицы для нового выполнимого.

    2. Выберите новое выполнимое и сконфигурируйте его имя и символ. Имя symbol, заданное для выполнимого, должно совпадать с именем функции сервера Simulink. (В модели в качестве примера, имени symbol для Runnable_readData имя функции readData.)

    3. Создайте вызванное на операцию событие, чтобы инициировать выполнимый сервер. (Модель в качестве примера задает событие event_readData для сервера выполнимый Runnable_readData.)

      1. Под Events нажмите Add Event. Выберите новое событие.

      2. Для Event Type выберите OperationInvokedEvent.

      3. Введите Event Name.

      4. Под Event Properties выберите значение Trigger, которое соответствует порту сервера и операции C-S, ранее созданной для функции сервера. (В модели в качестве примера значение Trigger выбрано для Runnable_readData sPort.readData, объединение порта сервера sPort с операцией readData.) Нажимают Apply.

    Этот шаг завершает настройку сервера AUTOSAR в представлении AUTOSAR Dictionary настройки.

  10. Переключите на редактор Отображений Кода представление настройки и сопоставьте функцию сервера Simulink с выполнимым сервером AUTOSAR.

    1. Откройте редактор Отображений Кода. Выберите вкладку Functions.

    2. Выберите функцию сервера Simulink. Чтобы сопоставить функцию с выполнимым AUTOSAR, нажмите на поле Runnable и выберите соответствие, выполнимое из списка доступного сервера runnables. В модели в качестве примера, функции Simulink readData сопоставлен с выполнимым AUTOSAR Runnable_readData.

  11. Чтобы подтвердить настройку компонента AUTOSAR, нажмите кнопку Validate. Если об ошибках сообщают, фиксируют ошибки и повторяют валидацию. Повторитесь, пока валидация не успешно выполнится.

  12. Сгенерируйте C и код ARXML для модели.

После того, как вы сконфигурируете сервер AUTOSAR, сконфигурируете соответствующий клиентский вызов AUTOSAR, как описано в Конфигурируют Клиент AUTOSAR.

Сконфигурируйте клиент AUTOSAR

После того, как вы сконфигурируете сервер AUTOSAR, как описано в Конфигурируют Сервер AUTOSAR, конфигурируют соответствующий клиентский вызов AUTOSAR. В этом примере показано, как сконфигурировать блок Function Caller как клиентский вызов AUTOSAR. Пример использует файл matlabroot/help/toolbox/autosar/examples/mControllerWithInterface_client.slx.

  1. Откройте модель, в которой вы хотите создать и сконфигурировать клиент AUTOSAR или открыть модель mControllerWithInterface_client.slx в качестве примера.

  2. Добавьте блок Function Caller в модель. В Браузере Библиотеки Simulink блок Function Caller находится в User-Defined Functions.

    Модель в качестве примера обеспечивает Функциональный блок Simulink под названием readData, который расположен в Runnable3_Subsystem.

  3. Сконфигурируйте блок Function Caller, чтобы вызвать соответствующий блок Simulink Function. Дважды кликните блок, чтобы открыть его и отредактировать параметры блоков, чтобы задать прототипа функции сервера.

    В модели в качестве примера, readData Параметры Function Caller задают прототипа функции для readData функция сервера, используемая в примере сервера AUTOSAR, Сконфигурируйте Сервер AUTOSAR. Вот readData функция из примера сервера.

    Параметры Function Caller включают прототипа функции и поля спецификации аргумента. Имя функции в прототипе должно совпадать с Operation Name, заданным для соответствующей работы сервера. Смотрите, что создание операции вступить Конфигурирует Сервер AUTOSAR. Типы аргумента и размерности также должны совпадать с аргументами функции сервера.

    Примечание

    Если вы хотите симулировать вызов функции в этой точке, необходимо поместить блок Function Caller в общую модель или тестовую обвязку с соответствующим блоком Simulink Function. Симуляция не требуется для этого примера.

  4. Когда вызов функции будет полностью сформирован в Simulink, настройте блок Function Caller в модели, сконфигурированной для AUTOSAR. Например, сконфигурируйте текущую модель для AUTOSAR или скопируйте блок в модель AUTOSAR.

    Совет

    Если вы создаете (или копия) блок Function Caller в модели, прежде чем вы сопоставите и сконфигурируете компонент AUTOSAR, у вас есть опция наличия программного обеспечения, заполняют аргументы операции AUTOSAR для вас, вместо того, чтобы создать аргументы вручную. Чтобы создать аргументы для вас, наряду с полностью сконфигурированным клиентским портом AUTOSAR и полностью сопоставленной вызывающей стороной функции Simulink, используют Быстрый запуск Компонента AUTOSAR, чтобы создать компонент по умолчанию. Для получения дополнительной информации смотрите, Создают Компонент программного обеспечения AUTOSAR в Simulink.

    Модель в качестве примера является моделью AUTOSAR, в который блок Function Caller readData был скопирован. Блок соединяется с импортом, выходными портами и сигнальными линиями, совпадающими с типами данных аргумента функции и размерностями.

    Примечание

    Каждый раз, когда вы добавляете или изменяете блок Function Caller в модели AUTOSAR, вызывающие стороны функции обновления в настройке AUTOSAR. Откройте редактор Отображений Кода. В диалоговом окне нажмите кнопку Update. Это действие загрузки или обновления передачи данных Simulink, функционируйте вызывающие стороны и числовые типы в вашей модели. После обновления функциональная вызывающая сторона, которую вы добавили, появляется во вкладке Function Callers редактора Отображений Кода.

  5. Необходимые элементы, чтобы сконфигурировать клиент AUTOSAR, в общем порядке, они должны быть созданы:

    • AUTOSAR интерфейс (C-S) клиент-сервер

    • Одна или несколько операций AUTOSAR, совпадающих с функциями сервера Simulink, которые вы задали в модели сервера AUTOSAR

    • Клиентский порт AUTOSAR, чтобы получить клиентские запросы о работе сервера, предлагаемой интерфейсом C-S

    Откройте Словарь AUTOSAR. К интерфейсам представления AUTOSAR C-S в модели перейдите к представлению C-S Interfaces. Модель в качестве примера уже содержит интерфейс клиент-сервер под названием csInterface.

    Если интерфейс C-S еще не существует в настройке AUTOSAR, создайте тот.

    1. В представлении интерфейсов C-S нажмите кнопку Add. Это действие открывает диалоговое окно Add Interfaces.

    2. В диалоговом окне назовите новый Интерфейс C-S и задайте количество операций, которые вы намереваетесь сопоставить с интерфейсом. Оставьте другие параметры в их значениях по умолчанию. Нажмите Add. Новый интерфейс появляется в представлении интерфейсов C-S.

  6. Под C-S Interfaces создайте одну или несколько операций AUTOSAR, совпадающих с функциями сервера Simulink, которые вы задали в модели сервера AUTOSAR.

    Расширьте C-S Interfaces и расширьте отдельный интерфейс C-S, в который вы хотите добавить операцию AUTOSAR. (В модели в качестве примера расширьте CsInterface.), Чтобы просмотреть операции для интерфейса, выберите Operations. Модель в качестве примера уже содержит операцию AUTOSAR под названием readData.

    Если операция AUTOSAR еще не существует в вашей модели, создайте тот. (Если ваш интерфейс C-S содержит операцию заполнителя под названием Operation1, можно безопасно удалить его.)

    1. В представлении операций нажмите кнопку Add. Это действие открывает диалоговое окно Add Operation.

    2. В диалоговом окне введите Operation Name. Задайте имя соответствующей функции сервера Simulink. Оставьте набор Simulink Function None, потому что клиентская модель не содержит функциональный блок сервера Simulink. Нажмите OK. Новая операция появляется в представлении операций.

  7. Добавьте аргументы операции AUTOSAR.

    1. Расширьте Operations, расширьте отдельную операцию (например, readData), и выберите Arguments.

    2. В представлении аргументов нажмите кнопку Add одно время для каждого аргумента функции. Например, для readData, нажмите кнопку Add четыре раза для аргументов Opданные, ERR, и NegCode. Каждое нажатие кнопки создает одну новую запись аргумента.

    3. Выберите каждую запись аргумента и установите аргумент Name и Direction совпадать с прототипом функции.

  8. К клиентским портам представления AUTOSAR в модели перейдите к представлению клиентских портов. Расширьте AtomicComponents, расширьте отдельный компонент, который вы конфигурируете и выбираете ClientPorts. Модель в качестве примера уже содержит клиентский порт AUTOSAR под названием cPort.

    Если клиентский порт еще не существует в вашей модели, создайте тот.

    1. В представлении клиентских портов нажмите кнопку Add. Это действие открывает диалоговое окно Add Ports.

    2. В диалоговом окне назовите новый клиентский порт и выберите интерфейс C-S. Нажмите Add. Новый порт появляется в представлении клиентских портов.

    Этот шаг завершает настройку клиента AUTOSAR в представлении AUTOSAR Dictionary настройки.

  9. Переключите на редактор Отображений Кода представление настройки и сопоставьте вызывающую сторону функции Simulink с клиентским портом AUTOSAR и операцией C-S.

    1. Откройте редактор Отображений Кода. Выберите вкладку Function Callers.

    2. Выберите вызывающую сторону функции Simulink. Нажмите на поле ClientPort и выберите порт из списка доступных клиентских портов AUTOSAR. Нажмите на поле Operation и выберите операцию из списка доступных операций AUTOSAR C-S. В модели в качестве примера Simulink функционирует вызывающая сторона readData сопоставлен с клиентским портом AUTOSAR cPort и операция C-S readData.

  10. Чтобы подтвердить настройку компонента AUTOSAR, нажмите кнопку Validate. Если об ошибках сообщают, фиксируют ошибки и повторяют валидацию. Повторитесь, пока валидация не успешно выполнится.

  11. Сгенерируйте C и код ARXML для модели.

Сконфигурируйте обработку ошибок клиент-сервер AUTOSAR

AUTOSAR задает механизм состояния ошибки приложения для обработки ошибок клиент-сервер. Сервер AUTOSAR возвращает ошибочное состояние со значением, совпадающим с предопределенной возможной ошибкой. Клиент AUTOSAR получает и отвечает на ошибочное состояние. Компонент программного обеспечения AUTOSAR, который следует инструкциям по обработке ошибок клиент-сервер потенциально, предоставляет ошибочное состояние AUTOSAR Basic Software, такой как Диагностический менеджер событий (DEM).

В Simulink вы можете:

  • Импортируйте код ARXML, который реализует обработку ошибок клиент-сервер.

  • Сконфигурируйте обработку ошибок для интерфейса клиент-сервер.

  • Сгенерируйте C и код ARXML для обработки ошибок клиент-сервер.

Если вы импортируете код ARXML, который реализует обработку ошибок клиент-сервер, средство импорта создает ошибочные порты состояния в соответствующем извещателе сервера (блок Function Caller) местоположения.

Реализовывать обработку ошибок клиент-сервер AUTOSAR в Simulink:

  1. Задайте возможные ошибочные значения состояния, которые сервер AUTOSAR возвращает в типе данных Simulink. Задайте одни или несколько кодов ошибок в области значений 0-63, включительно. Базовая система хранения типа данных должна быть 8-битным целым числом без знака. Осциллографом данных должен быть Exported. Например, задайте перечисляемый тип appErrType:

    classdef(Enumeration) appErrType < uint8
    
       enumeration
          SUCCESS(0)
          ERROR(1)
          COMM_MODE_LIMITATION(2) 
          OVERFLOW(3)
          UNDERFLOW(4)
          VALUE_MOD3(5)
       end
    
       methods (Static = true)
          function descr = getDescription()
             descr = 'Definition of application error type.';
          end
    
          function hdrFile = getHeaderFile()
             hdrFile = '';
          end
    
          function retVal = addClassNameToEnumNames()
              retVal = false;
          end
          
          function dataScope = getDataScope()
              dataScope = 'Exported';
          end
       end
    
    end

    Примечание

    Тип данных Simulink, который вы задаете, чтобы представлять возможные ошибки в модели, непосредственно не влияет на возможные ошибки AUTOSAR, которые импортируются и экспортируются в коде ARXML. Чтобы изменить экспортируемые возможные ошибки для интерфейса C-S или операции C-S, используйте функции свойств AUTOSAR. Эта тема обеспечивает примеры.

  2. Задайте ошибочный выходной аргумент состояния в пользу блока Simulink Function что модели сервер AUTOSAR. Сконфигурируйте ошибочный аргумент состояния как единственный функциональный выход или добавьте его в другие выходные параметры. Например, вот блок Simulink Function, который возвращает ошибочное значение состояния в выходе err.

    Блок Simulink Function реализует алгоритм, чтобы возвратить ошибочное состояние.

  3. Сошлитесь на возможный ошибочный тип значений в модели. В параметрах блоков Argument Outport для ошибочного выходного порта задайте ошибочный тип данных состояния, в этом случае, appErrType. Установите Port dimensions на 1 и Signal type к real.

  4. Сконфигурируйте свойства AUTOSAR ошибочного аргумента в интерфейсе клиент-сервер. Откройте Словарь AUTOSAR, расширьте C-S Interfaces и перейдите к представлению Arguments операции AUTOSAR. Чтобы добавить аргумент, нажмите кнопку Add. Сконфигурируйте имя аргумента и установите Direction на Error.

  5. Создайте ошибочный порт в каждом блоке Function Caller, который моделирует клиентский вызов AUTOSAR. Например, вот блок Function Caller, который моделирует вызов fcnWErr.

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

    Сконфигурируйте свойства AUTOSAR ошибочного аргумента совпадать с информацией в Словаре AUTOSAR, представлении Arguments, показанном на Шаге 4.

Сгенерированный код C для функции отражает сконфигурированную функциональную подпись и логику, заданную в модели для обработки возможных ошибок.

appErrType fcnWErr(real_T x1, real_T x2)
{
  appErrType rty_err_0;
  if (...) == 0.0) {
    rty_err_0 = ...;
  } else {
    rty_err_0 = ...;
  }

  return rty_err_0;
}

Кроме того, для определения класса перечисляемого типа, используемого в этом примере, сборка генерирует заголовочный файл appErrType.h, содержание возможной ошибки вводит определения.

Экспортируемый код ARXML содержит возможные ошибочные определения и ссылки на них.

<POSSIBLE-ERRORS>
   <APPLICATION-ERROR …>
      <SHORT-NAME>SUCCESS</SHORT-NAME>
      <ERROR-CODE>0</ERROR-CODE>
   </APPLICATION-ERROR>
   <APPLICATION-ERROR …>
      <SHORT-NAME>ERROR</SHORT-NAME>
      <ERROR-CODE>1</ERROR-CODE>
   </APPLICATION-ERROR>
   …
   <APPLICATION-ERROR …>
      <SHORT-NAME>UNDERFLOW</SHORT-NAME>
      <ERROR-CODE>4</ERROR-CODE>
   </APPLICATION-ERROR>
   <APPLICATION-ERROR …>
      <SHORT-NAME>VALUE_MOD3</SHORT-NAME>
      <ERROR-CODE>5</ERROR-CODE>
   </APPLICATION-ERROR>
</POSSIBLE-ERRORS>

Можно использовать функции свойства AUTOSAR, чтобы программно изменить возможные ошибки, которые экспортируются в коде ARXML, и установить свойство Direction аргумента операции C-S к Error.

Следующий пример добавляет ПОТЕРЮ ЗНАЧИМОСТИ и VALUE_MOD3 к возможным ошибкам для интерфейса C-S под названием fcnWErr.

>> arProps = autosar.api.getAUTOSARProperties(bdroot)
>> get(arProps,'fcnWErr','PossibleError')
ans = 
    'fcnWErr/SUCCESS'    'fcnWErr/ERROR'    'fcnWErr/COMM_MODE…'
    'fcnWErr/OVERFLOW'
>> get(arProps,'fcnWErr/OVERFLOW','errorCode')
ans =
           3
>> add(arProps,'fcnWErr','PossibleError','UNDERFLOW')
>> set(arProps,'fcnWErr/UNDERFLOW','errorCode',4)
>> add(arProps,'fcnWErr','PossibleError','VALUE_MOD3')
>> set(arProps,'fcnWErr/VALUE_MOD3','errorCode',5)
>> get(arProps,'fcnWErr','PossibleError')
ans = 
    'fcnWErr/SUCCESS'    'fcnWErr/ERROR'    'fcnWErr/COMM_MODE…'
    'fcnWErr/OVERFLOW'    'fcnWErr/UNDERFLOW'    'fcnWErr/VALUE_MOD3'

Можно также получить доступ к возможным ошибкам на операции C-S. Следующий пример перечисляет возможные ошибки для операции fcnWErr в интерфейсе C-S fcnWErr.

>> arProps = autosar.api.getAUTOSARProperties(bdroot)
>> get(arProps,'fcnWErr/fcnWErr','PossibleError')
ans = 
    'fcnWErr/SUCCESS'    'fcnWErr/ERROR'    'fcnWErr/COMM_MODE…' 
    'fcnWErr/OVERFLOW'

Следующий пример устанавливает направление аргумента err операции C-S к Error.

>> arProps = autosar.api.getAUTOSARProperties(bdroot)
>> set(arProps,'fcnWErr/fcnWErr/err','Direction','Error')
>> get(arProps,'fcnWErr/fcnWErr/err','Direction')
ans =
    Error

Ограничения параллелизма для сервера AUTOSAR Runnables

Следующие блоки и шаблоны моделирования несовместимы с параллельным выполнением выполнимого сервера AUTOSAR.

  • Блоки в функции Simulink:

    • Блоки с состоянием, такие как Unit Delay.

    • Блоки с логикой пересечения нулем, такие как Triggered Subsystem и Enabled Subsystem.

    • Графики Stateflow®.

    • Другие блоки Simulink Function.

    • Невстроенные подсистемы.

    • Наследие C вызовы функции с побочными эффектами.

  • Моделирование шаблонов в функции Simulink:

    • Запись в память хранилища данных (например, "на память экземпляра").

    • Пишущий в глобальный блок-сигнал (например, статическое ЗУ).

Чтобы осуществить ограничения параллелизма для сервера AUTOSAR runnables, используйте выполнимое свойство canBeInvokedConcurrently. Свойство расположено в представлении Runnables в Словаре AUTOSAR.

Когда canBeInvokedConcurrently установлен в true для выполнимого сервера валидация AUTOSAR проверяет на блоки и шаблоны моделирования, которые несовместимы с параллельным выполнением выполнимого сервера. Если функция Simulink содержит несовместимый блок или шаблон моделирования, ошибки отчетов валидации. Если canBeInvokedConcurrently установлен в false, валидация не проверяет на блоки и шаблоны моделирования, которые несовместимы с параллельным выполнением выполнимого сервера.

Можно установить свойство canBeInvokedConcurrently к true только для выполнимого сервера AUTOSAR — то есть, выполнимый с OperationInvokedEvent. Runnables с другими триггерами события, такими как синхронизация событий, не может быть одновременно вызван. Если canBeInvokedConcurrently установлен в true для выполнимого несервера, сбои валидации AUTOSAR.

Программно установить выполнимое свойство canBeInvokedConcurrently, используйте функцию свойства AUTOSAR set. Следующий пример устанавливает выполнимое свойство canBeInvokedConcurrently к true для сервера AUTOSAR выполнимый именованный Runnable_readData.

addpath(fullfile(matlabroot,'/help/toolbox/autosar/examples'));
open_system('mControllerWithInterface_server')
arProps = autosar.api.getAUTOSARProperties('mControllerWithInterface_server');
SRPath = find(arProps,[],'Runnable','Name','Runnable_readData')
SRPath =
  1×1 cell array
    {'SWC_Controller/ControllerWithInterface_ar/Runnable_readData'}
invConc = get(arProps,'SWC_Controller/ControllerWithInterface_ar/Runnable_readData',...
  'canBeInvokedConcurrently')
invConc =
  logical
   0
set(arProps,'SWC_Controller/ControllerWithInterface_ar/Runnable_readData',...
  'canBeInvokedConcurrently',true)
invConc = get(arProps,'SWC_Controller/ControllerWithInterface_ar/Runnable_readData',...
  'canBeInvokedConcurrently')
invConc =
  logical
   1

Сконфигурируйте и сопоставьте сервер AUTOSAR и клиент программно

Чтобы программно сконфигурировать свойства AUTOSAR интерфейсов клиент-сервер AUTOSAR, используйте функции свойства AUTOSAR такой как set и get.

Чтобы программно сконфигурировать Simulink к AUTOSAR отображение информации для клиент-серверов AUTOSAR, используйте эти функции:

Например, скрипты, которые используют свойство AUTOSAR и сопоставляют функции, видят, Конфигурируют Интерфейсы Клиент-сервер AUTOSAR.

Смотрите также

| | | |

Связанные примеры

Больше о