exponenta event banner

Многоядерное программирование полевого управления на Zynq

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

Введение

В этом примере показан рабочий процесс создания кода для алгоритма управления двигателем и тестирования созданного кода на оценочной плате Xilinx ® Zynq™-7000 SoC ZC702. Алгоритм управления двигателем в данном примере представляет собой полевой алгоритм управления, состоящий из регулятора скорости (быстрый компонент) и регулятора крутящего момента (медленный компонент). Одним из типичных процессов является создание кода для этих двух компонентов контроллера, загрузка сгенерированного кода на оценочную плату, а затем подключение оценочной платы к реальному двигателю. Этот рабочий процесс показан на блок-схеме ниже.

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

В примере предполагается, что к компьютеру подключена плата для оценки Xilinx ® Zynq™-7000 SoC ZC702. Шаги подключения и установки можно найти в документации по установке поддержки платформы Xilinx Zynq (пакет поддержки встроенного кодера для платформы Xilinx Zynq).

Этот пример требует, чтобы Вложенный Coder™ сгенерировал многопоточный код, HDL Coder™, чтобы сгенерировать код HDL и Власть Simscape Systems™, чтобы смоделировать постоянный магнит синхронная машина в примере. Невозможно создать код HDL в системах Macintosh.

Пример модели

Пример модели состоит из двух областей Simulink. В области синхронной машины с постоянным магнитом имеется два блока: блок «Входы скорости и крутящего момента», который обеспечивает исходные входы в систему обратной связи, и блок «Инвертор и двигатель», который является установкой, которую мы стремимся контролировать в этом примере. Блок «Инвертор и двигатель» также содержит периферийные устройства: область, которая может использоваться для исследования результатов моделирования и отправителя UDP. Сгенерированный код для отправителя UDP отвечает за отправку данных моделирования с платы оценки Zynq ZC702 на хост-машину. Полевое управление содержит блоки контроллера «Контроллер скорости» и «Контроллер крутящего момента». Для загрузки модели введите

slexFocZynqExample

Определение архитектуры

Целевой архитектурой в примере является оценочный комплект Xilinx Zynq ZC702. Это можно проверить, открыв диалоговое окно «Одновременное выполнение».

На вкладке Моделирование (Modeling) выберите Параметры модели (Model Settings). В диалоговом окне Параметры конфигурации модели (Model Configuration Parameters) на вкладке Решатель (Solver) выберите Разрешить одновременное выполнение задач в целевом объекте (Allow tasks to constracturly on target), затем щелкните Настроить задачи (Configure Tasks).

Плата оценки имеет процессор ARM Cortex-A9 и программируемую на месте матрицу вентилей (FPGA). На процессоре ARM выполняются две задачи. «Контроллер крутящего момента» сопоставляется с первой задачей, а блоки, составляющие установку (блок «Входы скорости и крутящего момента» и блок «Инвертор и двигатель»), сопоставляются со второй задачей. «Контроллер скорости», который работает на высокой частоте в контуре управления, отображается на FPGA. Эти настройки можно изменить в разделе «Задачи и сопоставление» диалогового окна «Одновременное выполнение».

Создание многопоточного кода и кода HDL

Введите Ctrl-B или выберите Deploy to Hardware, чтобы создать многопоточный код и код HDL. Сгенерированный исполняемый файл и битовый поток FPGA будут автоматически загружены на плату Zynq. Для выполнения этого шага требуется подключение платы Zynq к компьютеру и правильная настройка среды. Дополнительные сведения см. в разделе Поддержка установки платформы Xilinx Zynq (пакет поддержки встроенного кодера для платформы Xilinx Zynq).

Получение данных из Zynq

Откройте область, выбрав Показать результаты моделирования (View Simulation Results), и запустите моделирование для получения следующих выходных данных.

Сравните выходные данные моделирования с выходными данными исполняемого файла, запускаемого на плате Zynq ZC702. Чтобы выполнить это сравнение, перейдите к модели приемника UDP, выбрав Просмотр результатов развертывания. После выбора модели приемника UDP выполните моделирование. Команда run посылает сигнал на плату Zynq ZC702 для запуска исполняемого файла на плате. Данные моделирования передаются через UDP с платы Zynq ZC702 на хост-компьютер. Захваченный сигнал UDP отображается в области модели приемника UDP.

Закрыть модель

close_system('slexFocZynqExample', 0);