exponenta event banner

Проверка SIL и PIL для развертывания на малиновом Pi

В этом примере показано, как проверить сгенерированный код с помощью выполнения команд software-in-the-loop (SIL) и processor-in-the-loop (PIL). В этом примере выполнение PIL использует аппаратную плату Raspberry Pi ®.

Выполнить код MATLAB

В этом примере используются следующие вспомогательные файлы:

  • kalman01.m содержит функцию MATLAB ®kalman01 для оценщика Калмана.

  • position.mat содержит входные данные о траектории объекта.

  • test01_ui.m - сценарий MATLAB, загружающий входные данные из position.mat в рабочую область, вызовы kalman01 для оценки местоположения объекта с помощью алгоритма фильтрации Калмана и, наконец, вызывает plot_trajectory функция, отображающая как фактическую траекторию объекта, так и оценку Калмана.

  • plot_trajectory.m содержит plot_trajectory функция, описанная выше.

Для тестирования кода MATLAB запустите сценарий test01_ui.

test01_ui
Current plot held

Current plot released

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

Дополнительные сведения см. в разделе Генерация кода C для алгоритма фильтрации Калмана MATLAB.

Выполнение программного обеспечения в цикле (SIL)

При выполнении SIL через интерфейс MATLAB SIL генератор кода компилирует и запускает библиотечный код на компьютере разработчика.

Конфигурирование выполнения SIL

Создать coder.EmbeddedCodeConfig для создания статической библиотеки C. Установите VerificationMode свойство для 'SIL'. При необходимости включите отладчик Microsoft ® Visual Studio ® для выполнения SIL.

config = coder.config('lib');
config.VerificationMode = 'SIL';
% config.SILDebugging = true;

Убедитесь, что для производственного оборудования установлено значение по умолчанию 'Generic->MATLAB Host Computer'.

disp(config.HardwareImplementation.ProdHWDeviceType); 
Generic->MATLAB Host Computer

Создание статической библиотеки и выполнение SIL

Используйте codegen с объектом конфигурации config для создания статической библиотеки C и интерфейса SIL для kalman01 функция. Для выполнения SIL можно просто вызвать сгенерированный интерфейс SIL. kalman01_sil в командной строке MATLAB.

В codegen команда, -test позволяет запустить тестовый сценарий test01_ui с вызовами kalman01 функция заменена вызовами сгенерированного интерфейса SIL kalman01_sil.

codegen -config config -args {zeros(2,1)} kalman01 -report -test test01_ui 
Code generation successful: View report

Running test file: 'test01_ui' with MEX function 'kalman01_sil.mexw64'.
Current plot held
### Starting SIL execution for 'kalman01'
    To terminate execution: clear kalman01_sil

Current plot released

Генератор кода создает следующие папки вывода:

  • codegen\lib\kalman01 - Статическая библиотека для kalman01.

  • codegen\lib\kalman01\sil - Код интерфейса SIL для kalman01.

Обратите внимание, что выходные данные этого прогона соответствуют выходным данным из kalman01 Функция MATLAB.

Код отладки во время выполнения SIL

Если включить отладчик Microsoft Visual Studio, то запуск тестового файла откроет среду IDE Microsoft Visual Studio с точками останова отладчика в начале kalman01_initialize и kalman01 функции.

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

Для завершения сеанса отладки:

  • Удалите все точки останова.

  • Нажмите кнопку «Продолжить» (F5).

Выполнение SIL завершается.

Завершение выполнения SIL

Завершите процесс выполнения SIL.

clear kalman01_sil;
### Stopping SIL execution for 'kalman01'

Также можно использовать команду clear mex, который очищает функции MEX от памяти.

Примечания по использованию платформы Windows ®

Примечания по использованию для выполнения SIL на платформе Windows:

  • Брандмауэр Windows потенциально может блокировать выполнение SIL. Чтобы разрешить выполнение, используйте диалоговое окно Предупреждение безопасности Windows. Например, в Windows 7 щелкните Разрешить доступ.

  • Предположим, что текущая рабочая папка MATLAB (папка, pwd ) - UNC-путь (например, \\server\a\b\c) на платформе Windows. При запуске исполняемого файла SIL по этому пути расположение, в котором запускается исполняемый файл SIL, может быть непредсказуемым и отличаться от текущего рабочего каталога MATLAB (например, C:\Windows). Чтобы устранить эту проблему, используйте сопоставленный сетевой диск для UNC-пути в качестве текущей рабочей папки MATLAB.

Выполнение процессора в петле (PIL)

При выполнении PIL через интерфейс MATLAB PIL генератор кода выполняет перекрестную компиляцию и запускает код производственного объекта на целевом процессоре или имитаторе эквивалентного набора команд. Перед выполнением PIL необходимо настроить конфигурацию подключения PIL для целевого объекта. В этом примере выполнение PIL использует аппаратную плату Raspberry Pi ®.

Конфигурирование выполнения PIL

Создать coder.EmbeddedCodeConfig для создания статической библиотеки C. Установите VerificationMode свойство для 'PIL'. Установите Hardware свойство объекта конфигурации платы аппаратных средств для Raspberry Pi.

config = coder.config('lib');
config.VerificationMode = 'PIL';
config.Hardware = coder.hardware('Raspberry Pi');

При первом подключении к аппаратной плате Raspherry Pi необходимо также указать Username, DeviceAddress, и Password свойства config.Hardware параметр.

Создание статической библиотеки и выполнение PIL

Используйте codegen с объектом конфигурации config для создания статической библиотеки C и интерфейса PIL для kalman01 функция. Для выполнения PIL можно просто вызвать сгенерированный интерфейс PIL. kalman01_pil в командной строке MATLAB.

В codegen команда, -test позволяет запустить тестовый сценарий test01_ui с вызовами kalman01 функция заменена вызовами сгенерированного интерфейса PIL kalman01_pil.

codegen -config config -args {zeros(2,1)} kalman01 -report -test test01_ui 
### Connectivity configuration for function 'kalman01': 'Raspberry Pi'
Location of the generated elf : /home/pi/MATLAB_ws/R2021a/C/Users/aghosh/Documents/ExampleManager/aghosh.Bdoc21a.j1630849/ecoder-ex65983262/codegen/lib/kalman01/pil
Code generation successful: View report

Running test file: 'test01_ui' with MEX function 'kalman01_pil.mexw64'.
Current plot held
### Connectivity configuration for function 'kalman01': 'Raspberry Pi'
### Starting application: 'codegen\lib\kalman01\pil\kalman01.elf'
    To terminate execution: clear kalman01_pil
### Launching application kalman01.elf...

Current plot released

Генератор кода создает следующие папки вывода:

  • codegen\lib\kalman01 - Статическая библиотека для kalman01.

  • codegen\lib\kalman01\pil - Код интерфейса PIL для kalman01.

Обратите внимание, что выходные данные этого прогона соответствуют выходным данным из kalman01 Функция MATLAB.

Брандмауэр Windows потенциально может блокировать выполнение PIL. Чтобы разрешить выполнение, используйте диалоговое окно Предупреждение безопасности Windows. Например, в Windows 7 щелкните Разрешить доступ.

Завершение выполнения PIL

Завершите процесс выполнения PIL.

clear kalman01_pil;
### Host application produced the following standard output (stdout) and standard error (stderr) messages:

Также можно использовать команду clear mex, который очищает функции MEX от памяти.

См. также

| |

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