|
Расскажите про EtherCAT |
|
|
|
May 11 2014, 17:02
|
Группа: Новичок
Сообщений: 5
Регистрация: 13-04-14
Пользователь №: 81 356

|
Доброго времени суток, хотелось бы узнать от людей, которые пользовались интерфейсом EtherCAT и могут помочь студенту в решении некоторых вопросов, т.к. в рунете информации как таковой я не нашел: 1) Чем вообще примечателен данный интерфейс, какие у него есть конкуренты, плюсы и минусы их? 2) Как он реализуется? хотелось бы услышать о его реальной производительности, а не о том, что написано в по большей части рекламных брошюрах от производителя. 3) за счет чего он принципиально лучше CAN-шины?
|
|
|
|
|
 |
Ответов
(135 - 149)
|
Jan 24 2018, 11:18
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Цитата У устройств поддерживающих этот стандарт есть всего 4 RXPDO и 4 TXPDO Насколько я знаю CANopen это во первых зависит от профиля и во вторых - это чисто настройки по умолчанию. Количество PDO может быть разным, но статическим в одной системе. Цитата Еще нужно обеспечить возможность настройки CANOpen устройства с помощью пакетов SDO. Но это нужно только на этапе запуска системы. Я думаю, что вот это самое интересное. Мастер сможет это сделать через EtherCAT-CANopen интерфейс? Судя по описанию на EL6751 - да. Ну а вообще там много чего интересного в мануале расписано.
|
|
|
|
|
Jan 24 2018, 15:57
|
Местный
  
Группа: Участник
Сообщений: 317
Регистрация: 16-09-17
Пользователь №: 99 334

|
Цитата(Impartial @ Jan 24 2018, 06:40)  Каждый слейв имеет строго определенную внутреннюю структуру. Ни о каком изменении длины не может быть речи. Для каждого слейва есть конфигурация и конфигурационный файл. Общая длина пакета складывается у мастера на этапе конфигурации приложения и может измениться только при реконфигурации. Слейв может пропускать через себя чужие пакеты но к приложению они не имеют никакого отношения. Идентификация встроена в сам пакет. Ну как же. Если во фрамэ нет адреса слейва в общем "логическом пространстве задачи" то он игнорирует такой пакет (не использует его и ничего не пишет в него). Слейв "вылавливает" и реагирует только на свои адреса. Или я не прав? Цитата(Impartial @ Jan 24 2018, 06:40)  Почему смущает количество обрабатываемых в плисине потоков? Там максимальная частота 50 мгц. Одна плисина может их хоть сто штук обработать. Хватило бы ножек и триггеров внутри. Это же не микроконтроллер. В плисине все обрабатывается параллельно. Т.е., грубо говоря, у PHY микросхемы есть сигнал "connection failed", который заводится в ПЛИСину? Цитата(syoma @ Jan 24 2018, 09:16)  Ну собственно, наверное и так можно. Только вот лично мне мешает то, что я никогда такого ни в одном мастере не видел. Может потому, что это никому было не нужно? Или ещё вариант: никто просто не знал о такой возможности Цитата(syoma @ Jan 24 2018, 09:16)  То есть если взять любой доступный мастер - TwinCAT или Codesys и посмотреть, как у него сделан EtherCAT обмен тем же Wiresharkом, то все очень примитивно. После того, как все запустилось, мастер конфигурирует в слейвах т.н. physical-logical mapping А что мешает мастеру менять этот "physical-logical mapping" на лету? Но моя идея была даже не в этом. Вы говорили, что каждый слейв реагирует только на свой диапазон адресов в общем 4-х гигабайтном логическом пространстве задачи. Тогда что мешает мастеру читать только один слейв, чтобы этот слейв занял весь пакет, все 1498 байт? Цитата(syoma @ Jan 24 2018, 09:16)  Любые другие варианты адресации и динамическая реконфигурация, о которой вы говорите - это значительное ухудшение всех этих параметров и скорей всего не дают EtherCAT никаких других преимуществ перед другими протоколами. Вы не совсем поняли. И ухудшения не будет. Моя идея в том: зачем слейву ЗРЯ тратить трафик если ему НЕЧЕГО передавать мастеру? Разве не разумно будет отдать в этом случае весь трафик слейву, у которого есть что передавать и который "зашивается" уже от потока событий по причине не хватки трафика?
|
|
|
|
|
Jan 24 2018, 16:18
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Цитата А что мешает мастеру менять этот "physical-logical mapping" на лету? Для этого надо перевести нужный слейв в конфигурационный режим и записать в него новые параметры. "На лету" это не очень получится. Цитата Моя идея в том: зачем слейву ЗРЯ тратить трафик если ему НЕЧЕГО передавать мастеру? Разве не разумно будет отдать в этом случае весь трафик слейву, у которого есть что передавать и который "зашивается" уже от потока событий по причине не хватки трафика? По-моему это была одна из основных причин появления EtherCAT. Тот же CANopen исповедует вашу модель, так как он построен на принципе "передавай, если есть что передать". Это отлично снижает нагрузку на сеть, но создает огромную проблему для проектировщика, заключающуюся в том, что сеть должна быть рассчитана на случай, что все вдруг начнут передавать свои данные одновременно. Иначе вы получите недопустимые задержки, если не потерю данных. Поэтому люди искали такую шину, которая позволяла бы получить большую пропускную способность, независящую от количества слейвов и их желания или нежелания передавать данные и имеющую гарантированную латентность и минимальное время цикла без каких-либо компромиссов, типа "передачи" трафика какому либо конкретному слейву, если ему вдруг это требуется и пр. Это и есть требования реального времени.
|
|
|
|
|
Jan 24 2018, 16:40
|
Частый гость
 
Группа: Свой
Сообщений: 156
Регистрация: 1-02-05
Из: the Earth
Пользователь №: 2 331

|
Цитата(Impartial @ Jan 24 2018, 13:37)  Если речь идет о CanOpen то принцип выглядит так. У устройств поддерживающих этот стандарт есть всего 4 RXPDO и 4 TXPDO. Каждый из них состоит максимум из 8 байт с структурой определяемой изготовителем устройства. Принцип моста состоит в том, чтобы отзеркалить эти ПДО в приеме и передаче на соответствующие поля в пакете слейва. Все остальное сделает сам CAN интерфейс с соответствующими настройками полей COB-ID. Еще нужно обеспечить возможность настройки CANOpen устройства с помощью пакетов SDO. Но это нужно только на этапе запуска системы. Спасибо, Impartial. Благодарю, syoma. Собственно, в моём случае речь идёт о ModBus (CAN где-то в неясной перспективе) и есть ли какие то соглашения о том, как ему дружить с EtherCAT, я сходу не нашёл. Но пока вопросы более общие, а именно: 1) какой софт имеет смысл использовать для наиболее быстрого старта и поддержки разрабатываемого устройства (мост: слейв для EtherCAT и он же мастер для ModBus)? На сайте https://www.ethercat.org/en/products.html есть список, но - возможно - опытные товарищи сразу скажут, мол это использовать не стоит, а вот это - хороший Tool... Да, TwinCAT XAE установил, но пока с ним ничего не взлетело: винда с ним периодически уходит в синий экран, а тестовый ESC он не видит. Пока что для себя сделал такой список: "ET9000 Beckhoff (EtherCAT Configurator)"EtherCAT WorkbenchXML Editor (есть) Network Analyzer (есть) Что-то ещё нужно для взлёта?  2) организационный вопрос: сколько времени и ресурсов может уйти (уйдёт) на разработку слэйва, готового для передачи в производство? Очевидно, что должны быть реализованы функциональности: - сам мост - Device Firmware Update (нужно через Ethernet порт слейва обновлять Firmware Host-процессора, который соединён с EtherCAT ASIC'ом через SPI DP-RAM) - удобная первичная прошивка - самодиагностика - документация - сервисный софт (конфигуратор? апдейтер? что-то ещё?) Опять же, как черновой вариант, процесс выглядит так (и занимает полтора человеко-года): PrototypingStand Seting-Up Running a test application on Eval Board (EVB) Writing a communication between EVB and a Modbus device Running the tests with Prototype Gateway (купить готовый мост) and ModBus Running the tests with 3-rd party’s EtherCAT devices PCB and HousingPower Dissipation/Thermal Evals Suggestions concerning Housing and PCBs arrangement Schematics Layout PCBA Tests and Evaluations FirmwareBoot-loading and DFU Functionality HAL and low-level drivers/functions POST and Debug Interface CDC VCP - for Debug interface and optional DFU MODBUS Stack Working with API from EtherCAT ASIC supplier Porting to a lower-grade MCU SoftwareEthernet Device Set-Up Configuration Software Firmware Upgrade Utility Re-Design to CostEliminating unused components (e.g., QSPI EEPROM), replacing Ethernet connector, … Firmware modifications Software’s changes Performing the test Issuing documentation in-house tests (protocol and EMC)EMC tests Protocol conformance DocumentationUser Manual Ethernet Configuration Programming Guide and Examples (Sample) Configuration Files ESI / GSD(ML) Files Certificates
|
|
|
|
|
Jan 24 2018, 20:50
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 2-12-17
Пользователь №: 100 464

|
Цитата(syoma @ Jan 24 2018, 19:18)  Для этого надо перевести нужный слейв в конфигурационный режим и записать в него новые параметры. "На лету" это не очень получится. Почему? Что мешает? Цитата(syoma @ Jan 24 2018, 19:18)  По-моему это была одна из основных причин появления EtherCAT. Тот же CANopen исповедует вашу модель, так как он построен на принципе "передавай, если есть что передать". Это отлично снижает нагрузку на сеть, но создает огромную проблему для проектировщика, заключающуюся в том, что сеть должна быть рассчитана на случай, что все вдруг начнут передавать свои данные одновременно. Иначе вы получите недопустимые задержки, если не потерю данных. Поэтому люди искали такую шину, которая позволяла бы получить большую пропускную способность, независящую от количества слейвов и их желания или нежелания передавать данные и имеющую гарантированную латентность и минимальное время цикла без каких-либо компромиссов, типа "передачи" трафика какому либо конкретному слейву, если ему вдруг это требуется и пр. Это и есть требования реального времени. А в чем проблема делать два цикла. В первом цикле опрашиваем у кого есть срочные данные. И если ни у кого нет - во втором цикле отдаем трафик тому, у кого есть что передедавать? Получается и рилтайме не нарушается и линия используется более эффективно за счет того, что не нужно гонять пустые пакеты Как думаете? Допустим есть два девайса. Один нужно опрашивать каждый 6 мкс. А другой - раз в 10 мс. И какой смысл тогда второму устройству передавать пустые фреймы каждый 6 мкс если у него состояние обновляется раз в 10 мс?
|
|
|
|
|
Jan 25 2018, 07:52
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Цитата Собственно, в моём случае речь идёт о ModBus (CAN где-то в неясной перспективе) и есть ли какие то соглашения о том, как ему дружить с EtherCAT, я сходу не нашёл. Сходу все ИМХО очень просто - берете EtherCAT терминал с RS485 или RS232. Он делает Вам виртуальный COM порт. Далее берете обыкновенный Modbus мастер и общаетесь через этот порт со своими MODBUS слейвами. Или Вам надо что-то другое? Вам вообще нужно просто что-то в единственном экземпляре для своего проекта? Тогда проще купить что-то готовое. А если разрабатывать для продажи - вы уверены, что найдете много клиентов, чтобы окупить разработку? Цитата 1) какой софт имеет смысл использовать для наиболее быстрого старта и поддержки разрабатываемого устройства (мост: слейв для EtherCAT и он же мастер для ModBus)? На сайте https://www.ethercat.org/en/products.html есть список, но - возможно - опытные товарищи сразу скажут, мол это использовать не стоит, а вот это - хороший Tool... Да, TwinCAT XAE установил, но пока с ним ничего не взлетело: винда с ним периодически уходит в синий экран, а тестовый ESC он не видит. TwinCAT 3 эволюционный. С готовыми EtherCAT модулями Codesys также неплохо работает, но нужно подключить XML описания. Цитата А в чем проблема делать два цикла. В первом цикле опрашиваем у кого есть срочные данные. И если ни у кого нет - во втором цикле отдаем трафик тому, у кого есть что передедавать? Получается и рилтайме не нарушается и линия используется более эффективно за счет того, что не нужно гонять пустые пакеты Как думаете? Допустим есть два девайса. Один нужно опрашивать каждый 6 мкс. А другой - раз в 10 мс. И какой смысл тогда второму устройству передавать пустые фреймы каждый 6 мкс если у него состояние обновляется раз в 10 мс? Давайте сначала посчитаем реальность всего этого для EtherCAT. Вообще я не очень понимаю, что мастер успеет сделать за 6мкс с данными, но допустим успеет и цикл опроса у нас 6мкс. При скорости в 100Мбит за 6мкс мы успеваем передать/получить 600бит или 75 байт - a это в принципе минимальная длина Ethernet пакета. То есть при цикле опроса в 6мкс даже один самый маленький пакет полностью забьет нашу шину. Куда вы собрались всовывать пакет для 10-милисекундного опроса? Цитата Вообще езеркат хорошо работает только на специально спроектированном для него оборудовании мастера. При использовании обычной персоналки все его достоинства тонут в дебрях операционной системы. Попытка запустить драйвер будет приводить к синим экранам на одних компьютерах и нормальной работе на других. Не встречался с особыми проблемами. Нужна нормальная сетевуха, да и все вроде. Работал и с TwinCAT и с Codesys. Последний, кстати с EtherCAT работает даже на Raspberry Pi и не глючит. Конечно, не стоит ожидать от него реального времени с обычной операционкой.
|
|
|
|
|
Jan 25 2018, 09:18
|
Частый гость
 
Группа: Свой
Сообщений: 156
Регистрация: 1-02-05
Из: the Earth
Пользователь №: 2 331

|
Цитата(syoma @ Jan 25 2018, 11:52)  Сходу все ИМХО очень просто - берете EtherCAT терминал с RS485 или RS232. Он делает Вам виртуальный COM порт. Далее берете обыкновенный Modbus мастер и общаетесь через этот порт со своими MODBUS слейвами. Или Вам надо что-то другое?
Вам вообще нужно просто что-то в единственном экземпляре для своего проекта? Тогда проще купить что-то готовое. А если разрабатывать для продажи - вы уверены, что найдете много клиентов, чтобы окупить разработку?
TwinCAT 3 эволюционный. С готовыми EtherCAT модулями Codesys также неплохо работает, но нужно подключить XML описания. Доброго дня! Да, выглядит действительно просто и легко. Вопросы, тем не менее, тоже есть  : Драйвер берём (покупаем лицензию под ТвинКАТ) от Бекхофа ( драйвер)? Но тогда это тянет за собой и покупку Твинката, разве нет? А какой порядок его стоимости (в отличие от бесплатного XAE) ? Этот драйвер ведь будет работать только с Бекхофскими coupler'ами и терминалами типа этого и этого, так ведь? А хочется сделать свой слейв со своими VID, ESI и пр. Эх, если бы единственное, то и не вопрос. Но нужно для масс-продакшен. Окупаемость - вопрос правильный, но на разработку выделяются (пока что) просто копейки. Опять же, сколько, в норме, может стоить разработка такого девайса (а-ля Serial Interface от Beckhoff)? А с ТвинКАТом, наверное, всё хорошо. Но пока он у меня разве что комп вешает  И будущий вопрос генерации отчуждаемой программы, сделанной на нём, также остаётся. Спасибо!
|
|
|
|
|
Jan 25 2018, 16:07
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 14-01-18
Пользователь №: 101 052

|
Цитата(Impartial @ Jan 25 2018, 02:00)  Любая попытка использовать какую либо адресацию подразумевает использование общих полей в пакете. Это противоречит идеологии реалтайма. Говорите, что нет никакой адресации? А это Вы видели?  Цитата(Impartial @ Jan 25 2018, 02:00)  Вообще езеркат хорошо работает только на специально спроектированном для него оборудовании мастера. При использовании обычной персоналки все его достоинства тонут в дебрях операционной системы. Попытка запустить драйвер будет приводить к синим экранам на одних компьютерах и нормальной работе на других.
Есть такая любительская система управления станками ЧПУ LinuxCNC. Она с открытым исходным кодом и я много интересного узнал разбирая некоторые куски кода. Там есть исходник драйвера езерката и его нормальная работа гарантируется только на нескольких чипах. Плюс ко всему операционка с которой работает эта программа специально под нее собрана с использованием RTAI ядра и все равно джиттер на разных компьютерах, особенно современных, часто не отвечает ее требованиям. Вместо пространной демагогии лучше ответьте на вопрос: Цитата(Arjun @ Jan 24 2018, 23:50)  Допустим есть два девайса. Один нужно опрашивать каждый 6 мкс. А другой - раз в 10 мс. И какой смысл тогда второму устройству передавать пустые фреймы каждый 6 мкс если у него состояние обновляется раз в 10 мс? Цитата(syoma @ Jan 25 2018, 10:52)  Давайте сначала посчитаем реальность всего этого для EtherCAT. Вообще я не очень понимаю, что мастер успеет сделать за 6мкс с данными, но допустим успеет и цикл опроса у нас 6мкс. При скорости в 100Мбит за 6мкс мы успеваем передать/получить 600бит или 75 байт - a это в принципе минимальная длина Ethernet пакета. То есть при цикле опроса в 6мкс даже один самый маленький пакет полностью забьет нашу шину. Куда вы собрались всовывать пакет для 10-милисекундного опроса? Что значит "забьёт шину"? Если мы как раз для этого его и используем, чтобы шину загрузить на 100% (хотя на 100 все равно не получится). А насчет "всовывать" не понятно, что Вы имеете в виду
|
|
|
|
|
Jan 26 2018, 10:34
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Цитата И какой смысл тогда второму устройству передавать пустые фреймы каждый 6 мкс если у него состояние обновляется раз в 10 мс? Вся прелесть EtherCAT заключается в том, что фрейм, который циркулирует по сети, он всего один. И он не зависит от того одно мы устройство опрашиваем за цикл или десять. Поэтому пустых фреймов не будет. Каждый слейв может вставлять свои данные в фрейм или нет. Зависит от того, как он сконфигурирован.
|
|
|
|
|
Jan 26 2018, 14:44
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 2-12-17
Пользователь №: 100 464

|
.
Сообщение отредактировал Arjun - Jan 26 2018, 14:45
|
|
|
|
|
Jan 26 2018, 14:45
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 14-01-18
Пользователь №: 101 052

|
Цитата(syoma @ Jan 26 2018, 13:34)  Вся прелесть EtherCAT У меня возникли сомнения. Насчёт "прелести"  Цитата(syoma @ Jan 26 2018, 13:34)  Вся прелесть EtherCAT заключается в том, что фрейм, который циркулирует по сети, он всего один. И он не зависит от того одно мы устройство опрашиваем за цикл или десять. Поэтому пустых фреймов не будет. Уточню. Под пустыми я подразумевал Фреймы, не несущие новой информации и НАПРАСНО "забивающие" линию связи своим трафиком. Т.е., к примеру, если в устройстве состояние меняется раз в 10 мс, а цикл шины 6мкс, то получается, что более 99% времени он передают "порожняк" Как быть в этом случае?
Сообщение отредактировал Вне зоны доступа - Jan 26 2018, 14:46
|
|
|
|
|
Jan 26 2018, 15:07
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Вне зоны доступа @ Jan 26 2018, 16:45)  Уточню. Под пустыми я подразумевал Фреймы, не несущие новой информации и НАПРАСНО "забивающие" линию связи своим трафиком. Т.е., к примеру, если в устройстве состояние меняется раз в 10 мс, а цикл шины 6мкс, то получается, что более 99% времени он передают "порожняк" Как быть в этом случае? Передавать состояние только в моменты его изменения крайне плохая практика. Система каждый цикл должна подтверждать свое состояние. Проверяется горьким опытом. Тут вот буквально на днях под Гамбургом объект у нас работает на шине CAN и есть частотник. Система взяла и ушла в ступор, в логе сообщение об отключении сетевого напряжения. А отключения не было. По CAN-у из-за наводок с частотника прошел ложный пакет об отключении и CRC не помогло, а передавались такие пакеты только по событию отключения и включения напряжения. Такая вот история. Сейчас надо править программу.
|
|
|
|
|
Jan 26 2018, 16:45
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 14-01-18
Пользователь №: 101 052

|
Цитата(AlexandrY @ Jan 26 2018, 18:07)  Передавать состояние только в моменты его изменения крайне плохая практика. Система каждый цикл должна подтверждать свое состояние. Ну вот смотрите. Если система инерционная и за 10 мс в ней НИЧЕГО не может случиться по определению. То смысл передавать её состояние каждые 6 мкс? А ведь такое бывает сплошь и рядом. Что на шине EtherCAT "висят" как быстрые устройства, так инерционные. И как тут быть? Передавать "порожняк" впустую расходуя драгоценный трафик?
Сообщение отредактировал Вне зоны доступа - Jan 26 2018, 16:46
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|