Перейти к содержанию

Студент заборстроительного

Участник
  • Публикаций

    317
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Студент заборстроительного

  • Звание
    Местный
  1. Расскажите про EtherCAT

    Цитата(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 никаких других преимуществ перед другими протоколами. Вы не совсем поняли. И ухудшения не будет. Моя идея в том: зачем слейву ЗРЯ тратить трафик если ему НЕЧЕГО передавать мастеру? Разве не разумно будет отдать в этом случае весь трафик слейву, у которого есть что передавать и который "зашивается" уже от потока событий по причине не хватки трафика?
  2. Расскажите про EtherCAT

    Цитата(syoma @ Jan 23 2018, 09:29) Их вроде как не 4, а всего 2. RX/TX - это один порт. Ну если так считать - то два. Я почему посчитал их за 4, ведь Rx и Tx работают независимо (в том числе могут параллельно/одновременно) Тогда получается ПЛИСина должна "перемалывать" поток 400Мбит/с. Да? Цитата(syoma @ Jan 23 2018, 09:29) Конкретно данному слейву - не каждый. В EtherCAT есть различные команды - чтение, запись, чтение с записью, логическая, физическая адресация, обновление синхронизации и т.д. Они формируют фрейм. Вполне может оказаться, что во фрейме будет команда, которая записывает какой-то конкретный слейв. Тогда другие слейвы просто пропускают эту команду дальше, не модифицируя working counter. В конце концов эта команда дойдет до нужного слейва, он ее примет и инкрементирует working counter. Команда пройдет дальше, развернется где-то и вернется к мастеру. И мастер увидит, что его команда записи в конкретный слейв получила working counter 1 - значит она достигла ровно одного адресата. Также слейвы, которые имеют только входы, не реагируют на команды записи. Ну примерно так я это понимаю. А ведь я раньше спрашивал: "Что мешает ДИНАМИЧЕСКИ (по команде мастера) реконфигурировать размеры фреймов для каждого слейва?" А теперь получается, то таки можно так делать. Ну т.е. чтобы пакет не все слейвы обрабатывали и модифицировали. В вырожденном случае вообще один слейв может занять своим данными все 1486 байт пакета. Так? А в другом пакете этот же слейв - вообще 0 байтов. Я к тому, что формат EtherCAT пакетов очень гибкий. И позволяет ДИНАМИЧЕСКИ менять как кол-во фреймов в одном пакете, так и их длину. Так? А то я боялся, что каждый слейв жёстко резервирует в пакете 10+N байт даже если у него нет данных для передачи. Боялся что мне не хватит длины пакета чтобы охватить все слейвы. А раз некоторые слейвы можно просто не опрашивать, то тогда хватит
  3. Расскажите про EtherCAT

    Цитата(syoma @ Jan 22 2018, 10:24) Не очень. Каждый пакет, проходящий через каждый слейв модифицируется слейвом, если этот слейв каким-то образом адресуется этим пакетом - т.е. в этом пакете есть команды, на которые должен реагировать данный слейв. В этом случае слейв как минимум инкрементирует так называемый Working Counter - определенный регистр в поле данных этой команды. Мастер шлет фреймы с Working Counter, равным 0, а в ответ ожидает фреймы с определенным значением, в зависимости от конфигурации сети и количества слейвов. Если Working Counter не соответствует ожидаемому - значит в сети произошли несанкционированные изменения. Вы уверены в этом? Потому что в доках я читал, что слейв реагирует только на пакеты, приходящие на upstream-порт. Пакеты приходящие на downstrean-порт слейв просто перебрасывает на upstream-порт. Возможно я не правильно понял доки. Цитата(syoma @ Jan 22 2018, 10:24) Если к порту TX2/RX2 что-то подключено, ПЛИС принимает пакет из RX1 и шлет его дальше в TX2, обрабатывая на лету. Если из RX2 принимается пакет, ПЛИС принимает его и шлет в TX1. Если к порту TX2/RX2 ничего не подключено, плис принимает пакет с RX1 и посылает обратно в порт TX1, обрабатывая на лету. А как ПЛИСина понимает, что к RX2/TX2 ничего не подключено? И как быстро? И вопрос насчет кол-ва ПЛИСин остался открытым: получается все 4 сто магабитных порта обслуживаются одной ПЛИСиной? Цитата(syoma @ Jan 22 2018, 10:24) если этот слейв каким-то образом адресуется этим пакетом Не понял. Разве слейву предназначен не КАЖДЫЙ пакет мастера? Ведь слейв жёстко конфигурируется на обработку ОДНИХ И ТЕХ же жестко заданных (зарезервированных для него) полей пакета. Или это не так?
  4. Расскажите про EtherCAT

    Цитата(Impartial @ Jan 21 2018, 05:42) Все зависит от конфигурации приложения. Вы не поняли вопрос. Меня интересует 4 порта обслуживает одна ПЛИСина или две? Или 4? Цитата(Impartial @ Jan 21 2018, 05:42) Если слейву нужны данные от других слейвов он их принимает и модифицирует без участия мастера. Вы про перекрестный трафик? Цитата(Impartial @ Jan 21 2018, 05:42) Мастер может (как вариант) только настраивать и синхронизировать сеть. В смысле? Цитата(Impartial @ Jan 21 2018, 05:42) Если слейв находится в конце цепочки то он закольцовывает через себя трафик. Трафик ВСЕГДА закольцовывается. В смысле, пакет два раза проходит через слейв: "туда" и "обратно" А как он определяет что к "downstream" разъему EtherCAT ничего не подключено? И как быстро?
  5. Расскажите про EtherCAT

    Я так понимаю, что весь трафик 4 портов должен идти через одну ПЛИСину? Обычно ПЛИС на лету передает трафик с порта RX1 на порт TX2. И ОДНОВРЕМЕННО с порта RX2 на порт TX1. При этом при переброске с RX1 на TX2 ПЛИСина вставляет свои данные в пакет, а при переброске с RX2 на TX1 ничего не вставляет. Так? Но если к порту TX2 ничего не подключено - ПЛИС перебрасывает трафик с порта RX1 на порт TX1, и прием по RX2 блокируется? Так?
  6. Цитата(new123 @ Jan 19 2018, 11:41) AVR все таки правильно говорил. Нужны хотя бы характеристики потока логов. Какие логи. Устройств ещё нет. Даже в проекте. Пока только общая архитектура системы прорабатывается
  7. ЦитатаЦитатаВы зря стараетесь меня "выудить" у меня детали ноу-хау нашей системы управления и "развести", чтобы я забесплатно устроил Вам ликбез по современным АСУТП. Хотя у меня ест чем возразить и дополнить по каждому из перечисленных Вами пунктов. Но я "калач тёртый". И на "слабо рассказать?" не ведусь Такую чушь мог написать только полный кретин и неадекват. Если речь шла о простых текстовых логах, то можно было привести отдаленный непохожий пример, прояснить суть обработки. Она может быть как просто и идеально ложиться на элементную базу ПЛИС, так и быть вовсе нереализуемой. Мне часто приходится решать рабочие задачи, обращаясь за помощью, при этом я стараюсь как могу дать отдаленный пример, относящийся к сути дела, но не раскрывающий общую задачу. То что Вы сделали на форуме - это просто насрали всем в душу, потрепали нервы и отняли время у уважаемых мной специалистов. Советую полечить голову, набраться воспитания, устроил он бесплатный ликбез нам, мать его, калач бляха муха. Идите к черту, уважаемый. Вам лечиться надо Цитата(new123 @ Jan 19 2018, 11:41) AVR все таки правильно говорил. Нужны хотя бы характеристики потока логов. Я не знаю что это такое. И чего от меня хотят
  8. Цитата(AVR @ Jan 18 2018, 09:53) Я просил пример лога от прибора, и что необходимо произвести с данными. Мы вроде с Вами пока не заключали контракт
  9. Цитата(XVR @ Jan 17 2018, 16:50) У вас неправильное представление. Реализовать можно, но вы получите 1000 весьма посредственных процессоров Так мне и надо очень примитивные процессоры. Цитата(XVR @ Jan 17 2018, 16:50) вы получите 1000 весьма посредственных процессоров за космическую сумму. Самая крутая и навароченная ПЛИСина стоит 10000евро. Получается что 1 процессор будет стоить 100 евро. Копейки же Цитата(XVR @ Jan 17 2018, 16:50) FPGA для этих целей не применяют А в интернете я читал, что как раз для этого и нужна плисина. Для распаралеливания обработки. В этом её назначение и преимущество Цитата(blackfin @ Jan 17 2018, 17:43) Да ладно, не сочиняйте. Всегда можно придумать задачу неудобную для "процессора из коробки" и удобную для FPGA.. Классический пример - взять 128-битное число и перевернуть в нем все биты в обратном порядке: msb <-> lsb, msb-1 <-> lsb+1, и тд.. Сколько времени ваша CUDA с 3584 ядрами, запущенными на 1582 MHz будет делать эту операцию? На FPGA эта операция займет один такт.. Вот вот. Именно это я и имел в виду. "Врожденная" параллельность ПЛИС Она меня привлекает и возбуждает
  10. Требуется инженер-разработчик РЭА, СПб

    .
  11. Расскажите про EtherCAT

    Цитата(syoma @ Jan 17 2018, 08:54) В EtherCat тоже такое есть. Резервируется полоса - фрейм, в котором можно любой не-реалтаймовый трафик слать - хоть FTP, хоть вебсайты, хоть видео. Но я думал, что вам надо динамически размер реальных данных менять, поэтому и рассказал. Ключевое слово здесь "резервируется фрейм". Т.е. есть у тебя в данный момент данных (простите за невольную тавтологию), которые нужно срочно передавать нету, фрейм всё равно резервируется и трафик тратится вхолостую (если данных нет). Что мешает ДИНАМИЧЕСКИ (по команде мастера) реконфигурировать размеры фреймов для каждого слейва? Цитата(syoma @ Jan 17 2018, 08:54) Не знаю, особо IEEE1588 не изучал. По Distributed clock в Ethercat есть достаточно много своей документации. Не знаю, где Вы видели "много", а я кроме общих слов, что в EtherCAT есть некая технология "распределенных часов" ничего не нашёл. Интересует главным образом как механизм "синхронизации часов" повлияет на общую пропускную способность, джиттер и Latence Time. И ещё такая заковыка. У меня цикл 50 мкс. А если после синхронизации часы сдвинутся на 200 мкс. Не приведёт ли это к катастрофе? Ведь система воспримет это как скачок тока. Т.е., к примеру, ток рос на 2ма за 50мкс, а то вдруг вырос на 10 (из-за того, что время на часах искусственно сдвинули)
  12. Расскажите про EtherCAT

    Цитата(syoma @ Jan 16 2018, 22:47) 0% EtherCAT - это протокол реального времени. А это подразумевает гарантированную пропускную способность шины, даже если все 10000 передаваемых переменных вдруг обновятся одновременно. Поэтому хотите или нет, а резервировать придется 1кБайт, хоть в какие-то моменты обновлять будете даже 1 бит. Размер и места в кадре Ethercat задаются и фиксируются на этапе конфигурации и в процессе работы не меняются. Если у вас есть входы/выходы, которые нужно читать/обновлять каждые 25мкс и, например, другие входы/выходы, которые можно обновлять реже, например раз в 1мс, то вы попросту конфигурируете систему с двумя разными фреймами, первый из которых генерируется раз в 25мкс,, а второй - раз в 1мс. Спасибо. Понял. POWERLINK тоже протокол реального времени. Но там можно и "реальные" маленькие данные передавать и "не реальные" большие (типа видео с камер наблюдения) ЦитатаВ EtherCAT есть собственный механизм синхронизации слейвов с мастером и между самими собой, который называется Distributed clock. Благодаря ему достигается точность синхронизации с мастером < 100 наносекунд, не говоря уже о микросекундах. И можно быть уверенным, что все слейвы примут или выдадут управляющий сигнал синхронно, даже если между ними 20 узлов и километры кабеля. А разве Distributed clock не понятие из IEEE1588? И по поводу трафика и увеличения латентности с джиттером из-за пакетов синхронизации распределенных часов не ответили. Насколько пакеты синхронизации "забивают" линию?
  13. Цитата(Flip-fl0p @ Jan 16 2018, 20:14) заменой параллельной обработки на последовательную. Я об этом не просил. Задача в другом
  14. Цитата(XVR @ Jan 16 2018, 11:01) 2ТС - похоже у вас стойкое представление, что FPGA это такой большой сильно программируемый микропроцессор. Нет. У меня представление, что на ПЛИС можно реализовать "сколько хош" мокропроцессоров. А это как раз то, что мне нужно: очень много параллельно работающие микропроцессоров в одном чипе Цитата(AVR @ Jan 16 2018, 11:28) Нет, разве что встроенные отдельные блоки памяти, может в очень больших ПЛИС такое число найдется. Не могу прочитать всё, но прошу продублировать, в чем заключается "обработка"? Распарсить что? Текстовые логи? И куда результат, или что-то делать в зависимости от результата? Одно дело процедить регулярный текст, а другое - если что-то сложнее. Вся идея в картинке: И в который раз повторю "зачем но надо" Есть тыща устройств. У каждого устройства есть контроллер. 1000 устройств связаны 1000 контроллеров 1000 кабелями А я хочу сделать так: 1000 устройств 3 кабеля (можно 1, но вдруг оборвётся). А контроллеры загнать в одну ПЛИСину. Что тут непонятно?
  15. Расскажите про EtherCAT

    Цитата(syoma @ Jan 16 2018, 14:09) Мы испытывали наши шкафы с EtherCAT на восприимчивость ко всем помехам по стандарту для силовых подстанций - это как минимум на один уровень выше, чем для промышленных применений. EtherCAT работает нормально. "Нормально" - это не инженерный термин. Какой процент "битых" пакетов? to ALL: Уважаемые господа русские специалисты по EtherCAT! Подскажите пожалуйста. Если слейву (в зависимости от его состояния) нужно передавать то 1 байт, то 1 кБайт. То как быть? Как в EtherCAT разруливается такая ситуация? Постоянно резервировать 1 килобайт в пакете не хотелось бы. Бо не эффективное использование пропускной способности канала. Я к тому, что можно ли динамически менять границу данных каждого слейва в пакете? Если совсем "на пальцах", допускает ли стандарт на EtherCAT такое поведение слейва, когда он то читает (или пишет) то байты 45...56, а то 20...1433 "Дробить" дамп и отправлять в несколько заходов тоже не айс. И ещё, господа, вопрос. Нужно в слейвах синхронизировать часы с мастером с точностью 1мкс по IEEE1588. Сколько пропускной способности "сожрёт" IEEE1588? И как загрузка канала пакетами IEEE1588 повлияет на джиттер и время цикла основных пакетов Вот у меня цикл 50мкс нужно очень жёстко выдерживать (1мкс) и с малым джитером (1мкс) Смогу ли я в таких условиях заюсать IEEE1588 для синхронизации "распределенных часов" с точностью 1 мкс?