СЕ генераторы последние данные
Генераторы
Наши стартеры и генераторы оригинального качества очень компактные и мощные.
И это правильный выбор.
Введите название продукта, который вы ищете, и мы предоставим необходимую информацию.
Генераторы
В чем отличие DENSO
Наши стартеры и генераторы оригинального качества очень компактные и мощные.
Особенности и преимущества
- Высочайший уровень качества: продукция производится в точном соответствии со спецификацией автопроизводителей
- Не используются восстановленные детали
- Передовые технологии: использование самых современных технологий в соответствии с требованиями, предъявляемыми к оригинальным автокомпонентам
- Постоянное расширение программы
- Уникальные применения: большое количество применений для Toyota и многих европейских марок, включая Ford, Opel, BMW, Fiat, Land Rover
- Эффективность: высокая производительность, несмотря на небольшой размер и вес детали
- Контроль на всех стадиях производства и жесткие испытания продукции обеспечивают соответствие самым высоким стандартам эффективности
- Оптимальный выбор для клиентов: ремонт без проблем
- Оптимизированные размеры статора и ротора улучшают магнитную цепь и увеличивают мощность
- Ролик маленького диаметра увеличивает скорость ротора
- Две лопасти, встроенные в ротор, уменьшают шум, размер и вес
Генератор с внутренним вентилятором
- Оптимизация размеров статора и ротора улучшает параметры магнитной цепи и повышает производительность
- Меньший диаметр шкива способствует увеличению скорости вращения ротора
- Две лопасти вентилятора, объединенные с ротором, позволяют уменьшить шум вентилятора, его размер и вес
Генератор с сегментным проводником
- Первый в мире проводник с прямоугольным сечением в обмотке статора позволяет увеличить плотность намотки, уменьшить вес генератора и повысить его производительность
- Регулятор на одной интегральной микросхеме
СЕ генераторы последние данные
Аварийный или резервный?
При выборе дизель-генератора следует определить, для каких целей он будет использоваться. Автономные источники энергии бывают резервными и аварийными. Аварийный генератор используется эпизодически, непродолжительное время и рассчитан на малое количество моточасов. Идеально подходит для людей, которые даже на время редких отключений не хотят отказаться от благ цивилизации. Если же от генератора требуется обеспечивать электроэнергией продолжительное время – выбор за резервным генератором, имеющим соответствующий «запас» моточасов. Может показаться, что лучше выбрать резервную установку, поскольку она рассчитана на большую продолжительность работы. Однако, к примеру, стоимость резервного дизель-генератора 15 кВт будет существенно выше цены аварийного агрегата такой же мощности. Так зачем платить больше?
Бензиновый или дизельный?
Помимо дизельных источников электричества существуют ещё бензиновые генераторы. Бензогенераторы обычно выбирают владельцы частных домов или дач в качестве аварийного источника питания небольшой мощности, поскольку они дешевле и легче запускаются в мороз. Больший расход топлива у бензогенератора негативно сказывается только при длительной работе, что для аварийного источника неактуально. В остальном стоит ориентироваться на паспортные данные без оглядки на вид топлива.
Однофазный или трёхфазный?
В большинстве случаев лучше купить однофазный агрегат. Он будет надёжнее и проще в быту, поскольку не потребуется следить за равномерной загрузкой фаз. Но если мы хотим подключать трёхфазное оборудование, например дачный насос на 380 В, то и генераторная установка потребуется трёхфазная. От трёхфазного генератора всегда можно получить однофазное напряжение, а вот от однофазного генератора получить три фазы невозможно.
При подключении трёхфазного генератора нагрузка должна быть равномерно распределена на все три фазы. Иными словами, дизель-генератор 15 кВт – это три раза по 5 кВт. Подключить от него однофазную нагрузку 6 кВт уже не получится. Для этого потребуется трёхфазный генератор с мощностью минимум 18 кВт (18/3 = 6 на каждую фазу) или однофазный генератор мощностью не меньше 6 кВт.
Правильный выбор мощности
Выбрать правильную мощность непросто. Для этого нужно обладать хотя бы базовыми познаниями в электротехнике. В противном случае лучше обратиться к специалистам, иначе можно запутаться в терминах и цифрах.
Если таковые познания у вас имеются, тогда смело приступаем! Мощность электрогенераторной установки бывает двух видов:
- номинальная мощность (Prime Power), т.е. мощность, вырабатываемая установкой длительно;
- максимальная мощность (Standby Power) – предельная мощность, которую можно получить в короткий промежуток времени, обычно больше номинальной мощности на 10%. Превышать её категорически нельзя – либо сработает защита и остановит работу установки, либо произойдёт авария.
Как максимальная, так и номинальная мощность может быть выражена в кВт или кВА. При выборе генератора для дома смотрим на мощность в кВт. Если мощность указана только в кВА, преобразуем её в кВт самостоятельно: умножим кВА на коэффициент реактивной мощности cos φ (косинус фи). Этот коэффициент указан в паспорте заводом-изготовителем. Для трёхфазных генераторов он обычно составляет 0,8, а для однофазных – 1.
Поскольку для стабильной и долговременной работы необходимо, чтобы генератор был загружен приблизительно на 75%, берём его номинальную паспортную мощность в кВт и умножаем на коэффициент загрузки 0,75. Суммарная расчётная мощность всех электроприборов не должна превышать 75% от номинальной мощности генератора (Prime Power).
Расчётная мощность всех электроприборов равна сумме номинальных мощностей каждого прибора, умноженной на коэффициент нагрузки 0,8. Номинальную мощность приборов можно узнать по надписям на корпусах или по паспортным данным. Поскольку мы не собираемся включать все приборы одновременно, для расчёта принимается коэффициент нагрузки 0,8.
Если к электрогенератору подсоединяются приборы с двигателями, важно проверить генератор на перегрузку. Поскольку при пуске двигатели потребляют гораздо больше электроэнергии, нужно это учесть. Иначе при попытке включить насос, отключится генератор.
Бытовым двигателям обычно требуется в 4 раза больше мощности при пуске (в отдельных случаях может быть больше, следует сверяться с паспортными данными). Потому мы отдельно складываем все номинальные (указанные в паспорте или на корпусе) мощности приборов без двигателей. Мощности приборов с двигателями также нужно учесть и прибавить к общей сумме, но каждую из них мы сначала умножаем на 4, а затем прибавляем к общей сумме.
Сумма мощностей всех приборов, с учётом пусковых мощностей двигателей, не должна превышать максимальную мощность (Standby Power) генератора. Если она превышает, выбираем ближайшую более мощную генераторную установку, соответствующую данному требованию.
Пример
Есть загородная дача. Требуется обеспечить резервное электроснабжение круглый год. Рассчитаем количество необходимых дизель-генератору кВт.
Подключаемые нагрузки:
- освещение (сумма мощностей всех лампочек) – 1 кВт;
- чайник – 2 кВт;
- электроотопление – 4 кВт;
- водонагреватель – 1,5 кВт;
- холодильник – 0,25 кВт;
- водяной насос – 1,1 кВт;
- телевизор, компьютер, радио и прочая бытовая техника – в сумме 1 кВт.
В итоге получаем 10,85 кВт. С учётом коэффициента нагрузки 0,8 расчётная мощность: 10,85 х 0,8 = 8,68 кВт. Значит, с учётом загрузки 75% нам предварительно подойдёт генератор номинальной мощностью примерно 11,56 кВт (11,56 кВт х 0,75 = 8,68 кВт) или ближайший больший, имеющийся в продаже. Например, дизель-генератор 12 кВт (Prime Power).
Проведём проверку на перегрузку. Двигатели есть у насоса и холодильника. Следовательно, с учётом пусковых скачков нагрузка будет выглядеть:
- освещение, нет скачков – 1 кВт;
- чайник, нет скачков – 2 кВт;
- электроотопление, нет скачков – 4 кВт;
- водонагреватель, нет скачков – 1,5 кВт;
- холодильник, есть скачок – 0,25 х 4 = 1 кВт;
- водяной насос, есть скачок – 1,1 кВт х 4 = 4,4 кВт;
- бытовая техника, нет скачков – 1 кВт.
С учётом пусков 14,9 кВт. Максимальная мощность (Standby Power) генератора должна быть не меньше 14,9 кВт. В нашем примере окончательно выбираем стандартный трёхфазный резервный дизель-генератор 15 кВт (Standby Power) с номинальной мощностью (Prime Power) 13,5 кВт.
Генераторы
оем номер 5101.3701-01 5101.3701000-01
Код STARTVOLT LG 03039
применяемость для а/м
GAZ 3308 4301 33097 4501
оем номер Г273Г1 Г273Г1-03 Г273Г1-3701000-03 Г273Г1-3701-03
Код STARTVOLT LG 0740
применяемость для а/м
KAMAZ 5320 5460 6520 4311 4325 4355 4410 5321 5360 5410 5511 6511 6522 6540
MAZ 6422 5335 5432 5516
оем номер Г273В1-3701000-03М Г273В1-3701-03М
Код STARTVOLT LG 1236
применяемость для а/м
KAMAZ 5320 5460 6520 4311 4325 4355 4410 5321 5360 5410 5511 6511 6522 6540
MAZ 6422 5335 5432 5516
оем номер 11.204.260 5340.3701010 AAN 8172 4512.3771-01 4512.3771010-01
Код STARTVOLT LG 0334
применяемость для а/м
GAZ GAZon-Next (14-)
PAZ 320405 «Вектор Next»
оем номер 4502.3771 4502.3771010 7762.3701000-02 7762.3701000-12 4502.3771 Р 7762.3701-02 7762.3701-12
Код STARTVOLT LG 0705
применяемость для а/м
оем номер AAN 8173 11.204.261 3062.3771 5343-0-3701010 5343.3701010 5343.3701010-02 3062.3771 010 MG 54
Код STARTVOLT LG 03534
применяемость для а/м
Автомобильные генераторы СтартВОЛЬТ
Генератор автомобиля — это устройство переменного тока, который преобразовывает механическую энергию вращения коленвала в электроэнергию, обеспечивая таким образом зарядку и питание батареи аккумулятора автомобиля. Автомобильные генераторы СтартВОЛЬТ подходят для автомобилей отечественного производства (VAZ, UAZ, ZAZ, PAZ, KAMAZ, URAL и т.д.), для популярных иномарок, а также для коммерческого транспорта.
На что обращать внимание при выборе
Для отечественных легковых авто представлено 2 вида генераторов: с внешней и с внутренней вентиляцией. Каждая модель по мощности выходного тока превосходит штатный генератор автомобиля и позволяет подключать дополнительные опции. Частью конструкции многих моделей служит регулятор напряжения на основе современной чиповой технологии. Генераторы для коммерческого транспорта меньше аналоговых по габаритам, отличаются простотой установки и более высоким уровнем мощности. В каталоге указана расширенная идентификация моделей: для удобства приводятся не только ОЕМ-номера, но и cross-reference. В комплект каждого генератора входит технический паспорт.
Преимущества генераторов в автомобиль
Гарантия на все автомобильные генераторы СтартВОЛЬТ 2 года. Генераторы в авто полностью соответствуют штатным изделиям по габаритным размерам и выходным характеристикам, все ключевые узлы взаимозаменяются с оригиналом. Мы гарантируем 100%-ный пооперационный контроль качества и выходную проверку всех производимых генераторов на специализированном профессиональном оборудовании D&V.
Добро пожаловать в мир надежности и европейского качества!
Добро пожаловать в мир надежности и европейского качества!
Уже более 15 лет мы являемся официальными дистрибьюторами крупнейших производителей генераторов в Европе — Himoinsa (Испания), Fogo (Польша) и Teskan (Турция). Все комплектующие представлены только ведущими мировыми брендами: Scania (Швеция), Yanmar (Япония), Volvo (Швеция), Iveco (Италия), Scania (Швеция).
Мы являемся производителем. Команда конструкторов, опираясь на сотни новых исследований, ежедневно разрабатывает уникальные мобильные здания, блок-контейнеры типа «Север» и «Арктика», а также блок-контейнеры для размещения оборудований связи.
Пожалуй, именно мы предлагаем самый большой ассортимент генераторных установок.
Миссия компании «Энергопром»
Мы созданы быть «надежным тылом» для наших Клиентов, обеспечивая их мощными, экономичными и бесперебойными альтернативными источниками электроэнергии. Мы способны обеспечить электроэнергией любой объект — от небольшой дачи до промышленного предприятия и сделаем это превосходно.
Ценности.
Доброжелательность и ответственность.
Именно доброжелательность создает атмосферу, располагающую к новым идеям, и облегчает работу с партнерами и коллегами. А ответственность — это необходимое условие доверия. Мы своевременно выполняем взятые на себя обязательства и заранее принимаем меры к уменьшению последствий.
Инновации и обучение.
Мы фанаты технологий, ведь именно они позволяют компаниям оставить свой след в истории, сделать что-то по-настоящему стоящее. У нас работает команда конструкторов, занимающихся разработкой новых модификаций контейнеров и работой над модернизацией существующей линейки. Вложения в исследования позволяют постоянно производить новые продукты, соответствующие требованиям функциональности, качеству, надежности и безопасности. Для нас это безусловная ценность и условие для того, чтобы быть на 5 шагов впереди.
Качество и надежность.
Мы обеспечиваем Клиентов продукцией самого высокого качества с предоставлением максимально высокого уровня сервиса.
Клиентоориентированность.
Мы максимально оправдываем ожидания клиентов за счет разработки, поставки, технического обслуживания и поддержки энергетических установок клиентов, а также оперативного реагирования на любые вопросы
Отключение электроэнергии даже на несколько минут может привести к существенным финансовым потерям для банка или иметь серьезные последствия для безопасности пациентов в больнице. Поэтому нашими приоритетами, помимо огромного ассортимента в наличии на складе, стали надежность, европейское качество и сервис 24/7. ⠀
Наши генераторы уже зарекомендовали себя в энергоснабжении газопровода Турецкий поток, Чемпионата мира по футболу 2018, выставки Иннопром 2018 и других стратегически важных для нашей страны объектах.
ПОЧЕМУ НАМ ДОВЕРЯЮТ БОЛЕЕ 1 000 КОМПАНИЙ В РОССИИ?
крупнейшие государственные и частные компании в сфере добычи и транспортировки нефти и газа, промышленные и аграрные предприятия, геологоразведки, добычи золота и других полезных ископаемых, в сфере строительства, предприятия энергетического комплекса, коммунальные и дорожные службы, военные, медицинские учреждения, телекоммуникационные компании, авиация, объекты водного и железнодорожного транспорта, организаторы крупнейших спортивных мероприятий и концертов.
- Два бренда европейских генераторов Himoinsa, Fogo и турецкий Teskan – мировые бренды, надежность, качество.
- Команда конструкторов и постоянные исследования.
- Около 150 моделей генераторов на складе ежедневно
- Гарантия на продукцию до 24 месяцев!
- Оперативная Доставка ДГУ заказчику, за счет наличия своего парка манипуляторов.
- Быстрая отгрузка – до 3х рабочих дней*
- Производство блок-контейнеров занимает всего 3-4 недели! *-в зависимости от технического задания*
- Полная сервисная поддержка — строительно-монтажные работы, пуско-наладка, гарантийное и пост гарантийное сервисное обслуживание. Инструктаж по эксплуатации.
- Низкий уровень шума от работающих ДГУ, за счет шумозащитного кожуха SUPERSILENT.
- Низкий расход топлива, за счет экономичных дизельных двигателей VOLVO, SCANNIA и YANMAR.
- Комфортные условия для дилеров.
- Доступная цена за высокое качество за счет ПРЯМОЙ работы с официальным производителем
Энергия навсегда.
Генераторы с характером.
Генераторы сигналов
Генераторы модулирующих, ВЧ- и СВЧ-сигналов от Rohde & Schwarz отличаются качеством сигнала, универсальностью и удобством эксплуатации. Генераторы сигналов Rohde & Schwarz обеспечивают работу в широких диапазонах частот до 67 ГГц (до 170 ГГц с умножителями частоты), обладают шириной полосы модуляции до 2 ГГц и поддерживают все основные стандарты мобильной связи и беспроводной цифровой передачи данных.
Обширный ассортимент включает в себя разнообразные устройства: от сверхкомпактных непревзойденно быстрых аналоговых и цифровых источников сигналов, оптимизированных для производства и автоматизации, до многоканальных векторных генераторов сигналов высшего класса с имитацией замираний для самых требовательных задач.
- Развернуть все
- Свернуть все
Искусство генерации сигналов
- Полоса внутренней модуляции до 2 ГГц вплоть до частоты 44 ГГц с выдающимися характеристиками
Превосходное сочетание производительности и удобства использования
- Диапазон частот: от 8 кГц до 3 ГГц или 6 ГГц
- Сверхвысокая выходная мощность до +34 дБмВт
- Полоса модуляции 500 МГц с превосходной точностью
Бескомпромиссное лидерство по характеристикам
- Безупречные сигналы частотой до 67 ГГц с очень высокой выходной мощностью
Искусство генерации сигналов
- Диапазон частот от 100 кГц до 3 ГГц , 6 ГГц , 7,5 ГГц, 12,75 ГГц , 20 ГГц , 31,8 ГГц , 40 ГГц или 44 ГГц
- Дополнительный второй ВЧ-тракт с диапазоном от 100 кГц до 3 ГГц , 6 ГГц , 7,5 ГГц или 20 ГГц
- Внутренняя ширина полосы I/Q-модуляции до 2 ГГц (ВЧ)
- Дополнительный встроенный имитатор замираний с шириной полосы до 160 МГц
- Поддержка всех основных режимов MIMO, включая 3×3 , 4×4 , 8×4, 4×8 и 4x2x2
Векторный генератор сигналов; поставляется с генератором модулирующих сигналов произвольной формы (ARB) (с памятью на 64 млн отсчетов и полосой ВЧ-сигнала 120 МГц )
- Диапазон частот: от 8 кГц до 3 ГГц или 6 ГГц
- Сверхвысокая выходная мощность до +34 дБмВт
- Полоса модуляции 500 МГц с превосходной точностью
Быстрое и компактное решение, оптимизированное для автоматизированных испытательных сред
- От 1 МГц до 3 ГГц или 6 ГГц
- Самый быстрый и компактный векторный ВЧ-источник
- Встроенный широкополосный генератор модулирующих сигналов с полосой I/Q-модуляции до 240 МГц (ВЧ)
Maximum flexibility in applications and in production
- Frequency range from 4 kHz up to 7.125 GHz
- Direct RF upconversion up to 2.5 GHz
- Modulation bandwidth up to 240 MHz
Компактный — быстрый — надежный
- От 1 МГц до 6 ГГц или 12,75 ГГц для немодулированных сигналов
- От 80 МГц до 6 ГГц или 12,75 ГГц для векторного режима
- Специализированный источник сигналов ATE
Компактный — быстрый — надежный
- От 12 ГГц до 40 ГГц для немодулированных сигналов
- От 12 ГГц до 40 ГГц для векторного режима
- Специализированный источник сигналов ATE
Vector signal generation for component and satellite payload testing
- 36 GHz to 56 GHz for CW and modulated signals
- Instantaneous modulation bandwidth up to 2 GHz
- High output power up to +16 dBm
Формирование широкополосных векторных сигналов в миллиметровом диапазоне
- Центральная частота от 58,32 ГГц до 64,80 ГГц
Бескомпромиссное лидерство по характеристикам
- От 8 кГц до 3 ГГц , 6 ГГц , 12,75 ГГц , 20 ГГц , 31,8 ГГц , 40 ГГц , 50 ГГц или 67 ГГц
Универсальный и компактный, до 40 ГГц; 170 ГГц с повышающим преобразователем
- От 100 кГц до 12,75/20/31,8/40 ГГц
Превосходное сочетание характеристик и удобства использования
- От 8 кГц до 1/3/6 ГГц
Самый компактный с наилучшим соотношением цена/характеристики в своем классе
- От 9 кГц до 1,1 ГГц или 3,2 ГГц
Компактный — быстрый — надежный
- От 1 МГц до 6 ГГц или 12,75 ГГц для немодулированных сигналов
- Специализированный источник сигналов ATE
Компактный — быстрый — надежный
- От 12 ГГц до 20 ГГц для немодулированных сигналов
- От 12 ГГц до 20 ГГц для векторного режима
- Специализированный источник сигналов ATE
Высокоточные и регулируемые выходные уровни
- От 50 ГГц до 75 ГГц, от 60 ГГц до 90 ГГц, от 75 ГГц до 110 ГГц, от 110 ГГц до 170 ГГц
Модулирующие сигналы высокого качества
- Ширина полосы I/Q-модуляции: 264 МГц
- Широкополосные I/Q-сигналы (полоса ВЧ-сигнала 528 МГц) и память до 1 млрд отсчетов для широкополосных, аэрокосмических и оборонных систем.
Решайте новые задачи в области генерирования широкополосных сигналов
- Ширина полосы I/Q-модуляции: 100 МГц
- Превосходное качество сигнала
Точный, универсальный и экономически выгодный
- От 10 мкГц до 25 МГц или 50 МГц
- Генератор сигналов произвольной формы: 250 млн отсчетов/с, 14 бит, 256 тыс. точек
Удобство в использовании, многофункциональность, отличная цена
- Диапазон частот: от 10 мГц до 12,5 МГц
- Генератор сигналов произвольной формы: 40 млн отсчетов/с
Мощное ПО для имитации радиолокационных сигналов
- Поддерживаемые приборы:
R&S ® SMW200A,
R&S ® SMBV100A,
R&S ® SMBV100B,
R&S ® SGT100A,
Формирование цифровых I/Q-сигналов в соответствии с различными радиостандартами
Генераторы
Обычные функции возвращают только одно-единственное значение (или ничего).
Генераторы могут порождать (yield) множество значений одно за другим, по мере необходимости. Генераторы отлично работают с перебираемыми объектами и позволяют легко создавать потоки данных.
Функция-генератор
Для объявления генератора используется специальная синтаксическая конструкция: function* , которая называется «функция-генератор».
Выглядит она так:
Функции-генераторы ведут себя не так, как обычные. Когда такая функция вызвана, она не выполняет свой код. Вместо этого она возвращает специальный объект, так называемый «генератор», для управления её выполнением.
Выполнение кода функции ещё не началось:
Основным методом генератора является next() . При вызове он запускает выполнение кода до ближайшей инструкции yield (значение может отсутствовать, в этом случае оно предполагается равным undefined ). По достижении yield выполнение функции приостанавливается, а соответствующее значение – возвращается во внешний код:
Результатом метода next() всегда является объект с двумя свойствами:
- value : значение из yield .
- done : true , если выполнение функции завершено, иначе false .
Например, здесь мы создаём генератор и получаем первое из возвращаемых им значений:
На данный момент мы получили только первое значение, выполнение функции остановлено на второй строке:
Повторный вызов generator.next() возобновит выполнение кода и вернёт результат следующего yield :
И, наконец, последний вызов завершит выполнение функции и вернёт результат return :
Сейчас генератор полностью выполнен. Мы можем увидеть это по свойству done:true и обработать value:3 как окончательный результат.
Новые вызовы generator.next() больше не имеют смысла. Впрочем, если они и будут, то не вызовут ошибки, но будут возвращать один и тот же объект:
Нет разницы, оба синтаксиса корректны.
Но обычно предпочтителен первый вариант, так как звёздочка относится к типу объявляемой сущности ( function* – «функция-генератор»), а не к её названию, так что резонно расположить её у слова function .
Перебор генераторов
Как вы, наверное, уже догадались по наличию метода next() , генераторы являются перебираемыми объектами.
Возвращаемые ими значения можно перебирать через for..of :
Выглядит гораздо красивее, чем использование .next().value , верно?
…Но обратите внимание: пример выше выводит значение 1 , затем 2 . Значение 3 выведено не будет!
Это из-за того, что перебор через for..of игнорирует последнее значение, при котором done: true . Поэтому, если мы хотим, чтобы были все значения при переборе через for..of , то надо возвращать их через yield :
Так как генераторы являются перебираемыми объектами, мы можем использовать всю связанную с ними функциональность, например оператор расширения . :
В коде выше . generateSequence() превращает перебираемый объект-генератор в массив элементов (подробнее ознакомиться с оператором расширения можно в главе Остаточные параметры и оператор расширения)
Использование генераторов для перебираемых объектов
Некоторое время назад, в главе Перебираемые объекты, мы создали перебираемый объект range , который возвращает значения from..to .
Давайте вспомним код:
Мы можем использовать функцию-генератор для итерации, указав её в Symbol.iterator .
Вот тот же range , но с гораздо более компактным итератором:
Это работает, потому что range[Symbol.iterator]() теперь возвращает генератор, и его методы – в точности то, что ожидает for..of :
- у него есть метод .next()
- который возвращает значения в виде
Это не совпадение, конечно. Генераторы были добавлены в язык JavaScript, в частности, с целью упростить создание перебираемых объектов.
Вариант с генератором намного короче, чем исходный вариант перебираемого range , и сохраняет те же функциональные возможности.
В примерах выше мы генерировали конечные последовательности, но мы также можем сделать генератор, который будет возвращать значения бесконечно. Например, бесконечная последовательность псевдослучайных чисел.
Конечно, нам потребуется break (или return ) в цикле for..of по такому генератору, иначе цикл будет продолжаться бесконечно, и скрипт «зависнет».
Композиция генераторов
Композиция генераторов – это особенная возможность генераторов, которая позволяет прозрачно «встраивать» генераторы друг в друга.
Например, у нас есть функция для генерации последовательности чисел:
Мы хотели бы использовать её при генерации более сложной последовательности:
- сначала цифры 0..9 (с кодами символов 48…57)
- за которыми следуют буквы в верхнем регистре A..Z (коды символов 65…90)
- за которыми следуют буквы алфавита a..z (коды символов 97…122)
Мы можем использовать такую последовательность для генерации паролей, выбирать символы из неё (может быть, ещё добавить символы пунктуации), но сначала её нужно сгенерировать.
В обычной функции, чтобы объединить результаты из нескольких других функций, мы вызываем их, сохраняем промежуточные результаты, а затем в конце их объединяем.
Для генераторов есть особый синтаксис yield* , который позволяет «вкладывать» генераторы один в другой (осуществлять их композицию).
Вот генератор с композицией:
Директива yield* делегирует выполнение другому генератору. Этот термин означает, что yield* gen перебирает генератор gen и прозрачно направляет его вывод наружу. Как если бы значения были сгенерированы внешним генератором.
Результат – такой же, как если бы мы встроили код из вложенных генераторов:
Композиция генераторов – естественный способ вставлять вывод одного генератора в поток другого. Она не использует дополнительную память для хранения промежуточных результатов.
yield – дорога в обе стороны
До этого момента генераторы сильно напоминали перебираемые объекты, со специальным синтаксисом для генерации значений. Но на самом деле они намного мощнее и гибче.
Всё дело в том, что yield – дорога в обе стороны: он не только возвращает результат наружу, но и может передавать значение извне в генератор.
Чтобы это сделать, нам нужно вызвать generator.next(arg) с аргументом. Этот аргумент становится результатом yield .
Продемонстрируем это на примере:
- Первый вызов generator.next() – всегда без аргумента, он начинает выполнение и возвращает результат первого yield «2+2=?» . На этой точке генератор приостанавливает выполнение.
- Затем, как показано на картинке выше, результат yield переходит во внешний код в переменную question .
- При generator.next(4) выполнение генератора возобновляется, а 4 выходит из присваивания как результат: let result = 4 .
Обратите внимание, что внешний код не обязан немедленно вызывать next(4) . Ему может потребоваться время. Это не проблема, генератор подождёт.
Как видно, в отличие от обычных функций, генератор может обмениваться результатами с вызывающим кодом, передавая значения в next/yield .
Чтобы сделать происходящее более очевидным, вот ещё один пример с большим количеством вызовов:
- Первый .next() начинает выполнение… Оно доходит до первого yield .
- Результат возвращается во внешний код.
- Второй .next(4) передаёт 4 обратно в генератор как результат первого yield и возобновляет выполнение.
- …Оно доходит до второго yield , который станет результатом .next(4) .
- Третий next(9) передаёт 9 в генератор как результат второго yield и возобновляет выполнение, которое завершается окончанием функции, так что done: true .
Получается такой «пинг-понг»: каждый next(value) передаёт в генератор значение, которое становится результатом текущего yield , возобновляет выполнение и получает выражение из следующего yield .
generator.throw
Как мы видели в примерах выше, внешний код может передавать значение в генератор как результат yield .
…Но можно передать не только результат, но и инициировать ошибку. Это естественно, так как ошибка является своего рода результатом.
Для того, чтобы передать ошибку в yield , нам нужно вызвать generator.throw(err) . В таком случае исключение err возникнет на строке с yield .
Например, здесь yield «2 + 2 = ?» приведёт к ошибке:
Ошибка, которая проброшена в генератор на строке (2) , приводит к исключению на строке (1) с yield . В примере выше try..catch перехватывает её и отображает.
Если мы не хотим перехватывать её, то она, как и любое обычное исключение, «вывалится» из генератора во внешний код.
Текущая строка вызывающего кода – это строка с generator.throw , отмечена (2) . Таким образом, мы можем отловить её во внешнем коде, как здесь:
Если же ошибка и там не перехвачена, то дальше – как обычно, она выпадает наружу и, если не перехвачена, «повалит» скрипт.
Итого
- Генераторы создаются при помощи функций-генераторов function* f(…) <…>.
- Внутри генераторов и только внутри них существует оператор yield .
- Внешний код и генератор обмениваются промежуточными результатами посредством вызовов next/yield .
В современном JavaScript генераторы используются редко. Но иногда они оказываются полезными, потому что способность функции обмениваться данными с вызывающим кодом во время выполнения совершенно уникальна. И, конечно, для создания перебираемых объектов.
Также, в следующей главе мы будем изучать асинхронные генераторы, которые используются, чтобы читать потоки асинхронно сгенерированных данных (например, постранично загружаемые из сети) в цикле for await . of .
В веб-программировании мы часто работаем с потоками данных, так что это ещё один важный случай использования.
Задачи
Псевдослучайный генератор
Есть много областей, где нам нужны случайные данные.
Одной из них является тестирование. Нам могут понадобиться случайные данные: текст, числа и т.д., чтобы хорошо всё проверить.
В JavaScript мы можем использовать Math.random() . Но если что-то пойдёт не так, то нам нужно будет перезапустить тест, используя те же самые данные.
Для этого используются так называемые «сеяные псевдослучайные генераторы». Они получают «зерно», как первое значение, и затем генерируют следующее, используя формулу. Так что одно и то же зерно даёт одинаковую последовательность, и, следовательно, весь поток легко воспроизводим. Нам нужно только запомнить зерно, чтобы воспроизвести последовательность.
Пример такой формулы, которая генерирует более-менее равномерно распределённые значения:
Если мы используем 1 как зерно, то значения будут:
- 16807
- 282475249
- 1622650073
- …и так далее…
Задачей является создать функцию-генератор pseudoRandom(seed) , которая получает seed и создаёт генератор с указанной формулой.
Генератор особого режима: создана батарейка для экстремальных ситуаций
В России создали новый автономный термоэлектрический генератор (ТЭГ), который не требует техобслуживания и способен провести в режиме ожидания более 10 лет. В будущем такой ТЭГ может быть использован в устройствах для подачи сигналов бедствия с точными координатами места происшествия — например, в датчиках предупреждения лесных пожаров.
Холодно-горячо
Новый генератор относится к типу термоэлектрических устройств, которые для выработки электричества используют разницу температур двух пластин полупроводникового модуля (эффект Зеебека). При этом главное инженерное нововведение состоит в том, что для разогрева «горячей» пластины решили использовать термитный наноматериал на основе алюминия и никеля.
— Термитные материалы известны уже более века, в настоящее время их используют при сварке металлических изделий. Для нашей разработки мы применили их особую разновидность — наноразмерные порошки, способные выделять большее количество тепла за счет более высокой скорости прохождения реакции, — рассказал ассистент Института перспективных материалов и технологий НИУ «Московский институт электронной техники» Егор Лебедев. — Кроме того, разработанный состав термитного материала не требует атмосферного кислорода, вместо него используется специальный окислитель в составе порошка, что позволяет ему работать в любых условиях окружающей среды.
Инженеры создали работающий прототип, который при малом размере (два коробка спичек) способен вырабатывать электроток силой в 100 миллиампер при напряжении в 3,5 вольта в течение двух минут. Этого достаточно, например, для работы современного смартфона в режиме разговора, если аккумулятор полностью разряжен или испорчен.
По словам специалистов, заявленные показатели могут обеспечить быстрый доступ к электроэнергии в экстремальной ситуации — в частности, для подачи сигналов бедствия с указанием точных географических координат.
Перспективность устройства подтвердили и в Физико-техническом институте (ФТИ) им. А.Ф. Иоффе.
— Термитный материал действительно может послужить хорошим источником тепла для генераторов, особенно в условиях отсутствия доступа к другим видам энергии, — отметил заведующий лабораторией физики термоэлементов ФТИ Александр Бурков. — Но при этом следует учитывать, что высокая температура его горения может повлечь за собой риски возникновения пожара при работе устройства. Впрочем, в современной технике они минимизированы.
В ожидании пожара
Еще один плюс нового источника питания в том, что он не требует обслуживания.
— Устройство может находиться в «спящем» режиме более 10 лет — до тех пор, пока не потребуется его запуск для генерации электричества, — пояснил старший научный сотрудник Института перспективных материалов и технологий НИУ «Московский институт электронной техники» Сергей Дубков. — Характеристики генератора с годами не ухудшаются, как в случае с электрическими аккумуляторами, у которых со временем происходит саморазряд и деградация емкостных характеристик.
Кроме того, разработчики заявляют, что прибор надежно защищен от посторонних воздействий за счет герметичного корпуса.
По мнению ученых, данные свойства позволят использовать устройство в качестве питающего элемента для автономных датчиков пожарных сигнализаций, которые самоактивируются при повышении температуры выше критической. В настоящее время в них применяют литий-ионные или щелочные аккумуляторы, которые требуют замены каждые 2–3 года.
Также генераторы можно будет использовать для питания научных приборов в дальних экспедициях и в качестве источников энергии в необслуживаемых датчиках, которые будут предупреждать о критических повреждениях особо важных строительных конструкций, например мостов. По словам ученых, возможно применение разработки и в космосе — в качестве резервного источника питания для спутников, который запускается при возникновении технических проблем. Например, если у аппарата не раскрылись солнечные батареи.
Однако некоторые эксперты оценивают возможности такого ТЭГа осторожно.
— Электрическая емкость стандартных щелочных батареек сопоставимого размера в тысячи раз превосходит аналогичную характеристику нового устройства, что существенно ограничивает его применяемость, — считает эксперт по автономным термоэлектрическим генераторам Петр Шостаковский. — Впрочем, это не значит, что подобные генераторы не нужны. За счет высокой надежности, автономности и длительного срока хранения их действительно было бы полезно применять в качестве источников питания для самоактивирующихся аварийных датчиков систем безопасности.
При получении необходимого финансирования производство нового генератора может начаться уже через 2–3 года.