Сконфигурируйте процессор в цикле (PIL) для пользовательской цели

Создайте целевую настройку возможности соединения при помощи целевых API возможности соединения. С целевой настройкой возможности соединения можно запустить процессор в цикле (PIL) симуляции на пользовательском встроенном оборудовании.

Вы учитесь как:

  • Адаптируйте процесс сборки, чтобы поддержать PIL симуляции.

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

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

Начните с модели, сконфигурированной для программного обеспечения в цикле (SIL) симуляцию. Этот пример проводит вас по процессу создания целевой настройки возможности соединения так, чтобы можно было симулировать модель в режиме PIL. Пример запускается полностью на вашем хосте - компьютере. Можно выполнить те же шаги, чтобы создать настройку возможности соединения для собственного оборудования целевого процессора.

См. также Тестовый Сгенерированный код с SIL и PIL симуляциями и Создайте Целевой Канал связи для Процессора В Цикле (PIL) Симуляция.

Предварительные выборы

Позже в этом примере, вы добавите папку в путь поиска файлов. Создайте путь к папке.

sl_customization_path = fullfile(matlabroot,...
    'toolbox',...
    'rtw',...
    'rtwdemos',...
    'pil_demo');

Если эта папка уже находится на пути поиска файлов, удалите его.

if strfind(path,sl_customization_path)
    rmpath(sl_customization_path)
end

Сбросьте индивидуальные настройки.

sl_refresh_customizations

Создайте временную папку (во временной папке вашей системы) для сборки и инспекционного процесса.

currentDir = pwd;
rtwdemodir();

Протестируйте сгенерированный код с SIL симуляцией

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

Убедитесь, что модель в качестве примера недавно открыта.

close_system('rtwdemo_sil_modelblock',0);
close_system('rtwdemo_sil_counter',0)
open_system('rtwdemo_sil_modelblock')

Блок Model CounterA отображает текст (SIL), который указывает, что его модель, на которую ссылаются, сконфигурирована для SIL симуляции.

Запустите симуляцию системы.

set_param('rtwdemo_sil_modelblock','StopTime','10');
sim('rtwdemo_sil_modelblock');
### Starting build procedure for model: rtwdemo_sil_counter
### Successful completion of build procedure for model: rtwdemo_sil_counter
### Preparing to start SIL simulation ...
Building with 'Microsoft Visual C++ 2017 (C)'.
MEX completed successfully.
### Updating code generation report with SIL files ...
### Starting SIL simulation for component: rtwdemo_sil_counter
### Stopping SIL simulation for component: rtwdemo_sil_counter

Целевая настройка возможности соединения

Запустите работают над целевой настройкой возможности соединения для PIL.

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

src_dir = ...
    fullfile(matlabroot,'toolbox','coder','simulinkcoder','+coder','+mypil');
if exist(fullfile('.','+mypil'),'dir')
    rmdir('+mypil','s')
end
mkdir +mypil
copyfile(fullfile(src_dir,'Launcher.m'), '+mypil');
copyfile(fullfile(src_dir,'TargetApplicationFramework.m'), '+mypil');
copyfile(fullfile(src_dir,'ConnectivityConfig.m'), '+mypil');

Сделайте скопированные файлы перезаписываемыми.

fileattrib(fullfile('+mypil', '*'),'+w');

Обновите имя пакета, чтобы отразить новое местоположение файлов.

coder.mypil.Utils.UpdateClassName(...
    './+mypil/ConnectivityConfig.m',...
    'coder.mypil',...
    'mypil');

Проверьте, что у вас теперь есть папка +mypil в текущей папке, которая имеет файлы Launcher.m, TargetApplicationFramework.m и ConnectivityConfig.m.

dir './+mypil'
.                             Launcher.m                    
..                            TargetApplicationFramework.m  
ConnectivityConfig.m          

Рассмотрите код, чтобы запустить исполняемый файл PIL

Класс, который конфигурирует инструмент для запуска исполняемого файла PIL, является mypil.Launcher. Откройте этот класс в редакторе.

edit(which('mypil.Launcher'))

Рассмотрите содержимое этого файла. Метод setArgString предоставляет дополнительные параметры командной строки к исполняемому файлу. Эти параметры могут включать номер порта TCP/IP. Для реализации встраиваемого процессора можно выбрать к твердому коду эти настройки.

Сконфигурируйте полную целевую настройку возможности соединения

Просмотрите класс mypil.ConnectivityConfig.

edit(which('mypil.ConnectivityConfig'))

Рассмотрите содержимое этого файла. Необходимо смочь идентифицировать:

  • Создание экземпляра rtw.connectivity.RtIOStreamHostCommunicator, который конфигурирует сторону хоста коммуникационного канала TCP/IP.

  • Вызов setArgString метода Средства запуска, которое конфигурирует целевую сторону коммуникационного канала TCP/IP.

  • Вызов setTimer, который конфигурирует таймер для измерения времени выполнения

Чтобы задать ваш собственный целевой таймер в течение времени выполнения, профилируя, необходимо пользоваться Заменяющей Библиотекой Кода, чтобы задать замену для функции code_profile_read_timer. Используйте API командной строки или crtool пользовательский интерфейс.

Рассмотрите коммуникационные драйверы Целевой Стороны

Просмотрите файл rtiostream_tcpip.c.

rtiostreamtcpip_dir=fullfile(matlabroot,'toolbox','coder','rtiostream','src',...
    'rtiostreamtcpip');
edit(fullfile(rtiostreamtcpip_dir,'rtiostream_tcpip.c'))

Прокрутите вниз в конец этого файла. Смотрите, что этот файл содержит реализацию TCP/IP функций rtIOStreamOpen, rtIOStreamSend, и rtIOStreamRecv. Эти функции требуются для целевого компьютера связаться с вашим хостом - компьютером. Необходимо обеспечить реализацию для каждой из этих функций, которая характерна для целевого компьютера и канала связи.

Добавьте коммуникационные драйверы Целевой Стороны в настройку возможности соединения

Класс, который конфигурирует дополнительные файлы, чтобы включать в сборку, является mypil.TargetApplicationFramework. Откройте этот класс в редакторе.

edit(which('mypil.TargetApplicationFramework'))

Используйте sl_customization, чтобы Указать Целевую Настройку Возможности соединения

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

Можно просмотреть sl_customization файл. В данном примере вы не должны вносить изменения в файл.

edit(fullfile(sl_customization_path,'sl_customization.m'))

Добавьте sl_customization папку в путь поиска файлов и обновите индивидуальные настройки.

addpath(sl_customization_path);
sl_refresh_customizations;

Протестируйте сгенерированный код с PIL симуляцией

Запустите PIL симуляцию.

close_system('rtwdemo_sil_modelblock',0)
open_system('rtwdemo_sil_modelblock')
set_param('rtwdemo_sil_modelblock/CounterA','SimulationMode','processor-in-the-loop (pil)');
set_param('rtwdemo_sil_modelblock','StopTime','10');
sim('rtwdemo_sil_modelblock');
### Starting build procedure for model: rtwdemo_sil_counter
### Generated code for 'rtwdemo_sil_counter' is up to date because no structural, parameter or code replacement library changes were found.
### Successful completion of build procedure for model: rtwdemo_sil_counter
### Connectivity configuration for referenced model "rtwdemo_sil_counter": My PIL Example ###
EXECUTING METHOD SETARGSTRING
SETARGSTRING called from line 71 of ConnectivityConfig.m
### Preparing to start PIL simulation ...
Building with 'Microsoft Visual C++ 2017 (C)'.
MEX completed successfully.
### Updating code generation report with PIL files ...
### Starting application: 'rtwdemo_sil_counter_ert_rtw\pil\rtwdemo_sil_counter.exe'
Starting PIL simulation
Started new process, pid = 14132
Stopping PIL simulation
Terminated process, pid = 14132

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

Очистка

Удалите путь поиска файлов для этого примера.

rmpath(sl_customization_path)

Сбросьте индивидуальные настройки.

sl_refresh_customizations

Закройте модели.

close_system('rtwdemo_sil_modelblock',0)
close_system('rtwdemo_sil_counter',0)

rtwdemoclean;
cd(currentDir)

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте