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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Блок Argument Inport Op и Выходной порт Аргумента блокирует Data, ERR и NegCode, соответствуя прототипу функции [Data,ERR,NegCode]=readData(Op).

      Примечание

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

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

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

    Модель в качестве примера является моделью AUTOSAR, в которую Функциональный блок Simulink был скопирован 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. Редактор Отображений Открытого кода. Выберите вкладку Entry-Point Functions.

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

  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. Дважды кликните блок, чтобы открыть его и отредактировать параметры блоков, чтобы задать прототипа функции сервера.

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

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

    Примечание

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

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

    Совет

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

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

    Примечание

    Каждый раз, когда вы добавляете или изменяете блок Function Caller в модели AUTOSAR, обновляете функциональные вызывающие стороны в настройке AUTOSAR. Редактор Отображений Открытого кода (Code> C/C++ Code> Configure Model in Code Perspective). В диалоговом окне нажмите кнопку 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, Data, 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 сопоставлен с операцией cPort и C-S клиентского порта AUTOSAR 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 что модели сервер AUTOSAR. Сконфигурируйте ошибочный аргумент состояния как единственный функциональный вывод или добавьте его в другие выходные параметры. Например, вот Функциональный блок Simulink, который возвращает ошибочное значение состояния в выводе err.

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

  3. Сошлитесь на возможный ошибочный тип значений в модели. В параметрах блоков Выходного порта Аргумента для ошибочного выходного порта задайте ошибочный тип данных состояния, в этом случае, 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.

    В параметрах блоков Функциональной Вызывающей стороны задайте тот же ошибочный тип данных состояния.

    Сконфигурируйте свойства 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:

    • Блоки с состоянием, такие как Единичная задержка.

    • Блоки с логикой пересечения нулем, такие как Инициированная Подсистема и Enabled Подсистема.

    • Графики Stateflow®.

    • Другие Функциональные блоки Simulink.

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

    • Наследие 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.

open_system('mControllerWithInterface_server')
arProps = autosar.api.getAUTOSARProperties('mControllerWithInterface_server');
SRPath = find(arProps,[],'Runnable','Name','Runnable_readData')
SRPath = 
    'SWC_Controller/ControllerWithInterface_ar/Runnable_readData'
invConc = get(arProps,'SWC_Controller/ControllerWithInterface_ar/Runnable_readData',...
  'canBeInvokedConcurrently')
invConc =
     0
set(arProps,'SWC_Controller/ControllerWithInterface_ar/Runnable_readData',...
  'canBeInvokedConcurrently',true)
invConc = get(arProps,'SWC_Controller/ControllerWithInterface_ar/Runnable_readData',...
  'canBeInvokedConcurrently')
invConc =
     1'

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

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

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

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

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

| | | |

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

Больше о