В этом примере показано, как использовать блок EtherCAT Notifications для обнаружения сбоя в подключенной сети и перезапуска сети при исправлении сбоя.
В этом примере обнаружен только отсоединенный кабель Ethernet в первом подчиненном устройстве. Более сложные ситуации отказа могут быть обнаружены, если изучить шаблон уведомлений, которые приводят к этому, и записать встроенный блок MATLAB, чтобы учесть их.
Для выполнения этого примера в представленном виде требуется EK1100 Бекхоффа с модулями EL1202, EL2202-0100, EL3102 и EL4032 slave. Модель не выполняет запись ни в какие объекты процесса. Замена файла ENI на файл, соответствующий вашей сети, также работает.
EtherCAT в Simulink Real-Time требует выделенного сетевого порта на целевом компьютере, который зарезервирован для использования EtherCAT с помощью инструмента настройки Ethernet. Настройте выделенный порт для связи EtherCAT, а не IP-адрес. Выделенный порт должен отличаться от порта, используемого для канала Ethernet между разработчиками и целевыми компьютерами.
Для тестирования этой модели:
Подключите порт, зарезервированный для EtherCAT в целевом компьютере, к порту EtherCAT IN модуля интерфейса EK1100.
Убедитесь, что EK1100 поставляется с 24-вольтовым источником питания.
Постройте и загрузите модель на целевой объект.
Полный пример настройки сети EtherCAT, модели главного узла EtherCAT и сборки, а затем запуска приложения реального времени см. в разделе Моделирование сетей EtherCAT.
Эта модель является началом полной реализации для обнаружения сетевых сбоев и повторной инициализации сети после устранения сбоя. Простой конечный автомат во встроенном блоке MATLAB может быть заменен реализацией потока состояний, что может быть необходимо для более сложного обнаружения и восстановления отказа.
Блок инициализации 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 slave. Если у вас другой EtherCAT-диск, этот пример все еще работает, но вам нужно создать новый файл ENI, который использует ваши ведомые устройства.
Обзор процесса создания файла ENI см. в разделе Настройка EtherCAT-сети с помощью TwinCAT 3.
Чтобы построить, загрузить и запустить модель:
В редакторе Simulink в списке целей на вкладке Real-Time выберите целевой компьютер, на котором будет выполняться приложение реального времени.
Нажмите кнопку Run on Target.
При открытии двух областей двойным щелчком на каждой данные передаются с целевого объекта обратно на компьютер разработки и отображаются там.
Модель предварительно настроена на работу в течение 15 секунд. Если требуется выполнить модель дольше, откройте меню Выполнить на цели (Run on Target) и измените номер в нижней строке. Нажмите зеленую стрелку, чтобы настроить, построить и запустить.
При запуске модели с помощью кнопки Run on Target подключается внешний режим, и можно дважды щелкнуть блоки области и просмотреть данные на компьютере разработки. Блоки отображения также работают.
При запуске этой модели для демонстрации этапов повторной инициализации необходимо отсоединить и повторно подключить кабель Ethernet между целевой машиной и ведомой сетью EtherCAT. При повторном подключении кабеля синхронизация постоянного тока выполняется так же, как в начальный период.

При использовании Run on Target Scope отображает ошибку синхронизации DC между главным кодом на целевом устройстве и первым подчиненным устройством с включенным DC. Поскольку ошибка возвращается в виде наносекунд, этот график показывает, что разность таймирования устанавливается до порядка 3-5 микросекунд (от 3000 до 5000 наносекунд) между ведомыми устройствами с включенным постоянным током и целевой машиной, выполняющей код. Остаточный разброс отражает только изменчивость планирования задач в целевом компьютере RTOS.
В этом экспериментальном прогоне кабель Ethernet был дважды отключен во время 30-секундного прогона. Отключение произошло примерно через 7 секунд, повторное подключение - примерно через 12 секунд. Этот процесс повторяется примерно через 18 секунд и 21 секунду. Каждый раз при повторном подключении кабеля ошибка синхронизации показывает импульс, который показывает дрейф между целевой сетью и сетью EtherCAT во время отключения кабеля и является ожидаемым поведением повторной синхронизации.

Scope1 показывает несколько логических сигналов с вертикальными смещениями, чтобы показать логический анализатор, подобный дисплею. В верхней части изображения представлены следующие элементы:
Статус связи (желтый)
Ошибка рабочего счетчика (синий)
Ошибка ответа на кадр (красный)
Все подчиненные рабочие (зеленые)
Ошибка подчиненного устройства (фиолетовый)
Ошибка Scanbus (синий)
Отключение кабеля вызвало ошибку scanbus, как видно на светло-синей дорожке. Ничего не происходит до тех пор, пока кабель не будет вновь подключен примерно через 12 секунд. Состояние линии связи отражает уведомления об одном временном шаге, которые указывают на выход линии связи и возврат линии связи. При первом отключении уведомление об удалении канала не отображается, но канал возвращается. Встроенный блок MATLAB сохраняет постоянную переменную со статусом канала с начальным значением 2 и изменяет ее в зависимости от уведомлений.
После возврата канала происходит ошибка подчиненного устройства и ошибка ответа кадра до того, как все подчиненные устройства завершают работу на время выборки. В этот момент начинается ресинхронизация синхронизации, и вы видите затухающую волну, показывающую ошибку синхронизации в пределах нескольких микросекунд от ошибки.

Scope2 показывает больше выходов состояния с:
statechange (желтый)
sbdone (синий)
dcinsync (красный)
запрос на изменение состояния (зеленый)
newstate (фиолетовый)
текущее состояние (светло-синий цвет)
Когда канал падает, стек замечает это и выполняет сканирование устройств на шине. То есть отметка sbdone примерно через 7 секунд, что также привело к ошибке sbscan, показанной на Scope1. Затем, когда линия связи восстанавливается через 12 секунд, выполняется еще одно сканирование шины, показанное через 12 секунд в синей дорожке. Встроенный блок MATLAB запрашивает изменение состояния на PreOp (= 2), показанное на зеленых и фиолетовых трассах. После достижения Preop появится другой запрос на изменение состояния для перехода в состояние Op (= 8), которое является вторым изменением зеленого и фиолетового цветов. Это запускает ресинхронизацию часов между компьютером разработки и целевым компьютером, которая занимает несколько секунд, пока вы не увидите dcinsync примерно через 14 секунд (красный след) с переходом в состояние Op сразу после.
Снова отсоедините кабель, чтобы повторить всю последовательность, начиная примерно с 18 секунд.
В то время как в этом примере требуется ручное вмешательство для отключения и повторного подключения кабеля Ethernet, тот же самый перезапуск можно вызвать, просто запросив состояние PreOp, за которым следует запрос состояния Op, пропустив взаимодействие с состоянием канала, если оно инициировано каким-либо другим условием в модели.
При запуске модели из командной строки можно использовать инспектор данных моделирования для просмотра любого сигнала, помеченного для регистрации сигнала. Сигналы, помеченные для регистрации, отображаются в редакторе модели точкой с двумя дугами над ней.
close_system( 'slrt_ex_ethercat_notifyreset' );