Цитата(SSerge @ Jan 14 2018, 02:07)

У меня тоже есть для Вас картинки
CRCКаждый узел в сети формирует поток битов на передачу. Не важно как он это делает, просто пропускает через себя принимаемый пакет или что-то в него вставляет на лету. На входе передатчика это просто биты идущие друг за другом каждые 10 нс.
На второй картинке в вики схема которая подсчитывает CRC для такого потока бит одновременно с передачей. Биты кодируются и передаются в линию, одновременно те же биты поступают на вход схемы считающей crc. В тот момент когда последний бит данных передан в регистре будет находится подсчитанная crc, в следующем такте можно уже передавать биты из этого регистра. Как не трудно заметить никакого феноменального быстродействия от этой схемы не требуется.
Допустим.
Что слейв может подсчитывать "на лету" CRC принимаемого пакета.
Но для этого нужно реализовать схему на логических вентилях.
Считать "на лету" CRC программным путем с помощью микроконтроллера не получится.
Так? Потому что операция CRC-сложения занимает не один так процессора
Цитата(SSerge @ Jan 14 2018, 02:07)

Фокус в том, что crc никто не модифицирует, её просто вычисляют заново для передаваемого пакета, причём прямо в процессе передачи.
Что значит "никто не модифицирует"?
Если слейв вставил какие-то свои данные в пакет, то он должен и CRC, пакета переписать. Ведь она изменилась. Так?
Тут возникает проблема. Допустим переписать он её сможет.
Но ведь целостность ПРИНЯТОГО пакета он никак не проконтролировал.
Поясню.
Допустим данные слейва находятся а 25-м байте от головы пакета.
А CRC - а 154-м байте
Слейв считывает свои данные на 25-м байте и начинает их использовать ДАЖЕ НЕ ПРОВЕРИВ CRC, потому что она еще не дошла. Она ещё "в пути". И формирует ответные данные которые вставляет в 26-й байт
А вдруг пакет "битый" был?
В результате слейв отработал некорректно
Цитата(_pv @ Jan 14 2018, 02:50)

нет, CRC16 не считает, но лишь по той причине что в езернете используется CRC32.
Да хоть CRC128 - это не принципиально.
Принципиально: считает или нет
Цитата(_pv @ Jan 14 2018, 02:50)

о да, зачем читать скучные спецификации, когда есть википедия с картинками и рекламные статьи на русском языке.
Вы хотите сказать, что там всё врут?
И в каком конкретно месте там врут?
Цитата(_pv @ Jan 14 2018, 02:50)

это делает каждый слэйв, а не только последний.
Это очевидно.
Вот же картинка

Цитата(_pv @ Jan 14 2018, 02:50)

даже хуже - время одного бита 8 нс.
но если вдруг пакет из слэйва вылезет не прям сразу как залез, а через пару (а может десятков, а то и сотен) тактов, то можно не только CRC посчитать.
Только проблема, что слейв может писать только в определенный выделенный ему тайм-слот пакета, а не в весь пакет
Цитата(Impartial @ Jan 14 2018, 08:07)

CRC32 считается на лету после приема каждой группы бит. Каждый слейв считает и передает дальше свой црц. Других вариантов просто нет.
Это я уже понял.
Также понял, что для подсчета CRC "на лету" нужна ПЛИСина. На MCU общего назначения EtherCAT слейв не реализуешь. Так?
Цитата(Impartial @ Jan 14 2018, 08:07)

Реализовать в плисине саму идеологию не проблема.
А ПЛИСине да. А вот на MCU - большая проблема
Цитата(Impartial @ Jan 14 2018, 08:07)

Не так. Задержки во всей цепочке слейвов нет.
Задержка таки есть.
Вы же сами написали:
Цитата
Цитата(Impartial @ Jan 14 2018, 08:07)

Причем считается не только выходной но и входной для проверки целостности пакета на входе..
Цитата(Impartial @ Jan 14 2018, 08:07)

Принимает к исполнению полученные данные после окончания пакета и, соответственно, проверив правильность принятого пакета.
Т.е. есть задержка по крайней мере на 1 цикл шины
Цитата(Impartial @ Jan 14 2018, 08:07)

Реализовать в плисине саму идеологию не проблема. Проблема в том, что бы выдержать стандарт. А там много разных дополнений типа "ethernet over ethercat".
Т.е. без того, чтобы отстегнуть кругленькую сумму фирме Beckhoff (Германия) реализовать полноценный EtherCAT слейв не получится?
Цитата(Impartial @ Jan 14 2018, 08:07)

Если не лезть в эти дебри то реализация в плисе типа циклона 4 занимает где то 1000-1200 LES .
Вы сами, лично, реализовали "с нуля" EtherCAT слейв на ПЛИСине не платя ничего фирме Beckhoff? Или Вы чисто теоретически говорите?
Цитата(Impartial @ Jan 14 2018, 08:07)

В микрочипе есть готовая микросхема LAN9252.
И в техасе, и у хилшера, и ... да много у кого есть
И все же остался открытым вопрос по надёжности реализацииКто-нибудь проводил такие исследования?
Есть инфа по этому вопросу?
А какой процент битовых ошибок?
Ведь если посмотреть ещё раз на картинку
То каждый из 6-ти слейвов может "запороть" всю телеграмму
А наличие 12 (!!!) промежуточных кабелей... Тоже надежность не увеличивают
И повторю это:
Цитата
Протоколы суммарного фрейма более восприимчивы к помехам, чем протоколы с одним фреймом. При повреждении фрейма в протоколах с суммарным фреймом всегда теряется весь цикл.
...
В конечном итоге теоретически более высокая производительность метода суммарного фрейма сводится на нет.
©Вообщем в рекламе все просто замечательно.
А как в жизни?
Если 6 и более слейвов в цепочке и тяжелая электромагнитная обстановка в цеху?
Как себя поведет система на EtherCAT?
Сообщение отредактировал Herz - Jan 14 2018, 11:10