В этом примере показано, как использовать блоки CoE и простой конечный автомат для записи значений строения в переменные, которые могут быть записаны только перед переходом в состояние Op EtherCAT. Для кода, необходимого для использования блоков SoE для ведомых устройств, которые понимают протокол SoE, смотрите EtherCAT ® Протокол секвенированной записи SoE ведомых переменных строения.
Для ведомых, которые понимают адресацию CoE, ограниченная способность читать или записывать конкретные объекты встречается несколько редко. Для рабов, которые понимают адресацию СнЭ, это ограничение является гораздо более распространенным.
Этот пример также показывает синхронизацию распределенных синхроимпульсов с использованием режима постоянного тока сдвига шины, где подчиненные устройства сдвигаются во времени, чтобы соответствовать времени выполнения ведущего устройства.
Чтобы запустить этот пример, вам нужна сеть EtherCAT, которая состоит из целевого компьютера в качестве ведущего устройства EtherCAT и по крайней мере одного ведомого устройства, имеющего объекты, адресованные CoE. Поставляемый файл ENI предназначен для ведомого стека с 5 элементами: EK1100 + EL1202 + EL2202 + EL3102 + EL4032.
Для EtherCAT в Simulink Real-Time требуется выделенный сетевой порт на целевом компьютере, который зарезервирован для EtherCAT с помощью инструмента строения Ethernet. Сконфигурируйте выделенный порт для связи EtherCAT, а не с IP-адресом. Выделенный порт должен отличаться от порта, используемого для подключения Ethernet между компьютерами компьютеров разработчика и целевыми компьютерами.
Чтобы протестировать эту модель:
Подключите порт, зарезервированный для EtherCAT на целевом компьютере, к порту IN EtherCAT EL1100 интерфейса.
Убедитесь, что EK1100 снабжен 24-вольтовым источником степени.
Создайте и загрузите модель в цель.
Полный пример, который конфигурирует сеть EtherCAT, конфигурирует модель главного узла EtherCAT, а затем создает приложение реального времени, см. в разделе Моделирование сетей EtherCAT.
Эта модель иллюстрирует, как можно читать или записывать в объекты CoE/SDO, если они доступны только для записи в состоянии EtherCAT PreOp. Можно переместить передачи CoE/SDO в состояние EtherCAT SafeOp путем изменения конечного состояния Инициализации в блоке EtherCAT Init, а также путем изменения константы в блоке Wait for this state constant. Эти настройки направляют конечный автомат на начало отправки сообщений CoE, когда он достигает конечного состояния инициализации.
Init = 1
PreOp = 2
SafeOp = 4
Op = 8
Блок инициализации EtherCAT требует, чтобы строение файл ENI присутствовало в текущей папке.
Если вы хотите изменить эту модель, чтобы экспериментировать с ней, скопируйте файл строения примера из папки примера в текущую папку. Чтобы открыть модель, в Командном Окне MATLAB, введите:
open_system(fullfile(matlabroot,'toolbox','slrealtime','examples','slrt_ex_ethercat_asyncCoE_cycle'))
Фигура 1: Модель EtherCAT для секвенирования через команды CoE после паузы инициализации в состоянии PreOp
Откройте диалоговое окно параметра для блока EtherCAT Init и наблюдайте предварительно настроенные значения. Ведомые устройства EtherCAT, которые соединены в цепочку вместе с кабелем Ethernet, являются Устройством, также называемым сетью EtherCAT. Индекс устройства выбирает одну такую сеть EtherCAT с цепочкой. Номер порта Ethernet определяет, какой порт Ethernet следует использовать для доступа к этому устройству. Блок EtherCAT Init соединяет эти два блока так, чтобы другие блоки EtherCAT использовали Индекс устройства для связи с ведомыми устройствами в этой сети EtherCAT.
Если у вас есть только одна подключенная сеть ведомых EtherCAT, и вы зарезервировали только один порт Ethernet с помощью инструмента строения Ethernet, используйте Device Index = 0 и Ethernet Port Number = 1.
Если вам нужно создать новый файл ENI, вам нужно использовать сторонний конфигуратор EtherCAT, такой как TwinCAT 3 от компании Beckhoff, который вы устанавливаете на компьютер разработчика. Файл строения EtherCAT (ENI), предварительно сконфигурированный для этой модели Stack4_BS_1ms.xml
.
Каждый файл ENI специфичен для точной настройки сети, из которой он был создан (для примера, сеть, обнаруженная в шаге 1 строения процесса создания файлов). Конфигурационный файл, предоставленный для этого примера, действителен тогда и только тогда, когда сеть EtherCAT состоит из EK1100 + EL1202 + EL2202 + EL3102 + EL4032. Если у вас есть другой набор ведомых устройств EtherCAT, этот пример работает, но вам нужно создать новый файл ENI, который использует ваши устройства.
Обзор процесса создания файла ENI см. в разделе Настройка сети EtherCAT при помощи TwinCAT 3.
Если вы используете различные ведомые устройства, необходимо обратиться к руководству по устройствам и найти отображение CoE. Используя это отображение, необходимо изменить команды SDO в командах SDO в порядок подсистеме, чтобы использовать объекты на ваших устройствах.
Чтобы создать, скачать и запустить модель:
В редакторе Simulink Editor из списка целей на вкладке Real-Time выберите целевой компьютер, на котором можно запустить приложение реального времени.
Нажмите Run on Target.
Если вы открываете две возможности на стороне хоста двойным нажатием каждого, данные передаются с целевого компьютера на компьютер разработчика и отображаются.
В модель включена возможность управления амплитудой циклического движения. С помощью кнопки Run on Target ползунок активен и соединен с Amplitude
постоянный блок.
Модель предварительно сконфигурирована, чтобы работать в течение 15 секунд. Если вы хотите запустить модель дольше, перетащите Запуск в меню Target и измените номер на нижней линии. Нажмите зеленую стрелу, чтобы сконфигурировать, создать и запустить.
Если запустить модель с помощью кнопки Run on Target, подключен внешний режим и можно дважды кликнуть блоки scope и увидеть данные на компьютере разработчика. The Display
блоки также работают.
При использовании запуска on Target блок Scope показывает ошибку синхронизации постоянного тока между главным кодом на целевом компьютере и первым ведомым устройством с поддержкой постоянного тока. Поскольку ошибка возвращается как наносекунда, этот график показывает, что различие во времени устанавливается до порядка 3-5 микросекунд (от 3000 до 5000 наносекунд) различия между ведомыми устройствами с поддержкой постоянного тока и целевой машиной, выполняющей код. Остаточное рассеяние отражает изменчивость планирования задач в RTOS целевого компьютера.
Scope1 показывает прогрессирование состояний EtherCAT, от простоя до Init до PreOp, SafeOp и, наконец, состояния Op. SafeOp вводится только кратко и появляется только как значение 4 для нескольких временных шагов перед переключением в состояние Op. Поскольку эта модель использует механизм распределенных синхроимпульсов, переключение в состояние Op происходит только тогда, когда ошибка синхронизации останавливается.
Scope2 показывает выходы состояния 5 асинхронных блоков SDO внутри подсистемы. Каждый блок SDO имеет возможность записи в течение одного временного шага, затем переключается на состояние = 1 (занято) в течение нескольких временных шагов, затем при успешном статусе завершения = 2 (сделано) в течение одного временного шага. Если блок сталкивается с ошибкой, состояние = 3 (ошибка) для одного временного шага. При ошибке блок встраиваемого кода MATLAB Cycle останавливает последовательность и устанавливает выход ошибки, которая останавливает модель. В этом случае отказавший блок выводит код ошибки, который отображается на Display1. Это отображение масштабируется в интервал сразу после того, как состояние перешло в состояние PreOp (= 2).
Scope3 показывает несколько выходов из блока Cycle control. Первые 5 являются разрешающими сигналами, верными по одному за раз управлением Циклом. Тогда выход oprequest равен true для одного временного шага, чтобы инициировать запрос на переход в состояние Op. Это отображение масштабируется до того же интервала, как и в Scope2.
Когда запрошенные команды SDO завершены и состояние переходит в состояние Op, завершенный сигнал устанавливается на true для оставшейся части выполнения. Остальная часть вашей модели входит в подсистему Op State Model.
Если вам нужно другое количество команд SDO для выполнения перед состоянием Op, вам нужно отредактировать блок встраиваемого кода MATLAB Cycle и изменить постоянный массив, который в данный момент имеет длину 5, так же как и количество запрашиваемых команд SDO.
Если вы запускаете модель из командной строки, можно использовать Данные Моделирования Inspector, чтобы просмотреть любой сигнал, который был отмечен для логгирования сигналов. Сигналы, отмеченные для логгирования сигнала, имеют точку с двумя дугами над ним в редакторе моделей.