В этом примере показано, как использовать блоки SoE и простой конечный автомат для записи значений конфигурации в переменные, которые могут быть записаны только перед переходом в состояние EtherCAT Op. Код, необходимый для использования блоков CoE для подчиненных устройств, понимающих протокол CoE, см. в разделе Последовательная запись переменных конфигурации подчиненного устройства CoE по протоколу EtherCAT ®.
Для подчиненных, которые понимают адресацию СЕ, ограничения на то, когда конкретный объект может быть написан, встречаются несколько редко. Для подчиненных устройств, которые понимают адресацию СОС, это ограничение встречается гораздо чаще.
Изменение объектов конфигурации в подчиненных устройствах перед запуском ввода-вывода во внешние соединения полезно, даже если изменение значений не ограничено.
В этом примере также показана синхронизация распределенных синхросигналов с использованием режима переключения шины DC, в котором ведомые устройства сдвигаются во времени, чтобы соответствовать времени выполнения ведущего устройства.
Для запуска этого примера необходима EtherCAT-сеть, состоящая из целевого компьютера в качестве EtherCAT Master устройства и по крайней мере одного подчиненного, имеющего объекты с адресацией SoE. Предоставленный файл ENI предназначен для диска Beckhoff AX5103.
EtherCAT в Simulink Real-Time требует выделенного сетевого порта на целевом компьютере, который зарезервирован для использования EtherCAT с помощью инструмента настройки Ethernet. Настройте выделенный порт для связи EtherCAT, а не IP-адрес. Выделенный порт должен отличаться от порта, используемого для канала Ethernet между разработчиками и целевыми компьютерами.
Для тестирования этой модели:
Подключите порт, зарезервированный для EtherCAT в целевом компьютере, к порту EtherCAT IN AX5103 диска.
Убедитесь, что AX5103 поставляется с 24-вольтовым источником питания.
Постройте и загрузите модель на целевой объект.
Полный пример настройки сети EtherCAT, модели главного узла EtherCAT и сборки, а затем запуска приложения реального времени см. в разделе Моделирование сетей EtherCAT.
Эта модель иллюстрирует, как можно читать или записывать объекты SoE/SSC, если они доступны для записи только в состоянии EtherCAT PreOp. Можно переместить передачи SoE/SSC в состояние EtherCAT SafeOp, изменив конечное состояние инициализации в блоке EtherCAT Init, а также изменив константу в блоке Ожидание этого состояния. Эти настройки предписывают конечному автомату начать отправку сообщений СОС, когда он достигнет конечного состояния инициализации.
Init = 1
PreOp = 2
SafeOp = 4
Op = 8
Блок инициализации EtherCAT требует, чтобы конфигурационный файл ENI присутствовал в текущей папке или на пути MATLAB, поскольку имя файла присутствует без информации о каталоге.
Если требуется изменить эту модель, чтобы поэкспериментировать с ней, скопируйте файл конфигурации примера и файл модели из папки примера в текущую папку. Чтобы открыть модель, в окне команды MATLAB введите:
open_system(fullfile(matlabroot,'toolbox','slrealtime','examples','slrt_ex_ethercat_asyncSoE_SSC_InOrder'));

Рис. 1. EtherCAT-модель для последовательного выполнения команд SoE/SSC после приостановки инициализации в состоянии 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), предварительно настроенный для этой модели: BeckDrive_1ms.xml.
Каждый файл ENI зависит от конкретной настройки сети, для которой он был создан (например, сеть, обнаруженная на шаге 1 процесса создания файла конфигурации). Файл конфигурации, предоставленный в этом примере, действителен тогда и только тогда, когда сеть EtherCAT состоит из одного AX5103 диска. Если у вас другой диск EtherCAT, этот пример все еще работает, но вам нужно создать новый файл ENI, который использует ваш диск.
Обзор процесса создания файла ENI см. в разделе Настройка EtherCAT-сети с помощью TwinCAT 3.
Если вы используете другой диск, вам необходимо ознакомиться с руководством для ваших устройств и найти карту СОС. С помощью этого сопоставления необходимо изменить команды SSC в командах SoE, чтобы использовать объекты на диске.
Чтобы построить, загрузить и запустить модель:
В редакторе Simulink в списке целей на вкладке Real-Time выберите целевой компьютер, на котором будет выполняться приложение реального времени.
Нажмите кнопку Run on Target.
При открытии двух областей двойным щелчком на каждой данные передаются с целевого объекта обратно на компьютер разработки и отображаются.
Модель предварительно настроена на работу в течение 15 секунд. Если требуется выполнить модель дольше, откройте меню Выполнить на цели (Run on Target) и измените номер в нижней строке. Нажмите зеленую стрелку, чтобы настроить, построить и запустить.
При запуске модели с помощью кнопки Run on Target подключается внешний режим, и можно дважды щелкнуть блоки области и просмотреть данные на компьютере разработки. Блоки отображения также работают.

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

Scope1 показан переход состояний EtherCAT из состояния ожидания в состояние Init в состояние PreOp, SafeOp и, наконец, состояние Op. SafeOp вводится только кратко и отображается как значение 4 в течение нескольких шагов до перехода в состояние Op. Поскольку в этой модели используется механизм распределенных синхросигналов, переключение в состояние Op происходит только после устранения ошибки синхронизации.

Scope2 показаны выходы состояния 5 асинхронных блоков SDO в подсистеме. Каждый блок SDO может записываться в течение одного временного шага. Блок переключается в состояние = 1 (занят) на несколько шагов времени. При успешном завершении состояния = 2 (выполнено) блок переключается на один шаг времени. Если блок обнаруживает ошибку, блок переключается в состояние = 3 (ошибка) на один шаг времени. При ошибке встроенный блок кода MATLAB управления циклом останавливает последовательность и задает вывод ошибки, который останавливает модель. В этом случае неисправный блок выдает код ошибки, отображаемый на Display1. Этот дисплей масштабируется в интервал сразу после перехода состояния в состояние PreOp (= 2).

Scope4 показывает несколько выходов из блока управления циклом. Первые 5 являются разрешающими сигналами, которые становятся истинными по одному посредством управления циклом. Выходные данные oprequest верны для одного временного шага, чтобы запустить запрос на переход в состояние Op. Масштаб этого экрана увеличивается до того же интервала, что и в Scope2.
Когда все запрошенные команды SSC завершены и состояние перешло в состояние Op, сделанный сигнал устанавливается в значение true для оставшейся части выполнения. Остальная часть модели переходит в подсистему Op State Model.
Если требуется другое количество команд SSC для выполнения перед состоянием Op, необходимо отредактировать встроенный блок кода MATLAB управления циклом и изменить постоянный массив, размер которого в настоящее время равен 10, что превышает количество запрашиваемых команд SSC.
При запуске модели из командной строки можно использовать Инспектор данных (Data Inspector), доступный на панели инструментов, для просмотра любого сигнала, который был помечен для регистрации с выбором «Регистрировать выбранные сигналы» (Log Selected Signals), найденным щелчком правой кнопкой мыши на сигнале. Они отмечены точкой с двумя дугами над ней в редакторе модели.