Этот пример показывает, как связаться с устройствами EtherCAT с помощью аналоговых терминалов EL3062 и EL4002 ввода-вывода Beckhoff®.
Чтобы запустить этот пример, вам нужна сеть EtherCAT, которая состоит из целевого компьютера как Ведущее устройство EtherCAT и два аналоговых входа / выходные терминалы EL3062 и EL4002 как Ведомые устройства EtherCAT. Этот пример требует специализированной сетевой платы, которая установлена и доступна на целевом компьютере. Используйте специализированную карту для коммуникации EtherCAT. Специализированная карта в дополнение к карте, используемой для подключения Ethernet между разработкой и целевыми компьютерами.
Протестировать эту модель:
Соедините сетевой порт специализированной карты в целевом компьютере к порту сети IN разветвителя Beckoff® EK1100.
Соберите терминалы EL3062 и EL4002 с разветвителем EK1100.
Цикл поддерживает порты I/O: Соедините каждый выходной порт Терминала EL4002 к соответствующему входному порту Терминала EL3062.
Убедитесь, что терминалы предоставляются необходимым источником питания на 24 вольта.
Создайте и загрузите модель на цель.
Для полного примера, который конфигурирует сеть EtherCAT, конфигурирует модель главного узла EtherCAT и создает, затем запускает приложение реального времени, смотрите Simulink Real-Time документация EtherCAT.
Чтобы открыть модель, в Командном окне, введите:
Эта модель создает два синусоидальных сигнала и отправляет сигналы в терминал EL4002. Затем модель получает значения входного сигнала от терминала EL3062.
Блок инициализации EtherCAT требует, чтобы настройка файл ENI присутствовала в текущей папке. Скопируйте конфигурационный файл в качестве примера от папки в качестве примера до текущей папки. Затем откройте модель.
copyfile(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','BeckhoffAIOconfig.xml'), '.', 'f' ); copyfile(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','xpcEthercatBeckhoffAIO.slx'), '.', 'f' ); mdl = 'xpcEthercatBeckhoffAIO'; mdlOpen = 0; systems = find_system('type', 'block_diagram'); if isempty( strcmp(systems, mdl ) ) mdlOpen = 1; open_system(mdl); end
Рисунок 1: модель EtherCAT с помощью аналоговых ведомых устройств ввода-вывода Beckhoff® EL3062 и EL40002.
Откройте маску для блока EtherCAT Init
и обеспечьте необходимые значения для номеров шины PCI и номера слота для сетевой платы, используемой для коммуникации EtherCAT. Получить эти значения, в Командном окне, tg.getPCIInfo('ethernet')
типа. Команда в качестве примера, чтобы установить параметры конфигурации для блока EtherCAT Init
:
set_param('xpcEthercatBeckhoffAIO/EtherCAT Init ','pci_bus','5','pci_slot','0','pci_function','0')
Используя сторонний конфигуратор EtherCAT, который вы устанавливаете на компьютере разработчика, сгенерируйте конфигурационный файл EtherCAT BeckhoffAIOconfig.xml
. Этот файл описывает сеть ведущему устройству. Обзор процесса для создания конфигурационного файла в конфигураторе EtherCAT:
Соедините сеть (состоящий из терминалов EK1100, EL3062 и EL4002 в этом примере) к компьютеру, где конфигуратор EtherCAT установлен, и отсканируйте сеть, чтобы обнаружить подключенные устройства.
Выберите передачу и получите переменные, к которым получат доступ как сигналы от терминалов IO.
Задайте по крайней мере одну циклическую задачу, выберите уровень выполнения задачи и сопоставьте желаемые переменные ввода/вывода к задаче. Эти переменные ввода/вывода должны принадлежать ранее заданному, передают/получают PDOs (например, PDOs, заданный на шаге 2) и быть соединенным с необходимыми терминалами. Вы только должны, чтобы выбрать одну переменную из каждого PDO, чтобы сделать каждую переменную в этом PDO доступный.
Экспортируйте конфигурационный файл в XML-файл. Убедитесь, что имя XML-файла отличается от имени вашей модели Simulink®.
Каждый конфигурационный файл EtherCAT характерен для точной сетевой настройки, для которой он был создан (например, сеть, обнаруженная на шаге 1 процесса создания конфигурационного файла). Конфигурационный файл предусмотрел этот пример, допустимо, если и только если сеть EtherCAT состоит из терминалов EK1100, EL3062 и EL4002.
Конфигурационный файл задает набор передачи, и получите переменные. В данном примере ряд получает переменные, заданы для каждого входного канала терминала EL3062. Убедитесь переменные для канала 1 и канала, 2 из терминала EL3062 выбраны соответственно в двух блоках EtherCAT PDO Receive
. Эти две переменные являются 'Термином 2 (EL3062).AI Стандартный Канал 1. Значение' и 'Термин 2 (EL3062).AI Стандартный Канал 2. Значение. Таким же образом, набор переменных передачи заданы для двух выходных каналов терминала EL4002. Убедитесь переменные для канала 1 и канала, 2 из терминала EL4002 выбраны в двух блоках EtherCAT PDO Transmit
. Эти две переменные являются 'Термином 3 (EL4002).AO Выходной Канал 1. Аналоговый выход' и 'Термин 3 (EL4002).AO Выходной Канал 2. Аналоговый выход'.
Создайте модель и загрузите на целевой компьютер. Позвольте образцовому выполнению в течение 10 секунд
set_param(mdl,'RTWVerbose','off'); rtwbuild(mdl); tg.CommunicationTimeOut=20; tg.start; pause(10);
### Starting Simulink Real-Time build procedure for model: xpcEthercatBeckhoffAIO ### Generated code for 'xpcEthercatBeckhoffAIO' is up to date because no structural, parameter or code replacement library changes were found. ### Successful completion of build procedure for model: xpcEthercatBeckhoffAIO ### Created MLDATX ..\xpcEthercatBeckhoffAIO.mldatx ### Looking for target: TargetPC1 ### Download model onto target: TargetPC1
Возьмите снимок состояния видеодисплея целевого компьютера. Построенный сигналы, переданные к Терминалу EL4002 и полученные от Терминала EL3062. Как ожидалось переданные и полученные сигналы, отображенные на двух осциллографах, идентичны, кроме смещения, введенного задержкой передачи.
Определите объем 1, отображает выводы блока Ethercat Init
. См. документацию этого блока для значения отображенных значений.
Определите объем 2 отображений синусоиды, сгенерированные приложением и отправленные в каналы 1 и 2 из Терминала EL4002 Ведущим устройством.
Определите объем 3 отображений синусоиды, полученные от каналов 1 и 2 из Терминала EL3062 через внешние проводные связи.
Чтобы взять снимок состояния целевых осциллографов, введите:
tg.viewTargetScreen
Когда пример завершит свое выполнение, остановите и закройте модель.
tg.stop; if (mdlOpen) save_system(mdl); close_system(mdl); end