Сконфигурируйте коммуникацию клиент-сервер 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 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 блоков inport и outport. Не удается выполнить строение 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 в общем порядке их создания:

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

    • Одна или несколько операций 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. Это действие открывает диалоговое окно Добавить операцию.

    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. Пример модели уже содержит сервер, выполняемый для readData, именованные Runnable_readData.

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

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

    2. Выберите новый runnable и сконфигурируйте его имя и символ. Имя symbol, заданное для runnable, должно совпадать с именем функции сервера 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 и выберите соответствующую возможность выполнения из списка доступных возможностей выполнения сервера. В модели примера функция 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 с именем readData, который расположен внутри Runnable3_Subsystem.

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

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

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

    Примечание

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

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

    Совет

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

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

    Примечание

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

  5. Необходимые элементы для настройки клиента AUTOSAR в общем порядке их создания:

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

    • Одна или несколько операций 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. Это действие открывает диалоговое окно Добавить операцию.

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

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

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

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

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

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

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

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

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

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

  9. Перейдите в режим редактирования Code Mappings конфигурации и сопоставьте вызывающего абонента функции 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, такого как Diagnostic Event Manager (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.

Следующий пример добавляет UNDERFLOW и 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'

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

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

Ограничения параллелизма для выполняемых функций AUTOSAR Server

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

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

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

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

    • Stateflow® чарты.

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

    • Неинлинфицированные подсистемы.

    • Устаревшие вызовы функций C с побочными эффектами.

  • Шаблоны моделирования внутри функции Simulink:

    • Запись в память хранилища данных (для примера, пер- образец памяти).

    • Запись в глобальный блок сигнал (для примера, статической памяти).

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

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

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

Чтобы программно задать свойство runnable canBeInvokedConcurrently, используйте функцию свойства AUTOSAR set. В следующем примере задается свойство runnable 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 и функции карты, смотрите Configure AUTOSAR Client-Server Interfaces.

См. также

| | | |

Похожие примеры

Подробнее о