exponenta event banner

Настройка параметров среды выполнения

При использовании программного обеспечения Simulink ® для создания и выполнения модели и использования генератора кода для создания кода C или C++ рассмотрите конфигурацию для трех сред выполнения:

  • Среда выполнения компьютера разработки MATLAB ®, в которой во время разработки приложений выполняется программное обеспечение MathWorks ®.

  • Рабочая аппаратная среда выполнения, в которой развертывается приложение при его запуске в производство.

  • Тестовая аппаратная среда выполнения, в которой выполняется тестирование разрабатываемого приложения перед развертыванием.

Одна среда времени выполнения может служить в нескольких мощностях, но среды времени выполнения остаются концептуально различными. Часто тестовым оборудованием является компьютер разработки MATLAB. Как правило, производственное оборудование отличается от разработки MATLAB или тестового оборудования и обладает меньшей мощностью. Многие типы производственного оборудования могут сделать мало больше, чем запустить загруженный исполняемый файл.

Предоставьте информацию о производственной аппаратной плате и компиляторе, который используется с ней, когда:

  • Программное обеспечение Simulink используется для моделирования модели, для которой позже создается код

  • Генератор кода используется для создания кода для развертывания на производственном оборудовании

Программное обеспечение использует информацию платы и компилятора для получения битово-верного согласия по результатам целочисленных и фиксированных операций, выполняемых при моделировании и в коде, сгенерированном для производственного оборудования. Генератор кода использует информацию для создания кода, который выполняется с максимальной эффективностью.

При создании кода для тестирования на тестовом оборудовании предоставьте информацию о тестовой аппаратной плате и используемом компиляторе. Генератор кода использует эту информацию для создания кода, который обеспечивает битовое согласие между результатами из:

  • Целочисленные операции и операции с фиксированной точкой, выполняемые при моделировании

  • Сгенерированный код, выполняемый на производственном оборудовании

  • Сгенерированный код, выполняемый на тестовом оборудовании

Можно достичь бит-верного согласия в отношении результатов, даже если производственное и тестовое оборудование отличаются друг от друга. Если стандарт C не полностью определяет поведение, компиляторы для двух типов оборудования могут использовать разные значения по умолчанию.

Настройка производственного и тестового оборудования

Можно указать моделирование модели или создание кода для конкретной платы оборудования и ее типа устройства. Например, можно задать размер данных, порядок байтов и поведение компилятора, например округление целых чисел. Можно настроить:

Настройте производственное оборудование, выбрав Параметры конфигурации > Реализация оборудования. По умолчанию на панели «Реализация оборудования» отображаются только поля «Плата оборудования», «Поставщик устройства» и «Тип устройства». Если не установлены пакеты поддержки оборудования, в списке аппаратных плат перечислены значения None или Determine by Code Generation system target file, и Get Hardware Support Packages. После установки пакета поддержки аппаратных средств в список также входит соответствующее имя платы аппаратных средств. При выборе имени платы аппаратных средств появляются параметры для этой платы. Чтобы задать сведения об устройстве, например размер данных и порядок байтов, щелкните Сведения об устройстве.

Настройте тестовое оборудование на панели Параметры конфигурации > Реализация оборудования > Дополнительные параметры. Чтобы включить параметры для настройки сведений о тестовом оборудовании, отключите команду Configuration Parameters > Hardware Implementation > Advanced parameters > Test hardware (Параметры конфигурации > Реализация аппаратного обеспечения > Дополнительные параметры > Тестирование аппаратного обеспечения). Код, генерируемый для тестовых аппаратных средств, выполняется в среде, указанной параметрами тестовых аппаратных средств. Код ведет себя так, как если бы он выполнялся в среде, указанной для производственного оборудования. Дополнительные сведения см. в разделе Вопросы тестирования оборудования.

Значения и свойства по умолчанию отображаются в виде начальных значений на панели «Реализация оборудования» в следующих случаях:

  • На панели Создание кода (Code Generation) указывается системный целевой файл.

  • Системный целевой файл определяет микропроцессор по умолчанию и его аппаратные свойства.

Невозможно изменить параметры, имеющие только одно возможное значение. Параметры, имеющие более одного возможного значения, предоставляют список допустимых значений. Если свойства оборудования задаются вручную на панели «Реализация оборудования», убедитесь, что эти значения соответствуют системному целевому файлу. В противном случае сгенерированный код может не скомпилировать или выполнить, либо выполнить, но получить неправильные результаты.

Параметры реализации аппаратного обеспечения описывают свойства аппаратного обеспечения и компилятора для программного обеспечения MATLAB. Генератор кода использует эту информацию для создания кода для среды выполнения, которая работает максимально эффективно. Созданный код дает битовое согласие для результатов целочисленных и фиксированных операций в моделировании, производственном коде и тестовом коде.

Дополнительные сведения о конкретных параметрах см. в разделе Область реализации оборудования. Пример возможностей панели внедрения оборудования см. в разделе rtwdemo_targetsettings пример модели. Для получения дополнительной информации, связанной с настройкой аппаратной реализации, см.:

Определение платы аппаратных средств

Укажите аппаратную плату, на которой выполняется код, созданный в модели. Выберите значение в меню Configuration Parameters > Hardware Implementation > Hardware board.

Панель Hardware Implementation определяет целевой системный файл, выбранный в меню Configuration Parameters > Code Generation.

Чтобы настроить тестовое оборудование, используйте панель Параметры конфигурации > Реализация оборудования > Дополнительные параметры.

Чтобы включить параметры для конфигурирования подробных данных тестового оборудования, установите ProdEqTarget кому off.

Способы определения платы аппаратных средств

ЕслиВыбрать

Меню содержит имя аппаратной платы, которую требуется использовать.

Имя этой платы аппаратных средств.

При выборе имени платы аппаратных средств появляются параметры для этой платы.

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

Get Hardware Support Packages.

Это значение открывает программу установки пакета поддержки. Установите нужный пакет поддержки. После установки пакета поддержки меню содержит имена соответствующих аппаратных плат.

Конфигурация модели использует системный целевой файл ert.tlc, realtime.tlc, или autosar.tlc.

None.

Для реализации аппаратных средств не указана плата аппаратных средств.

Конфигурация модели не использует целевой системный файл ert.tlc, realtime.tlc, или autosar.tlc.

Determine by Code Generation system target file.

Генератор кода использует указанный целевой системный файл для определения реализации аппаратных средств.

Укажите поставщика устройства

Чтобы указать поставщика микропроцессора аппаратного устройства, используйте параметр Device vendor. Ваш выбор определяет доступные микропроцессоры в меню Тип устройства. Если имя поставщика не отображается, выберите Custom Processor. Затем с помощью параметра Device type укажите микропроцессор.

Укажите тип устройства

Чтобы указать имя микропроцессора из списка поддерживаемых устройств для выбора поставщика устройства, используйте параметр Тип устройства. Если микропроцессор не отображается в меню, выберите Поставщик устройства Custom Processor. Затем укажите сведения об устройстве для пользовательского устройства.

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

Установка длины битов для типов данных устройства

Параметры Number of bits описывают собственный размер слова микропроцессора и длины битов данных char, short, int и long. Для успешного создания кода:

  • Длина битов должна быть такой, чтобы символ < = short < = int < = long.

  • Длины битов должны быть кратны 8, максимум 32.

  • Длина бита для длинных данных не должна быть меньше 32.

rtwtypes.h файл определяет целочисленные имена типов. Указанные значения должны соответствовать размерам слов, определенным в компиляторе limits.h файл заголовка. Генератор кода сопоставляет имена целочисленных типов соответствующим именам целочисленных типов Simulink.

Если тип ANSI ® C с соответствующим размером слова недоступен, но доступен более крупный тип ANSI C, генератор кода использует больший тип дляint8_T, uint8_T, int16_T, uint16_T, int32_T, и uint32_T. Если генератор кода использует больший тип, результирующие значения в журнале (например, протоколирование MAT-файла) могут иметь другие типы данных, чем значения в журнале для моделирования.

Приложение может использовать целочисленные данные длиной от 1 (без знака) или 2 (со знаком) бит до 32 бит. Если длина целого числа соответствует длине доступного типа, генератор кода использует этот тип. Если совпадающий тип недоступен, генератор кода использует наименьший доступный тип, который может содержать данные, генерируя код, который не использует ненужные биты более высокого порядка. Например, на аппаратном обеспечении, поддерживающем 8-разрядные, 16-разрядные и 32-разрядные целые числа, для сигнала, указанного как 24 бита, генератор кода реализует данные как int32_T или uint32_T.

Код, использующий эмулированные целочисленные данные, не является максимально эффективным. Этот код может быть полезен при разработке приложения для эмуляции целочисленных длин, доступных только на производственном оборудовании. Эмуляция не влияет на результаты выполнения.

Во время создания кода программное обеспечение проверяет совместимость типов данных модели с типами данных, указанными для производственного оборудования.

  • Если длина, указанная для целых чисел производственного оборудования, не равна 32 битам, программа генерирует ошибку.

  • Если длины типов данных, используемых в модели, меньше доступных целых длин производственного оборудования, программное обеспечение генерирует предупреждение.

Отображение целочисленных типов из генератора кода в Simulink

Целочисленный тип генератора кодаТип целого Simulink
boolean_Tboolean
int8_Tint8
uint8_Tuint8
int16_Tint16
uint16_Tuint16
int32_Tint32
uint32_Tuint32

Установить порядок байтов для устройства

Параметр Byte ordering указывает, использует ли оборудование Big Endian (первый наиболее значимый байт) или Little Endian (первый наименее значимый байт) порядок байтов. Если оставить как Unspecified, генератор кода создает код, который определяет полноту аппаратных средств. Этот параметр является наименее эффективным.

Задать поведение округления по частям для целочисленного деления со знаком

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

Параметр Signed integer division округляет до параметра инструктирует генератор кода о том, как компилятор округляет результат signed integer division. Предоставление этой информации не изменяет работу компилятора. Он описывает только это поведение для генератора кода, который использует информацию для оптимизации кода, созданного для целочисленного деления со знаком. Значения параметров:

  • Zero - Если частное находится между двумя целыми числами, компилятор выбирает в результате целое число, которое ближе к нулю.

  • Floor - Если частное находится между двумя целыми числами, компилятор выбирает целое число, которое ближе к отрицательной бесконечности.

  • Undefined - если Zero или Floor не описывайте поведение компилятора, или если это поведение неизвестно, выберите это значение.

Избегайте выбора Undefined. Если генератор кода не знает поведение компилятора при округлении целочисленного деления со знаком, сборка модели генерирует дополнительный код.

Поведение округления коэффициента компилятора зависит от этих значений.

Реализацию компилятора для округления целочисленного деления со знаком можно получить из документации компилятора. Если документация недоступна, это поведение можно определить экспериментально.

Пример частного округления для нуля, пола и неопределенного

NDИдеальный N/DНольПолНеопределенный

33

4

8.25

8

8

8

-33

4

-8.25

-8

-9

-8 или -9

33

-4

-8.25

-8

-9

-8 или -9

-33

-4

8.25

8

8

8 или 9

Задать поведение арифметического сдвига вправо для подписанных целых чисел

ANSI C не определяет поведение правых сдвигов на отрицательных целых числах для компиляторов. Итак, поведение зависит от реализации. Опция Shift right on a signed integer as arithmetic shift инструктирует генератор кода о том, как компилятор реализует правые сдвиги на отрицательных целых числах. Предоставление этой информации не изменяет работу компилятора. Он описывает только это поведение для генератора кода, который использует информацию для оптимизации кода, генерируемого для арифметических сдвигов вправо.

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

  • При выборе этой опции генератор кода создает эффективный код всякий раз, когда модель Simulink выполняет арифметические сдвиги для целых чисел со знаком.

  • Когда опция снята, генератор кода создает полностью портативный, но менее эффективный код для реализации правильных арифметических сдвигов.

Реализацию компилятора для арифметических правых сдвигов можно получить из документации компилятора. Если документация недоступна, это поведение можно определить экспериментально.

Обновление конфигурации оборудования версии 14

Если ваша модель была создана до выпуска 14 и вы не обновили модель, параметр Настройка текущего устройства исполнения (TargetUnknown) значение равно 'on' по умолчанию.

Чтобы обновить модель, снимите флажок Параметры конфигурации > Аппаратная реализация > Дополнительные параметры > Тестовое оборудование > Настройка тестового оборудования. Или в окне команд введите:

cs = getActiveConfigSet('your_model_name');
set_param(cs,'TargetUnknown','off');

Обновление модели:

  • Включение тестового оборудования аналогично параметру производственного оборудования (ProdEqTarget), установив для параметра значение 'on'.

  • Копирование поставщика производственного устройства и параметра типа (ProdHWDeviceType) значение для параметра «Поставщик и тип испытательного устройства» (TargetHWDeviceType).

Чтобы завершить обновление, выполните следующие действия.

  1. Очистите коробку для Параметров Конфигурации> Внедрение Аппаратных средств> Продвинутые параметры> Испытательные аппаратные средства>, Испытательные Аппаратные средства совпадают с производственными аппаратными средствами. Примените этот шаг только в том случае, если производственное и тестовое оборудование отличаются друг от друга.

  2. Задайте параметры в меню Configuration Parameters > Hardware implementation > Advanced parameters для соответствия производственным и тестовым системам.

  3. Сохраните модель.

Вопросы, связанные с производственным оборудованием

При настройке производственного оборудования необходимо учитывать следующие моменты:

  • Производственное оборудование может иметь размеры слов и другие характеристики оборудования, отличающиеся от компьютера разработки MATLAB. Можно создать прототип кода на оборудовании, отличном от производственного оборудования или компьютера разработки MATLAB. При создании кода эти различия учитываются генератором кода.

  • Продукт Simulink использует некоторую информацию в конфигурации производственного оборудования. Эта информация позволяет моделированию без создания кода давать те же результаты, что и при выполнении сгенерированного кода. Например, результаты могут обнаруживать ошибки, возникающие на производственном оборудовании, такие как переполнение оборудования.

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

  • При изменении среды выполнения во время разработки приложения, перед созданием или регенерацией кода, реконфигурируйте параметры реализации оборудования для новой среды выполнения. При выполнении кода на аппаратном обеспечении, для которого он не был сгенерирован, не всегда достигается соглашение bit-true для результатов целочисленных и фиксированных операций в моделировании, производственном коде и тестовом коде.

  • Чтобы скомпилировать код, созданный на основе модели, используйте параметр Режим округления целочисленных значений в блоках модели, чтобы смоделировать поведение округления компилятора Си. Эта настройка появляется на стекле Признаков Сигнала в диалоговых окнах параметра блоков, которые могут выполнить подписанную целочисленную арифметику, такую как продукт и n-D блоки Справочной таблицы.

  • Для большинства блоков значение режима целочисленного округления полностью определяет поведение округления. Для блоков, поддерживающих данные с фиксированной точкой и простейший режим округления, значение округления целочисленного деления со знаком также влияет на округление. Дополнительные сведения см. в разделе Точность (конструктор фиксированных точек).

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

Рекомендации по тестированию аппаратных средств

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

Если тестовая и производственная среды различаются, можно создать код, который выполняется на тестовом оборудовании, как если бы он был запущен на производственном оборудовании:

  1. Чтобы включить параметры тестирования оборудования, снимите флажок Configuration Parameters (Параметры конфигурации) > Hardware Implementation (Реализация оборудования) > Advanced parameters (Дополнительные параметры) > Test hardware (Тестировать оборудование) > Test hardware (Тестировать оборудование) > Test hardware ( Или в командной строке введите:

    cs = getActiveConfigSet('your_model_name');
    set_param(cs,'ProdEqTarget','off');
  2. Укажите сведения о типе устройства с помощью тестового оборудования (Target*) параметры.

Если выбран целевой системный файл, в котором указан микропроцессор по умолчанию и его аппаратные свойства, эти значения по умолчанию и свойства отображаются как начальные значения.

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

Пример настройки производственного оборудования, влияющей на моделирование в обычном режиме

Изменение некоторых настроек производственного оборудования, например: ProdLongLongMode и ProdIntDivRoundTo, может повлиять на результаты моделирования в обычном режиме. В следующем примере моделируется сумматор с четырьмя входами. В первом моделировании ProdLongLongMode отключен. Во втором моделировании ProdLongLongMode включен. На графике выходных данных моделирования наблюдаются небольшие различия между выходными значениями в диапазоне временных шагов 125-175.

model = 'hwSettingEffect';
new_system(model) 
open_system(model)

% Create adder
pos = [140   140   200   340];
add_block('simulink/Math Operations/Add', ...
          [model '/sum_int32'], ...
          'Inputs','++++', ...
          'SaturateOnIntegerOverflow', ...
          'on', ...
          'Position', ...
          pos)

pos = [75   155   105   175];
add_block('built-in/Inport',[model '/In1'],'Position',pos)
set_param([model '/In1'], 'OutDataTypeStr', ...
          'int32','PortDimensions','1','SampleTime','1');
add_line(model, 'In1/1','sum_int32/1')

pos = [75   205   105   225];
add_block('built-in/Inport',[model '/In2'],'Position',pos)
set_param([model '/In2'], 'OutDataTypeStr', ...
           'int32','PortDimensions','1','SampleTime','1');
add_line(model, 'In2/1','sum_int32/2')

pos = [75   255   105   275];
add_block('built-in/Inport',[model '/In3'],'Position',pos)
set_param([model '/In3'], 'OutDataTypeStr', ...
          'int32','PortDimensions','1','SampleTime','1');
add_line(model, 'In3/1','sum_int32/3')

pos = [75   305   105   325];
add_block('built-in/Inport',[model '/In4'],'Position',pos)
set_param([model '/In4'], 'OutDataTypeStr', ...
           'int32','PortDimensions','1','SampleTime','1');
add_line(model, 'In4/1','sum_int32/4')

pos = [275   230   305   250];
add_block('built-in/Outport',[model '/Out1'],'Position',pos)
add_line(model, 'sum_int32/1','Out1/1')

% Specify input data
t = 0:200;
peakValue = 1.5e9;
in1 = peakValue * sin(t*2*pi/100);
in2 = peakValue * cos(t*2*pi/70);
in3 = -peakValue * sin(t*2*pi/40);
in4 = -peakValue * cos(t*2*pi/30);
set = Simulink.SimulationData.Dataset;
set = set.addElement(1, timeseries(int32(in1),t,'Name','sig1'));
set = set.addElement(2, timeseries(int32(in2),t,'Name','sig2'));
set = set.addElement(3, timeseries(int32(in3),t,'Name','sig3'));
set = set.addElement(4, timeseries(int32(in4),t,'Name','sig4'));

set_param(model, 'LoadExternalInput', 'on');
set_param(model, 'ExternalInput', 'set');

set_param(model, 'StopTime', '50');

% Disable production hardware setting and run first simulation
set_param(model, 'ProdLongLongMode', 'off');
[~, ~, y1] = sim(model, 200);

% Enable production hardware setting and run second simulation
set_param(model, 'ProdLongLongMode', 'on');
[~, ~, y2] = sim(model, 200);

plot([y1 y2]);
figure(gcf);

Разница в поведении обусловлена типом данных накопителя в блоке Sum. Параметр блока типа данных Accumulator имеет значение Inherit: Inherit via internal rule. Для этого примера результирующий тип данных накопителя имеет ширину 64 бита, если используется C long long включен тип данных. В противном случае она имеет ширину 32 бита. В зависимости от входных значений для суммарного блока 32-разрядный аккумулятор может насыщаться, если 64-разрядный аккумулятор не работает. ProdLongLongMode установка. В обоих случаях поведение обычного режима и поведение производственного оборудования побитово совпадают.

Связанные темы