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.

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

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

xpcEthercatPositionControl

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

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

copyfile(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','CopleyMotorPositionConfig.xml'), '.', 'f' );
copyfile(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','xpcEthercatPositionControl.slx'), '.', 'f' );
mdl = 'xpcEthercatPositionControl';
mdlOpen = 0;
systems = find_system('type', 'block_diagram');
if isempty( strcmp(systems, mdl ) )
  mdlOpen = 1;
  open_system(mdl);
end

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

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

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

set_param('xpcEthercatPositionControl/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: xpcEthercatPositionControl
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: xpcEthercatPositionControl
### Created MLDATX ..\xpcEthercatPositionControl.mldatx
### Looking for target: TargetPC1
### Download model onto target: TargetPC1

Отобразите осциллографы целевого компьютера

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

  • Определите объем 1, отображает выводы Ethercat Init блок. См. документацию этого блока для значения отображенных значений.

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

Чтобы взять снимок состояния целевых осциллографов, введите:

tg.viewTargetScreen

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

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

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