Этот пример показывает, как управлять скоростью моторного использования коммуникация EtherCAT.
Чтобы запустить этот пример, вам нужна сеть EtherCAT, которая состоит из целевого компьютера как Ведущее устройство EtherCAT и AEP Accelnet™ диск 180-18 от Средств управления Копли как Ведомое устройство EtherCAT. Соедините поддерживаемое бесщеточное или двигатель кисти к диску. Двигатель в качестве примера, который работает с этим примером, является SM231BE-NFLN от PARKER.
Этот пример требует специализированной сетевой платы, которая установлена и доступна на целевом компьютере. Используйте специализированную карту для коммуникации EtherCAT. Специализированная карта в дополнение к карте, используемой для подключения Ethernet между разработкой и целевыми компьютерами.
Протестировать эту модель:
Соедините сетевой порт специализированной карты в целевом компьютере к порту EtherCAT IN диска Accelnet™.
Соедините двигатель с диском Accelnet™.
Убедитесь, что диск Accelnet™ предоставляется источником питания на 24 вольта.
Создайте и загрузите модель на цель.
Для полного примера, который конфигурирует сеть EtherCAT, конфигурирует модель главного узла EtherCAT и создает, затем запускает приложение реального времени, смотрите Simulink Real-Time документация EtherCAT.
Чтобы открыть модель, в Командном окне, введите:
open_system ('xpcEthercatVelocityControl')
Эта модель отправляет переменную скоростную команду в диск.
Блок инициализации EtherCAT требует, чтобы настройка файл ENI присутствовала в текущей папке. Скопируйте конфигурационный файл в качестве примера от папки в качестве примера до текущей папки. Затем откройте модель.
copyfile(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','CopleyMotorVelocityConfig.xml'), '.', 'f' ); copyfile(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','xpcEthercatVelocityControl.slx'), '.', 'f' ); mdl = 'xpcEthercatVelocityControl'; mdlOpen = 0; systems = find_system('type', 'block_diagram'); if isempty( strcmp(systems, mdl ) ) mdlOpen = 1; open_system(mdl); set_param('xpcEthercatVelocityControl/EtherCAT Init ','pci_bus','5','pci_slot','0','pci_function','0') end
Рисунок 1: модель EtherCAT для моторного скоростного управления.
Откройте маску для блока EtherCAT Init
и обеспечьте необходимые значения для номеров шины PCI и номера слота для сетевой платы, используемой для коммуникации EtherCAT. Чтобы получить эти значения, в Командном окне вводят tg.getPCIInfo('ethernet')
. Команда в качестве примера, чтобы установить параметры конфигурации для блока EtherCAT Init
:
set_param('xpcEthercatVelocityControl/EtherCAT Init ','pci_bus','5','pci_slot','0','pci_function','0')
Используя сторонний конфигуратор EtherCAT, который вы устанавливаете на компьютере разработчика, сгенерируйте конфигурационный файл EtherCAT CopleyMotorVelocityConfig.xml
.
Этот файл описывает сеть ведущему устройству. Для получения дополнительной информации смотрите Simulink Real-Time документация EtherCAT.
Обзор процесса для создания конфигурационного файла в конфигураторе EtherCAT:
Соедините сеть EtherCAT (состоящий из диска Accelnet™ в этом примере) к компьютеру, где конфигуратор EtherCAT установлен, и отсканируйте сеть, чтобы обнаружить соединенные ведомые устройства.
Выберите передачу и получите переменные Process Data Object (PDO), к которым получат доступ от диска Accelnet™.
Задайте по крайней мере одну циклическую задачу и сопоставьте выбранные переменные PDO к задаче.
Экспортируйте конфигурационный файл в XML-файл. Убедитесь, что имя XML-файла отличается от имени вашей модели Simulink®.
Каждый конфигурационный файл EtherCAT характерен для точной сетевой настройки, для которой он был создан (например, сеть, обнаруженная на шаге 1 создания конфигурационного файла). Конфигурационный файл предусмотрел этот пример, допустимо, если и только если сеть EtherCAT состоит из диска AEP Accelnet™ от Средств управления Копли.
В данном примере три получают переменные PDO, задаются и используются в трех блоках EtherCAT PDO Transmit
: Управляющее слово, Режимы работы и Целевая Скорость.
Переменная Control Word PDO служит, чтобы управлять состоянием диска. Постоянное значение 15 дано как вход к блоку, чтобы установить первые 4 бита на 1 включать диск. Обратитесь к руководству CANOpen от Средств управления Копли для получения дополнительной информации об отображении битов этой переменной.
Переменная Modes of Operation PDO служит, чтобы установить рабочий режим диска. Постоянное значение 3 дано как вход к блоку, чтобы установить режим диска к 'Режиму Profile Velocity'. Обратитесь к руководству CANOpen от Средств управления Копли для получения дополнительной информации о поддерживаемых режимах работы.
Переменная Target Velocity PDO служит, чтобы установить желаемую скорость. В этом примере скоростная команда во входе блока может быть настроена через блок усиления.
Три переменные PDO передачи также задаются в конфигурационном файле и используются в трех блоках EtherCAT PDO Receive
: Состояние Word, Фактическая Моторная Скорость и Фактическое Моторное Положение.
Переменная Status Word PDO указывает на текущее состояние диска.
Переменные Actual Motor Velocity и Actual Motor Position PDO указывают на текущие значения моторной скорости и позиции чтения в диске.
Убедитесь, что необходимая передача и получает переменные PDO, выбраны в блоках, как проиллюстрировано в рисунке 1 прежде, чем запустить пример. (Вы могли должны быть обновить эти переменные.)
Создайте модель и загрузите на целевой компьютер. Затем запустите модель.
set_param(mdl,'RTWVerbose','off'); rtwbuild(mdl); tg.start;
### Starting Simulink Real-Time build procedure for model: xpcEthercatVelocityControl Warning: This model contains blocks that do not handle sample time changes at runtime. To avoid incorrect results, only change the sample time in the original model, then rebuild the model. ### Successful completion of build procedure for model: xpcEthercatVelocityControl ### Created MLDATX ..\xpcEthercatVelocityControl.mldatx ### Looking for target: TargetPC1 ### Download model onto target: TargetPC1
Скоростная команда для двигателя является низкочастотной синусоидой. Фактическое скоростное чтение назад от диспетчера задерживается одним шагом расчета, и фактическое положение не совпадает 90 градусами скорости, как ожидалось.
pause(20);
Возьмите снимок состояния видеодисплея целевого компьютера.
Определите объем 1, отображает выводы блока Ethercat Init
. См. документацию этого блока для значения отображенных значений.
Определите объем 2 отображений переменные PDO, полученные и переданные к диску, когда-то диск инициализирует, и состояние переходит к состоянию Op (=8)
Чтобы взять снимок состояния целевых осциллографов, введите:
tg.viewTargetScreen
Когда пример завершит свое выполнение, остановите и закройте модель.
tg.stop; if (mdlOpen) save_system(mdl); close_system(mdl); end