Способ обмена информации интерфейса

Интерфейсы передачи информации

То что вы видите на мониторе — интерфейс. Клавиатура с мышкой — интерфейс. И даже окно регистратуры в больнице — это тоже интерфейс.

Интерфейс (англ. interface) — общая граница между двумя функциональными объектами, требования к которой определяются стандартом; . // Wikipedia

Во встраиваемых системах чаще всего под словом «интерфейс» понимают физический блок МК отвечающий за передачу данных. Они могут быть последовательными или параллельными, синхронными или асинхронными, дифференциальными или обычными.

Параллельные и последовательные интерфейсы

Допустим нам нужно переслать 1 байт (8 бит) информации. Как это сделать? Можно выделить под каждый бит по одной ножке МК (линии), тогда для передачи потребуется 8 ножек, плюс одна, которая будет говорить принимающей стороне что передача закончена и нужно считать входной сигнал. Такой интерфейс называется параллельным (англ. parallel): группа битов передаётся одновременно за один квант времени. К таким интерфейсам относится PCI (32 линии) и её можно встретить в LCD знакогенерирующих индикаторах (например WINSATR).

Можно поступить по другому и передавать данные по одной линии, кодируя, например, 1 как высокий уровень сигнала (3,3 В), а 0 как низкий (0 В). В таком случае потребует всего одна ножка МК для передачи и одна что бы сообщать когда этот сигнал считывать. Такие интерфейсы называют последовательными (англ. serial): N битов передаётся по одному за N-квантов времени. Примером последовательного интерфейса — USART.

Параллельный интерфейс, как не сложно догадаться, быстрее в N-раз, однако требует в N-раз больше линий. В микроконтроллерах чаще всего присутствуют только последовательные интерфейсы (периферийные блоки, которые делают всё автоматически), к ним относятся SPI, I 2 C, I 2 S, CAN, USART и USB. Некоторые из них мы рассмотрим подробнее в этом курсе.

Синхронные и асинхронные интерфейсы

Примеры которые мы привели выше были синхронными, они так называются потому что используют отдельный вывод, который сообщает принимающей стороне когда считывать данные. К ним относится SPI и USART. Однако, USART (с англ. Universal Synchronous/Asynchronous Receiver/Transmitter) как не сложно догадаться может работать в асинхронном режиме. Если время передачи бита известно, то сообщать когда именно нужно считывать бит нет необходимости. Однако нужно как-то различать между собой принятые байты. С этой целью в последовательность высоких и низких уровней на шине внедряют задержки (старт и стоп-биты). Они отличаются по длительности от обычных 0 и 1 , благодаря чему всегда можно определить где начало, а где конец посылки. Асинхронная версия USART называется UART.

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

В интерфейсе SPI напротив, считывание сигнала происходит только по команде тактирующей линии.

У вас наверняка возникает философский вопрос, — «Зачем есть капусту, когда есть картошка?» Может показаться, что линия с тактовым сигналом излишня. Да. Но это не всегда так. Линия с тактовым сигналом делает интерфейс независимым от стабильности тактирующих систем узлов. Если погрешность будет слишком велика, то у устройств с асинхронным интерфейсом может произойти рассогласование. В случае с синхронным, тактовый сигнал задаётся передающим устройством (не совсем корректно, но пока пусть будет так), поэтому после первого бита линию можно повесить, условно, на полчаса без каких либо последствий и продолжить передачу после этого.

Читайте также:  Основной способ жарки температура

Дифференциальные интерфейсы

USB является дифференциальным последовательным интерфейсом. При этом он довольно требователен к стабильности частоты и именно по этой причине в нашем устройстве не реализована на физическом уровне возможность подключения часов к компьютеру; требуется внешний высокочастотный кварцевый резонатор 1 .

Дифференциальным он называется потому, что сигнал передаётся сразу по двум линиям, причём если на одной линии выставлена 1 , то на второй должен быть выставлен 0 и наоборот.

Опять же вопрос, зачем два провода, когда можно использовать один? UART вроде хорошо работал на одной линии. На самом деле нет. UART хорошо работает на низких скоростях. При повышении частоты передачи начинают влиять паразитные ёмкости и индуктивности и сигнал просто теряется. Дифф-пара позволяет понизить напряжение, уменьшить электро-магнитное излучение, уменьшить потребление и повысить устойчивость приёма сигнала.

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

К слову, проводной интернет (Ethernet) так же построен на дифференциальной паре.

Режим работы

Некоторые интерфейсы могут поддерживать несколько режимов работы, другие напротив способны работать только в одном определённом.

Если устройство использует два канала, один для приёма и второй для передачи, и при этом обмен данными может происходить одновременно, то такой режим работы называют полным дуплексом (англ. full duplex). Ваш мобильный телефон работает в таком режиме: вы можете слушать человека и говорить ему что-либо одновременно. Если используется два канала, но передача и приём может производится только одним устройством в один момент времени, то такой режим работы называется полудуплексным (англ. half-duplex). И наконец, если используется один канал, следовательно общение может проходить только разделённое во времени, то такой режим называется симплексным (англ. simplex).

Свойство шины

Каждый интерфейс предъявляет свои требования к шине данных. В таких интерфейсах как UART может быть только два устройства (принимающее и отправляющее). При этом с точки зрения иерархии нет никакой разницы, оба устройства равнозначны. В интерфейсе SPI устройств может быть несколько, но только одно (на самом деле не всегда, но это исключение) является главным, т.е. ведущим или мастером (англ. master). Все остальные устройства являются ведомыми или подчинёнными (англ. slave). При этом SPI требует подводить к каждому устройству линию выбора (англ. chip select). Общение ведётся только с тем устройством, на линии которого присутствует сигнал активации.

Все ножки вышеописанных интерфейсов настраиваются как двухтактный выход. Но не все интерфейсы можно использовать подобным образом. Интерфейсы 1-Wire и I 2 C вместо линии выбора используют специальную команду с адресом устройства. Выгода очевидна — на линию можно повесить сколько угодно (есть ограничения) устройств, не вводя новые линии. Однако что будет, если два устройства захотят использовать шину одновременно? Непременно сложится ситуация, когда одно устройство подтянет линию к земле, а другое к питанию. Такое поведение, мягко говоря, не желательно и называется коротким замыканием (англ. short circuit).

То самое чувство, когда микросхема испустила дух, выпустила магический дым.

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

Сравнение некоторых интерфейсов

Название Количество линий, шт Длина линии, м Скорость, бит\с
1-Wire Simplex до 300 м 15,4 Кбит/с, максимум 125 Кбит/с
SPI Duplex до 5 м > 100 МГц
I 2 C Simplex 3 м 425 КБ/c
UART Duplex 5 м > 11 520 байт/с
CAN Simplex до 5000 10 кбит/с — 1 Мбит/с
USB 2.0 Duplex 5 60 МБ/c

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

Источник

Информационный обмен или как реализовать транспорт данных?

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

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

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

Рассмотрим простой кейс:

  1. Клиент оставил заявку на сайте банка – включилась передача данных с веб-формы в базу данных на бэк;
  2. Он запросил большой кредит: надо передать его персональные данные в сервис скоринга и получить решение;
  3. Банк готов сотрудничать с этим клиентом – необходимо передать статус по заявке для отображения личном кабинете;
  4. Кредит выдан, теперь его надо включить в отчетность, значит, он попадет в регулярные обновления данных в DWH.

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

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

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

Прежде всего, разделим интеграции на две категории:

  • онлайн-интеграции;
  • интеграции с задержкой во времени.

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

А вот когда тот же клиент совершает покупку на борту самолёта, моментального обмена данными быть не может, поскольку отсутствует подключение к сети. Все операции накапливаются в POS-терминале, а по приземлении самолёта происходит процессинг всех оффлайновых операций. В данном случае это интеграция с задержкой во времени. Как правило, передача данных с лагом во времени допускается при невозможности получить моментальный ответ от смежной системы, или при передаче больших объемов данных (например, в DWH и BI-системы).

Онлайн-интеграции

Самый распространенный способ моментального обмена данными – через API (Application Programming Interface).

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

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

Наиболее популярными на сегодняшний день являются – SOAP API и REST API. Оба вида сервисов широко используются в различных платформах и имеют свои преимущества и недостатки, поэтому при проектировании интеграции зачастую возникает вопрос, какую технологию использовать.

К преимуществам SOAP относится использование XML для кодирования запросов и ответов, а также строгую типизацию данных, гарантирующую их целостность при передаче между клиентом и сервером. В свою очередь, в модели REST отсутствуют встроенные требования к типизации данных, поэтому пакеты запросов и ответов в REST имеют намного меньшие размеры, чем SOAP. Благодаря скорости обмена данными именно REST API предоставляется такими соцсетями, как VK, Facebook, Twitter.

Обмен данными с задержкой

В ряде случаев данные могут попадать в систему-потребитель актуальными на момент времени в прошлом. Например, система-потребитель может разом забрать данные, накопленные в системе-источнике за определенный период. Схема обмена данными выглядит так: «оставьте мне данные в таком-то месте, я заберу их, когда мне будет удобно». Такая схема обмена удобна, когда изменения в системе-источнике происходят слишком часто и в больших количествах, и моментальный обмен невозможен из-за большой нагрузки на базы данных и транспортное ПО. Поэтому система-источник накапливает изменения данных и затем передает эту дельту всем заинтересованным сторонам.

Существует несколько подходов к такому обмену данными.

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

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

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

Еще один из способов «оставить» где-то данные для потребителя – сложить их в очередь (наиболее популярны на рынке сейчас kafka и rabbitmq). На самом деле, очереди могут быть использованы как для моментальной передачи (можно передавать сообщения в очереди с высокой пропускной способностью, где они быстро будут вычитаны подписчиком), так и для передачи больших пакетов данных, которые подписчик вычитывает не в моменте, а по определенному таймингу.

Что же выбрать?

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

Именно поэтому многие компании опираются на опыт своих предшественников и best practices при выборе интеграции. Мы же надеемся, что данная статья помогла вам вкратце познакомиться с основными механизмами интеграции, которые стоит рассмотреть в первую очередь при выборе инструмента обмена данными.

Источник

Читайте также:  Координатный способ положения материальной точки
Оцените статью
Разные способы