В этом примере показано, как использовать блок EtherCAT Notifications для обнаружения отказа в подключенной сети и перезапуска сети при исправлении отказа.
Этот пример обнаруживает только отсоединенный кабель Ethernet в первый подчиненный сервер. Более сложные ситуации отказа могут быть обнаружены, если вы изучаете шаблон уведомлений, которые приводят, и записываете встроенный блок MATLAB, чтобы учесть их.
Чтобы запустить этот пример, как представлено, вам нужен EK1100 Beckhoff с EL1202, EL2202-0100, EL3102 и EL4032 ведомыми модулями. Модель не записывает ни в какие объекты процесса. Также работает замена файла ENI на файл, подходящий для вашей сети.
Для EtherCAT в Simulink Real-Time требуется выделенный сетевой порт на целевом компьютере, который зарезервирован для использования EtherCAT с помощью инструмента строения Ethernet. Сконфигурируйте выделенный порт для связи EtherCAT, а не с IP-адресом. Выделенный порт должен отличаться от порта, используемого для подключения Ethernet между компьютерами компьютеров разработчика и целевыми компьютерами.
Чтобы протестировать эту модель:
Подключите порт, зарезервированный для EtherCAT на целевом компьютере, к порту EtherCAT IN модуля EK1100 интерфейса.
Убедитесь, что EK1100 снабжен 24-вольтовым источником степени.
Создайте и загрузите модель в цель.
Полный пример, который конфигурирует сеть EtherCAT, конфигурирует модель главного узла EtherCAT, а затем создает приложение реального времени, см. в разделе Моделирование сетей EtherCAT.
Эта модель является началом полной реализации, чтобы поймать отказы в сети и повторно инициализировать сеть, когда отказ исправлен. Простой конечный автомат во встроенном блоке MATLAB может быть заменен реализацией State Flow, которая может быть необходима для более сложного обнаружения и восстановления отказа.
Блок инициализации EtherCAT требует, чтобы строение файл ENI присутствовало в текущей папке или в пути MATLAB, поскольку имя файла присутствует без директории информации.
Если вы хотите изменить эту модель, чтобы экспериментировать с ней, скопируйте файл строения примера и файл модели из папки примера в текущую папку. Чтобы открыть модель, в Командном Окне MATLAB, введите:
open_system(fullfile(matlabroot,'toolbox','slrealtime','examples','slrt_ex_ethercat_notifyreset'));
Фигура 1: Модель EtherCAT для обнаружения отсоединенного кабеля Ethernet на первом подчиненном устройстве и повторной инициализации сети после повторного подключения кабеля.
Откройте диалоговое окно параметра для блока 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 Beckhoff с EL1202, EL2202-0100, EL3102 и EL4032 ведомыми модулями. Если у вас есть другой диск EtherCAT, этот пример все еще работает, но вам нужно создать новый файл ENI, который использует ваши ведомые устройства.
Обзор процесса создания файла ENI см. в разделе Настройка сети EtherCAT при помощи TwinCAT 3.
Чтобы создать, скачать и запустить модель:
В редакторе Simulink Editor из списка целей на вкладке Real-Time выберите целевой компьютер, на котором можно запустить приложение реального времени.
Нажмите Run on Target.
Если вы открываете две возможности путем двойного нажатия по каждой, данные передаются из цели обратно на компьютер разработчика и отображаются там.
Модель предварительно сконфигурирована, чтобы работать в течение 15 секунд. Если вы хотите запустить модель дольше, перетащите Запуск в меню Target и измените номер на нижней линии. Нажмите зеленую стрелу, чтобы сконфигурировать, создать и запустить.
Если запустить модель с помощью кнопки Run on Target, режим external mode подключен, и можно дважды кликнуть блоки scope и увидеть данные на компьютере разработчика. Блоки Display также работают.
При запуске этой модели, чтобы продемонстрировать этапы повторной инициализации, необходимо отсоединить и повторно подключить кабель Ethernet между целевой машиной и ведомой сетью EtherCAT. Когда вы соединяете кабель заново, вы видите, что синхронизация постоянного тока выполняет ту же повторную синхронизацию, которая происходит в течение начального периода.
При использовании Run on Target, возможности показывает ошибку синхронизации постоянного тока между главным кодом на целевом устройстве и первым ведомым устройством с поддержкой постоянного тока. Поскольку ошибка возвращается как наносекунда, этот график показывает, что различие во времени устанавливается до порядка 3-5 микросекунд (от 3000 до 5000 наносекунд) различия между ведомыми устройствами с поддержкой постоянного тока и целевой машиной, выполняющей код. Остаточное рассеяние просто отражает изменчивость планирования задач в целевом компьютере RTOS.
В ходе этого экспериментального запуска кабель Ethernet был дважды отключен во время 30-секундного запуска. Отключение произошло около 7 секунд, повторное соединение - около 12 секунд. Этот процесс повторяется около 18 секунд и 21 секунды. Каждый раз, когда кабель соединяется повторно, ошибка синхронизации показывает импульс, который показывает дрейф между целевой и сетью EtherCAT в течение времени, когда кабель был отключен, и является ожидаемым поведением повторной синхронизации.
Scope1 показывает несколько логических сигналов с вертикальными смещениями, чтобы показать логический анализатор, такое как отображение. Из верхней части изображения это:
Состояние ссылки (желтый)
Работа счетчика (синяя)
Система координат отклика (красный)
Все рабы Операционный (зеленый)
Slave Error (фиолетовый)
Ошибка сканбуса (светло-синий)
Отключение кабеля вызвало ошибку сканбуса, как видно на светло-синей трассировке. Ничего не происходит, пока кабель не соединится заново примерно через 12 секунд. Состояние ссылки отражает одно уведомление о временном шаге, которое указывает на выход ссылки и возврат ссылки. При первом отключении вы не видите ссылку, уходящую от уведомления, но вы видите ссылку, возвращающуюся. Встроенный блок MATLAB сохраняет постоянную переменную со статусом ссылки с начальным значением 2 и изменяет его в зависимости от уведомлений.
После возврата ссылки происходит ошибка ведомого устройства и ошибка отклика системы координат перед тем, как функция All Slaves Operating отключится на шаг расчета. В эту точку времени начинается повторная синхронизация, и вы видите демпфированную волну, показывающую эррот синхронизации, падающий в пределах нескольких микросекунд ошибки.
Scope2 показывает больше выходы состояния с:
statechange (желтый)
sbdone (синяя)
dcinsync (красный)
запрос statechange (зеленый)
newstate (фиолетовый)
текущее состояние (светло-синий)
Когда ссылка опускается, стек замечает, что и выполняет скан устройств на шине. То есть метка sbdone на около 7 секунд, что также привело к ошибке sbscan, показанной на Scope1. Далее, когда ссылка восстанавливается через 12 секунд, выполняется другой скан шины, показанное на 12 секундах в синей трассировке. Встроенный блок MATLAB запрашивает изменение состояния на PreOp (= 2), показанное в зеленой и фиолетовой трассировках. После достижения Preop, вы видите другой запрос на изменение состояния, чтобы перейти в состояние Op (= 8), которое является вторым изменением в зеленом и фиолетовом. Это начинает повторную синхронизацию часов между компьюером разработки и целевым компьютером, которая занимает несколько секунд, пока вы не увидите dcinsync примерно в 14 секундах (красный trace ) с переходом в состояние Op сразу после.
Снова отсоедините кабель, чтобы повторить всю последовательность снова, начиная примерно с 18 секунд.
В то время как этот пример нуждается в ручном вмешательстве, чтобы отсоединить и повторно соединить кабель Ethernet, тот же самый перезапуск можно вызвать, просто запросив состояние PreOp, связанное с запросом состояния Op, пропуская взаимодействие со статусом ссылки, если оно инициировано некоторым другим условием в модели.
Если вы запускаете модель из командной строки, можно использовать Данные Моделирования Inspector, чтобы просмотреть любой сигнал, который отмечен для логгирования сигналов. Сигналы, отмеченные для логгирования, появляются с точкой с двумя дугами над ней в редакторе моделей.
close_system( 'slrt_ex_ethercat_notifyreset' );