Русский
Русский
English
Статистика
Реклама

Контроллер

Wi-Fiв офис, на склад, завод, банк Сценарии внедренияи сборкиWi-Fiв сферы бизнеса.(Часть2)

27.04.2021 12:23:09 | Автор: admin

Оглавление

  1. Введение

  2. Wi-Fi и размер бизнеса

    2.1для малого бизнеса

    2.2для среднего

    2.3дляenterprise

  3. Сценарии примененияWi-Fiв сферах бизнеса

    3.1 Wi-Fiна заводе

    3.2Умный ритейл.Wi-Fiв магазины и ТРЦ.

    -Сеть магазинов

    -МаркетингТРЦ

    3.3Wi-Fiв отеле, ресторане, кафе.

    3.4Wi-Fiвбанках

    3.5Wi-Fiна складе

  4. Заключение

Введение

В прошлойстатьерассказ шел о технологиях и инструментах, которые внедряют вWi-Fi. Часть 2 будет о типовых сценариях внедрения. Если лень читать- проматывай(ссылка на ту же статью в блог)вниз, там будет калькулятор. Калькулятор учитывает вендора, количество точек доступа и дополнительный функционал.

Сразу оговорюсь, статья будет не только оWi-Fi6в вакууме. В каждом кейсе будет примеси других технологийи оборудования. Все статьи я составлял с помощью решений отCiscoи Aruba/Huaweiкакальтернатива.Но это не значит, что мы не найдем аналогов наZyxel.

Начнем с решений в зависимости от масштаба бизнеса. Каждый класс предприятий имеет свой подходк построение беспроводной сети.

Wi-Fi и размер бизнеса

Малый бизнес

В малом бизнесе требования к WI-Fiсетям минимальные. В офисе на20-30человек хватит1-2точек доступа.Контроллер не нужен, либо им может стать точка доступа.Если в офис приходят посетители, стоит позаботиться о гостевом доступе.Возможна интеграция склада и терминалов сбора данных через беспроводноесоединение.Кибербезопасность ограничивается антивирусами на конечном устройстве и двухфакторной аутентификацией(CiscoDuo).

Средний бизнес

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

Еще всреднем бизнесе появляется понятие кибербезопасности. Дополнительно к аутентификации добавляется межсетевой экран для анализа вирусов в трафике.В теории каждый узел может быть защищен.Вопрос: стоит ли объект защитыпотраченныхсредств.

Офис нашей компанииОфис нашей компании

В офисе любого размера есть потребность в мобильных сотрудниках.Удаленкаэкономит деньги на аренду и содержания офиса. Командировки помогают вести проект и разговаривать с сотрудниками на месте. Выезды к заказчику приближают его к покупке.Чтобы безопасно подключаться к инфраструктуре нуженбезопасный канал.CiscoAnyConnectего предоставляет.

Типовой дизайн:

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

Помещение 1500 м2

Кол-во сотрудников: 150 человек

Решения кейса

На уровень ядра устанавливается коммутатор доступа-Catalyst9500.

На уровне доступа-Catalyst9200.Точки доступа-CiscoAironet9117или 9120.

КонтроллерCatalyst9800-L.(может быть виртуальным)

Управление и контроль:CiscoISE(Опция)

Безопасность периметра:Firepower1010+Duo(Опция)

Продукты:CiscoDNA,Firepower+Duo+ESA/WSA,Cisco ISE, Cisco Aironet 9117.

ИнфраструктураСМБв вакуумеИнфраструктураСМБв вакууме

Enterprise

Организация

WLANна уровнебранча(офиса компании), не отличается от среднего.На глобальномуровне добавляются коммутаторы ядра иDNACenter.Enterpriseотличается от СМБпостроением кибербезопасности в компании,интеграциейбизнес-приложений(но о них мы поговорим в другой статье)и повышенной отказоустойчивостью.

Так может выглядетьIT-инфраструктураEnterpriseТак может выглядетьIT-инфраструктураEnterprise

ВEnterpriseсегментекибербезопасность более актуальна,чем в среднем бизнесе.Точекпроникновения злоумышленниковбольше, чем в среднем бизнесе.Цена ошибкивыше. Стоимость простоя региональнойсети магазиновможетдостигатьсотен миллионов рублей.

Категории средств безопасности:

  • Сканеры уязвимости

  • SIEM-системы

  • Защита приложений

  • WebApplicationFirewall

  • CDN

Каждая категория закрываетпотребностьEnterpriseв безопасности.Но эта статья больше для СМБ, поэтому не будем углубляться вподробностирешенийдля большого бизнеса.

Сценарии применения Wi-Fi в сферах бизнеса

Описание сценариев применения будет по принципу.

  • Типовой дизайн предприятия сценария

  • Технологии для решения задач сценария

  • Решения кейса

  • (Иногда) Схема исполнения

Все описанныесценарии- общее среднее по сфере бизнеса. Типовые проблемы, которые мы часто встречаем у заказчиков, описаны ниже.

Каждый бизнес особенный, и кейс может отличаться от Вашего.

Wi-Fi на заводе

Wi-fiсеть на заводе строится по подобию складской сети. Разница в производственной линии и более агрессивной среде.

Типовой дизайн:в промзоне размещенарматурныйзавод.Управление завода намерено внедритьтерминалы сбора данныхдлямаркировкиконечной продукции. На территории цеха отсутствует беспроводная сеть- ее нужнопостроить с нуля. Финансовые потери от 1 дня простоя составляютот10до 80млн рублейв зависимости от контракта.

Стандартный вид производственного предприятия изнутриСтандартный вид производственного предприятия изнутри

Применимые технологии:

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

Основной акцент делается на непрерывности производственного процесса.

Риски прерывания по частиITинфраструктуры:

  • Прерывание сигналовIOTустройств из-за перекрытий и чугунного оборудования

  • Физическое повреждениеIT-оборудования

  • Остановка процессов вследствие вредоносного ПО и хакерской атаки

Направленные антенны

Электромагнитные помехи, изоляционные материалы, плотные перекрытия, балки, опоры мешают распространениюWi-Fiсигнала. Без направленной антенны сигнал потеряется.ТехнологияBeamFormingподойдет для агрессивной среды завода.

Wi-Fi антенна (не в вакууме)Wi-Fi антенна (не в вакууме)

Кибербезопасность

Атака на производственную цепь- цель для злоумышленников.Основные цели- бизнес-данные,энергоснабжение, АСУ-ТП.Отвязать сеть, возможно, лучшее решение для безопасности производственного цикла. Все управление производством сводится к1-2ПК. На них установлены специальное ПО управления.

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

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

Пример использования:

Складское помещение нуждается в бесперебойномwi-fi.Работа на территории ведется в 3 смены. Стоимость простоя:10 млн. руб./сутки.

Одноэтажное здание

Площадь: 20000 м2

Кол-во ТСД: 20шт.

Кол-во ноутбуков15шт.

Решения кейса

На уровень ядра устанавливается коммутатор доступа-Catalyst9400.

На уровне доступа-Catalyst9200.Точки доступа-CiscoAironet9117с внешнимиантенами.

Промышленные коммутаторы:CiscoIE1000с защищенными портамиTACACS(Опция)

Контроллервотказоустойчивой конфигурации(может быть виртуальным).

Управление и контроль:CiscoISE(Опция)

Безопасность периметра:Firepower+Duo(Опция)

Продукты:

Cisco:МаршрутизаторCisco ISE(Опция),МСЭFirepower+Duo,КонтроллерточекдоступаWiFiC9800-40-K9,точкидоступаCisco Aironet 9117 Out-Door.

Huawei:USG6320,КонтроллерHuawei AC6508,точкидоступаAirEngine6760X1

Aruba:КонтроллерMobility Conductor Hardware Appliance,точкидоступа518 Series,управлениеAruba Central

Умный ритейл. Wi-Fi в магазинах и ТРЦ

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

Сеть магазинов

Кейс: сетьпродуктовыхмагазиновне имеет беспроводной сети в каждой точке продаж. Проблемы недочета товарапривели к модернизации системы склада ивнедрению терминалов сбора данных (ТСД). Каждый ТСД требует подключения к беспроводной сети,значитв каждой точке продаж должен быть местныйWi-Fi.

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

Может выглядеть такМожет выглядеть так

Технологии и средства

Виртуальный контроллер

WLC(Опция)

(WirelessLocalController)может контролировать разветвленные сети, вроде той, что в кейсе. Основныепроблемыв управлении такими сетями:

  • нехватка информации о магазине(качество покрытия,загруженность устройств, безопасность в сетях, время на устранение ошибок и их кол-во)

  • Отдельные дорогостоящие специалисты на конечныхточках (магазины, офисы ит.п.)

  • Увеличение человеко-часов на обслуживание инфраструктуры как в магазине, так и в центральном офисе

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

DNA(Опция)

DNAуправляет всеми сетевыми устройствами, чего не может сделать WLC. Этовиртуальные маршрутизаторы, коммутаторы, межсетевые экраны,контроллеры точек доступа и сами точки доступа.

Вот как выглядит пункт управления DNAВот как выглядит пункт управления DNA

Обычно DNA внедряется как подспорье раздутомуштатуинженеров.Однако внедрение DNA- дорогостоящий процесс.

Система по своим характеристиками и цене подходит среднему иEnterpriseбизнесу.

Продукты:

Cisco:МСЭFirepower 2100,контроллерКонтроллерWiFiC9800-40-K9(может быть виртуальным),точкидоступаCatalyst 9113, DNA(возможно).

Huawei:МСЭUSG 6320,КонтроллерHuawei AC6508,точкидоступаAirEngine8760-X1

Aruba:КонтроллерMobility Conductor Hardware Appliance,точкидоступа515 Series,управлениеAruba Central

МаркетингТРЦ

Кейс: Маркетинговый отдел торгового центра Юпитер сообщил о снижении спроса на продукцию. Маркетологи сошлись во мнении, что посетители хотят более индивидуального подхода. Было принято решение внедрить систему умногоWi-Fiивидеоаналитики.

WI-Fiзона в ТРЦWI-Fiзона в ТРЦ

Решение:

Технологии трекинга на территории магазина появились4-5лет назад.Последние 2 года маркетинг активно внедрял эти технологии. И сейчас Вы наблюдаете их у себя в уведомлениях на телефоне.

Эта связка дает информацию:

  • о поле

  • возрасте

  • предпочтениях

  • семейном положении

  • покупательской способности

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

Пример: В середине зимы вы пришли в торговый центр, в котором уже были раньше. После 10 мин прогулки в таком центре, на телефон приходитpush-уведомление магазина N с предложением купить пальто по скидке. Система предложила пальто, по нескольким причинам.

1.Скоро будет весна

2. Вы уже покупали в магазине N одежду

3. Вы даже примеряли пальто в магазинах конкурентов.

Точки доступа поддерживаютBluetoothТочки доступа поддерживаютBluetooth

Каждаякрупицаинформации- процентквероятности покупки. Как только количество информации наберет критическую массу произойдет продажа.

Точность предложения, зависит от количества информации о покупателе. Никто не любит, когда "впаривают" ненужный товар. Системы аналитики на базеwi-fiсделают предложение точнее.

Продукты:

Cisco:МСЭFirepower 2100,контроллерКонтроллерWiFiC9800-40-K9(может быть виртуальным),точкидоступаCatalyst 9130,DNA(Опция), Duo(Опция).

Huawei:МСЭUSG6320,КонтроллерHuawei AC6508,точкидоступаAirEngine8760-X1

Aruba:КонтроллерMobility Conductor Hardware Appliance,точкидоступа530Series,управлениеAruba Central

Wi-Fi в отеле, ресторане, кафе (HoReCa)

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

По факту,внедрение передовых технологий вотель- имиджевый вопрос.ХорошееWi-Fiсоединение воспринимается пользователями как стандарт, а не как дополнительное удобство.

Типовой дизайн(на примере гостиницы):

Для гостиниц характерна разветвленная сетьwi-fiточек. Так как каждый номер должен быть покрытWi-Fiсигналом, сетьпотребность в большом количестве точек.На территории отеля нет посторонних точек, значит нет конфликтамежду сигналами,интерференциии пр. Есть только большое количество перекрытий и стен.

Типовой дизайн этажа гостиницыТиповой дизайн этажа гостиницы

Технологиии сферы применения:

ГостеваяWi-Fiсеть отеля

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

BeamForming

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

BSSColoring

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

IOTи умное управление отелем(Опция)

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

Управление:

  • освещением, влажностью,отоплением

  • датчики движения

  • сетью, розетками

  • электронными дверьмии окнами

  • IOT-техника (умные пылесосы, колонки, телевизоры ит.п.)

Таким образом обслуживание зданием можно управлять из дома. Это ведет к снижению затрат на инфраструктуру.

Авторизация пользователейи гостевой портал

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

Есть далеко не во всех отеляхЕсть далеко не во всех отелях

Пример использования:

Отель 5Season7-х этажноездание. В здание проведен10-гигабитный интернет, но ссамого начала модернизации, постояльцы жаловались на плохойWi-Fi.В конечном счете,руководство приняло решение модернизировать беспроводную сеть отеля.Тем более, что появились технологии умного управления отелем.Это внедрение повысит статус отеля среди конкурентов.

Кол-во номеров: 110шт.

Кол-воIOTустройств-2000 единиц

Решения кейса

На уровеньдоступаустанавливаются2коммутатора-Catalyst9400встэке.

На уровне доступана каждый этаж устанавливается коммутаторыCatalyst9300.Точки доступа-CiscoAironet9120сфункциейCleanAir.

Контроллер9000в отказоустойчивой конфигурации(может быть виртуальным).

Управление и контроль:CiscoISE

Безопасность периметра:Firepower2100.

Продукты:

Cisco:МСЭFirepower2100,контроллерКонтроллерWiFiC9800-40-K9,точкидоступаCatalyst9120,DNA(Опция),ISE,Duo(Опция).

Huawei:МСЭUSG6320,КонтроллерHuawei AC6508,точкидоступаAirEngine8760-X1

Aruba:КонтроллерMobility Conductor Hardware Appliance,точкидоступа550Series,управлениеAruba Central

Финансовый сектор

Под эту категорию попадают банки, компании-брокеры,финтехстартапы. Поотчетув IV квартале2020гогода совершено 29 преступлений в финансовом секторе. Главные объекты атаки- сетевое оборудование (26 из 29 атак).

Банковский залБанковский зал

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

В 95% банках установленwi-fi, но только 23% используютдополнительныесредства безопасности. Дополнительные средства безопасности это- песочницы, многофакторная аутентификация, анализ поведения пользователей, мониторинг сетевой активности. Каждый из перечисленных пунктов делает дорожеценувзлома.

Дизайн сети

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

Существуют требования к дизайну сети:

  • Выделение специальных зон для гостевого доступа

  • Разные права доступа гостевого и офисного доступа

  • Подавление сигнала за пределами зон

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

Так выглядит подключенные IT-продукты в банковской сфере 2019 годаТак выглядит подключенные IT-продукты в банковской сфере 2019 года

Более подробно о средствахзащиты

Песочницы

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

(Более подробныйответесть уKaspersky)

Шифрование потоков данных/Мониторингзашифрованного трафика злоумышленник может перехватить данные вwi-fi.Это может быть инсайдерская информация или имена доверенных лиц, которые он потом использует. Чтобы не допустить утечки, данные должны шифроваться.Шифрование происходит на уровне точек доступа и контроллера. Никакого дополнительного ПО не нужно.

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

Аналитика поведения пользователей

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

Принцип действия систем поведенческой аналитики-

Создается образ посетителя сети, который наделяется определенными параметрами (их очень много).

  • Частота (ГГц)

  • Фреймы

  • Количество

  • Используемые приложения

  • Базовая скорость

  • Скачки триангуляции

  • И многое, многое другое (см. документацию)

Стандартный посетитель сети находится в допустимых пределах. Как только пределы нарушены, системаищет паттерны злоумышленникаили вредоносного ПО. В случае совпадения пользователь блокируется.

Продукты:

Cisco:МСЭFirepower2100,контроллерКонтроллерWiFiC9800-40-K9(может быть виртуальным),точкидоступаCatalyst9120,DNA,ISE(Опция),Duo,WirelessIPS(Fortigate)илиCyberThreatDefense,CiscoDNA(Опция),CiscoUmbrella(Опция),ESA/WSA(Опция),SecureX(Опция).

Huawei:МСЭUSG6320, КонтроллерHuaweiAC6508,точкидоступаAirEngine8760-X1

Aruba:КонтроллерMobility Conductor Hardware Appliance,точкидоступа550Series,управлениеAruba Central

Wi-Fi на складе

Типовой сценарий:

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

К складскойWi-Fiсети подключаются терминалы сбора данных, сканеры штрихкодов и ноутбуки.Каждый терминал или ноутбук обращаются к базам данных и бизнес-приложениям.

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

Классическая картина на складеКлассическая картина на складе

Проблема решается комплексно

Защита от помех и высокоскоростные точки доступа.

У вендоров уже появились точки доступа с защитой от помех.Например,уCiscoэтоCleanAir.Технологиянаходит источник(и) помех и перенастраивает сеть для лучшего сигнала.

Управление политиками доступа.

У ТОП производителей точек доступа есть контроллеры с дополнительным ПО, для управления.Платформы управления могут автоматически управлять и балансировать точки доступа.

Правильное расположение точек доступа.

Даже6йстандарт не обойдет стеллаж толщиной в 3 метра. Только правильное расположение точек доступа покроет сигналом весь склад.

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

Первыйспособ- без выхода на местность.

В специальной программе строят план помещения, указывают материалы перекрытия, высоту потолков и другие подробности.На план наносят точки доступа, и программа обсчитывает распространение сигнала. Если покрытие сигналом устраивает- точки устанавливаются в реальности.

Второй способ-с выходом на местность.

На территории предприятия устанавливаются тестовые точки доступа. Далее инженер ходит сWi-Fiантеннойпо территории склада и проверяет уровень сигнала. Преимущество метода в высокой точности, так как покрытие проверяется на практике.

Так выглядит планпредиктиваТак выглядит планпредиктива

Пример использования:

Складское помещениенуждается в бесперебойномwi-fi.Работа на территорииведется в 3 смены. Стоимость простоя: 150k$/сутки.

Одноэтажное здание

Площадь: 25 000 м2

Кол-во ТСД: 25шт.

Кол-во ноутбуков 20 шт.

Решения кейса

На уровеньдоступаустанавливается коммутатор доступа-Catalyst9400.

На уровне доступа-Catalyst9200.Точки доступа-CiscoAironet9117с внешнимиантеннами.

КонтроллерWiFiC9800-40-K9(может быть виртуальным)в отказоустойчивой конфигурации.

Управление и контроль:CiscoISE(Опция)

Безопасность периметра:МСЭFirepower2100.

Так может выглядеть инфраструктура на складеТак может выглядеть инфраструктура на складе

Продукты:

Cisco:МСЭFirepower1100,контроллерКонтроллерWiFiC9800-40-K9,точкидоступаAironet1560,ISE,Duo,CiscoDNA.

Huawei:МСЭUSG6320, КонтроллерHuaweiAC6508,точкидоступаAirEngine6760-X1E

Aruba:КонтроллерMobility Conductor Hardware Appliance,точкидоступа513Series,управлениеAruba Central

Калькулятор есть в статье в блоге

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

Заключение

В этих двух статьях я постарался широкими мазкамиописатькак и куда внедряетсяWi-Fi.

Статья не освещает каждую сферу глубокои не стоит читать ее как руководство.Чтобыподобратьрешения под конкретный случай пишите нам наzakaz@olly.ru

Подробнее..

Распределенный LED Контроллер управления светом (12V 6A)

04.08.2020 18:23:50 | Автор: admin

Предисловие


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

Поэтому в течение нескольких лет сложилось, что практически ВСЕ освещение у меня дома (и в мастерской) светодиодное. И не надо говорить что это мол, "ненадежно" = некоторые светильники уж семь лет как работают. А когда светильник тонкий, лёгкий и практически не нагревается можно такого наворотить с так называемым зонированием

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

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

image

Единственный минус когда светильников становится много ими уже неудобно управлять!

Управляем с пульта!


Так как большинство светильников 12 Вольтовые (так и проще и резервирование от аккумулятора удобнее реализовывать), то сразу возникает мысль изготовить контроллер для управления освещением!

Хотя есть тонкости = тащить кучу проводов от каждого светильника к контроллеру (который желательно расположить на видном месте, что-бы не тыкать пультом куда попало) не всегда удобно. Да и НЕкорректно. Куда проще сгруппировать светильники территориально и управлять ими при помощи нескольких контроллеров, общающихся друг с другом.

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

Получилось примерно так:

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

    image
  • один из подчинённых контроллеров, там только контроль приёма/передачи и состояния каналов при помощи обычных светодиодов, большего ничего и не нужно, да и спрятаны вспомогательные контроллеры от глаз.

    image

Плата головного контроллера (если интересно) выглядит так:

image

Опосля травления и лужения (оужосЪнах!)

image

И уже после сборки, перед нанесением защитного покрытия (и это будет НЕ "Богомерзкий" лак! Что-то халяльное! Так и знайте!!!)

image

В данный момент каждый из контроллеров рассчитан на 9 каналов. Каждый из каналов способен тянуть по 6 Ампер нагрузки, при этом НЕзависимо у каждого из каналов свой персональный уровень яркости, от выключено до максимума 15 уровней яркости. Больше, думаю, и не надо, вполне достаточно.

Зачем так много каналов? Ну помимо основных светильников, еще есть и RGB (полноцвет), RGBW (полноцвет + модуляция яркости). И светильники с заданной цветовой температурой (от холодного до теплого оттенка). А все это масса каналов. И еще у меня есть аквариумы с фитосветильниками, вольер с шиншиллами, свет подкроватный и прикроватный На самом деле это всё очень удобно и вызывает привыкание похлеще никотина

Плюс еще такие интересные штуки, как автономный перелив всеми цветами для RGB и RGBW полноцветных светильников, типа торшера, например

Пока все управляется с обычных пультов ДУ. Но так даже удобнее.

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

Да так много возможностей = большой и НЕудобный пульт с кучей кнопок.

image

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

Вот пример на видео, так сказать


Благодарю за уделенное внимание!

Дальше будет
Подробнее..

Победа над nRF24L01 на три шага ближе

25.02.2021 00:07:45 | Автор: admin

Многие испытывают трудности при соединении по эфиру радиомодулей nRF24L01. Об этом свидетельствует тема на форуме Амперки, открытая в конце 2014г. За пять с небольшим лет в теме накопилось более 120(!) страниц. Это при том, что автор темы не просто обозначил проблему, а поделился своим трехнедельным опытом победного для него боя. Кроме того, он тут же в первом сообщении создал навигатор по страницам темы, где приводит ссылки на решения проблемы другими. Этот своеобразный путеводитель постоянно обновляется.



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



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



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



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



Итак ...





Шаг 1



Загрузить в контроллер платы Ардуино скетч сканера эфира, который можно найти среди примеров Arduino IDE: Файл -> Примеры -> RF24 -> scanner. Ниже под спойлером есть этот скетч с несущественным изменением. В нем изменено время между стартом и остановкой сканирования одного канала с 128 мксек на 512 мксек. Увеличение времени позволило за один цикл выявлять бОльше источников помех и сигналов. Это равнозначно замене результата измерений в канале на сумму результатов в этом канале за четыре цикла сканирования эфира до изменения времени задержки. При этом, время прохода всего прослушиваемого диапазона сканером увеличилось несущественно: примерно с 8-ми до 10-ти сек.



В разных скетчах адрес канала в командах приводится в разных форматах: в одних ...(0x6f), в других ...(112). Перевод с одного формата в другой станет понятным с примера перевода. Например, для (0x1а) это: (1+1)*16 + а = (1+1)*16 + 10 = 42. Отсчет каналов начинается с частоты 2,4 ГГц, далее идет увеличение частоты на 1 МГц с увеличением номера канала на 1.



скетч сканера эфира
/*Победа над nRF24L01: на три шага ближе, сканер эфираhttp://personeltest.ru/aways/habr.com/ru/post/476716/*//*  Copyright (C) 2011 J. Coliz <maniacbug@ymail.com>  This program is free software; you can redistribute it and/or  modify it under the terms of the GNU General Public License  version 2 as published by the Free Software Foundation.*//**   Channel scanner   Example to detect interference on the various channels available.   This is a good diagnostic tool to check whether you're picking a   good channel for your application.   Inspired by cpixip.   See http://arduino.cc/forum/index.php/topic,54795.0.html*/#include <SPI.h>#include "nRF24L01.h"#include "RF24.h"#include "printf.h"//// Hardware configuration//// Set up nRF24L01 radio on SPI bus plus pins 9 & 10RF24 radio(9, 10); //Arduino UNO//// Channel info//const uint8_t num_channels = 128;uint8_t values[num_channels];//// Setup//void setup(void){  //  // Print preamble  //  Serial.begin(57600);  Serial.println("Scanner Air On");  printf_begin();  //  // Setup and configure rf radio  //  radio.begin();  radio.setAutoAck(false);  // Get into standby mode  radio.startListening();  radio.stopListening();  // Print out header, high then low digit  int i = 0;  while ( i < num_channels )  {    printf("%x", i >> 4);    ++i;  }  printf("\n\r");  i = 0;  while ( i < num_channels )  {    printf("%x", i & 0xf);    ++i;  }  printf("\n\r");}//// Loop//const int num_reps = 100;void loop(void){  // Clear measurement values  memset(values, 0, sizeof(values));  // Scan all channels num_reps times  int rep_counter = num_reps;  while (rep_counter--)  {    int i = num_channels;    while (i--)    {      // Select this channel      radio.setChannel(i);      // Listen for a little      radio.startListening();      delayMicroseconds(512);      radio.stopListening();      // Did we get a carrier?      if ( radio.testCarrier() )        ++values[i];    }  }  // Print out channel measurements, clamped to a single hex digit  int i = 0;  while ( i < num_channels )  {    printf("%x", min(0xf, values[i] & 0xf));    ++i;  }  printf("\n\r");}// vim:ai:cin:sts=2 sw=2 ft=cpp



Далее подключаем модуль nRF24L01 к плате Ардуино или любому прототипу, собранному, допустим, на контроллере ATMEGA328P. Я собрал два образца на платах для прототипирования на контроллере ATMEGA328P по схеме контроллер + резонатор. Один образец подключаю к компу через плату Arduino UNO, а второй через конвертор USB/TTL.

Мощность стабилизатора платы Arduino UNO вполне приемлема для подключения дополнительной импульсной нагрузки такой, как nRF24L01+ c адаптером 5В/3,3В для этого модуля или без адаптера.





На мониторе последовательного порта Arduino IDE увидите нечто похожее:





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



Обратите внимание на чистый диапазон, начиная с канала 4а. У меня он остается чистым даже, если на расстоянии нескольких метров работает старая СВЧ-печь мощный источник помех в этом диапазоне. А в общем-то, в Интернете рекомендуют выбирать каналы для своих проектов выше 60.



Если на каналах шум, но радиомодуль определяется (смотрим преамбулу на мониторе Arduino IDE, подробно тут) это однозначно копия (подделка). Не отчаивайтесь ее тоже можно запустить.



Шаг 2



По схеме, аналогичной первой собираем второй радиоузел. Это будет передатчик. В его контроллер загружаем скетч передатчика (под спойлером).



скетч приемника
/*Победа над nRF24L01: на три шага ближе, приемникhttp://personeltest.ru/aways/habr.com/ru/post/476716/*/#include <SPI.h>#include <RF24.h>RF24 radio(9, 10); // порты D9, D10: CSN CEconst uint32_t pipe = 111156789; // адрес рабочей трубы;byte data;void setup() {  Serial.begin(115200);  Serial.println("TransmitterTester ON");  radio.begin();                // инициализация  delay(2000);  radio.setDataRate(RF24_1MBPS); // скорость обмена данными RF24_1MBPS или RF24_2MBPS  radio.setCRCLength(RF24_CRC_8); // размер контрольной суммы 8 bit или 16 bit  radio.setPALevel(RF24_PA_MAX); // уровень питания усилителя RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH and RF24_PA_MAX  radio.setChannel(0x6f);         // установка канала  radio.setAutoAck(false);       // автоответ  radio.setRetries(0, 15);  //время между попыткой достучаться, число попыток  radio.powerUp();               // включение или пониженное потребление powerDown - powerUp  radio.stopListening();  //радиоэфир не слушаем, только передача  radio.openWritingPipe(pipe);   // открыть трубу на отправку}void loop() {  data = 109;  radio.write(&data, 1);  Serial.println("data= " + String(data));}



Передатчик без пауз в работе передает сигнал на канале 6f (112).



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





Увидев сигнал от передатчика делаем следующий шаг.



Шаг 3



Загружаем вместо сканера скетч приемника (под спойлером).



скетч приемника
/*Победа над nRF24L01: на три шага ближе, передатчикhttp://personeltest.ru/aways/habr.com/ru/post/476716/*/#include <SPI.h>#include "nRF24L01.h"#include "RF24.h"RF24 radio(9, 10); // порты D9, D10: CSN CEconst uint32_t pipe = 111156789; // адрес рабочей трубы;byte data[1];int scn;  //счетчик циклов прослушивания эфираint sg;  //счетчик числа принятых пакетов с передатчикаvoid setup() {  Serial.begin(9600);  Serial.println("ReceiverTester ON");  radio.begin();  // инициализация  delay(2000);  radio.setDataRate(RF24_1MBPS); // скорость обмена данными RF24_1MBPS или RF24_2MBPS  radio.setCRCLength(RF24_CRC_8); // размер контрольной суммы 8 bit или 16 bit  radio.setChannel(0x6f);         // установка канала  radio.setAutoAck(false);       // автоответ  radio.openReadingPipe(1, pipe); // открыть трубу на приём  radio.startListening();        // приём}void loop() {  if (scn < 1000)  { // прослушивание эфира    if (radio.available())    {      radio.read(data, 1);      if (data[0] == 109) {        sg++;      }    }  } else {//всего принято    {      Serial.println("Принято: " + String(sg) + " пакетов");      sg = 0;    }    scn = 0;  }  scn++;  delay(20);  if (scn >= 1000) scn = 1000; //защита от переполнения счетчика}



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



Включаем передатчик и приемник. Если приемник принимает хотя бы каждый третий пакет это уже успех. У меня не получилось. Приемник по непонятным причинам принимал максимум 40 пакетов.



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



Юзерам, которые захотят сделать все грамотно, придется поработать. Дополнительная антенна в данном случае это отрезок коаксиального кабеля с волновым сопротивлением 50 Ом и длиной 115 мм. Антенна подключается к выводу 13 (АNT2) микросхемы nRF24L01+. Схему подключения и номиналы нескольких недостающих smd компонентов, которые надо поставить на плату радиомодуля, можно найти на принципиальной электрической схеме nRF24L01+ тут. Впрочем, есть альтернатива в магазин за NRF24L01+PA+LNA





Теперь обязательно припаиваем между пинами GND и VCC обеих радиомодулей по два конденсатора. Керамический конденсатор, выполняющий роль ВЧ-фильтра, емкостью не менее 0,15 мкФ (чем больше, тем лучше) и электролит емкостью около 10 мкФ (можно и больше, но бесполезно) это НЧ-фильтр. ВЧ-фильтр шунтирует высокочастотные помехи по цепи питания радиомодуля, а НЧ-фильтр сглаживает пульсации питания. Для надежности, цепи питания радиомодулей лучше непосредственно подпаять к пинам контроллеров.



Все. Надеюсь, у вас в дальнейшем поубавится проблем с nRF24L01 в своих проектах. Успехов!



Безусловно эти простые шаги не могут гарантировать решение всех проблем с nRF24L01 мне их и не перечесть, но теперь вы, как и я, будете уверены:


  • радиомодули не бракованные;
  • подключены верно;
  • уровень сигнала передатчика, чуствительность приемника удовлетворительны и, в случае необходимости, обеспечиваются дополнительной антенной;
  • пара nRF24L01+ однозначно работает в режиме передатчик-приемник без откликов и их ожидания. Иногда этого достаточно.


Ссылки по теме



  1. Обзор радио модуля NRF24L01+
  2. nRF24L01+: побеждаем модуль.
  3. nRF24L01 и Ардуино: побеждаем модуль (видео)
  4. SE8R01. Подделка под NRF24L01 (видео)
  5. Обзор радио модуля NRF24L01+PA+LNA
Подробнее..

Снова о автономной Arduino-метеостанции на батарейках

03.03.2021 00:13:52 | Автор: admin

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


Это было донедавна. Несколько дней назад меня поразил очередной проект @Berkseo, как поражают все его проекты: "Беспроводная мини погодная станция с e-paper экраном на батарейках". Тут все на уровне промышленного продукта. Удивляет единственное в устройстве нет внешнего датчика.


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



Что сделано:


Датчики DHT22 и DS18B20, которые использовались в предыдущем проекте, заменены энергосберегающим модулем это датчик температуры и влажности HTU21D. Период измерений, отправки/приема данных уменьшен с 15-ти мин до 53,5 сек. Сделан переход на устойчивую частоту работы контроллера (8 МГц) при напряжении питания ниже 3В. Для уменьшения объемов занимаемой памяти в скетчах использованы некоторые функции С/С++. И главное, принципиально изменен алгоритм передачи пакетов с выносного датчика и алгоритм приема этих пакетов базой метеостанции. Теперь для обеспечения надежного приема пакетов с выносного датчика в нем формируется и отправляется с интервалом около 0,3 сек не один, а три пакета с данными о параметрах воздуха на улице и состоянии батареек. Только после отправки третьего пакета контроллер в. датчика вместе с периферией уходит в сон. База метеостанции уходит спать после приема одного из 6-ти пакетов с выносного датчика и просыпается за полсекунды до поступления очередной серии пакетов с выносного датчика.


Метеостанция состоит из двух автономных узлов с питанием от двух батареек AA: базы и выносного датчика. Назовем их для простоты анализатором (по-другому база) и беспроводным в.датчиком (выносным датчиком).


Анализатор, построен на контроллере ATMEGA328P, измеряет температуру и влажность (датчик температуры и влажности HTU21D) в помещении, а также измеряет и анализирует величину напряжения питания узла, которое обеспечивают две батарейки АА 1,5 В. На контроллер также поступает сигнал с приемника LoRa, который по эфиру принимает информацию с выносного датчика. Вся инфа с контроллера выводится на ЖК-дисплей NOKIA 5110.


В в.датчике, тоже собранном на контроллере ATMEGA328P, измеряется температура и влажность воздуха на улице (модуль HTU21D), а также напряжение питания выносного узла, организованного на двух батарейках АА 1,5 В. Передатчик LoRa этого узла передает инфу о температуре, влажности и состоянии батарейки на анализатор. С в.датчика выполняется отправка 3-х пакетов с интервалом около 0,3 сек, затем контроллер ATMEGA328P, передатчик LoRa и модуль HTU21D для экономного расходования заряда батареек переводятся в режим сна. Измерения и отправка данных с в.датчика выполняется с циклом несколько меньше 1-ой минуты.


Работа анализатора построена по следующему алгоритму:


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


Для сборки устройства понадобятся радиодетали:


  1. Контроллер ATMEGA328P-PU 2 шт.
  2. Датчик влажности и температуры HTU21D/SHT21/Si7021 2 шт.
  3. ЖК-дисплей NOKIA 5110 1 шт.
  4. Приемник-передатчик LoRa Rа-01 2 шт.
  5. Макетная плата (стеклотекстолит), монтажные провода, батарейки АА, кварцевые резонаторы 8 МГц, резисторы, конденсаторы, другие мелочи.

Ориентировочная стоимость компонентов по ценам AliExpress примерно $25.


Для работы с контроллерами ATMEGA328P в качестве программатора я использую плату Arduino UNO. На Youtube есть хорошее видео по установке загрузчика и загрузки скетчей в контроллер ATMEGA328P с помощью платы Arduino UNO.


На этот раз мы не будем устанавливать новые фьюзы программой SinaProg, а воспользуемся, на мой взгляд, более универсальным способом созданием новых конфигураций плат в платформе Arduino IDE.


В новые контроллеры надо установить загрузчик Arduino as ISP и надо учитывать то, что контроллеры ATMEGA328P поступают в продажу с заводской настройкой фьюз для мониторинга (контроля) напряжения питания не ниже 2,7 В. Мы же будем работать от батареек, напряжение на которых при разряде может быть ниже установленного заводского порога 2,7 В, и с кварцем 8 МГц. Установим загрузчик и изменим фьюзы под наши условия, используя в качестве программатора плату Arduino UNO, в такой последовательности:


  1. Найти по адресу c:\Program Files\Arduino\hardware\arduino\avr\ файл boards.txt и открыть его текстовом редакторе с форматированием, например, AkelPad.
  2. Дополнить файл блоком, который приведен под спойлером, и сохранить файл.

    блок установок 1
    ##############################################################

    amega.name=Mega Low (8 MHz, >1.8V)

    amega.upload.tool=avrdude
    amega.upload.protocol=arduino
    amega.upload.maximum_size=32256
    amega.upload.maximum_data_size=2048
    amega.upload.speed=57600

    amega.bootloader.tool=avrdude
    amega.bootloader.low_fuses=0xFF
    amega.bootloader.high_fuses=0xDA
    amega.bootloader.extended_fuses=0xFE
    amega.bootloader.unlock_bits=0x3F
    amega.bootloader.lock_bits=0x0F
    amega.bootloader.file=optiboot/optiboot_atmega328.hex

    amega.build.mcu=atmega328p
    amega.build.f_cpu=8000000L
    amega.build.board=AVR_UNO
    amega.build.core=arduino
    amega.build.variant=standard

  3. В плату Arduino UNO загрузить скетч ArduinoISP.ino из примеров платформы Arduino IDE (Файл > Примеры > ArduinoISP).
  4. Собрать схему (плата Arduino UNO, контроллер ATMEGA328P, кварц 16 МГц) для установки в контроллер загрузчика ArduinoISP (инструкции тут), подключить ее компьютеру и записать в контроллер бутлоадер Arduino as ISP.
  5. Заменить кварц в схеме 16 МГц на 8 Мгц. В меню ИНСТРУМЕНТ выбрать из списка плату Mega Low (8 MHz, >1.8V), которая появилась в меню после дополнения файла boards.txt новым блоком, выбрать тут же Программатор: Arduino as ISP и, нажав Записать загрузчик изменить фьюзы и другие установки в контроллере.
  6. Далее загружаем в контроллер необходимый скетч, используя ту же схему, что и для установки загрузчика (п.4), через Скетч > Загрузить через программатор.

Выносной датчик


В.датчик построен на контроллере ATMEGA328P. В нем осуществляется прием данных с HTU21D по протоколу I2C, измерение и анализ величины напряжения питания узла и управление передатчиком LoRa.


скетч в.датчика
/*   Снова о автономной Arduino-метеостанции на батарейках, выносной датчик   http://personeltest.ru/aways/habr.com/ru/post/544936/*/#include <avr/io.h>#include <util/delay.h>#include <SPI.h>#include <LoRa.h>#include <LowPower.h>#include <Wire.h>#include <avr/power.h>#include "HTU21D.h"#define VccHTU 8  //питание и подтяжка HTU21D (pin 14 AtMega328P, D8)HTU21D myHTU21D;float Tout; // температураint Hout;  // влажностьunsigned int sleepCounter, sleepCounter0; // счетчик, задающий время снаint pct;  //счетчик числа пакетов перед уходом в сонString messageOut; // LoRa-сообщениеfloat BatOut; // напряжение батареекconst int batteryPin = A0; // pin 23 (Atmega328P), к которому подключена батарея для измерения напряженияconst float typVbg = 1.132; //калибровачная константа, 1.0 - 1.2int counter = 0;// измерение опорного напряженияfloat readVcc() {  byte i;  float result = 0.0;  float tmp = 0.0;  for (i = 0; i < 1; i++) {    // Read 1.1V reference against AVcc    // set the reference to Vcc and the measurement to the internal 1.1V reference#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)    ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);#elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)    ADMUX = _BV(MUX5) | _BV(MUX0);#elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)    ADMUX = _BV(MUX3) | _BV(MUX2);#else    // works on an Arduino 168 or 328    ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);#endif    _delay_ms(3); // Wait for Vref to settle    ADCSRA |= _BV(ADSC); // Start conversion    while (bit_is_set(ADCSRA, ADSC)); // measuring    uint8_t low  = ADCL; // must read ADCL first - it then locks ADCH    uint8_t high = ADCH; // unlocks both    tmp = (high << 8) | low;    tmp = (typVbg * 1023.0) / tmp;    result = result + tmp;    _delay_ms(5);  }  return result;}void Measurement () {  // измерение температуры и влажности  Hout = myHTU21D.readHumidity();  Hout = 62;  //delete!  float Tout_p = myHTU21D.readTemperature();  Tout = 0.1 * int(Tout_p * 10 + 0.5);  //округление до десятых  // измерение напряжения батареек  BatOut = 0.1 * int(readVcc() * 10 + 0.5);  if (BatOut < 2.2) {    BatOut = 0.0;  } else {    BatOut = 2.2;  }}void SendMessage () {  // отправка данных (температура, влажность, состояние батареек)  if (BatOut > 2.1) {    messageOut = String(Tout) + "#" + String(Hout) + "$" + String("BGood");  }  else {    messageOut = String(Tout) + "#" + String(Hout) + "$" + String("BLow");  }  LoRa.beginPacket();  LoRa.print(messageOut);  LoRa.endPacket();}void setup() {  Serial.begin(9600);  Serial.println("Power ON");  analogReference(DEFAULT);  pinMode(VccHTU, OUTPUT);  digitalWrite(VccHTU, 1);  _delay_ms(200);  myHTU21D.begin();  int counter = 0;  while (!LoRa.begin(433E6) && counter < 10) {    Serial.println("Не удалось найти LoRa-передатчик!");    counter++;    _delay_ms(500);  }  LoRa.setTxPower(4); //мощность передатчика, 2...20 дБ  LoRa.setSyncWord(0xF3);}void loop() {  digitalWrite(VccHTU, 1);  if (pct < 3)  { // измерения, отправка пакетов    Serial.println(messageOut);    Measurement ();    SendMessage ();  } else {// измерения, отправка пакета и длительный сон    Serial.println(messageOut);    Serial.println("sleep ...");    Measurement ();    SendMessage ();    for (sleepCounter = 6; sleepCounter > 0; sleepCounter--)    {      digitalWrite(VccHTU, 0);      digitalWrite(VccHTU, 1);      LoRa.sleep ();      LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);    }    pct = 0;  }  pct++;  if (pct >= 3) pct = 3; //защита от переполнения счетчика}int main() {  init();  setup();  for (;;) {    loop();  }}

Электрическая схема в.датчика:



Питание и подтяжка выводов модуля HTU21D осуществляется с пина 14 контроллера ATMEGA328P. Это сделано для того, чтобы программно обнулить питание HTU21D и перевести этот датчик в режим низкого энергопотребления во время сна.


Изначально в схеме в.датчика планировалось использовать барометр-термометр BMP280, но мне не удалось программно перевести BMP280 в режим низкого потребления во сне. Хотя по даташиту BMP280 для перехода в режим низкого потребление требуется, как и для HTU21D, кратковременное обнуление питания. Разрыв питания BMP280 во время сна снижает потребляемый ток в схеме ATMEGA328P + BMP280 с 130 мкА до 5 мкА, но, повторюсь, смоделировать этот разрыв питания программно у меня пока не получилось.


В в.датчике формируется и отправляется с интервалом около 0,3 сек три пакета с данными о температуре и влажности на улице и состоянии батареек. Если напряжение на батарейках выше установленного порога (2,2 В), то в коде пакета присутствует BGood, а ниже BLow. После отправки третьего пакета контроллер в.датчика вместе с периферией уходят в сон. Цикл отправки серий пакетов 53,5 сек.


Анализатор


Мозг анализатора контроллер ATMEGA328P. Он принимает сигналы с датчика HTU21D по протоколу I2С и по SPI взаимодействует с приемником LoRa и дисплеем NOKIA 5110.


скетч в.датчика
/*   Снова о автономной Arduino-метеостанции на батарейках, анализатор   http://personeltest.ru/aways/habr.com/ru/post/544936/*/#include <avr/io.h>#include <util/delay.h>#include <SPI.h>#include <LoRa.h>#include <LowPower.h>#include "HTU21D.h"#include <LCD5110_Graph.h>#define VccHTU 8  //питание и подтяжка HTU21D(pin 14 AtMega328P, D8)HTU21D myHTU21D;float Tin; // температура в помещенииint Hin;  // влажность в помещенииLCD5110 myNokia(3, 4, 5, 6, 7);extern uint8_t SmallFont[];extern uint8_t MediumNumbers[];float BatIn = 0; // напряжение батареиconst int batteryPin = A0; // pin 23(Atmega328P), к которому подключена батарея для измерения напряженияconst float typVbg = 1.132; //калибровачная константа, 1.0 - 1.2unsigned int sleepCounter;  //счетчик, задающий время снаint r; //счетчик циклов прослушивания эфираint mlc;  //счетчик циклов работы без в.датчикаString LoRaData, Tout_str, Hout_str, BatIn_str, BatOut_str;// измерение напряжения батареекfloat readVcc() {  byte i;  float result = 0.0;  float tmp = 0.0;  for (i = 0; i < 1; i++) {    // Read 1.1V reference against AVcc    // set the reference to Vcc and the measurement to the internal 1.1V reference#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)    ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);#elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)    ADMUX = _BV(MUX5) | _BV(MUX0);#elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)    ADMUX = _BV(MUX3) | _BV(MUX2);#else    // works on an Arduino 168 or 328    ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);#endif    _delay_ms(3); // Wait for Vref to settle    ADCSRA |= _BV(ADSC); // Start conversion    while (bit_is_set(ADCSRA, ADSC)); // measuring    uint8_t low  = ADCL; // must read ADCL first - it then locks ADCH    uint8_t high = ADCH; // unlocks both    tmp = (high << 8) | low;    tmp = (typVbg * 1023.0) / tmp;    result = result + tmp;    _delay_ms(5);  }  return result;}void Measurement() {  float Tin0;  // измерение напряжения батареи:  BatIn = readVcc();  // измерение температуры  и влажности в помещении  Hin = myHTU21D.readHumidity();  // Hin = 58; // delete!  float Tin_p = myHTU21D.readTemperature();  Tin = 0.1 * int(Tin_p * 10 + 0.5);  //округление до десятых  //  Tin = 21.4; // delete!}void draw() {  myNokia.enableSleep();  myNokia.clrScr();  //Tin  char chr_Tin [5];  String Tin_str = String(Tin);  myNokia.setFont(SmallFont);  myNokia.print("            C", LEFT, 0);  myNokia.print("In", LEFT, 8);  myNokia.setFont(MediumNumbers);  Tin_str.toCharArray(chr_Tin, 5); //количество знаков+1  myNokia.print(String(chr_Tin), CENTER, 0);  //Tout  char chr_Tout [5];  myNokia.setFont(SmallFont);  myNokia.print("            C", LEFT, 16);  myNokia.print("Out", LEFT, 24);  myNokia.setFont(MediumNumbers);  Tout_str.toCharArray(chr_Tout, 5);  myNokia.print(String(chr_Tout), CENTER, 16);  // Hin, Hout  char chr_Hout [5];  Hout_str.toCharArray(chr_Hout, 4);  myNokia.setFont(MediumNumbers);  myNokia.print(String(Hout_str), RIGHT, 32);  myNokia.setFont(SmallFont);  myNokia.print("    In Out", LEFT, 40);  myNokia.print("      %", LEFT, 32);  myNokia.setFont(MediumNumbers);  myNokia.print(String(Hin), LEFT, 32);  myNokia.setFont(SmallFont);  // Battery Level  if (BatIn < 2.2) {    myNokia.setFont(SmallFont);    myNokia.print("Bat", LEFT, 0);  }  if (BatOut_str == "BLow") {    myNokia.setFont(SmallFont);    myNokia.print("Bat", LEFT, 16);  }  myNokia.disableSleep();  _delay_ms(5);}void drawStart() {  myNokia.enableSleep();  myNokia.clrScr();  //Tin  char chr_Tin [5];  String Tin_str = String(Tin);  myNokia.setFont(SmallFont);  myNokia.print("            C", LEFT, 0);  myNokia.print("In", LEFT, 8);  myNokia.setFont(MediumNumbers);  Tin_str.toCharArray(chr_Tin, 5); //количество знаков+1  myNokia.print(String(chr_Tin), CENTER, 0);  // Battery Level  if (BatIn < 2.2)  {    myNokia.setFont(SmallFont);    myNokia.print("Bat!", RIGHT, 28);  }  //Hin  myNokia.setFont(SmallFont);  myNokia.print("         %", LEFT, 18);  myNokia.print("In", LEFT, 28);  myNokia.setFont(MediumNumbers);  myNokia.print(String(Hin), CENTER, 18);  //No signal!  myNokia.setFont(SmallFont);  myNokia.print("Out - - -", CENTER, 40);  myNokia.update();  myNokia.disableSleep();  _delay_ms(5);}void setup() {  Serial.begin(9600);  pinMode(VccHTU, OUTPUT);  digitalWrite(VccHTU, 1);  Serial.println("Power ON!");  analogReference(DEFAULT);  // инициализация дисплея  myNokia.InitLCD();  myNokia.setFont(SmallFont);  myNokia.clrScr();  myNokia.print(">>>>>", CENTER, 20);  myNokia.update();  _delay_ms(1000);  myNokia.setFont(SmallFont);  myNokia.clrScr();  myNokia.print("))-->", CENTER, 20);  myNokia.update();  if (!LoRa.begin(433E6)) {    Serial.println("Ошибка загрузки LoRa-приемника!");    while (1);    myNokia.setFont(SmallFont);    myNokia.clrScr();    myNokia.print(" ->  ->", CENTER, 20);    myNokia.update();  }  // Диапазон для синхрослова  между "0-0xFF".  LoRa.setSyncWord(0xF3);  Serial.println("Прослушивание эфира. Ожидание пакета с в.датчика ...");  myHTU21D.begin();  Measurement();  drawStart();  digitalWrite(VccHTU, 0);  _delay_ms(1000);  myNokia.clrScr();  myNokia.print("Waiting", CENTER, 10);  myNokia.print("Message from", CENTER, 22);  myNokia.print("OUTSIDE", CENTER, 34);  myNokia.update();}void loop() {  r++;  digitalWrite(VccHTU, 1);  if (r < 600)  // 8 MHz;  {    mlc = 0;    // Прослушивание эфира, прием, дешифрация, если сигнал с в.датчика принят,    // то измерения в помещении, вывод инфы на экран и - в спячку.    {      int packetSize = LoRa.parsePacket();      if (packetSize) {        while (LoRa.available()) {          LoRaData = LoRa.readString();        }        int pos1 = LoRaData.indexOf('#');        int pos2 = LoRaData.indexOf('$');        Tout_str = LoRaData.substring(0, pos1);        Hout_str = LoRaData.substring(pos1 + 1, pos2);        BatOut_str = LoRaData.substring(pos2 + 1, LoRaData.length());        if ((LoRaData).substring(pos1, pos1 + 1) == "#") {          Serial.println("Принято, декодировано! r = " +  String(r));          r = 0;          Measurement();          draw();          digitalWrite(VccHTU, 0);          // sleepCounter = 49; 16 MHz          // sleepCounter = 48; 8 MHz          for (sleepCounter = 48; sleepCounter > 0; sleepCounter--)          {            digitalWrite(VccHTU, 1);            LoRa.sleep ();            LowPower.powerDown(SLEEP_1S, ADC_OFF, BOD_OFF);          }        }      }    }  } else {    r = 600;    if (mlc < 250) //4 часа, время работы без датчика    {      Serial.println("Работа без в.датчика.");      LoRa.sleep ();      Measurement();      drawStart();      digitalWrite(VccHTU, 0);      for (sleepCounter = 6; sleepCounter > 0; sleepCounter--)      {        digitalWrite(VccHTU, 1);        LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);      }      mlc++;    } else {      r = 0;      mlc = 0;    }  }  _delay_ms(110); }int main() {  init();  setup();  for (;;) {    loop();  }}

Работа анализатора начинается в setup'e с инициализации модулей, измерения параметров воздуха, анализа напряжения на батарейках и вывода этой инфы на дисплей. Далее уже в loop'e прослушивается эфир приемником LoRa. После приема и дешифрации сигнала с в.датчика повторно проводятся измерения, анализа напряжения на батарейках и вывод измеренной и принятой инфы на дисплей. Выполнив эту работу все элементы схемы уходят поспать примерно на полсекунды меньше, чем период отправки пакетов с в.датчика. В следующем цикле контроллер просыпается и включает приемник приблизительно за 0,5 сек до ожидаемого прихода сигнала с в.датчика. Таким образом, контроллер и периферия анализатора работают около полсекунды с периодом (циклом) меньше минуты (53,5 сек). Если радиосигнал с в.датчика не поступает на приемник анализатора на протяжении приблизительно одной минуты (время, достаточное для приема одного из 6-ти пакетов), то анализатор переходит в режим работы без в.датчика на 4 часа, измеряя параметры воздуха и оценивая состояние батареек только в помещении с индикацией на дисплее этих данных. Период обновления данных в режиме работы без в. датчика 56,7 сек. В конце четырехчасового цикла работы анализатора без в.датчика он прослушивает эфир: а вдруг в.датчик снова в эфире?




Для перевода модуля HTU21D в режим низкого энергопотребления во время сна его питание также, как и в в.датчике, организовано с контроллера ATMEGA328P (пин 14).


В целом, на дисплее анализатора видна такая картинка:



Дисплей из-за низкого разрешения и малого размера экрана плотно забит символами. Эта картинка смотрелась бы намного лучше на современном дисплее с электронными чернилами. В будущем в своих проектах буду использовать e-paper дисплей.


Ресурс батареек и другое


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


Рабочий ток измерялся с использованием тех же тестовых скетчей. Для исключения разрывов цепи питания или значительного увеличения величины выходного сопротивления батареек можно использовать шунт 3,9...5,6 Ом и параллельно подключенный к нему цифровой мультиметр с механическим переключением в режиме вольтметра на диапазоне 2000 мкВ. Это критично при измерении потребления тока сна анализатора, поскольку разрыв питания или значительное ограничение тока приводят к цикличесому ресету анализатора. Да и выносной датчик может переходить в постоянный рестарт. По мере возможности необходимо проверять ток потребления разными способами на разных диапазонах шкал прибора и с батарейками, которые планируется использовать, притом, обязательно без вывода результатов на монитор порта Ардуино. Невыполнение этих правил сказались на результатах измерений тока в предыдущем моем посте на тему метеостанции в одних случаях они занижены, в других завышены.


Результаты измерений сведены в таблицу:


в.датчик анализатор
Операционное время функции измерений параметров воздуха, состояния батареек 0,25 сек 0,39 сек
Операционный ток функции измерений параметров воздуха, состояния батареек 3,4 мА 3,5 мА
Операционное время функции передачи/приема сигнала 42 мсек 83 мсек
Операционный ток функции передачи/приема сигнала 30,0 мА

(4 дБ)


11,5 мА
Ток сна 10 мкА 190 мкА

Что бросается в глаза, глядя на эту таблицу. Операционный ток передачи сигнала 30,0 мА при мощности передатчика LoRa 4 дБ. Для сравнения, ток передачи для модуля nRF24L01 13,5 мА. Вывод очевиден: надо переходить на nRF24L01, но не все так просто.


В режиме приемника в nRF24L01 используется так называемыйLNA (малошумящий усилитель). Разработчик библиотеки предполагает, что нет никакого программного обеспечения, которое могло бы повлиять на режим LNA.В режиме приема модуль постоянно демодулирует сигнал для поиска входящего пакета. Именно по этой причине Berkseo не поставил внешний датчик. У меня задача, вроде, попроще организовать режим сна с библиотекой LowPower.h. Сомневаюсь, что задача имеет решение. Буду благодарен за ваши мнения на этот счет.


Средний ток потребления по данным таблицы в. датчика 0,13 мА. Емкости батареек типа АА GP Litium для выносного датчика должно хватить на 2,5 года.


Средний ток потребления анализатора 0,27 мА. Ресурс батареек АА GP Litium в анализаторе 1,2 года. Для беспроводного комнатного термостата Computherm Q7RF, например, срок действия батареек: около 1 года.


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


Составил код на С в Atmel Studio и эмулировал его в Proteus'е для для барометра-термометра.



На картинке ниже показаны результаты сравнения кода для одного и того же устройства на языке С и в среде разработки Arduino IDE.



Объем флеш-памяти, занимаемой в коде в Ардуино 12968 байт, на С 5954 байта и оценочно на Ассемблере не больше 200 байт.


Из этих чисел сделал несколько выводов, в которых убедился на собственном опыте:
Код на Ассемблере уменьшает размер памяти на порядки. Соответственно пиковое потребление падает в сотни раз. С десятков миллиампер при прошивках контроллеров устройств на Ардуино или С, С++ до десятых миллиампера на Ассембере.
Поиск компромисса. Так благодаря использованию компилируемых в Arduino IDE библиотек и функций на С/С++ в некоторых скетчах этого поста удалось уйти от предупреждения: Недостаточно памяти, программа может работать нестабильно. Притом, чем проще код, тем выше соотношение: размер памяти в Arduino IDE к памяти на С/С++. Для простейшего кода мигания светодиодом в несколько строк это соотношение составит 6 раз, а проигрыш в производительности 28 раз.


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


И, наконец, искренне благодарю AlexanderS, который донес до меня идею виртуальной шкалы времени или синхронизации, а также других участников обсуждения статьи Автономная метеостанция на контроллере ATMEGA328P и питанием от батареек с беспроводным выносным датчиком (ittakir, Javian, smart_alex, Polaris99, gerasimenkoao, igrushkin, enjoyneering) за предложения, конструктивную критику и замечания.


Спасибо, кто дочитал. Всем отличного иммунитета во времена коронавируса и не только.


Ссылки по теме


Узел беспроводного датчика с низким энергопотреблением


Беспроводная мини погодная станция с e-paper экраном на батарейках


Превращаем Arduino в полноценный AVRISP программатор


LoRa и сон


Узнайте о битах конфигурации ATmega328P и о том, как использовать их с внешним кварцевым резонатором


Калькулятор фьюзов AVR


Почему многие не любят Arduino

Подробнее..

Разработка контроллера резервного питания. Схемотехника

04.06.2021 10:04:57 | Автор: admin

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

Контроллер работает совместно с тремя внешними модулями:

  • сетевым источником питания 220 VAC в 24 VDC

  • инвертором 24 VDC в 220 VAC

  • аккумуляторной батареей 24 В

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

Преимущества

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

Применение

Применить такой контроллер можно в промышленных и бытовых устройствах и агрегатах, подъемниках, лифтах, автоматических воротах, кранах, автоматических дверях, системах домашней автоматизации и т.д.
Контроллер способен работать и как простой зарядник аккумуляторов емкостью до 30 А*ч, как измеритель параметров электросети, измеритель КПД инвертеров, как источник питания с регулируемым напряжением, током до 10 А и защитой от перегрузок и т.д.

Принцип работы

Особенностью архитектуры данного контроллера является его тесная связь с потребителями.
Для того чтобы не превысить предельно допустимую мощность источника питания и инвертера и не спровоцировать проседания выходных напряжений контроллер получает от потребителей информацию о планируемом подключении нагрузок и сообщает потребителям о текущем состоянии сетевого напряжения. Таким образом потребители не будут пытаться получить недоступную мощность или предпринимать действия способные быстро и непрогнозируемо привести к исчерпанию аккумулятора. Связь потребителей с контроллером осуществляется через один из цифровых интерфейсов : CAN, RS485, USB.

При наличии сетевого напряжения контроллер пропускает напряжение 24 В от внешнего источника питания к потребителям через управляемый ключ 1 (см. структурную схему) и напряжение 220 В через реле Р1. Ключ 1 работает одновременно также как ограничитель входного напряжения, ограничитель тока, защита от переполюсовки и идеальный диод. Ключ 1 не дает проникать обратному току на источник питания в случае отключения сетевого напряжения. Может показаться, что это излишняя мера, но некоторые промышленные источники питания MEAN WELL не включаются, когда на их входе уже присутствует напряжение. Одновременно с подачей тока потребителям контроллер заряжает аккумулятор (если аккумулятор этого требует). При этом ток заряда аккумулятора балансируется с током уходящим потребителям так чтобы не превысить допустимый ток источника питания.
Цифровое управление и повышающее/понижающий (Buck-Boost) преобразователь зарядника позволяют точно учитывать степень заряда и разряда аккумулятора и выбирать правильные профили заряда в зависимости от состояния аккумулятора.

При отсутствии сетевого напряжения контроллер пропускает через ключ 2 напряжение 24 В потребителям от аккумулятора. Напряжение при этом может варьироваться от 27 В (полностью заряженный) до 20 В (полностью разряженный). Потребители должны быть готовы работать в таком диапазоне, что обычно не представляет проблемы. Напряжение 220 В подается через реле Р2 от внешнего инвертера. Сам инвертер питается от аккумулятора через ключ 3. Инвертер может поддерживаться как в горячем резерве так и быть отключенным (что более экономично). Однако из выключенного состояния инвертеры обычно выходят несколько секунд и это затягивает переключение.

Основные характеристики

  • максимальный коммутируемый переменный ток напряжения 200 В - 35A

  • максимальный коммутируемый постоянный ток напряжения 24 В - 15 А

  • максимальный ток на входе инвертера - 50 А

  • максимальный ток заряда аккумулятора при наличии радиатора - 10 А

  • максимальный ток заряда аккумулятора без радиатора - 4 А

  • тип аккумулятора - cвинцово-кислотная батарея 24 B

  • тип микроконтроллера - MKE18F512VLL16 (ARM Cortex-M4F, 32-Bit, 168MHz, 512KB (512K x 8) FLASH, 64 KB SRAM, -40C ~ 105C)

  • Цифровые интерфейсы: CAN гальвано-изолированный, RS485 гальвано-изолированный, USB 2.0 Full Speed VCOM

  • Два гальвано-изолированных цифровых выхода

  • Дисплей с энкодерным управлением

  • Встроенные измерители токов, напряжений, мощностей и прочего по входным и выходным линиям 220 и 24 В.

  • Утечка тока аккумулятора в отключённом состоянии не более 200 мкА

  • Все основания рассчитывать что на половине заявленных максимальных токов плата способна будет длительно работать без радиаторов при условии свободной конвекции.

Схема

Лист 1. Идеальный диод источника питания, идеальный диод цепи питания системы от аккумулятора и DC/DC преобразователь зарядника. Лист 1. Идеальный диод источника питания, идеальный диод цепи питания системы от аккумулятора и DC/DC преобразователь зарядника. Лист 2. Микроконтроллер, цифровые интерфейсы, дисплей, стабилизаторы питанияЛист 2. Микроконтроллер, цифровые интерфейсы, дисплей, стабилизаторы питанияЛист 3. Ключ питания инвертера, измерители в цепи переменного тока, коммутаторы цепи переменного токаЛист 3. Ключ питания инвертера, измерители в цепи переменного тока, коммутаторы цепи переменного тока

Структурная схема

Структурная схема с указанием номеров разъемов и точек измерения напряжений и токов. (для увеличения открыть в отдельном окне)Структурная схема с указанием номеров разъемов и точек измерения напряжений и токов. (для увеличения открыть в отдельном окне)

Особенности схемы

Зарядник аккумулятора выполнен на регулируемом DCDC преобразователе U23 серии LTC3789.
Выходное напряжение преобразователя задается микросхемой U24 DAC80501 управляемой по интерфейсу I2C. DAC80501 преобразует 16-и битный код в выходное напряжение в диапазоне от 0 до 1.25 В. Резистивный делитель на R94, R96, R100 смешивает напряжение от U24 и выходное напряжение DCDC преобразователя чтобы получить опорное напряжение VFB, для микросхемы LTC3789 оно должно равняться 0.8 В. DCDC преобразователь работает так чтобы напряжение VFB всегда оставалось равным 0.8 В, когда микросхема U24 меняет свое выходное напряжение.
Таким образом DCDC преобразователь способен регулировать свое напряжение от 1.65 В до 31.9 В.
Для расчета схем на базе LTC3789 и подобных существует специальная программа - LTpowerCAD
Вид окна программы для рассматриваемого преобразователя показан ниже:

В целом программа показывает более оптимистичные результаты чем есть в реальности, особенно на малых мощностях. В частности недооценивается влияние паразитных элементов трассировки.
Даже упрощенная модель в программе LTpowerCAD не дает однозначного ответа по оптимальному выбору компонентов, поскольку при разных режимах и комбинациях входных и выходных напряжений и токов значительно меняется вклад разных элементов в нагрев схемы. Т.е. программа не выполняет глобальной оптимизации по всему диапазону рабочих режимов. И приведенная схема была в основном оптимизирована для случая выходного напряжения в 32 В и выходного тока 10А, т.е. самого тяжелого режима при зарядке 24В аккумулятора.
На КПД преобразователя также влияет состояние сигнала DCDC_MODE. Как показала практика в состоянии лог. 0 (forced continuous mode ) катушка индуктивности L5 меньше нагревается чем когда на DCDC_MODE присутствует лог. 1 (pulse-skipping mode)
Сигнал EN_CHARGER в состоянии лог. 0 запрещает работу преобразователя. В выключенном состоянии преобразователь не пропускает напряжение с выхода на вход.

Ключ источника питания SW1. Выполнен на микросхеме U20 LTC4364. Через этот ключ проходит ток от источника питания к потребителям. Когда происходит переключение от питания от аккумулятора этот ключ выключается микроконтроллером.

Часть схемы с ключом источника питания Часть схемы с ключом источника питания

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

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

Ключ аккумулятора SW2. Выполнен на микросхеме U21 LTC4364.

Назначение этого ключа в том чтобы пропустить ток от аккумулятора к потребителям в режиме работы резервного питания. Транзистором Q9 задается два разных уровня выходного напряжения.
При уровне 0 сигнала AIDS_FBC ключ начинает пропускать ток от аккумулятора в систему (т.е. потребителям) только если напряжение в системе упадет ниже 22.9 В (т.е. внешний источник питания не будет способен удержать свое номинальное напряжение)
При уровне 1 сигнала AIDS_FBC ключ пропустит ток если в системе напряжение будет ниже 26.3 В.
Это необходимо когда в систему включается полностью заряженный аккумулятор с напряжением до 32 В чтобы транзисторы ключа не перегрелись из-за слишком большого падения напряжения на них.
Поскольку ключ еще и выполняет функции идеального диода, то ток из системы в аккумулятор через него не проходит.
В обесточенном состоянии и подключении только аккумулятора ключ останется закрытым. Таким образом систему нельзя включить от аккумулятора не подав предварительно напряжение от внешнего источника питания.

Ключ питания инвертора SW3. Выполнен на микросхеме U14 LTC4368.

Этот ключ включает питание на инвертор. Для быстрого переключения на резервное питание инвертор желательно держать включенным. Однако инверторы потребляют значительный ток. Например инвертор MEAN WELL TS-1500-224 мощностью 1.5 КВт

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

Высоковольтная часть. В высоковольтной части коммутация производится с помощью реле K1 и K2 типа AHES4292. Не самый быстрый и надежный способ коммутации, но дело в том что схема предназначена для коммутации самых разнообразных нагрузок и напряжений, в частности для коммутации межфазных напряжений в 3-х фазных сетях (тогда ставятся еще вспомогательные внешние 3-х фазные контакторы). Реле относятся к типу реле безопасности и на схеме они взаимно блокированные. Принято считать что по такой схеме реле такого типа ни при каких обстоятельствах не смогут включиться одновременно, даже когда одно из них залипнет. Значит сетевое напряжение никогда не сможет проникнуть на выход инвертора и погубить его.
Залипание реле контролируется измерителями напряжения на резистивных делителях R51, R52 и R53, R54

Мониторы мощности. Реализованы на микросхемах U15 и U17 типа ACS37800KMACTR-030B3-SPI.
Микросхемы способны измерять переменный ток, напряжение, мощность, действующие их значения, средние от действующих значений за заданное время, способны измерять действующее как по переходу через ноль так и действующее значение постоянных токов. Каждая из микросхем отдельно гальвано-изолирована и может выполнять точные измерения не беспокоясь о способе реализации заземления и зануления источников напряжения и даже измерять при межфазном подключении. Микросхемы измеряют ток амплитудой до 30А.
Считывание данных производится по интерфейсу SPI. На каждую микросхему идет отдельный интерфейс SPI поскольку они не могут совместно работать на одном общем интерфейсе.

Измерители токов и напряжений. Как пример приведен фрагмент схемы ниже -

U22 и U13 здесь измеряют ток. Микросхемы INA240A1 хорошо подходят для условий измерений с большими синфазными помехами. Они двунаправленные. Средняя точка для них формируется общей для всех прецизионной мало-шумящей схемой на операционном усилителе U26 THS4281DBVR. Кроме того INA240A1 достаточно хорошо согласуются в входами АЦП микроконтроллеров.
Микросхема U27 на схеме выполняет роль дифференциального усилителя напряжения для измерения напряжения аккумулятора. Дифференциальный усилитель применен здесь для того чтобы минимизировать ток потребляемый от аккумулятора, когда система обесточена, также дифференциальный усилитель как ни странно упрощает трассировку платы в отношении топологии аналоговых и цифровых земель.

Элементы управления. Для управления платой в первую очередь предназначены коммуникационные интерфейсы, но предусмотрено также и непосредственное ручное управление и настройка. Для этого введен в схему ручной механический энкодер SW1 с двухцветной подсветкой и нажатием PEL12D-4225S-S2024.

Для отображения информации есть OLED дисплей ER-OLED015-2W. Монохромный, 128x64 точки, управляется по интерфейсу SPI. Немного усложненная схема

объясняется тем что дисплею для работы нужно повышенное напряжение 12 В. Ключ питания U34 здесь добавлен скорее для страховки ввиду неопределенности поведения в даташите на дисплей в случае пониженного уровня VCC.

Микроконтроллер MKE18F512VLL16 будет работать на частоте 120 МГц. Его внутренней RAM размером в 64 кБ должно хватить для операционной системы реального времени чтобы управлять несколькими автономными задачами: GUI, измерений, контроля, связи.

Что стоит помнить.
Как и программное обеспечение такие схемы подвергаются постоянному рефакторингу - меняются названия сигналов, заменяются микросхемы на другие, меняются дискретные компоненты, исправляются грубые ошибки и т.д. Изменения происходят постоянно и даже на этапе эксплуатации изделия. Эта схема прошла уже 3-и итерации с очень существенными изменениями.
Самый страшный враг схемотехника промышленных изделий - желание экономить на компонентах, пытаться снизить себестоимость отказываясь от тех или иных защитных средств: супрессоров, гальвано-изоляции, разделения земель, лимитеров и т.д.
Пример: можно не ставить супрессор на входе к которому подключается внешний источник питания. Казалось бы логично, ведь источник питания и так имеет многочисленную защиту на своем выходе. Но на производстве нередко включенный источник подключают к не запитанной плате. При достаточно длинных проводах и мощном источнике на входе платы в момент непосредственно коммутации и сопровождающего ее дребезга возникают резонансные явления приводящие к перенапряжениям и выходу из строя полупроводниковых ключей на плате.
Отловить такой баг уже отдав устройство в эксплуатацию можно лишь по факту массового обращения недовольных потребителей.

Далее предстоит плату страссировать, спаять, написать программу.
Трассировкой предполагается заняться в следующей статье.

Подробнее..

Из песочницы Облачный СКУД ЗА и ПРОТИВ из первых рук

06.07.2020 02:17:13 | Автор: admin
Пандемия жёстко заставила каждого из нас, без исключения, если не воспользоваться, то признать до сих пор преимущественно информационную среду интернет ещё и системой жизнеобеспечения. Ведь многих сегодня интернет буквально кормит, одевает и обучает. Интернет проникает в наши дома поселяясь в чайниках, пылесосах и холодильниках. IoT internet of things это любое оборудование, бытовые приборы например, в которые встроены крошечные электронные модули для обмена данными в сети Интернет через наш домашний WiFi.

Даже дверные замки многие производители начали делать с управлением через смартфон. Очередь за системами контроля доступа и эксплуатацией зданий и сооружений. И тут я хочу обсудить известные мне ЗА и ПРОТИВ облачных СКУД, поскольку работаю в коллективе, который одну из таких систем и разрабатывает.

Обсудить, пока что в независимости от профиля объекта, будь то жильё, промышленное предприятие, склад, ТРЦ, БЦ или образовательное учреждение.

Перечислю очевидные ЗА и ПРОТИВ облачных СКУД



PRO


  • Заявки на пропуск оформляются онлайн, без необходимости заполнять бумажки и собирать подписи согласования.
  • Пропуск доступен для редактирования и управляющему, и принимающему, и СБ, причём, с онлайн уведомлением владельца пропуска в удобном ему мессенджере, СМС или эл. почте об внесённых изменениях.
  • Удобный доступ к данным СКУД для руководителя администрации, начальников охраны, отдела кадров, особенно на предприятиях с филиальной сетью, в любое время, с любого ПК с веб браузером, на мобильном устройстве. Отпуск, командировка, больничный не препятствие справится о текущих делах, глянуть статистику.
  • Внедрение на объекте без сложного проектирования. Поскольку топология веб-сервисов позволяет легко менять тех. процессы и логику, возможные ошибки первоначальной схемы легко поправить уже в процессе эксплуатации и выбрать оптимальную структуру КПП, проходных и уточнить режим объекта.
  • Для настройки и тем более для управления не требуется специальной квалификации и подготовки. Современные инструменты программирования настолько нацелены на создания программных продуктов интуитивных в использовании, что создаваемые облачные сервисы обречены быть просто управляемыми и удобными в эксплуатации.
  • Дешевизна оборудования обусловлена его практическим отсутствием. Высокопроизводительные микро-ПК Ардуино, Расберри, Оранж заменяют специализированные контроллеры. Вся логика уходит на серверную часть и в оперативную память мобильных устройств, смартфонов. Смартфоны заменяют собой привычные RFID карточки и брелки, обеспечивая экономию на расходных материалах. Открывающее воздействие на замок, турникет оказывает тот самый крохотный элемент IoT интернета вещей. Дешёвый в силу своей простоты и тиражей производства.

image

пример структуры СКУД как облачного сервиса

Как вы догадались это были аргументы в пользу веб-сервисов СКУД. Буду честен и без утайки перечислю все аргументы против применения СКУД как облачного решения.

CONTRA


  • Хранение данных пользователя в облаке. Риски утраты информации по техническим причинам, утечки третьим лицам. Снизить эти риски можно распределением микро-сервисов по большему числу ЦОД (центр обработки данных) и выбору надёжных поставщиков этой услуги с классом TIER 3 или выше.
  • Отсутствие у части пользователей смартфонов. Нежелание использовать личный смартфон для служебных целей. Для решения этой проблемы у управляющий компании есть опция печати QR пропуска на чековом принтере, что под чертой выгоднее чем выдавать брелок или карту.
  • Наличие на объекте СКУД установленной годами ранее, но исправно работающей хоть и устаревшей. В этом случае есть опция применить для интеграции штатный в веб-сервисах API (application program interface) и расширить функционал до желаемого. Тем более что к большинству известных систем контроля доступа как правило уже написаны интеграции.
  • Традиционное нежелание наёмных сотрудников отказываться от знакомых систем и технологий, неважно что в пользу более эффективных и выгодных технологических аналогов. Саботаж среднего звена на этапах согласования может и часто вынуждает руководство, собственников сдаться и отказаться от модернизации.

Но лидером контраргументов, какие я только слышал, остается классическое " а что если пропадёт интернет...". Тут у меня нет слов, и в голову приходит старый анекдот:

Я самая главная, дерзко заявила Эл. Почта, меня все читают! Нет, я главнее, негромко возразил Интернет, ты во мне живешь. Электричество тихо вздохнуло и отвернулось.

И так, приглашаю подебатировать на тему ЗА и ПРОТИВ Интернета в охранных системах, в частности СКУД. Пожалуйста, смело комментируйте с чем не согласны, буду рад услышать критику, возразить или честно согласиться. Стесняетесь высказаться публично пишите в личку.

Спасибо
Илья
Подробнее..

От SMS до AWS выбор технологии управления в зависимости от проекта

04.09.2020 18:19:39 | Автор: admin
Пост ориентирован на людей, размышляющих над созданием первой системы управления. Опытных специалистов может заинтересовать взгляд сверху на разные технологии управления Интернета вещей, выводы и короткий прогноз в заключении.



Задача


Мы в Synergy Team разрабатываем и выпускаем промышленные контроллеры. Они предназначены для учета ресурсов, управления объектами энергетики и других применений, которые принято называть Интернетом вещей (IoT). Часто нашим заказчикам не нужны просто контроллеры. Им нужно комплексное решение, включающее систему управления.

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


В этом посте мы ограничились классом задач, когда IoT контроллеры напрямую подключаются к управляющей системе (Directly-connected IoT). Итак, наша задача разработать систему управления, которая должна:
  • передавать данные от датчиков, подключенных к контроллерам,
  • передавать события (например, о превышении температуры, открытии двери, потере связи и т.п.),
  • передавать команды управления к исполнительным устройствам,

Если система состоит из большого количества объектов и/или выполняет ответственные задачи, она дополнительно должна:
  • постоянно контролировать наличие связи с объектами,
  • собирать статистику по своей работе,
  • обновлять настройки и программное обеспечение контроллеров (по запросу);
  • иметь защиту от несанкционированного доступа. Для государственных и крупных частных компаний система также должна соответствовать законодательству по работе с объектами критической информационной инфраструктуры (КИИ). В частности, требованиям 187-ФЗ, ФСБ, ФСТЭК, приказам Минкомсвязи и т.п.

Управление без выделенного сервера


Для нескольких объектов задача просто решается с управлением по GSM сети посредством SMS команд или звонков. Этот подход был популярен в начале 2010х, а его плюсы и минусы описаны, например, здесь. Для большинства серьезных систем этот подход на сегодня теряет актуальность.


Чуть более сложным является ручное управление контроллерами по выделенным IP через WEB или командную строку (CLI). Контроллеры должны быть постоянно включены в сеть, иметь статические белые или серые IP адреса. Альтернативно можно использовать динамические IP c привязкой к статическим доменным именам по технологии DynDNS или аналогичным. Это неплохо работает, если объектов мало и к надежности не предъявляется особых требований.

Недостатки:
  • неудобно, если WEB страницы от всех контроллеров нельзя разместить на экране(ах) диспетчера;
  • большая абонентская плата за статические IP адреса;
  • сложно настроить неподготовленным пользователям, когда устройства расположены за NAT;
  • долго согласовывать с оператором связи выделение пула адресов и доступ в IP подсеть. Например, для организации GSM APN у нас уходили недели;
  • неудобно, поскольку диспетчеру необходимо анализировать данные на мониторе глазами;
  • высокий риск несанкционированного доступа к контроллерам при использовании сетей общего пользования (Интернет).

Для быстрых демонстраций, контроля за несколькими объектами достаточно использовать управление по IP, SMS или телефонным звонкам.

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

Управление через выделенный сервер


В оставшихся случаях нужен сервер с выделенным IP, по которому будут подключаться контроллеры, диспетчеры и сторонние системы.

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

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


Разработка на базе коробочных продуктов


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

Если же нужен мониторинг и/или управление однотипными объектами (как в предложенной задаче), то использование SCADA может сделать решение слишком тяжелым из-за сложности настройки, трудоемкости добавления типовых объектов и повышенных требований к производительности сервера. Лучше использовать одну из специализированных коробочных систем, представленных на рынке, наиболее подходящую для задачи. Например:
  • систему мониторинга и управления сетевым оборудованием Network management system (SNMP, TR-069, CLI);
  • систему автоматизированного учета тепла, электричества, газа, воды. Для краткости АСКУЭ;
  • систему навигационного трекинга подвижных объектов с контролем бортовых систем;
  • систему управления климатом (вентиляция, кондиционирование и отопление) HVAC;
  • систему умный дом/офис/здание;
  • систему управления объектами энергетики: подстанциями, наружным (уличным) освещением, зарядными станциями для электротранспорта;
  • систему контроля доступа и охранно-пожарной безопасности, и т.д.

Перечисленные системы часто перекрывают функционал друг друга. Например, на базе АСКУЭ можно реализовать управление наружным освещением, а на базе Умного дома сделать управление климатом и доступом. Расширение функционала живых систем происходит постоянно. Появляются новые API для интеграции коробочных продуктов в решения заказчиков, а также поддержка пользовательских функций в коробочном ПО. Огромным плюсом коробочных продуктов является тот факт, что их можно купить и поставить на свой сервер, получив отчуждаемое решение, работающее в закрытом контуре заказчика.

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

Разработка на базе IoT платформ


Если использование коробочного ПО невозможно, хорошей идеей будет разработка на одной из популярных IoT платформ. Такие платформы содержат универсальные модули, необходимые в любой IoT системе для:
  • регистрации и удаления IoT устройств,
  • безопасной аутентификации IoT устройств и поддержания связи с ними,
  • работы с данными (базы данных, оптимизированные для разных задач),
  • регистрации пользователей и управления правами доступа,
  • формирования аналитики по собранным данным,
  • формирования уведомлений для пользователей (SMS, E-Mail, push сообщения, ),
  • хранения последних данных, считанных с IoT устройств,
  • выполнения различных действий по событиям,
  • визуализации данных и т.п.

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

Систему на IoT платформе можно разработать за минимальное время. Ее архитектура не будет сильно меняться при увеличении размера.

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

Недостатки:

  • компоненты IoT платформ работают только на мощностях их владельцев, создать полностью отчуждаемую систему, которая будет работать в ЦОД заказчика, возможно в редких случаях;
  • стоимость использования IoT платформы для крупных проектов может быть выше стоимости аренды виртуальных машин в ЦОД;
  • миграция с одной IoT платформы на другую связана с изменением приличного объема кода. Хотя сейчас наметилась тенденция к стандартизации API;
  • далеко не все IoT платформы развернуты в ЦОДах внутри России, что делает невозможным их использование в интересах государственных заказчиков.

Полностью своя разработка


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

Собственные решения часто реализуют на базе таких open-source систем, как ThingsBoard, OpenSCADA, MajorDoMo, Home Assistant, iobroker, Nokia glial. Для небольших проектов они могут оказаться слишком тяжелыми из-за:
  • большого срока разработки и соответствующих финансовых затрат. Обычно счет идет на человеко-годы;
  • c ростом количества объектов будут возникать узкие места в виде медленных баз данных, сборщиков, генераторов отчетов и т.п., для разрешения которых потребуется изменение архитектуры и дополнение ее баллансировщиками и дублирующими ресурсами;
  • расходов на постоянное администрирование и техническую поддержку.

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

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

Заключение


На основе сделанного анализа разных систем предлагаем следующий алгоритм выбора системы управления.



Для демонстраций и маленьких IoT проектов на несколько объектов можно использовать прямое управление по IP, SMS или через GSM звонки. В остальных случаях необходима система верхнего уровня. Использование SCADA оправдано в промышленной автоматизации и на больших объектах энергетики. Для учета ресурсов, управления сетевым оборудованием, трекинга, охраны, умного дома и т.п. удобно использовать коробочное решение нужной специализации. Разработка систем на IoT платформах сложнее, но дает больше перспектив и гибкости. Решения на зарубежных IoT платформах серьезно ограничены по масштабу и областям применений в России. Самой сложной является полностью своя разработка. И она оправдана только для госзаказа и самых амбициозных проектов. При этом для быстрых демонстраций и копирования лучших практик будет полезно параллельно с собственной разработкой сделать эскизный проект на IoT платформе.

Напоследок хотим поделиться небольшим прогнозом:

  • в облачных IoT платформах стоит ждать появление преднастроенных шаблонов Умного дома, АСКУЭ, NMS, СКУД и т.п. Это еще больше упростит использование IoT платформ и привлечет к ним еще большую аудиторию.
  • традиционные разработчики SCADA и других коробочных решений предложат больше инструментов для внешних разработчиков, которые хорошо зарекомендовали себя в IoT платформах. Закрытые коробочные решения вряд ли выдержат рыночную конкуренцию.
  • отечественные IoT платформы для государственных и больших частных заказчиков будут развиваться еще активнее.
  • API разных IoT платформ станут со временем более похожими друг на друга. Из-за этого переход с одной IoT платформы на другую будет упрощаться.

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

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

Как мы контроллер управления элементами наружной рекламы делали (часть 1)

05.11.2020 10:06:30 | Автор: admin


Однажды нам поступил интересный заказ на разработку и производство партии контроллеров для управления элементами наружной рекламы (ЭНР).

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

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

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

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

И всё! Ни ток, ни напряжение не измерялись, никакого информирования, соответственно, тоже не было.

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

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

  1. Включать/выключать вывеску по расписанию, чтобы не получить штраф за работу в ночное время, если вывеска расположена, например, напротив жилого дома. Персонал аптеки часто забывал обесточивать её перед уходом, а также включать с утра.
    А вывеска в городе для аптеки очень важна, потому что её неисправность приводит к потере потенциальных клиентов, которые могут не заметить аптеку на первых этажах зданий.
  2. Контролировать напряжение и ток. Превышение напряжения всегда сказывается не лучшим образом на любой электронике. Поэтому, чтобы избежать выхода из строя ЭНР, было решено их просто обесточивать в такой ситуации. Большое превышение по току свидетельствует о том, что блок питания ЭНР скоро может выйти из строя, либо произошло замыкание в каких либо отдельных элементах, а низкое потребление что вышли из строя светящиеся элементы или сами источники питания ЭНР.
  3. Организовать оперативное уведомление о возникших неисправностях посредством отправки SMS-сообщений. Уж не знаю чем не устроило заказчика уведомление через боты различных мессенджеров (Telegram, TamTam, ICQ и пр.), но в ТЗ прописали именно отправку SMS.
  4. Хранить данные мониторинга (напряжение, токи, состояние реле, флаги срабатывания защиты и т.п.) в базе данных на нашем сервере с доступом к информации через Web-интерфейс.

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

  • Центральный контроллер со стеком протоколов TCP/IP для доступа к удалённому серверу.
  • Узел питания.
  • Узел измерения тока.
  • Узел измерения напряжения.
  • Узел управления нагрузками.

Основным элементом схемы стал микроконтроллер серии PIC18 и внешний Ethernet-контроллер ENC28J60 фирмы Microchip. К микроконтроллеру мы подключили классическую микросхему часов DS1307 с кварцевым резонатором и литиевой батарейкой.

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

Для узла питания мы использовали AC-DC преобразователь с диапазоном входного напряжения питания 85305В.

Узел измерения тока выполнили на базе токового трансформатора:



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

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

Узел измерения напряжения решено было сделать на базе маленького трансформатора:



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

В общем, все основные узлы выполнены без каких-либо хитрых решений. При этом самым интересным оказался узел управления нагрузками!

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

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



Параметры коммутируемой нагрузки приводятся только для значения cos() = 1. А это, по сути, резистивная нагрузка обычный ТЭН.

Самое интересное, что в документации на таймер этот параметр в явном виде не указан.

Мы провели небольшое экспериментальное исследование и получили следующую табличку со значениями cos() для различных нагрузок:
Тип нагрузки cos()
AC-DC MeanWell RS-35-12 (35 Вт, 12В) с нагрузкой 35 Вт 0,55
AC-DC MeanWell RS-35-12 (35 Вт, 12В) без нагрузки 0,07
AC-DC MeanWell SE-450-12 (450 Вт, 12В) с нагрузкой 35 Вт 0,5
AC-DC MeanWell SE-450-12 (450 Вт, 12В) без нагрузки 0,2
AC-DC MeanWell SE-1000-12 (1000 Вт, 12В) с нагрузкой 340 Вт 0,6
AC-DC MeanWell SE-1000-12 (1000 Вт, 12В) без нагрузки 0,2
Компьютерный системный блок с БП 450 Вт 0,5
Вытяжка (200 Вт) 0,86
Кондиционер 24000 BTU (3 кВт) 0,97
Печь-гриль (1,8 кВт) 1

Измерения проводились специальным прибором APPA 138:



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

Мы использовали реле серии RT314 для которых максимальный ток указан в 16А. Но с учётом cos() нужно использовать следующие значения:
cos() Максимальный ток нагрузки, А
>0,95 16
0,6 10
0,4 0,5

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

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

Но всё же, не имея возможности, измерять величину cos() на каждом объекте, мы рекомендовали заказчику все нагрузки мощностью более 100Вт подключать через развязывающие контакторы:

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

Как мы контроллер управления элементами наружной рекламы делали (часть 2)

15.11.2020 02:05:31 | Автор: admin

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



Часть 1
Часть 2

В обсуждение первой части был затронут вопрос измерения напряжения и тока. Поэтому я решил осветить его более подробно. Как я уже писал ранее, датчиками напряжения и тока у нас в схеме являются трансформаторы. Для измерения напряжения используется миниатюрный трансик BV 201 0145, а для датчика тока AC-1020:



С них снимаются напряжения, которые оцифровываются встроенным в микроконтроллер АЦП. Аналоговая часть показана ниже:



Датчик тока нагружается на резистор R3. Стабилитрон VD3 защищает от резких всплесков напряжения, вызванных короткими бросками тока. Резисторы R2, R4 задают нулевую точку в районе 1,8В. Аналогично сделано для трансформатора напряжения. Только там делитель на резисторах R8 и R10, т.к. трансформатор в нашем случае выдаёт номинальное напряжение 12 В.

Оцифровку мы осуществляем с частотой 1000 Гц в течение 200 мс. На основе полученных значений рассчитываем RMS. Быстрый расчёт квадратов значений мы производим прямо в прерывании. После накопления 200 выборок уже в основном цикле программы осуществляется окончательный расчёт с использованием чисел с плавающей точкой.

Для чего нужно измерение RMS и как его лучше сделать хорошо описано вот в этой статье.

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

  • Набор из трёх галогеновых ламп мощностью по 500 Вт
  • Датчик тока, описанный выше
  • Электросчётчик Энергомера СЕ102М
  • Преобразователь USB-RS-485
  • Автоматический выключатель

Счётчик мы используем в качестве образцового измерителя напряжения в сети и тока нагрузок. Модель СЕ102М очень удобна тем, что, во-первых, подключается всего двумя проводами к преобразователю USB-RS-485 (внутри счётчика имеется собственный преобразователь питания), а, во-вторых, не требует для считывания данных ввода серийного номера. Вроде мелочи, но удобства в пользовании счётчиком они прибавляют.

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

Кстати, по счётчикам можно отдельную небольшую статью написать. В своё время я с ними плотно работал, в итоге в некоторых наших устройствах реализована поддержка четырёх популярных моделей: Инкотекс-СК Меркурий 206, Энергомера СЕ102, Энергомера СЕ102М и IEK STAR 104/1.

Общий вид стенда получился такой:



Для автоматизации была разработана несложная программа, которая считывает данные со счётчика, управляем встроенными реле контроллера и автоматически подбирает коэффициенты для измерителя тока и напряжения:

Обычно мы используем штрих-коды для серийных номеров наших устройств. Их очень удобно вводить при помощи сканера штрих-кодов:



Но в данном случае девайс был заказным, и заказчик попросил выполнить серийник просто в виде крупных цифр на лицевой панели.

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

Кстати, по поводу MAC-адресов. Мы покупаем их в виде микросхем 24AA025E48-I/SN производства Microchip. При оптовой закупке они обходятся недорого, при этом очень удобны в использовании. MAC-адрес считывается по интерфейсу I2C.

Теперь что касается связи с сервером. На начало разработки основной функционал у нас уже имелся. Это несложный Web-сервис, написанный на ASP.net и отдельная серверная программа для обмена данными с железом. Каждый контроллер раз в минуту передаёт информационный пакет по протоколу UDP. Серверное ПО разбирает его, сохраняет данные в базе (с прореживанием до раза в час) и дополнительно запоминает внешний IP-адрес и порт, с которого пришёл пакет. Это нужно для управления контроллером с сервера.

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

Сразу напишу почему мы используем именно UDP-, а не TCP-соединение, хотя наше устройство, естественно, имеет реализацию обоих протоколов. Выбор UDP обосновывается всего лишь простотой использования и малыми вычислительными затратами как со стороны контроллера, так и со стороны сервера. Да, он не гарантирует доставку пакетов данных, но нужно понимать, что это легко реализуется протоколом более высокого уровня, который работает поверх UDP. Кроме того, при передаче данных мониторинга потеря нескольких пакетов в сутки абсолютна несущественна, особенно учитывая, что при сохранении в базу мы их всё равно прореживаем и сохраняем данные только раз в час. А вот при удалённом управлении контроллером, например, при включении/выключении реле в ручном режиме, работает система запрос-ответ и осуществляется несколько попыток отправки команды.

Помимо этого через сервер у нас реализовано удалённое обновление прошивок контроллеров. Оно так же работает по UDP. Правда обновление работает в полуавтоматическом режиме. Всё таки нехорошо запускать его в автомате в произвольный момент, так как это может привести к проблема в работе у конечных пользователей. Представьте как они удивятся, если средь бела дня Ethernet-реле отключить у них какую-то нагрузку и перезапуститься :-)

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

Почему накопители SSD ускоряются после очистки и насколько важен размер кэша бенчмарки популярных моделей PCIe 4.0

01.03.2021 12:17:20 | Автор: admin
Почему накопители SSD ускоряются после очистки и насколько важен размер кэша бенчмарки популярных моделей PCIe 4.0



В прошлом году SSD впервые в истории обогнали HDD по объёму продаж. В отличие от винчестеров, здесь сумасшедший технический прогресс. За несколько лет рынок меняется кардинально: интерфейс NVMe вместо SATA, память SLCMLCTLCQLC

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

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

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

В январе 2021 года издание AnandTech провело тестирование девяти современных моделей SSD на 1 ТБ. Описание этого эксперимента показывает никакой единой метрики не существует.

Новая флэш-память


SSD на массовом рынке появились более десяти лет назад. Например, компания Intel выпустила свои первые SSD в 2008 году: это были модели X25-M и X18-M объёмом 80 ГБ с форм-фактором 2.5" и 1.8", соответственно. Первая вышла по рекомендованной цене $595


Intel X25-M

Много воды утекло с тех пор. Сейчас мы видим десятки терабайтных моделей по гораздо меньшей цене. Но основные принципы работы твёрдотельных накопителей не изменились. И главные проблемы флэш-памяти NAND по-прежнему актуальны:

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


Бенчмарки старых SSD образца 2009 года


Вернуть изначальную производительность старых SSD можно было только с помощью утилиты HDD ERASE, источник

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

Примерно в 2014 году появились накопители с памятью TLC NAND и поддержкой прямого интерфейса NVMe. К настоящему времени обе эти технологии практически захватили рынок: память MLC практически исчезла, а NVMe дефолтный интерфейс для новых моделей. Более высокая производительность PCIe/NVMe по сравнению с SATA даёт ошеломляющую разнице в бенчмарках, но с точки зрения дизайна бенчмарков на самом деле важнее был переход на TLC. Это связано с тем, что потребительские твёрдотельные накопители TLC в значительной степени зависят от кэширования SLC.



В накопителе чем больше битов мы записываем в ячейку, тем она сложнее (и медленнее). Современные диски записывают 3 бита на ячейку (TLC) или 4 бита (QLC). Оба варианта медленнее для записи, чем запись 1 бита на ячейку (SLC). Поэтому в SSD часть ячеек обрабатывается в режиме SLC, это позволяет увеличить поток входных данных.

Недостатком является то, что данные из SLC NAND потом надо переписать в блоки, которые работают как MLC/TLC/QLC. Этот процесс часто называют фолдингом, он обычно автоматически выполняется во время простоя накопителя, где задержка не важна. Таким образом освобождается место в кэше SLC для дальнейшего использования.

Обязательное SLC-кэширование в современных SSD


Кэширование SLC создаёт два уровня производительности один внутри кэша, и один снаружи. Большинство пользователей никогда не видят производительности снаружи кэша. Реальные потребительские рабочие нагрузки почти никогда не пишут десятки или сотни ГБ непрерывно, особенно на высоких скоростях (быстрее, чем гигабитный Ethernet) даже запись несжатого видео 4k60 немного меньше 1,5 Гбит/с, в то время как высококачественные NVMe теперь предлагают пиковую скорость записи выше 4 Гбита/с. Но на самом деле включение более реального варианта использования с адекватными перерывами для диска, чтобы освободить кэш SLC во время простоя, делает результаты тестирования более релевантными для многих пользователей.

Размеры кэша SLC также зачастую зависят от объёма свободного места на диске. Например, при заполнении SSD на 75% может остаться только 10% от обычного размера кэша SLC. Тесты, которые работают с почти пустым диском, могут преувеличить преимущества кэширования SLC по сравнению с тем, что испытывают пользователи, когда они фактически используют большую часть рекламируемой ёмкости своего накопителя.


Изменение размера кэша SLC в зависимости от объёма свободного места в Intel SSD 665p

Накопители QLC ещё больше усложнили ситуацию, поскольку они пытаются держать кэш максимально заполненным для ускорения доступа к данным.

Накопители NVMe (и некоторые SATA) также чувствительным к температуре. Накопители M.2, потребляющие более 5 Вт на пике, могут сильно нагреваться, поэтому сейчас многие из них поставляются в комплекте с радиаторами.

Данные SSD: локальность и DRAM


Кроме интерфейса (SATA, PCIe 3.0, PCIe 4.0) и выбора флэш-памяти TLC или QLC NAND, есть ещё несколько важных технологических различий между SSD высокого класса и начального уровня. Например, метод хранения метаданных Flash Translation Layer (FTL) информации, какое физическое местоположение соответствует каждому логическому адресу (Logical Block Address, LBA).

В течение нескольких лет большинство SSD использовали большую простую таблицу поиска. Несложно посчитать, что для диска 1 ТБ с секторами по 4 КБ требуется таблица отображения FTL почти на 1 ГБ. Это увеличивает стоимость привода, а производители SSD пытаются снизить свои расходы. Поэтому интерфейс DRAM исчез практически со всех контроллеров начального уровня и им приходится как-то управлять гигабитной таблицей FTL, не имея возможности загрузить её в память целиком.

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



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

Приводы


Аппаратная начинка и архитектура диска непосредственно влияет на его производительности. Для иллюстрации AnandTech приводит бенчмарки девяти современных SSD ёмкостью 1 ТБ из различных сегментов рынка, то есть разных классов.

  • Samsung Samsung 980 PRO. последний флагман NVMe от Samsung это их первая модель PCIe 4.0 для потребительского рынка, а также первая модель PRO, использующая TLC NAND вместо MLC.
  • Silicon Power US70. Один из многих приводов с контроллером Phison E16 и TLC NAND. Именно эта комбинация впервые вывела PCIe 4.0 на потребительский рынок SSD-накопителей в 2019 году, а сейчас контроллеры постепенно меняют на Phison E18.
  • Kingston KC2500. Привод PCIe 3.0 с контроллером Silicon Motion SM2262EN, который настроен на агрессивное кэширование SLC и обычно обеспечивает лучшую в своём классе производительность при низкой глубине очереди.
  • SK hynix Gold P31. Преимущества вертикальной интеграции проявляются в том, что согласованная комбинация ультрасовременного (хотя и все еще PCIe 3.0) контроллера и NAND позволяет этому 4-канальному приводу работать наравне с 8-канальными приводами, устанавливая рекорды энергоэффективности.
  • Mushkin Helix-L. Бюджетный NVMe-накопитель использует TLC NAND и сокращает затраты с помощью контроллера DRAMless Silicon Motion SM2263XT, который использует функцию буфера памяти Host Memory Buffer, заимствуя до 64 МБ оперативной памяти из системы.
  • Corsair MP400. Представляет ещё одну популярную категорию бюджетных накопителей. Здесь работает связка из дешёвой и более медленной QLC и 8-канального контроллера Phison E12S, значительное улучшение по сравнению с 4-канальным Silicon Motion SM2263 в первых накопителях QLC NVMe, таких как Crucial P1 и Intel 660p/665p. Имеется кэш DRAM, но только 512 МБ, вдвое меньше, чем в обычных или высококлассных моделях.
  • Samsung Samsung 870 EVO. совершенно новый накопитель TLC SATA от Samsung сочетает 3D NAND и контроллер последнего поколения.
  • SK hynix Gold S31. Выпущенный в конце 2019 года с 72-слойной TLC, это довольно распространённый на массовом рынке SATA-накопитель с немного более низкой производительностью, чем ведущие SATA-накопители, но хорошей ценой.
  • Samsung 870 QVO. Накопитель QLC SATA второго поколения использует тот же первоклассный контроллер, что и 870 EVO, поэтому его недостатки полностью связаны с более медленной и дешевой флэш-памятью QLC NAND.

При работе с SSD нужно понимать, что накопитель показывает максимальную производительность только под Linux, и тестировать его тоже удобнее здесь. Во-первых, Microsoft до сих пор не выпустила DirectStorage API для Windows. Во-вторых, Linux предлагает гораздо большую прозрачность и контроль над оборудованием.

Серия тестов AnandTech Storage Bench (ATSB) состоит из трёх циклов: Light, Heavy и Destroyer. В первом режиме замеряется скорость выполнения набора лёгких задач, соответствующих относительно лёгкому использованию настольного компьютеров: браузер, текстовый редактор и прочее. В режиме Heavy очередь задач возрастает на порядок, в режиме Destroyer ещё на порядок. Циклы Light и Heavy прогоняются сначала на полностью пустом диске, а потом на частично заполненном.

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

Нужно заметить, что обычный юзер 99% времени использует SSD в лёгком режиме. Интенсивный режим включается только изредка, например, во время инсталляции игр или резервного копирования.

Серый график показатель нового пустого SSD, чёрный частично заполненного.

Как обсуждалось ранее, размер кэша MLC начинает серьёзно уменьшаться после заполнения диска на 50%. Это и отражается на результатах.

Средняя скорость передачи данных в режиме лёгкого использования (МБ/с)




Средняя задержка в режиме лёгкого использования (МБ/с)




Следующие тесты на среднюю скорость случайного чтения и среднюю скорость последовательной записи также запускались дважды: 1) на абсолютно пустом диске с операциями только в диапазоне первых 32 ГБ пространства; 2) при 80% заполнении без ограничения на операции. Разница между серым и чёрными столбцами отражает влияние кэширования SLC, контроллеров без буфера DRAM или с уменьшенным объёмом буфера.

Средняя скорость случайного чтения (МБ/с)




Средняя скорость последовательной записи (МБ/с)




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

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

Последовательное заполнение привода: средняя скорость (МБ/с)




Управление питанием SSD жизненно важно для любой системы на аккумуляторах. Система управления питания поддерживает несколько режимов, в том числе простой режим неактивности (SATA ALPM, NVMe APST и PCIe ASPM), который больше подходит для настольных компьютеров и в таблицах обозначен как 'Desktop Idle', и режим глубокого сна, в котором задействуются все энергосберегающие функции, включая DevSleep ('Laptop Idle').

Потребление энергии в неактивном режиме (милливатт)




Даже без активации этих функций накопители потребляют в неактивном режиме очень мало: от 194 до 1152 мВт.

Скорость пробуждения (микросекунд)




Заключение


Накопители SSD очень сильно продвинулись за последние 10 лет. В частности, у них кардинально снизилось энергопотребление. В режиме ожидания оно гораздо меньше 1 ватта, а судя по логам, SSD обычно проводит в режиме ожидания 99% времени.

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



На правах рекламы


Наши эпичные серверы используют only NVMe сетевое хранилище с тройной репликацией данных. Вы можете использовать сервер для любых задач разработки, размещения сайтов, использования под VPN и даже получить удалённую машину на Windows! Идей может быть много и любую из них поможем воплотить в реальность!

Подробнее..

Система автоматического сброса на промышленном программируемом реле

23.02.2021 16:14:33 | Автор: admin

Имеется транспортёр, на котором установлен датчик дефектов и исполнительное устройство - сбрасыватель. По транспортёру движутся объекты, задача - производить сброс в случае обнаружения дефекта. Длина объекта от 1,5 до 7 метров, во избежание различных интересных эффектов сброс необходимо производить в момент прохождения центра объекта мимо сбрасывателя. Пройденное объектом расстояние измеряется при помощи датчика перемещения (инкрементального энкодера), наличие объекта определяется датчиком наличия (фотодатчиками). Обработав данные с этих датчиков, можно измерить длину объекта и вычислить необходимое перемещение до точки сброса.

Это история об использовании простого программируемого реле в реальной задаче промышленной автоматизации. Но такое ли оно простое? Добро пожаловать в программирование без единой строчки кода!

Для решения этой задачи используем имеющееся в наличии программируемое реле Siemens LOGO 6 серии. Подобные реле есть у многих производителей, они как правило имеют небольшие размеры и размещаются на стандартной DIN-рейке. Я попытаюсь на примере LOGO рассказать, что они из себя представляют и чем отличаются от ПЛК.
Базовый модуль имеет несколько входов, выходов, разъём для программирования, дисплей и кнопки управления (есть более дешёвые модели без кнопок и дисплея). Более новые серии (начиная с 7) имеют слот для SD карты и Ethernet. Питание бывает как низковольтное, так и 230 Вольт. К базовому модулю могут подключаться модули расширения - входные, выходные, коммуникационные. Максимальная конфигурация - 24 входа и 16 выходов, программа может содержать до 200 элементов (до 400 начиная с 7 серии).
Отличие от ПЛК: входы и выходы подключаются на неразъёмный клеммник, нет индикации их состояния, программа не может меняться во время исполнения и перезаписывается только целиком. Для программирования могут использоваться только два языка из стандарта МЭК 61131-3: LAD (релейно-контактная логика) и FBD (функциональные блоки).

Это одна и та же программа, слева FBD, справа LADЭто одна и та же программа, слева FBD, справа LAD

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

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

Как оказалось, датчик дефектов - довольно сложное устройство и имеет свой ленточный транспортёр, в связи с этим разместить фотодатчики наличия объекта удалось только на расстоянии 3 метров от него. Как следствие - во время его срабатывания датчики наличия могут видеть совсем другой объект. Расстояние от датчиков наличия до сбрасывателя составило 9 метров, на таком расстоянии могут разместиться до 6 объектов одновременно - их все придётся отслеживать. Сбрасыватель тоже непрост, его исходное положение необходимо контролировать для подтверждения удачного сброса и чтобы исключить ситуацию когда он завис поперёк транспортёра. Сбрасыватель установлен на выходном транспортёре, который управляется из другого места - от нас нужен сигнал разрешения его работы. Инкрементальный энкодер также установлен на выходном транспортёре. Ну и для удобства отладки и диагностики я решил добавить возможность настройки расстояний через дисплей и индикацию типа нештатной ситуации с помощью количества миганий лампы "Помеха". Уже в процессе разработки пришла идея добавить на дисплей текущее значение скорости транспортера, измеренной длины объекта и счетчики нештатных ситуаций. Также добавил мигание лампы в момент прохождения точки сброса каждым объектом - это в дальнейшем сильно упростило отладку.

РекурсияРекурсия

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

Программный счётчик имеет функцию включения/выключения выходного сигнала при достижении заданных пороговПрограммный счётчик имеет функцию включения/выключения выходного сигнала при достижении заданных порогов

В качестве порогов могут выступать значения других счётчиков или результаты вычислений.

Математика простая - 4 действияМатематика простая - 4 действия

Алгоритм работы системы: при поступлении сигнала от датчика дефектов он проходит линию задержки на одном из счётчиков расстояний ДД и привязывается к имеющемуся объекту, при этом горит лампа "Обнаружен дефект". Затем начинается отслеживаемое одним из счётчиков сброса движение объекта к точке сброса, лампа при этом мигает. Измерение длины объекта производится счётчиком длины, измеренное значение фиксируется в блоке вычислений соответствующего канала сброса и используется для вычисления точки сброса. При её достижении транспортёры останавливаются и производится сброс объекта. После возврата сбрасывателя в исходное положение транспортёры запускаются. Входной транспортёр имеет задержку запуска 4 секунды для компенсации времени разгона остальных транспортёров, которые управляются частотными преобразователями. Возможные нештатные ситуации - срабатывание датчика без объекта, отсутствие исходного положения сбрасывателя, отсутствие реакции сбрасывателя на сигал сброса, превышение габаритов объекта (датчик на входе), превышение длины объекта в результате нахлёста или неисправности датчика наличия. Также контролируется готовность датчика дефектов и частотных преобразователей привода движения.

Больше всего при разработке программы напрягали логические элементы без возможности расширения количества входов, прямо как старые добрые ЛА3. В старших контроллерах входы элемента можно наращивать по мере необходимости. Ещё если к выходу элемента подключен десяток входов и вдруг понадобилось добавить в разрыв ещё элемент - перерисовывать придётся все 10 линий. Особенно это доставляет, когда они идут на другие страницы - не помешало бы сделать повторители. Все выходы элементов нужно куда-то подключать, даже если они не нужны - придётся использовать открытый коннектор, без этого можно запустить симуляцию, но нельзя загрузить программу в контроллер. Этих коннекторов ограниченное количество, если не хватает - нужны логические элементы для объединения бесполезных сигналов. Ну и пользовательские функции для повторяющихся блоков - у меня их не было, но даже если бы я взял более новую модель LOGO - это бы не помогло, не влез в ограничения. Ну ладно, я знал на что иду - это же просто программируемое реле, и подобное его использование скорее исключение.

Программа в графическом виде разместилась на 8 листах А4, тут я привожу её в виде двух картинок (осторожно, они большие).

Картинка 1
Картинка 2

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

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru