0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Синхронизация микроконтроллера от сети

Нейрокриптография

Нейрокриптография — раздел криптографии, изучающий применение стохастических алгоритмов, в частности, нейронных сетей, для шифрования и криптоанализа.

Содержание

Определение [ править | править код ]

В криптоанализе используется способность нейронных сетей исследовать пространство решений. Также имеется возможность создавать новые типы атак на существующие алгоритмы шифрования, основанные на том, что любая функция может быть представлена нейронной сетью. Взломав алгоритм, можно найти решение, по крайней мере, теоретически.

При этом используются такие свойства нейронных сетей, как взаимное обучение, самообучение и стохастическое поведение, а также низкая чувствительность к шуму, неточностям (искажения данных, весовых коэффициентов, ошибки в программе). Они позволяют решать проблемы криптографии с открытым ключом, распределения ключей, хеширования и генерации псевдослучайных чисел.

Идеи нейрокриптографии впервые были озвучены Себастьяном Дорленсом (Sebastien Dourlens) в 1995 году, спустя 30 лет после определения основ нейронных сетей.

Применение [ править | править код ]

Область относительно нова, и пока не имеет практических применений. Однако уже сейчас она может использоваться там, где есть непрерывная генерация ключей.

В 1995 году Себастьян Дорленс применил нейрокриптоанализ, чтобы научить нейронные сети инвертировать S-перестановки в DES. В ходе эксперимента было найдено 50 % битов ключа, то есть ключ целиком может быть найден за короткое время. Аппаратная реализация состоит из множества (64К) простых микроконтроллеров, расположенных на СБИС.

Другой пример — протокол шифрования с открытым ключом Халил Шибаба (Khalil Shihab), в котором процесс расшифрования основан на многоуровневой нейронной сети, обучающейся по алгоритму обратного распространения. В то же время процесс зашифрования и создания закрытого ключа использует обычную двоичную алгебру. Преимущество этого метода в малых затратах времени и памяти. Недостаток — в алгоритме обратного распространения: на больших массивах входных данных нейронная сеть обучается долго. Поэтому данный протокол имеет лишь теоретическое значение.

Протокол обмена ключами [ править | править код ]

Для обмена ключами между двумя абонентами наиболее часто используется алгоритм Диффи-Хеллмана. Его, предположительно, более безопасная замена основана на синхронизации двух древовидных машин четности (ДМЧ). Синхронизация этих машин похожа на синхронизацию двух хаотических осцилляторов в теории хаотических связей.

ДМЧ [ править | править код ]

ДМЧ — это особый вид многоуровневой нейронной сети прямого распространения.

Она состоит из одного выходного нейрона, K скрытых нейронов и K×N входных нейронов. Входные нейроны принимают двоичные значения:

Веса между входными и скрытыми нейронами принимают значения

Значение каждого скрытого нейрона есть сумма произведений входного значения и весового коэффициента:

Значение выходного нейрона есть произведение всех скрытых нейронов:

Выходное значение также двоичное.

Протокол [ править | править код ]

У каждого абонента (А или Б) есть своя ДМЧ. Их синхронизация происходит следующим образом:

  1. Задаём случайные значения весовых коэффициентов
  2. Выполняем следующие шаги, пока не наступит синхронизация
    1. Генерируем случайный входной вектор X
    2. Вычисляем значения скрытых нейронов
    3. Вычисляем значение выходного нейрона
    4. Сравниваем выходы двух ДМЧ:
      1. Выходы разные: переход к п.2.1
      2. Выходы одинаковые: применяем выбранное правило к весовым коэффициентам

      После полной синхронизации (веса wij обоих ДМЧ одинаковые), А и Б могут использовать веса в качестве ключа.

      Этот метод известен как двунаправленное обучение.

      Для обновления весовых коэффициентов могут использоваться следующие правила:

      • Правило Хебба:
      • Анти-правило Хебба:
      • Случайное блуждание:

      Виды атак и надёжность [ править | править код ]

      Для каждой атаки предполагается, что криптоаналитик Е может подслушивать сообщения между А и Б, но не может их изменять.

      Метод грубой силы [ править | править код ]

      Криптоаналитик должен проверить все возможные варианты ключей, то есть все возможные веса wij. Если имеется K скрытых нейронов, K×N входных нейронов и максимальный вес L, то это даёт (2L + 1) KN вариантов. Например, для K = 3, L = 3, N = 100 ≈ 3·10 253 различных ключей. На сегодняшний день такая атака невозможна.

      Обучение собственной ДМЧ [ править | править код ]

      Пусть у криптоаналитика есть такая же ДМЧ, как и у абонентов. Он хочет её синхронизировать с двумя другими ДМЧ. На каждом шаге возможны три ситуации:

      1. Output(A) ≠ Output(B): Абоненты не обновляют веса.
      2. Output(A) = Output(B) = Output(E): Все трое обновляют веса.
      3. Output(A) = Output(B) ≠ Output(E): А и Б обновляют веса, но Е не может этого сделать. Поэтому он обучается медленнее, чем А и Б синхронизируются.

      Таким образом, криптоаналитик может определить ключ лишь с очень малой вероятностью.

      Другие атаки [ править | править код ]

      Защищенность обычных криптографических систем можно улучшить, увеличив длину ключа. В нейрокриптографии вместо ключа увеличивается синаптическая длина L. Это увеличивает сложность атаки экспоненциально, в то время как затраты абонентов на дешифрацию растут полиномиально. Таким образом, взлом подобной системы является NP-сложной задачей.

      Алексанр Климов, Антон Митягин и Ади Шамир утверждают, что исходный алгоритм нейросинхронизации может быть сломан по крайней мере тремя видами атак: геометрической, вероятностным анализом и генетическими алгоритмами. Хотя данная реализация небезопасна, идеи случайной синхронизации могут привести к абсолютно безопасной схеме. [1]

      Генетическая атака [ править | править код ]

      Атака строится на создании большой популяции нейронных шифровальных устройств (НШУ) — таких же нейросетей с абсолютно идентичной структурой, что А и Б. В процессе обмена информацией между абонентами происходит либо отсеивание ненужных НШУ, либо наоборот — наращивание потенциально благоприятных для взлома. Формализованный алгоритм выглядит так:

      • Взломщик инициализует свою машину только с одной НШУ. Веса для него выбираются случайно. Также устанавливается некоторое число М — порог популяции НШУ, которое может себе позволить взломщик.
      • Затем при обмене информацией между А и Б могут возникнуть три ситуации:

      1. Если выходные значения А и Б не равны между собой: Output(A) ≠ Output(B), обновление весов не происходит. Взломщик не трогает свою популяцию.
      2. Если Output(A) = Output(B) и число шифровальных устройств у взломщика не превышает порог М, то все НШУ заменяются на репрезентацию из F новых НШУ, каждая из которых получается альтернативной заменой скрытого нейрона на противоположное значение, собственно для этого подбираются новые веса. Затем происходит обучение по правилам Хеббиана.
      3. Если Output(A) = Output(B) и число шифровальных устройств у взломщика превышает порог М, то удаляются все те нейромашины, выходное значение которых Output(E) ≠ Output(A).
      Данный алгоритм действует только на маленьких нейросетях (N,K<=3) и становится в тупик даже на очень мощных компьютерах при K>=6. Строго говоря, все атаки, предложенные Александром Климовым и Антоном Митягиным основаны на том, что НШУ имеет небольшой размер. На практике же редко применяются шифровальные нейросети с параметрами N<100, K<100, L<10.

      Защита от квантовых компьютеров [ править | править код ]

      В квантовом компьютере данные хранятся в кубитах. Это позволяет решать более сложные задачи (дискретный логарифм, факторизация) за существенно меньшее время. Поэтому очень важно найти алгоритмы, не основанные на этих проблемах теории чисел.

      Нейронный протокол обмена ключей не основан на теории чисел, он основан на различии между однонаправленной и двунаправленной синхронизацией нейронных сетей. Поэтому, подобные протоколы могут ускорить процесс обмена. [1]

      Как синхронизировать генератор на электрической сети?

      Я прочитал много статей о параллельном соединении двух переносных генераторов или синхронизации генератора энергии в электрической сети.

      У меня есть теоретические знания по этой теме, и я знаю четыре условия, которые должны быть выполнены:

      1. Фазовая последовательность
      2. Величина напряжения
      3. частота
      4. Угол фазы

      То, что я знаю, это просто теория. Я хотел бы знать, как это сделать практически? Как называется устройство, которое выполняет процесс синхронизации? и как им пользоваться? Я искал на YouTube практические руководства, но не нашел полезной информации. У кого-нибудь есть?

      AaronD

      шипение

      шипение

      Ли Аунг Йип

      Ли Аунг Йип

      Я предвосхищу этот ответ, сказав, что в настоящее время у меня нет практического опыта в области производства электроэнергии . Следующие комментарии взяты из историй, которые я слушал, и документов, которые я прочитал. Вы не должны полагаться на какую-либо из этой информации при выполнении серьезных инженерных работ .

      С этим отказом от ответственности .

      Ответ «как вы синхронизируете блок с другим блоком или с сеткой» зависит от размера и типа блока.

      Вы не указали ничего о типе или размере единиц, которые вы хотите синхронизировать. Вы также не упомянули, какие аспекты вы хотели объяснить (аппаратное обеспечение? Алгоритмы управления? Нормативные требования?). Поэтому я дам очень общий обзор высокого уровня, а некоторые другие вопросы будут добавлены для общего интереса.

      В Руководстве пользователя по подключению генераторов до 10 МВт к распределительной системе Western Power SWIN изложены некоторые требования для подключения небольших генераторов (до 10 МВт) к (австралийской) объединенной юго-западной сети. В нем не так много говорится о синхронизации, но говорится о необходимых схемах защиты и управления.

      Малые блоки <1 МВт

      Для небольших бытовых или коммерческих дизельных генераторов они обычно устанавливаются с переключателем передачи. Переключатель передачи заблокирован, чтобы гарантировать, что генератор не может быть параллелен с сеткой.

      Для солнечных инверторов, которые работают параллельно с сетью, они должны быть установлены с обнаружением потери сети. Это предотвращает обратную подачу энергии солнечным инвертором в мертвую сеть, что может поставить под угрозу людей, пытающихся починить сеть.

      Средние единицы — 1 МВт — 10 МВт

      Синхронизация выполняется с помощью автосинхронизатора. Это смотрит на напряжение и разность фаз между устройством и сетью. Он выводит управляющие сигналы, которые изменяют скорость устройства, фазовый угол и напряжение, пока они не синхронизируются.

      Скорость и фазовый угол изменяются путем управления дросселем устройства (он же «регулятор», «автоматический регулятор генератора»). Напряжение регулируется с помощью автоматического регулятора напряжения устройства (AVR).

      Отдельно используется реле проверки синхронизации (ANSI 25). Реле проверки синхронизации не позволяет устройству отключиться от синхронизации.

      Закрытие не синхронизировано вызывает серьезные электрические и механические нагрузки и его следует избегать. Поэтому функция проверки синхронизации спроектирована так, чтобы быть защитной функцией «высокой надежности» с как можно меньшим количеством «движущихся частей».

      Устройства среднего размера, подключенные к сети, также обычно оснащены какой-либо противоизолирующей защитой. Опять же, это предотвращает повторное включение мертвой сети. Общими схемами защиты для этого являются «скорость изменения частоты» и «сдвиг вектора напряжения».

      Крупные агрегаты — электростанции — 40 МВт +

      Большие блоки на электростанциях имеют синхронизатор и реле проверки синхронности, как указано выше.

      Кроме того, их частота может быть преднамеренно отрегулирована, чтобы поддерживать частоту и фазу сетки с шагом синхронизации с эталонным значением атомных часов.

      Антиизлучение в местах, где устройство отключено от сети, является не столько проблемой, сколько электростанцией является сеть. Основное беспокойство вызывает повреждение устройства из-за переходных процессов нагрузки — либо внезапное удаление, либо добавление нагрузки. Защита от превышения частоты и пониженной частоты является одним из способов обнаружения этих состояний. Кроме того, используются надежные механические средства защиты (например, механическое превышение скорости, низкий / высокий уровень в барабане котла).

      Я искал на YouTube практические руководства, но не нашел полезной информации. У кого-нибудь есть?

      Вы не найдете инструкции по настройке автосинхронизатора или реле проверки синхронизации на Youtube.

      Предполагается, что такие устройства разрабатываются и устанавливаются квалифицированными инженерами-электриками, которые обычно не смотрят видео на Youtube для получения профессиональной консультации.

      Скорее всего, информацию можно найти в технических руководствах для каждой части генераторной установки. Я предполагаю, что вам придется прочитать руководства для генератора, контроллера генератора, автоматического регулятора напряжения, синхронизатора и реле проверки синхронизации. После прочтения каждого из этих документов вы сможете понять необходимое оборудование и конфигурацию.

      SunnyBoyNY

      Практически все солнечные / ветряные / топливные элементы используют программный контур фазовой синхронизации. Я разработал ряд таких преобразователей, как однофазных, так и трехфазных.

      ФАПЧ определяет частоту и угол сетки. Ваш преобразователь энергии затем использует данные для выработки соответствующего количества реальной и иногда реактивной мощности.

      Хорошая отправная точка для вас здесь ( проектирование фазовой замкнутой системы с использованием микроконтроллеров C2000 ™ для однофазного сетевого инвертора): http://www.ti.com/lit/an/sprabt3/sprabt3.pdf

      Обратите внимание, что все инверторы являются источниками тока.

      Btw. сетка является жестким источником напряжения, поэтому вы не хотите подключать генератор напрямую к ней. Генераторы, используемые в домах, имеют переключатели, которые можно использовать для подключения критических нагрузок на дом либо к сети, либо к генератору.

      AaronD

      AaronD

      Дэн Миллс

      Я сделал это с несколькими машинами на грузовиках мощностью 500 кВА на фестивальной площадке в тот день, если получится что-то вроде этого:

      Установите напряжение холостого хода двух машин так, чтобы оно находилось в пределах вольт или около того. Установите скорость холостого хода двух машин в пределах 1/4 Гц или около того. Установите процент снижения для полной нагрузки таким образом, чтобы при полной нагрузке на обеих машинах падение напряжения было одинаковым (важно для распределения реактивной мощности).

      Включите одну машину на шины (в этот момент шина все еще отключена от нагрузки).

      У вас есть две лампочки, соединенные последовательно между каждой из пар L1, L2 и L3 от двух машин, они будут мигать, когда две машины входят и выходят из фазы, синхрометр лучше, но лампочки более доступны.

      Вы настраиваете дроссельную заслонку на одной машине, чтобы привести к почти одинаковым скоростям (огни будут мигать медленнее, когда они приближаются к скорости синхронизации), затем, когда огни погаснут, вы нажимаете переключатель, переводя другую машину в шину (умный Вариант дроссельной заслонки — это водонагреватель, который можно использовать для небольшой нагрузки на одну машину, и переключатель, который меньше раздражает, чем кусок пиломатериала, нажимающий на маховик).

      Теперь обе машины будут работать с одинаковой скоростью (при необходимости, при движении). Убедитесь, что циркулирующие токи малы (если нет, вы неправильно установили напряжение без нагрузки).

      Закройте выключатель нагрузки.

      Если у вас правильно настроен спад, то две машины будут распределять нагрузку пропорционально их номинальной мощности.

      Стоит добавить реле обратной мощности, чтобы отключить машину, которая прекращает генерировать из-за топлива или механической неисправности, но вам может потребоваться обойти это на секунду или около того, когда вы подключаете машину к сети, так как они будут охотиться, пока они полностью не синхронизируют оба скорость и фаза.

      Гастроли цирка в бывшем советском квартале сразу после обрушения стены запомнились импровизированной техникой, иногда задействованной.

      Я не стал бы пробовать это с однофазным набором, и это больше проблем, чем оно стоит на небольших машинах.

      Генератор импульсов синхронизации

      Во многих электронных устройствах, питающихся от промышленной сети частотой 50 Гц, необходимо согласование моментов или интервалов времени с параметрами сети.

      Электронные или электронно-механические часы, командно-временные устройства автоматики должны получать синхросигнал от сети.

      Продление времени исправной работы ламп накаливания тоже связано с параметрами сети. Замечено, что если подавать напряжение на лампу в момент, когда сетевое напряжение переходит через ноль, то пиковая перегрузка лампы значительно снижается.

      С этой целью лампы накаливания снабжают электронными выключателями. Они вырабатывают импульс синхронизации при переходе сетевого напряжения через ноль.

      На основе микросхемы КР1156ЕУ5 можно выполнить такой генератор импульсов синхронизации, если собрать схему, показанную на рис. 2.1.

      Рис. 2.1. Схема электрическая генератора импульсов синхронизации с выходным каскадом

      Импульс синхронизации вырабатывается следующим образом. Переменное напряжение с обмотки трансформатора поступает на мостовую схему выпрямления на диодах VD1—VD4. На стабилитроне VD5 выпрямленная синусоида ограничивается, и ее форма становится похожа на трапецию.

      Таблица 2.1. Перечень элементов для схемы генератора импульсов

      синхронизации с выходным каскадом

      К50-35 47 мкФ 25 В

      Резисторы С2-33 0,25 Вт 10 %

      Резистор СГ13-386 0,125 Вт

      Вот из такого входного сигнала и происходит формирование импульса синхронизации. Часть этого сигнала (через делитель R3R4) подается на вход Ст (вывод 3) микросхемы DA1. Управление по этому входу приводит к тому, что в течение времени пока напряжение на входе меньше =1,2 В выходные транзисторы микросхемы открыты. Согласующий каскад на транзисторе VT меняет фазу импульса. С помощью подстроенного резистора R4 можно устанавливать определенную длительность импульса синхронизации.

      Перечень элементов для схемы генератора импульсов синхронизации приведен в табл. 2.1.

      Осциллограммы сигналов на входе и выходе генератора импульсов синхронизации приведены на рис. 2.2.

      Рис. 2.2. Осциллограммы сигналов на входе и выходе генератора импульсов синхронизации с выходным каскадом

      Генератор синхроимпульсов по схеме на рис. 2.1 предназначен для нагрузки, включенной относительно положительного питающего напряжения. Во многих практических случаях нагрузка включена относительно «земли», при этом выходной каскад должен быть выполнен по другой схеме.

      Схема генератора импульсов синхронизации 2 для нагрузки, включенной относительно «земли», приведена на рис. 2.3. В этой схеме управление микросхемой DA1 производится по входу 3 так же, как и в предыдущей. В то же время выходные транзисторы микросхемы соединены коллекторами с плюсом питания и, соответственно, включены как эмиттерный повторитель. Следовательно, нагрузка включается в цепь эмиттера относительно «земли». Следует заметить, что в такой схеме есть возможность полностью использовать свойства выходного транзистора микросхемы, т. е. получать в импульсе ток величиной до 1,5 А. Амплитуда импульса также может быть увеличена до 40 В (см. гл. 1, 2), а в некоторых отдельных случаях почти до 60 В.

      Рис. 2.3. Схема электрическая генератора импульсов синхронизации

      На выходе генератора имеется цепь индикации наличия импульсов синхронизации со светодиодом (HL1). Длительность выходного импульса устанавливается делителем (R3R4) и может составлять 1,2…8 мс.

      Перечень элементов для схемы генератора импульсов синхронизации 2 приведен в табл. 2.2.

      10. Система синхронизации и источники синхронизации

      МК XMEGA A3 оснащены расширенной системой синхронизации с множеством источников синхронизации. В нее входят встроенные генераторы и кварцевые генераторы с внешним подключением кварцевого или керамического резонатора. Встроенные фазовая автоподстройка частоты (ФАПЧ) и предделители частоты синхронизации предусматривают программное управление, что предоставляет разработчику возможность выбора множества опциальных частот синхронизации даже при использовании одного из источников синхронизации. Кроме того, имеется возможность прямо во время выполнения программы переключиться на синхронизацию от другого источника. Сразу после сброса микроконтроллер всегда запускается от внутреннего генератора частоты 2 МГц.

      МК поддерживают возможности калибровки, которые можно задействовать для автоматической калибровки во время работы внутренних 2-х и 32-х мегагерцовых генераторов. В результате такой калибровки, снижается дрейф частоты в функции напряжения и температуры. При необходимости можно активировать схему обнаружения отказа кварцевого генератора, которая, в случае повреждения внешнего генератора, автоматически включит синхронизацию МК внутренним генератором и инициирует немаскируемое прерывание (NMI). Система синхронизации МК XMEGA A3 представлена на рисунке 10.1.

      Рисунок 10.1. Система синхронизации

      В следующих параграфах будет дано краткое описание каждого источника синхронизации.

      10.3. Источники синхронизации

      10.3.1. Внутренний ULP-генератор частоты 32 кГц

      Внутренний ULP-генератор частоты 32 кГц отличается очень малым потребляемым током. Он используется для синхронизации сторожевого таймера, супервизора питания (BOD) и выступает в роли асинхронного источника синхронизации счетчика реального времени. Данный генератор не может использоваться в роли источника системной синхронизации и не предусматривает возможности программного управления.

      10.3.2. Внутренний калиброванный генератор частоты 32.768 кГц

      Внутренний калиброванный генератор частоты 32.768 кГц — высокоточный источник синхронизации, который может использоваться в качестве источника системной синхронизации или асинхронного источника синхронизации счетчика реального времени. Он откалиброван на фазе производства таким образом, чтобы его частота по умолчанию была близка к номинальной частоте.

      10.3.3. Кварцевый генератор частоты 32.768 кГц

      Кварцевый генератор частоты 32.768 кГц — малопотребляющий инвертирующий усилитель для внешнего часового кварца. Он может использоваться, как источник системной синхронизации или как асинхронный источник синхронизации счетчика реального времени.

      10.3.4. Кварцевый генератор частоты 0.4…16 МГц

      Кварцевый генератор частоты 0.4…16 МГц — усилитель, поддерживающий возможность работы с внешними керамическими и кварцевыми резонаторами на частоты от 400 кГц до 16 МГц.

      10.3.5. Внутренний генератор частоты 2 МГц с возможностью автоматической калибровки

      Внутренний генератор частоты 2 МГц с возможностью автоматической калибровки — высокочастотный генератор. Он откалиброван на фазе производства таким образом, чтобы его частота по умолчанию была близка к номинальной частоте. Генератор поддерживает возможность автоматической калибровки частоты, которая снижает ее зависимость от температуры и напряжения, а, следовательно, повышает точность генератора. В качестве эталонного источника частоты для калибровки может выступать внутренний калиброванный генератор частоты 32 кГц или кварцевый генератор частоты 32 кГц.

      10.3.6. Внутренний генератор частоты 32 МГц с возможностью автоматической калибровки

      Внутренний генератор частоты 32 МГц с возможностью автоматической калибровки — высокочастотный генератор. Он откалиброван на фазе производства таким образом, чтобы его частота по умолчанию была близка к номинальной частоте. Генератор поддерживает возможность автоматической калибровки частоты, которая снижает ее зависимость от температуры и напряжения, а, следовательно, повышает точность генератора. В качестве эталонного источника частоты для калибровки может выступать внутренний калиброванный генератор частоты 32 кГц или кварцевый генератор частоты 32 кГц.

      10.3.7. Вход внешней синхронизации

      Вход внешней синхронизации делает возможным подключение системы синхронизации к внешнему источнику.

      10.3.8. ФАПЧ с коэффициентом умножения частоты 1… 31

      Схема ФАПЧ делает возможным умножение частоты на любое число из диапазона 1…31. В сочетании с делителями частоты, это дает большой выбор выходных частот, независимо от используемого источника синхронизации.

      Синхронизация выполнения между 2 микроконтроллерами в C

      Я хотел бы использовать этот вопрос как способ обсуждения алгоритма синхронизации по сети из 2 или более микроконтроллеров.

      Я начал думать об этой проблеме сегодня днем, когда у меня было бы 2 разных микроконтроллера, обменивающихся данными, а затем синхронизирующих выполнение, чтобы начать выполнять работу в одно и то же время и закончить примерно в одно и то же время. Это способ гарантировать правильность кода, который вы запускаете, и, возможно, отсутствие ошибок в памяти (вероятность наличия точно такой же ошибки на обоих микроконтроллерах чрезвычайно мала, как вы можете себе представить).

      Я подумал о том, чтобы просто отправить сообщение с microcontroller 1 timestamp, затем второй microcontroller получит его и сравнит со своим собственным timestamp, а затем повторно отправит его на микроконтроллер1.

      В этот момент они оба начинали выполнять один и тот же код и синхронизировались в конце, где обменивались результатами друг с другом, а затем приходили к выводу, что что-то не так или все работает нормально.

      Я думал, что это будет «decent» способ добиться синхронизации выполнения между обоими микроконтроллерами, но я не могу выкинуть из головы, что может быть лучший и более умный способ сделать это.

      Это «might» хорошо работает с 2 микроконтроллерами, но как насчет того, когда я хочу сделать это с большим количеством микроконтроллеров? Что делать, если я хочу реализовать 5-ядерную систему (например, 5 ядер arm9) так, как я уже объяснял ранее. Я не вижу, чтобы это работало для нескольких микроконтроллеров. Даже если бы я хотел реализовать 5-ядерную систему, в которой все микроконтроллеры выполняли бы различную работу (я думаю, что синхронизация должна быть наилучшей во всех случаях . я действительно не знаю, мне никогда не требовалось больше одного ядра, но теперь мне нужно будет это сделать)

      EDIT:

      Я хотел бы использовать этот вопрос как способ понять алгоритмы синхронизации по сети или на одной плате 2 или более микроконтроллеров.

      Я начал думать об этой проблеме сегодня днем, когда у меня было бы 2 разных микроконтроллера, обменивающихся данными, а затем синхронизирующих выполнение, чтобы начать выполнять работу в одно и то же время и закончить примерно в одно и то же время. Это способ гарантировать правильность кода, который вы запускаете, и, возможно, отсутствие ошибок в памяти (вероятность наличия точно такой же ошибки на обоих микроконтроллерах чрезвычайно мала, как вы можете себе представить).

      Я подумал о том, чтобы просто отправить сообщение с microcontroller 1 timestamp, затем второй microcontroller получит его и сравнит со своим собственным timestamp, а затем повторно отправит его на микроконтроллер1.

      В этот момент они оба начинали выполнять один и тот же код и синхронизировались в конце, где обменивались результатами друг с другом, а затем приходили к выводу, что что-то не так или все работает нормально.

      Я думал, что это будет «decent» способ добиться синхронизации выполнения между обоими микроконтроллерами, но я не могу выкинуть из головы, что может быть лучший и более умный способ сделать это.

      2 ответа

      • Синхронизация между звуковым файлом и анимацией

      у меня есть 25 изображений и звуковой файл продолжительностью 2 секунды. Я пытаюсь воспроизвести звук и воспроизвести анимацию, но синхронизация не происходит между звуком и анимацией . Может ли кто-нибудь помочь мне, пожалуйста, как синхронизировать анимацию со звуком. Есть 25 кадров, а.

      У меня проблема. Мне нужно сделать синхронизацию между двумя устройствами Сначала я пытался настроить синхронизацию через CoreData. Но это не очень хорошая работа. Добавление новых сущностей работало нормально. Но редактирование ранее созданной работы не очень хорошо. Я выглядел так же, как и в.

      Конечно, существуют системы, в которых два или более процессоров выполняют одну и ту же задачу, и результаты сравниваются. Я знаю об управлении поездом autmatic, в котором есть две системы, которые должны давать один и тот же результат, и если одна из систем НЕ дает одного и того же результата, аварийный тормоз равен «pulled», и поезд останавливается до тех пор, пока водитель не нажмет кнопку «I notice the computer isn’t working right». Эти две системы имеют программное обеспечение, написанное двумя разными группами разработчиков, которые не делятся никакой информацией о том, как они реализуют свое решение, чтобы избежать «распространенных ошибок, потому что мы оба думали, что THIS должен быть решен таким образом».

      Самолет электронный обычно использует неравномерное число и «majority voting» для выбора между несколькими ответами из разных систем — это плохая идея, чтобы просто «stop» в самолете. Опять же, системы используют разное программное обеспечение и часто также разных поставщиков, например, процессоров и языков — поэтому одна система написана на C или C++, другая — на Java, а третья-на Pascal или ADA [в качестве примера], чтобы уменьшить вероятность того, что ошибка процессора, языка или компилятора приведет к тому, что EVERY в системе будет «wrong».

      Из предыдущей работы, работавшей с x86, я довольно подробно рассмотрел это для клиента, который хотел иметь «резервный процессор, работающий в режиме блокировки», И ему пришлось использовать модифицированный компилятор, который добавил инструкции ввода-вывода в точках принятия решений в коде [ветви, вызовы, возвраты и т. Д.], А затем внешнее оборудование, чтобы гарантировать, что процессоры действительно синхронизированы]. Таким образом, современные процессоры, в том числе такие ARM, имеют достаточно «clever stuff», что довольно «unpredictable» внутри процессора, что почти невозможно заставить два процессора работать в точном шаге блокировки друг с другом. Конечно, вы можете получить что-то, что «выполняет одну и ту же задачу за одно и то же время», если вы не измеряете время TOO точно.

      Суперскалярные исполнительные блоки, асинхронные прерывания, асинхронные контроллеры памяти, кэши, содержимое кэшей-все это сговаривается, чтобы заставить один процессор работать немного быстрее или медленнее, чем другой.

      Таким образом, существует предел тому, насколько точно вы можете сделать системы «sync».

      Протокол сетевого времени (NTP) имеет несколько довольно умных алгоритмов для настройки/синхронизации времени между несколькими системами, что позволяет нескольким системам иметь одну и ту же идею «time». Но имейте в виду, что опять же, есть предел «sameness». Это, вероятно, несколько микросекунд.

      Итак, можете ли вы «start at the same time», зависит от того, что вы подразумеваете под «same time». Микросекунды или миллисекунды OK? Если это так, то почти наверняка возможно. Если вы имеете в виду тактовые циклы, то, вероятно, нет.

      • Синхронизация потоков в c++

      Недавно я прошел тест на C++. Она уже закончена, но я знаю только свой счет и не знаю правильных ответов. Было два вопроса:: 1. Можно ли синхронизировать потоки C++ с помощью функций из стандарта? (да или нет ) 2. Можно ли синхронизировать поток C++ с вводом/выводом stdio с помощью функций.

      У меня есть 2 подписки, которые имеют одну и ту же базу данных, и им нужно будет синхронизировать данные. Возможно ли это достичь с помощью синхронизации Azure SQL? Причина, по которой у нас есть 2 подписки, заключается в том, что одна из них-клиенты, а другая-клиенты. Если это невозможно, то как.

      Существует несколько способов сделать это, в зависимости от того, насколько пользовательской вы хотите сделать систему и насколько точно она должна работать.

      Однако вы на правильном пути с метками времени, которые отправляются туда и обратно. «standard» способ выполнения локальной синхронизации , подобный этому,-это протокол точного времени (PTP / IEEE 1588), который работает с точностью до микросекунды , в зависимости от реализации (в отличие от протокола сетевого времени NTP, который лучше подходит для синхронизации на большие расстояния и обычно не может достичь синхронизации лучше, чем в миллисекундном диапазоне).

      Если у вас есть система Linux с Ethernet или аналогичная, работающая на ваших микроконтроллерах, вы можете, таким образом, взглянуть на PTPD . Или, если вы хотите реализовать что-то самостоятельно, взгляните на PTP (и, вероятно, также на NTP) алгоритм(ы) и вдохновитесь.

      Похожие вопросы:

      У меня есть приложение iOS calendar, и мне нужно синхронизировать его с Google calendar. Мне нужна синхронизация в виде следующих шагов: 1-полная синхронизация с Google календарем только один раз.

      Мне нужно синхронизировать данные между двумя базами данных. Первичная база данных-это база данных сервера SQL, в которой выполняются все операции вставки, обновления и удаления. Другая база.

      Хорошо morning/afternoon/evening! Есть 2 системы — CRM (customized SplendidCRM) и home-brewedmonster (crm+cms+backoffice). CRM — Asp.Net 2.0 WebSite, Sql Server 2008; реализуется с помощью.

      у меня есть 25 изображений и звуковой файл продолжительностью 2 секунды. Я пытаюсь воспроизвести звук и воспроизвести анимацию, но синхронизация не происходит между звуком и анимацией . Может ли.

      У меня проблема. Мне нужно сделать синхронизацию между двумя устройствами Сначала я пытался настроить синхронизацию через CoreData. Но это не очень хорошая работа. Добавление новых сущностей.

      Недавно я прошел тест на C++. Она уже закончена, но я знаю только свой счет и не знаю правильных ответов. Было два вопроса:: 1. Можно ли синхронизировать потоки C++ с помощью функций из стандарта.

      У меня есть 2 подписки, которые имеют одну и ту же базу данных, и им нужно будет синхронизировать данные. Возможно ли это достичь с помощью синхронизации Azure SQL? Причина, по которой у нас есть 2.

      Я искал во многих темах и проблемах, но не нашел ответа. Когда я использую Realm Objects Server и клиенты подключаются к серверу, весь DB синхронизируется между всеми клиентами? Другими словами.

      Итак, представьте себе, что есть класс А, который реализует Runnable следующим образом: class A implements Runnable < C c; Thread t; public A(C c)< this.c = c; t = new Thread(this); >public void.

      в моем приложении , у меня есть микро-службы, развернутой в двух случаях в одной и той же машины , микро-службе позвольте мне вставить некоторые данные в кэше, используя infnispan. сначала я.

      голоса
      Рейтинг статьи
      Читайте так же:
      Не могу отрегулировать браслет на часах
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector