EtherCAT® Communication - Моторное управление положением с диском Accelnet™ и устройствами Beckhoff® Analog IO

В этом примере показано, как управлять положением моторного использования коммуникация EtherCAT.

Требования

Чтобы запустить этот пример, вам нужна сеть EtherCAT, которая состоит из целевого компьютера как Ведущее устройство EtherCAT и AEP Accelnet™ диск 180-18 от Средств управления Копли как Ведомое устройство EtherCAT. Соедините поддерживаемое бесщеточное или двигатель кисти к диску. Двигатель в качестве примера, который работает с этим примером, является SM231BE-NFLN от PARKER.

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

Протестировать эту модель:

  1. Соедините сетевой порт специализированной карты в целевом компьютере к порту EtherCAT IN диска Accelnet™.

  2. Соедините порт EtherCAT OUT диска Accelnet™ к порту EtherCAT IN разветвителя Beckhoff® EK1100.

  3. Соберите разветвитель Beckhoff® EK1100 и терминалы EL3062 и EL4002 Beckoff® IO.

  4. Соедините двигатель с Диском Accelnet™.

  5. Соедините предоставление переменной мощности с Input port 1 терминала EL3062.

  6. Убедитесь диск Accelnet™ и терминалы Beckhoff® предоставляются источником питания на 24 вольта.

  7. Создайте и загрузите модель на цель.

Для полного примера, который конфигурирует сеть EtherCAT, конфигурирует модель главного узла EtherCAT и создает, затем запускает приложение реального времени, смотрите Simulink Real-Time документация EtherCAT.

Откройте модель

Чтобы открыть модель, в Командном окне, введите:

slrtex_ethercat_position_control

Эта модель создает синусоиду и модулирует ее путем умножения значением сигнала, существующего в первом входном порту Терминала EL3062. Модулируемый сигнал отправляется как моторная команда положения в диск.

Блок инициализации EtherCAT требует, чтобы настройка файл ENI присутствовала в текущей папке. Откройте модель.

mdl = 'slrtex_ethercat_position_control';
mdlOpen = 0;
systems = find_system('type', 'block_diagram');
if isempty( strcmp(systems, mdl ) )
  mdlOpen = 1;
  open_system(fullfile(matlabroot,'toolbox','slrt','slrtexamples','slrtex_ethercat_position_control'));
end

Рисунок 1: модель EtherCAT для управления положением двигателя через терминал аналогового входа.

Сконфигурируйте модель

Откройте маску для EtherCAT Init блокируйте и введите необходимые значения для номеров шины PCI и номера слота для сетевой платы, используемой в коммуникации EtherCAT. Получить эти значения, в Командном окне, tg.getPCIInfo('all') типа. Команда в качестве примера, чтобы установить параметры конфигурации для EtherCAT Init блок:

set_param('slrtex_ethercat_position_control/EtherCAT Init ','pci_bus','5','pci_slot','0','pci_function','0')

Опишите сеть с конфигуратором

Используя сторонний конфигуратор EtherCAT, который вы устанавливаете на компьютере разработчика, сгенерируйте конфигурационный файл EtherCAT CopleyMotorPositionConfig.xml.

Этот файл описывает сеть ведущему устройству. Для получения дополнительной информации смотрите Simulink Real-Time документация EtherCAT.

Обзор процесса для создания конфигурационного файла в конфигураторе EtherCAT:

  1. Соедините сеть EtherCAT (состоящий из диска Accelnet, терминала EK1100, EL3062 и EL4002 в этом примере) к компьютеру, где конфигуратор EtherCAT установлен, и отсканируйте сеть, чтобы обнаружить соединенные ведомые устройства.

  2. Выберите передачу и получите переменные, к которым получат доступ как сигналы от терминалов Beckhoff® IO и переменных Process Data Objects (PDOs), к которым получат доступ от диска Accelnet™.

  3. Опишите по крайней мере одну циклическую задачу, выберите уровень выполнения задачи и сопоставьте выбранные переменные IO и PDO к задаче. Только необходимо выбрать одну переменную из каждого PDO, чтобы сделать каждую переменную в этом PDO доступный.

  4. Экспортируйте конфигурационный файл в XML-файл. Убедитесь, что имя XML-файла отличается от имени вашей модели Simulink®.

  5. Закройте или отключите конфигуратор от сети EtherCAT, или вы могли получить интерференцию между Simulink Real-Time и конфигуратором.

Каждый конфигурационный файл EtherCAT характерен для точной сетевой настройки, для которой он был создан. (Например, сеть обнаружена на шаге 1 процесса создания конфигурационного файла.) Конфигурационный файл предусмотрел этот пример, допустимо, если и только если сеть EtherCAT состоит из диска Accelnet™ от Средств управления Копли и терминалов EK1100, EL3062 и EL4002 от Beckhoff®.

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

  • Переменная Control Word PDO служит, чтобы управлять состоянием диска. Постоянное значение 15 дано как вход с блоком, чтобы установить первые 4 бита на 1 включать диск. Обратитесь к руководству CANOpen от Средств управления Копли для получения дополнительной информации об отображении битов этой переменной.

  • Переменная Modes of Operation PDO служит, чтобы установить рабочий режим диска. Постоянное значение 8 дано как вход с блоком, чтобы установить режим диска к 'Циклическому режиму Synchronous Position'. Обратитесь к руководству CANOpen от Средств управления Копли для получения дополнительной информации о поддерживаемых режимах работы.

  • Переменная Profile Target Position PDO служит, чтобы установить желаемое положение. В этом примере команда положения, данная как вход с блоком, является синусоидой, модулируемой чтением сигнала в первом входном канале терминала EL3062.

Переменные PDO передачи также заданы в конфигурационном файле, и два используются в двух EtherCAT PDO Receive блоки: 'Фактическое Моторное Положение' для диска и 'Канала 1. Значение' для терминала EL3062. Переменная Actual Motor Position PDO указывает на текущее значение моторной позиции чтения в диске. Убедитесь необходимая передача и получите переменные PDO, выбраны в блоках прежде, чем запустить пример (вы могли должны быть обновить эти переменные).

Создайте, загрузите и запустите модель

Создайте модель и загрузите на целевой компьютер. Затем запустите модель. Позвольте запуску модели в течение 20 секунд.

set_param(mdl,'RTWVerbose','off');
rtwbuild(mdl);
tg = slrt('TargetPC1');
load(tg,mdl);
start(tg);
pause(20);
### Starting Simulink Real-Time build procedure for model: slrtex_ethercat_position_control
### Generated code for 'slrtex_ethercat_position_control' is up to date because no structural, parameter or code replacement library changes were found.
### Successful completion of build procedure for model: slrtex_ethercat_position_control
### Created MLDATX ..\slrtex_ethercat_position_control.mldatx

Отобразите сигналы в Инспекторе Данных моделирования

Команда положения для двигателя варьируется после модулируемой синусоиды. Двигатель поворачивается альтернативно в одном направлении и его противоположном. Путем варьирования амплитуды напряжения в Input port 1 терминала EL3062 между 0 и 10 вольт, амплитуды, которой положение двигателя изменяет увеличения или уменьшения в той же пропорции.

  • Трассировка Инициализации отображает выводы Ethercat Init блок. См. документацию этого блока для значения отображенных значений.

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

Чтобы просмотреть нанесенные на график данные сигнала, откройте Инспектора Данных моделирования.

Simulink.sdi.view

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

Это изображение показывает представление в качестве примера об Инспекторе Данных моделирования.

Остановите и закройте модель

Когда пример завершит свой запуск, остановите и закройте модель.

stop(tg);
if (mdlOpen)
  close_system(mdl);
end