Комментарии 50
А зачем передавать только в моменты пересечения нуля?
В этот момент в сети также наблюдается наименьший уровень шума. Это самый благоприятный момент для генерации полезного сигнала.
А почему в эти моменты наименьший уровень шума?
Вряд ли у вас там в электрической части коммутатор стоит, который в точке ZC подключает передатчик/приемник. Впрочем, даже в этом случе ни передатчик ни приемник линию грузить не должны и необходимости включать коммутатор в точке нуля нет.
ИМХО, передавать/принимать можно в любое время, не обязательно в точке нуля.
Ограничения по вычислительной мощности контроллера и потолок по себестоимости устройства сказались на результате :)
А вообще да, передавать/принимать можно в любое время, но для этого нужен хороший и более устойчивый к помехам протокол.
Потому, что вблизи максимума синусоиды ОДНОВРЕМЕННО ток потребляют ВСЕ потребители с ёмкостью после выпрямителя, не оснащённые ККМ. Т.е. ВСЕ импульсные блоки питания, частотники, сварочники. В аппнотах и статьях по проектированию ИИП есть порядок цифры: 3 кВт нагрузка потребляет ~80А импульсы тока. Коммутации там не причём: эта помеха образуется при нормальной работе аппаратуры, каждый полупериод.
Однако такие моменты как миними шумов в ZC — стоило бы, хотя бы коротко, разъяснить в статье. Ибо оно ни разу не очевидно ИМХО. Те же индуктивные/емкостные нагрузки вполне себе могут иметь запас энергии в ZC для создания значительных шумов. И тут скорее всего только наблюдения в реальных сетях могут статистически подтвердить постулат минимума помех в ZC.
Вот честно, аж обрадовался, что на хабре статьи такие бывают. Но, дочитав до проверки целостности стало грустно. Вы слишком поторопились с реализацией, нужно было дальше изучать теорию. Я сам «мимокрокодил» и эту теорию знаю исключительно по лекциям в институте, глубоким изучением и реализацией не занимался, но даже этого достаточно, чтобы увидеть, что не так.
Рекомендую ознакомится с сетевой моделью OSI. У вас нет физического уровня. Вы просто решили на канальном уровне уменьшить размер кадра, авось один проскочит целым.
Почитайте про помехоустойчивое кодирование (корректирующий код). Реализуйте физический уровень.
У вас избыточность на «проверку целостности» аж треть кадра! При этом вы только обнаруживаете ошибки, даже не пытаясь их исправить.
Но даже это ещё полбеды. Вы настолько поторопились, что даже не успели узнать про циклический избыточный код, использовав вместо CRC свой велосипед с числом 42
Эти темы специально были пропущены. Поэтому на изображении абстрактный «Алгоритм». Тот кто будет этим заниматься уже сам выберет что ему лучше подойдёт в его реализации. Но мне, наверное, стоило в тексте заострить на этом внимание.
На физическом уровне у вас кадр в два байта: первый бит «старт», дальше 15 бит закодированные кодом Хемминга. Один ошибочный бит на кадр может быть исправлен. 11 бит после удачного декодирования и исправления ошибок складываем в буфер (иначе отбрасываем).
На канальном уровне у вас кадр в 11 байт (это 8 кадров физического уровня): первый байт — адрес получателя, второй байт — адрес отправителя, 8 байт полезной нагрузки, последний байт — CRC-8 от первых десяти байт. Ни каких меток начала кадра не нужно, просто читаем 11 байт из буфера, проверяем контрольную сумму, если не сошлось — отбрасываем первый байт, читаем один байт из буфера и снова проверяем контрольную сумму и так пока не сойдётся — значит нашли целый кадр, извлекаем адреса и данные, начинаем цикл заново. Если на физическом уровне был отброшен один кадр — за десять итераций цикла битый кадр канального уровня будет «отбракован».
8 кадров физического уровня — это 128 бит, они будут переданы за 1.28 секунды (каждый бит передаётся в ZC с интервалом в 10мс).
Про избыточность: 128 бит, из них — 8 бит «старт», 32 контрольных бита, 8 бит адрес получателя, 8 бит адрес источника, 64 бита данных, 8 бит CRC.
Избыточность меньше вашей, а надёжность выше.
Как бороться с коллизиями — думайте сами. Можно использовать циклы обмена, как в Modbus.
Спасибо за книжку, думаю многим пригодится.
У вас избыточность на «проверку целостности» аж треть кадра!
как будто у всех по другому.
А реальных картинок с осциллографа с шумами не будет?
извините, если что я не физик, но мне кажется шум никак не должен быть связан с переходом через 0. если кинуть в воду один большой камень и много маленьких то будет видно что происходит с волнами — если убрать волны от большого то маленькие останутся. наводки в сети могут быть от всего чего можно — от соседского пылесоса до вайфай-модема, поэтому мне кажется сделать фильтр который бы отсекал 50Hz было бы эффективней для увеличения скорости. переходы через 0 можно использовать для синхронизации, и посылать высокочастотную несущую, на которую уже накладывать полезный сигнал любого вида модуляции. если надеяться на 0 то потенциально можно получить очень много ошибок тогда, когда его там вдруг не случится по причине помех, на связанных с 50Hz. поправьте меня если я ошибаюсь
Вообще есть много схем согласования. Можно подсмотреть в datasheet-ах на готовые PLC микросхемы разных производителей.
К вопросу про высокочастотные помехи есть интересная тема «Переходные процессы в электрических цепях». В момент перехода через 0 эти переходные процессы менее выражены, отсюда и эта косвенная связь. Это просто практические наблюдения. Кстати если включить перфоратор или циркулярку, то никакие фильтры и переходы через 0 не спасут.
Не так давно передо мной встала нетривиальная задачка — собрать устройство, которое могло бы по линиям электропередач (0,4 кВ), в сетях обычных бытовых потребителей, передавать некоторую информацию, а точнее — показания электросчетчиков.— а не проще использовать уже готовое и сертифицированное? Например, Mеркурий 234 ARTM(2)-01 (D)POBR.L2, с технологией передачи PLC-2? К тому же существует толпа уже готовых модемов для приёма данных и передачи их в АСКУЭ
1. цена чипа
2. отменная кака…
1. Цена самого чипа AFE03х от TI ?
3. «отменная кака» что именно? Сами чипы от TI?
G3, Prime — это одни из немногих стандартов PLC — причём по характеристикам Prime выглядит лучше (скорость, кол-во поднесущих, кол-во узлов)
И я не знаю что юзает инкотекс (не доводилось потрошить их навороченные счётчики), возможно что либо и самопальное…
В этом плане намного интереснее протокол HomePlug. И скорость до 10 мбит, и «пробиваемость» получше. Главное, это дуплекс. И берется стандартный пакет Ethernet, заворачивается в обёртку и отправляется в/из провода. Логический протокол не лимитируется.
На практике любая отсебятина работает хуже, чем стандартные решения PRIME/G3, тема достаточно нетривиальная и под силу немногим.
Если что, я лично в теме разработки PLC модемов года с 2005-го.
Стоимость чипсетов PLC (AFE+DSP) на сегодня от $4 для промышленных партий, сколько стоит и продается ли в ЧипИДипе, не знаю.
Тем не менее, технологии PLC именно в АСКУЭ это годами сложившаяся практика производителей чипов и, соответственно, приборов. Ни на одной из отраслевых всемирных выставок нет счетчиков с HomePlug или иными широкополосными системами передачи данных по PLC. Везде используются те или иные варианты Narrowband PLC (NB PLC).
Пионеры сейчас в направлении широкополосной передачи в АСКУЭ — канадцы из Corinex, они же продвигают BPL (Broadband PLC) в PRIME Alliance.
Я совершенно не отрицаю HomePlug как технологию, я пишу лишь о том, что она не используется в промышленных и бытовых АСКУЭ (системах учета электроэнергии). Возможно в Вашем конкретном применении среда передачи достаточно чистая и более оптимальна для HomePlug чем для NB PLC.
Отдельная тема — нормативка. Технически конечно можно дунуть амплитуду и 10 Вольт в линию в полосе несколько (десятков) МГц. Вот только такое устройство не пройдет обязательную сертификацию во многих странах.
В тему ВЧ связи по высоковольтным ЛЭП (немного отдалённо имеет отношение к обсуждаемой теме) могу посоветовать книгу (старую) "Микуцкий Г.В. Скитальцев В.С. Высокочастотная связь по линиям электропередачи".
Power-line communication. Часть 1 — Основы передачи данных по линиям электропередач