В этом примере показано, как использовать блоки SoE и простой конечный автомат, чтобы записать значения настройки в переменные, которые могут только быть записаны прежде, чем идти в состояние EtherCAT Op. Поскольку код должен был использовать блоки CoE для ведомых устройств, которые изучают протокол CoE, видят EtherCAT® Communication - Упорядоченное Пишущее Ведомое устройство Переменные Настройки CoE.
Для ведомых устройств, которые изучают обращение CoE, ограничения на то, когда конкретный объект может быть записан, несколько редки. Для ведомых устройств, которые изучают обращение SoE, это ограничение намного более распространено.
Изменение объектов настройки в ведомых устройствах прежде, чем запустить IO к внешним связям полезно, даже если изменение значений не ограничивается.
Этот пример также показывает распределенную синхронизацию часов с помощью режима DC сдвига шины, где ведомые устройства смещены вовремя, чтобы совпадать со временем выполнения ведущего устройства.
Чтобы запустить этот пример, вам нужна сеть EtherCAT, которая состоит из целевого компьютера как Ведущее устройство EtherCAT и по крайней мере одно ведомое устройство, которое имеет обращенные объекты 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 и также изменив константу в Ожидании этого постоянного блока состояния. Эти настройки направляют конечный автомат, чтобы начать отправлять сообщения SoE, когда он достигает конечного состояния инициализации.
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, используйте индекс Устройства = 0 и Номер порта Ethernet = 1.
Если необходимо создать новый файл ENI, необходимо использовать сторонний конфигуратор EtherCAT, такой как TwinCAT 3 от Beckhoff, который вы устанавливаете на компьютере разработчика. Настройкой EtherCAT (ENI) файл, предварительно сконфигурированный для этой модели, является BeckDrive_1ms.xml
.
Каждый файл ENI характерен для точной сетевой настройки, для которой он был создан (например, сеть, обнаруженная на шаге 1 процесса создания конфигурационного файла). Конфигурационный файл предусмотрел этот пример, допустимо, если и только если сеть EtherCAT состоит из одного диска AX5103. Если вы сделали, чтобы различный EtherCAT управлял этим примером, все еще работает, но необходимо создать новый файл ENI, который использует диск.
Для обзора процесса для создания файла ENI смотрите, Конфигурируют Сеть EtherCAT при помощи TwinCAT 3.
Если вы используете различный диск, необходимо консультироваться с руководством для устройств и найти отображение SoE. Используя то отображение, необходимо изменить команды SSC в командах SoE в подсистеме порядка, чтобы использовать объекты на диске.
Чтобы создать, загрузите и запустите модель:
В Редакторе Simulink, из списка целей на вкладке Real-Time, выбирают целевой компьютер, на котором можно запустить приложение реального времени.
Нажмите Run on Target.
Если вы открываете два осциллографа путем двойного щелчка по каждому, данные переданы от цели назад к компьютеру разработчика и отображены.
Модель предварительно сконфигурирована, чтобы запуститься в течение 15 секунд. Если вы хотите запустить модель дольше, выпадающий меню Run on Target и изменить номер на нижней строке. Нажмите зеленую стрелу, чтобы сконфигурировать, создать, и запуститься.
Если при запуске модель с помощью Запуска на Целевой кнопке, режим external mode соединяется, и можно дважды щелкнуть по блокам scope и видеть данные по компьютеру разработчика. Блоки Отображения также работают.
При использовании Работавшего Цель Осциллограф показывает, что ошибка синхронизации DC между основным кодом на цели и первым DC включила ведомое устройство. Поскольку ошибка возвращена как наносекунды, этот график показывает, что различие в синхронизации успокаивается к порядку 3-5 микросекунд (3 000 - 5 000 наносекунд), различие между DC включило ведомые устройства и целевую машину, запускающую код. Остаточное рассеяние только отражает изменчивость планирования задач в целевом компьютере 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, сделанный сигнал установлен в истину для остатка от выполнения. Остальная часть вашей модели входит в Подсистему модели состояния Op.
Если вам нужно различное количество команд SSC, чтобы выполниться перед состоянием Op, необходимо отредактировать Цикл, управляют блоком встраиваемого кода MATLAB и изменяют персистентный массив, который в настоящее время измерен, чтобы иметь длину 10, который больше, чем количество команд SSC, которые требуют.
Если при запуске модель из командной строки, можно использовать Data Inspector, доступный от панели инструментов, чтобы просмотреть любой сигнал, который был помечен, чтобы регистрировать с Журналом, Выбрал выбор Signals, найденный путем щелчка правой кнопкой по сигналу. Те отмечены точкой с двумя дугами выше его в редакторе моделей.