Как данные датчика передаются с физического уровня на уровень приложений?

Я использовал Arduino IDE для программирования шлюза Интернета вещей с использованием ESP32 и Ethernet-модуля W5500 для использования их в качестве веб-сервера Ethernet.

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

, 👍0

Обсуждение

Не думаю, что модель OSI имеет к этому отношение. Связь между веб-сервером и датчиком, вероятно, осуществляется по I2C или SPI. Эти «стеки протоколов» настолько тонкие, что пытаться сопоставить их с моделью OSI бессмысленно., @Edgar Bonet

Спасибо, я не проверял веб-сервер с точки зрения периферийного интерфейса., @Deepak Kumar

датчик принадлежит физическому уровню модели OSI ... нет, это не так ... данные датчика представляют собой числовое значение, которое добавляется непосредственно в HTML-код ... веб-сервер не взаимодействует с датчиком, @jsotola

что вы подразумеваете под словом «датчик»?, @Juraj

@DeepakKumar, похоже, вы навязываете сложное формальное описание интернет-коммуникаций небольшому встраиваемому устройству. Можно сказать, что это «программный» подход к устройству, которое стремится к простоте и низкой стоимости. Если быть педантичным, то можно сказать, что датчик температуры I2C (автономное устройство, вероятно, не больше кукурузного зернышка) сам по себе охватывает несколько уровней модели OSI, поскольку он физически считывает температуру, но передаёт пакеты данных на Arduino. Это тот ответ, который вы искали? Или ваш вопрос страдает от проблемы XY?, @st2000

Я случайно столкнулся с этим сценарием, в котором датчики и исполнительные механизмы объединены в сеть по локальной сети на базе IP для промышленной автоматизации. Я знаю, что простое встраиваемое оборудование может считывать данные с датчика и соответствующим образом управлять выходными сигналами. Но добавление сетевого интерфейса к встраиваемому оборудованию приведёт к возникновению сложностей, связанных с различными уровнями сетевой организации компьютерной сети. Компьютерные сети — это взаимодействие двух приложений по сети. Я не мог понять, как два аппаратных элемента, такие как датчики и исполнительные механизмы, вписываются в это определение., @Deepak Kumar


2 ответа


0

Считывание данных с датчика или управление исполнительным механизмом реализуется на определённом аппаратном уровне, обычно называемом «уровнем аппаратной абстракции» (HAL). Это не то же самое, что уровень 1 модели OSI.

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

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

Модель OSI предназначена и применима для сложных взаимосвязей систем, использующих уровни протоколов, например HTTP через Ethernet.

Таким образом, если вы добавите сетевое взаимодействие в систему с датчиками и исполнительными механизмами, у вас будет несколько отдельных потоков данных:

  1. Между датчиками и приложением;
  2. Между приложением и исполнительными механизмами;
  3. Между сетевым оборудованием и приложением;
  4. Между сетевым оборудованием и другими системами.

Из-за соответствующей сложности модель OSI следует применять только для последних двух случаев.

,

1

Предположим, у вас есть ESP32, оснащенный модулем Ethernet, и вы используете он как шлюз между датчиком I2C и веб-браузером, работающим на Компьютер. Топология сети будет выглядеть так:

┌────────┐       ┌───────┐            ┌──────────┐
│ sensor │       │ ESP32 │            │ computer │
└─────┬──┘       └─┬───┬─┘            └───┬──────┘
      └──── I2C ───┘   └─── Ethernet ─────┘

Здесь есть две сети: I2C и Ethernet. OSI Модель может быть применена только к одной сети одновременно, поэтому вам придется выберите, какую из этих двух ссылок вы моделируете:

  • Возможно, вам удастся сопоставить связь I2C с моделью OSI. Однако, как я уже сказал в комментарии, «стек протоколов» I2C настолько тонок, Это упражнение будет выглядеть довольно надуманным и, вероятно, не очень полезно.

  • В Ethernet-соединении вы будете использовать HTTP/TCP/IP. Это способ более богатый стек протоколов и более удобный для сопоставления с OSI Модель. Однако обратите внимание, что датчик к ней не подключен. сеть, поэтому она не принадлежит ни одному слою в этой модели.

В ESP32 код, отправляющий данные датчика на компьютер, может выглядеть так:

// Получить данные датчика.
float temperature = theSensor.readTemperature();
float humidity = theSensor.readHumidity();

// Сериализуем в JSON.
client.print("{\"temperature\":");
client.print(temperature);
client.print(",\"humidity\":");
client.print(humidity);
client.print("}");

Здесь данные датчика (температура и влажность) являются приложением Данные: то, что вам действительно важно. Код, который их сериализует JSON можно рассматривать как уровень представления. Код, который анализирует и генерирует заголовки HTTP (которые могут быть вашими собственными или поступать из Библиотека) — это прикладной уровень. Ниже находится обычный TCP/IP Стек. Однако следует помнить, что уровни модели TCP/IP не соответствовать уровням модели OSI один к одному.

,