Viper design software

Viper design software

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

рис.1
Рабочее окно программы
VIPer swith mode power supply

Примером такой программы служит VIPer swith mode power supply (версия 2.22, 2003 год) от STmicroelectronics. Она посвящена расчету фли-бак конверторов на основе микросхем серии VIPer производства той же фирмы. Микросхемы содержат встроенную схему управления и силовой MOSFET транзистор. А файл этой программы vipersoft.exe можно найти в разделе сайта «Полезные программы» или «скачать» с сайта производителя в вариантах Complete Version (4MB) или Light Version (2,6MB). Вопросы производителю можно задать по адресу viper.support@st.com, но едва ли производитель будет на них отвечать. При распаковке программа сама устанавливается и «прописывает» себя в главном меню. Кроме того, в папке на диске после установки появляется документация на упомянутую микросхему в формате PDF.

рис.2
Окно, появляющееся при нажатии кнопки Add input

После запуска появляется основное окно программы (рис.1), с которым, собственно, и проводятся все манипуляции. Сверху располагаются кнопки (меню) управления, под ними в желтом прямоугольнике приводятся результаты расчета основных параметров источника питания: выходная мощность, ток первичной обмотки накопительного трансформатора, КПД преобразователя. Под желтым прямоугольником — схема источника питания. Все ее элементы имеют информацию о типе, номинале. Кнопки «Input», «Transformer», «VIPer», «Out» задают соответственно входные параметры, параметры трансформатора, микросхемы управления, выходные параметры. Если в процессе работы будет неправильно выбран какой-либо параметр (например, габаритная мощность магнитопровода трансформатора окажется меньше), программа сообщит об этом — выведет надпись на красном фоне.

рис.3
Вариант набора выходной цепи преобразователя

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

рис.4
Варианты снаббера

Кнпока «Аdd input» (рис.2) задает вид схемы, подключаемой ко вторичной обмотке трансформатора. Здесь задаются: выходное напряжение, максимальный выходной ток, допустимый уровень пульсаций выходного тока, параметры электролитического конденсатора (ESR). В панели «Output type» задается вид цепи стабилизации напряжения: выходной C-фильтр без дополнительной цепи стабилизации (опция «Direct»), выходной LC-фильтр без дополнительной цепи стабилизации (опция «Self»), выходной C-фильтр с дополнительной цепью стабилизации на основе стабилитрона (опция «Zener»), выходной C-фильтр с дополнительной цепью стабилизации на основе интегрального стабилизатора (опция «Vreg»). Последняя опция может включаться для стабилизаторов с разным уровнем падения напряжения («Standard», «Semi-Low Dropout», «Low Dropout»). Ниже задается полярность выходного напряжения относительно «общего» провода — положительная или отрицательная («Polarity»). Последняя панель — задание параметров выпрямительного диода. Можно выбрать диод как из предлагаемого перечня, так и задать свои параметры.

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

рис.5
Результат нажатия кнопки «All datas»

Кнопка «Transil clamper/RC clamper» управляет типом снабберной цепочки (RC-цепочка или цепочка на основе Transil-диода). На рис.4 слева расположена RC-цепочка, а справа — Transil-цепочка. Параметры элементов выбираются автоматически.

На рис.5 изображен результат нажатия кнопки «All datas». Здесь представлены параметры выходных частей преобразователя с данными элементов.

Кнопка «BOM» дает возможность распечатать все необходимые параметры схемы и типономиналы входящих в нее элементов по основным разделам: » Input Components», «Clamper Components», «VIPer Components», «Transformer», » Main Output Components», » Output Components».

рис.6
Результат нажатия кнопки «Waveform»

Очень интересное окно появляется при нажатии на кнопку «Waveform» (рис.6). Это своего рода окно моделирования работы преобразователя. Здесь можно посмотреть на формы напряжений и токов в различных режимах работы (в основном рассматриваются режимы максимальной и минимальной мощности, но плавное изменение мощности также предусмотрено), амплитудно-частотные и фазо-частотные характеристики цепи обратной связи (цепи стабилизации). Для примера на рис.6 показано одно окно с графиком. Вообще возможно выводить в одном окне до четырех графиков одновременно, что облегчает их анализ.

рис.7
Элементы обратной связи «Primary regulation» и «Secondary regulation»

Последняя опция в этом меню, выполненная в виде выпадающего списка, представляет собой варианты построения общей стабилизации схемы. Вариант «Primary regulation» выполняется без обратной связи в первичную цепь, а вариант «Secondary regulation» — с обратной связью. Элементом обратной связи выступает оптрон и управляемый стабилитрон типа TL431 (рис.7).

В окошке «Quick circuit datas» можно ввести имя проекта («Project») и сохранить все типономиналы данной схемы.

рис.8
Результат нажатия кнопки «Тransformer»

Особое внимание следует обратить на кнопку «Тransformer», при нажатии которой появляется окно, показанное на рис.8. Это окошко относится к выбору параметров трансформаторов, в том числе и их конструктивных параметров. К сожалению, в программе жестко заданы типономиналы магнитопроводов импортного производства (от фирм «Siemens», «Philips», «Thomson» и других. Отечественных магнитопроводов, естественно, нет, так что придется искать аналоги по типу материала (можно воспользоваться значением индукции в панели «Core material»), габаритам, длине силовой линии. Скорее всего придется использовать кольца из МО-пермаллоя.

VIPer Design Software

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

Среда VIPer Design Software была разработана с целью поддержки линейки микросхем под торговым названием VIPer (Vertical Intelligent Power Enhanced Regulators), представляющих собой интегральные варианты центрального фрагмента импульсного источника питания и включающих в себя расположенные на одном кристалле цепи защиты, ШИМ-контроллер и мощный коммутирующий MOSFET-транзистор.

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

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

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

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

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

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

Среда проектирования была разработана инженерами европейской микроэлектронной компании STMicroelectronics, созданной в 1987 году. Штаб-квартира организации расположена в Женеве (Швейцария). Основное направление – разработка, изготовление и продажа разнообразных электронных и микроэлектронных полупроводниковых компонентов.

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

Утилита имеет англоязычный интерфейс, русификатора к ней нет.

VIPer Design Software предназначена для установки на операционную систему Microsoft Windows 95, 98, 2000, NT, ME, XP, Vista, 7. После процедуры инсталляции в каталоге программы появляются файлы в формате PDF с подробной документацией на поддерживаемые серии микросхем.

Распространение программы: бесплатная

Описание интерфейса программы VIPer

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

К ЛАБОРАТОРНОЙ РАБОТЕ №9

”Атоматизация процессов в экосистемах“

”Автоматизация типовых установок и комплексов“

Дубовик В.Г., Лебедев Л.Н.

Исследование импульсного источника питания

Утверждено

на заседании кафедры

Протокол № 7 от 11 декабря 2013 г.

Киев 2013

3. Описание интерфейса программы VIPer ……..………………….…..…. … 3

4. Методические указания к проведению лабораторной работы ….….….….. 10

7. Рекомендуемая литература ………………………………………….…….… 18

Приложение. Перечень элементов – пример заполнения ……………………. 19

Цель работы: приобретение навыков автоматизированного проектирования и исследования схем импульсных источников питания.

Программа работы.

1. Ознакомиться с принципиальной схемой импульсного источника питания (ИИП).

2. Запустить программу автоматизированного проектирования VIPer Design Softwareна персональном компьютереи ознакомиться с её интерфейсом, рис. 1.

3. Задать основные параметры проектируемого ИИП согласно задания (Uвх, Fпреобр, Uвых, Iвых, Nканалов, Uпульсаций, КПД) и выполнить редактирование всех разделов программы.

4. Зарисовать полученную схему ИИП с указанием параметров.

5. Снять графики выходных параметров ИИП с помощью программы VIPer и зарисовать их.

Описание интерфейса программы VIPer

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

Автоматизированный расчет флайбэк преобразователя выполняется с использованием программы “VIPer switch, mode power supply” фирмы “STMicroelectronics” на основе микросхем серии VIPer. Микросхемы содержат встроенную схему управления и силовой MOSFET транзистор. Это — пятивыводной корпус типа Pentawatt-HV с размерами ТО-220. Микросхема в этом корпусе устанавливается на радиатор. Встречаются также малогабаритные исполнения в корпусе DIP 8 для преобразователей с выходной мощностью до 100 Вт с возможностью внешней установки частоты преобразования, стабилизацией по значению выходного напряжения, защитой от перегрузки и короткого замыкания.

Читайте также  Источник питания на двухбазовом диоде

После запуска программы “VIPer” появляется основное окно (рис. 13.10) с которым и необходимо работать. Сверху распола­гается меню в виде кнопок управления, под ними в желтом прямоугольни­ке приводятся результаты расчета основных параметров источника питания — выходная мощность, ток первичной обмотки накопительного трансформатора, КПД преобразователя.

Рис. 1. Рабочее окно программы VIPer switch mode power supply

Под желтым прямоугольником — схема источника питания. Все ее элементы имеют информацию о типе и номинале. Кнопки «Input», «Transformer», «VIPer» «Out» на поле схемы задают, соответственно, входные параметры преобразователя, параметры трансформатора, тип микросхемы управления и выходные параметры. Если в процессе работы будет неправильно выбран какой-либо параметр, например, габаритная мощность магнитопровода трансформатора окажется меньше требуемой, то программа сообщит об этом, выводом предупреждающей надписи на красном фоне. В верхней части окна над схемой располагается кнопка «Add input» (рис. 1), которая задает вид схемы, подключаемой к вторичной обмотке трансформатора и значения выходного напряжения, максимального выходного тока, допустимого уровня пульсаций выходного тока, параметры эквивалентного сопротивления электролитического конденсатора (ESR). В панели «Output type» задается вид цепи стабилизации напряжения: выходной С-фильтр без дополнительной цепи стабилизации — опция «Direct», выходной LC-фильтр без дополнительной цепи стабилизации — опция «Self», выходной С-фильтр с дополнительной цепью стабилизации на основе стабилитрона — опция «Zener», выходной С-фильтр с дополнительной цепью стабилизации на основе

интегрального стабили­затора — опция «Vreg».

Рис. 2. Окно, появляющееся при нажатии кнопки «Add input»

Последняя опция может включаться для ста­билизаторов с разным уровнем падения напряжения: «Standard», «Semi-Low Dropout», «Low Dropout».

Ниже задается полярность вы­ходного напряжения относительно «общего» провода схемы поло­жительная или отрицательная — «Polarity». Последняя панель «Output Diode» задает параметры выпрямительного диода. Можно выбрать этот диод как из предлагаемого перечня, так и задать его параметры самостоятельно. Общее количество независимых и гальванически развязанных цепей питания с разным типом стабили­зации (рис. 3) — до шести.

Рис. 3.Вариант набора выходной цени преобразователя

Кнопка «Transil clamper/RC clamper» управляет типом фиксирую­щей цепочки –R,C,VD цепочка на основе сапрессоря TRANSIL. Параметры элементов выбираются автоматически.

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

Номиналы резистора Rsnub и конденса­тора Csmb зависят от амплитуды перенапряжения.

В фазе передачи энергии в нагрузку напряжение между стоком и истоком ключевого транзистора складывается из напряжения питания и напряжения реакции тока во вторичной обмотке

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

Рис. 4. Защита ключевого транзистора от потенциального пробоя:

а) фиксирующая цепочка; б) использование сапрессора VD TRANSIL;

в) снаббер в цепи «сток-исток»; г) ограничитель индуктивных выбросов

В первичной обмотке W1, нагруженной элементами Rsnub, Csnub, VDsn, появляется также электрический ток, наведенный в ней током вторичной обмотки W2. Этот ток заряжает емкость Csnub, напряжение на которой в установившемся режиме при D = 0,5 равно напряжению пи­тания. При размыкании транзистора VT в пер­вичной обмотке W1 возникает выброс напряжения на индуктивности и если амплитуда этого выброса больше, чем напряжение на конденсаторе Сsnub, то диод VDsn открывается и оба напряжения выравни­ваются, а энергия выброса накапливается в конденсаторе. Фиксирующая цепочка представляет собой дополнительную на­грузку трансформатора, которая увеличивает потери энергии, сни­жает КПД. Для расчета параметров этой цепи по методике фирмы «International Rectifier вначале задается напряжение фиксации(Usnub) выше которого напряжение “сток-исток” ключевого транзистора VT под­няться не должно. Значение этого напряжения для сетевого преобра­зователя задается 100 В. Затем определяются номиналы элементов.

Для диода осуществляется выбор по величине обратного напряже­ния

Для защиты силового транзистора может ис­пользоваться диод TRANSIL, что показано на рис. 4, б и г. RC-цепочка, изображенная на рис. 4, в, может быть использована для за­щиты от индуктивных выбросов в виде снаббера,который не позволяет силовому транзистору переключаться очень быстро во избежание защел­кивания.Для его предотвращения устанавливается ре­зистор в цепи затвора и в та­ких схемах от снаббера можно отказаться.

Рис. 5.Результат нажатия кнопки «All datas»

Кнопка «ВОМ» дает возможность распечатать все необходимые параметры схемы и типономиналы входящих в нее элементов по основным разделам: «Input Components», «Clamper Components», «VIPer Components»,

На рис. 5 изображен результат нажатия кнопки «All datas». где представлены параметры выходных частей преобразователя. Переключая вкладки с надписью «Out», можно проследить основные выбранные параметры, характеристики и типономиналы элементов по каждому из выходов.

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

Рис. 6.Результат нажатия кнопки «Waveform»

Последняя справа опция в меню окна выполненная в виде выпадающего списка, представляет собой варианты построения общей стабилизации схемы. Вариант «Primary regulation» выполняется без обратной связи в первичную цепь, а вариант «Secondary regulation» — с обратной связью. Элементом обратной связи выступает оптрон и управляемый стабили­трон типа TL431 (рис. 7).

Рис. 7. Элементы обратной связи «Secondary regulation» и «Primary regulation»

В окошке «Quick circuit datas» можно ввести имя проекта — «Project» и сохранить все типо-номиналы данной схемы для дальнейших расче­тов.

При нажатии на кнопку «Transformer» появляется окно, показанное на рис. 8. Оно относится к выбору конструктивных и электричкских параметров трансформаторов. В программе предусмотрены типо-номиналы магнитопроводов импортного производства — фирм «Siemens», «Philips», «Thomson» и др. Для выбора отечественных магни­топроводов придется искать аналоги по типу материала и значением индукции в панели «Core material»), габаритам, длине силовой линии, использовать кольца из МО-пермаллоя.

Рис. 8.Результат нажатия кнопки «Transformer»

Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.01 сек.)

Введение в VIPER

В компании Mutual Mobile тестирование является частью создания отличного программного обеспечения. Однако тестирование не всегда было ключевой частью при создании приложений под iOS. Когда мы начали искать способы, чтобы улучшить тестирование наших приложений, то обнаружили, что написание тестов для приложений это довольно сложно. И решили, что если мы собираемся улучшить способ тестирования программного обеспечение, то мы должны сначала придумать лучший способ спроектировать приложения, и это решение мы назвали VIPER.

Традиционным способом проектирования приложения под iOS является использование шаблона MVC (модель-представление-контроллер). Использование MVC для архитектуры приложения, может натолкнуть Вас на мысль, что каждый класс представляет собой модель, или представление, или контроллер. Поскольку значительная часть логики приложения не входит в модель или представление, она обычно оказывается в контроллере. Это приводит к проблеме, известной как Massive View Controllers, где контроллеры в конечном итоге делают слишком много. Если вся логика встроена в контроллер представления, это приводит к тестированию логики через UI, в свою очередь это является неправильным способом проектированиям логики. Также проще совмещать бизнес-логику и UI код в том же методе. Когда Вам будет нужно добавить новые функциональные возможности или исправить ошибку, то будет трудно определить, где внести изменение и при этом быть уверенным, что не будет непредсказуемых последствий в другом месте.

VIPER

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

VIPER является нашей реализацией Clean Architecture для iOS приложений.

Слово VIPER — бэкроним для View, Interactor, Presenter, Entity и Routing.

Структура VIPER

Если коротко у вас есть:

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

Первоначально мои коллеги именовали эту архитектуру как VIP архитектуру. В некотором смысле это нарушение прав, ведь это можно интерпретировать и как “Very Important Architecture”. Так как я не хочу, чтобы люди думали, что другие архитектурные решения не важны, я решил назвать ее VIPER и позже придумал, что E и R будут означать.

Это разделение также соответствует принципу Single Responsibility. Interactor ответствен за бизнес-аналитику, Presenter отвественныей за отображение, и View ответствено за визуальное предствление.

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

Interactor/Интерактор

Interactor является простым юз кейсом в приложении. Он содержит бизнес-логику для управления объектами (Entity), чтобы выполнить определенную задачу. Задача выполняется в Interactor’е, независимо от любого UI. Тот же Interactor можно использовать в iOS приложениях или консольных приложениях для Mac OS.

Поскольку Interactor является PONSO (Обычный NSObject), который прежде всего содержит логику, и его легко разработать при помощи TDD (Разработка через тестирование).

Entity/Сущность

Entity — это объекты, которыми управляет Interactor. Entity только управляет Interactor. Он никогда не передает сущности уровню представления (т.е. Presenter’у).

Data Store/Хранилище данных

Data Store (например, веб-сервис, база данных) отвечает за предоставление Entity в Interactor. Поскольку Interactor применяет свою бизнес-логику, он будет осуществлять выборку Entity из хранилища данных, управлять Entity и затем возвращать обновленные Entity назад в хранилище данных. Хранилище данных управляет персистентностью Entity. Entity не знают о хранилище данных, таким образом, они не знают, как сохраняться.

При использовании TDD (Разработка через тестирование) для разработки Interactor’a, возможно отключить производственное хранилище данных с помощью double/mock тестов. Не обращаясь к удаленному серверу (для веб-сервиса) или диска (для базы данных) позволяет вашим тестам быть повторяемыми и быстрыми.

Presenter/Презентатор

Presenter — это PONSO, который в основном состоит из логики, чтобы управлять UI. Он собирает входные данные от взаимодействия с пользователем, таким образом, он может отправлять запросы Interactor’у. Presenter также получает результаты Interactor’а и преобразовывать результаты в состояние, которое является наиболее эффективным для отображения на View.

Читайте также  Зажигаем на tlc5940

Entity никогда не передаются из Interactor’а к Presenter’у. Вместо этого простые структуры данных, у которых нет поведения, передаются из Interactor’а к Presenter’у. Это препятствует любой ‘реальной работе’ в Presenter’е. Presenter может только подготовить данные для отображения на View.

View/Вид

View является пассивной. Оно ждет Presenter’а, чтобы передать содержания для выведения на экран; она никогда не запрашивает данные у Presenter’а. Методы, определенные для представления (например, LoginView для экрана входа в систему), должны позволить Presenter’у общаться на более высоком уровне абстракции, выраженной с точки зрения его содержимого, а не то, как это содержимое будет отображаться. Presenter не знает о существовании UILabel, UIButton, и т.д. Presenter только знает о содержании, которое он поддерживает и когда его нужно вывести на экран. Presenter нужно определять, как содержание выводиться на экран.

View — это абстрактный интерфейс, определенный в Objective-C с помощью протокола. UIViewController или один из его подклассов реализуют протокол View. Например, это может быть экран входа в систему:

Wireframe/Каркас

Маршрутизация обрабатывает навигацию от одного экрана к другому, как определено в wireframes, созданных проектировщиком взаимодействия. Wireframe объект несет ответственность за маршрутизацию. Wireframe объект владеет объектами UIWindow, UINavigationController, и т.д. Он ответственен за создание Interactor, Presenter и View/ViewController и за настройки ViewController. Так как Presenter содержит логику, чтобы реагировать на ввод данных пользователем, Presenter знает, когда перейти на другой экран. Wireframe знает, как это сделать. Итак, Presenter — это пользователь Wireframa.

Пример

Вы можете найти приложение Counter, это простое приложение, которое демонстрирует использование Interactor, Presenter и View. В следующей статье будет более подробно рассказано о том, как это приложение было разработано. Дополнительные статьи проиллюстрируют использование хранилища данных и Wireframe.

VIPER Design Pattern in Swift for iOS Application Development.

Sayed Mahmudul Alam

Mar 19, 2017 · 6 min read

Design patterns are God’s gift to software developers. These are techniques that minimize code duplication, prevent high coupling, and standardize a common way of writing code that provides a general solution for recurring situations while developing software. In this story, we will get familiar with a design pattern called VIPER (View, Interactor, Presenter, Entity, and Router.) for iOS development.

Prerequisites: Before starting about VIPER, please make sure you know about architectural design patterns and delegation patterns.

What is Viper?

Viper is a design patter n that implements the ‘separation of concern’ paradigm. Mostly like MVP or MVC, it follows a modular approach. One feature, one module. For each module, VIPER has five different classes with distinct roles. No class goes beyond its sole purpose. These classes are following.

View: Class that has all the code to show the app interface to the user and get their responses. Upon receiving a response View alerts the Presenter.

Presenter: Nucleus of a module. It gets user response from the View and works accordingly. The only class to communicate with all the other components. Calls the router for wire-framing, Interactor to fetch data (network calls or local data calls), view to update the UI.

Interactor: Has the business logic of an app. e.g if business logic depends on making network calls then it is Interactor’s responsibility to do so.

Router: Does the wire-framing. Listens from the presenter about which screen to present and executes that.

Entity: Contains plain model classes used by the Interactor.

Below shows a simple diagram of VIPER

Viper with Example

I have created a simple project to explain viper. It can be found on GitHub. It is a very basic application that shows a list of news fetched from an external API.

Viper is a delegation-driven architecture. So, most of the communication between different layers executes through delegation. One layer calls another through a protocol. The calling layer calls a function from a protocol. The listening layer conforms to that protocol and implements the function.

Below I will explain how I have implemented VIPER in one of my sample projects. I suggest you open the project in GitHub and go through it while reading the explanation.

Protocols

I have created a separate file for all the protocols.

A naming convention is followed to name a protocol. e.g, ‘viewToPresenterProtocol’. So, it is a ‘protocol’ that will be implemented by ‘the presenter’ to listen to what the ‘view’ has to say.

  • PresenterToViewProtocol : Presenter calls, View listens. The presenter receives a reference from this protocol to access View. View conforms to the protocol.
  • ViewToPresenterProtocol: View calls, Presenter listens.
  • InteractorToPresenterProtocol: Interactor calls, Presenter listens.
  • PresentorToInteractorProtocol: Presenter calls, Interactor listens.
  • PresenterToRouterProtocol: Presenter calls, Router listens.

Also, our protocol names must be different for different modules. One way to achieve this is to add the module name as a prefix. So the format could be

e.g if the module name is Login then view to presenter protocol name will be LoginViewToPresenterProtocol. Our example project follows this convention which we will see further in the story.

App Flow

View has a reference of LiveNewsListViewToPresenterProtocol to access the Presenter and conforms to LiveNewsListPresenterToViewProtocol. In it’s viewDidLoad() it calls the function updateView() of the protocol.

Presenter on the other hand conforms to LiveNewsListViewToPresenterProtocol. So, it implements the function updateView().

Inside updateView() presenter tells the interactor to fetch some live news data.

Interactor conforms to LiveNewsListPresentorToInteractorProtocol . So it implements fetchLiveNews() function. This function makes a network call and fetch data. It has a reference from LiveNewsListInteractorToPresenterProtocol to access the Presenter.

If the network call successfully has fetched the data it calls the following function.

Now presenter also conforms to LiveNewsListInteractorToPresenterProtocol. So it implements these functions.

So it tells the view whether to show news or to show an error.

Now, View conforms to LiveNewsListPresenterToViewProtocol. Thus it implements showNews() and showError(). In these two functions view populates the view with the fetched data or the error.

The Entity Layer

In the app flow section, the entity layer is not discussed. It is not directly connected with the app flow, but an integral part of the Interactor. The entity layer provides a model which the Interactor uses to create objects from the fetched data. One thing to remember about the Entity is out of all the layers only the Interactor should own an entity. The diagram above also shows that Entity only communicates to the Interactor. But the question here is then how the View will know about the entity? It has to show the data, right? The short answer is View will call the Presenter to get it and the Presenter will get it from the Interactor. E.g we have cellForRowAt where we populate a table view cell.

Here at this below line, the data is requested from the presenter.

Then Presenter gets it from the Interactor.

So the main point here is that only the Interactor will have an instance of the Entity.

Router

The router takes care of the wireframing of an application. Changing the screen in an application is a very basic thing. In VIPER, the Router layer is responsible for executing that.

We have discussed earlier that in VIPER architecture every single feature has a single module and a module contains those five layers. A presenter calls the router to create a new module. Then router first initiate all the layer class and returns the module.

In my sample project, there is no module change happening. But routing does happen when the app first time launches. So inside AppDelegate’s didFinishLaunchingWithOptions(), router’s createModule() function is called. It returns a module. UIWindow class then shows the View of that module.

Why and When to use VIPER

VIPER follows a very clean architecture. It isolates each module from others. So changing or fixing bugs is very easy as you only have to update a specific module. Also for having a modular approach VIPER creates a very good environment for unit testing. As each module is independent of others, it maintains low coupling very well. So, dividing work among co-developers is also pretty simple.

VIPER should be used when an application’s requirements are very well-formed. Working with constantly changing requirements may create confusion and messed-up codes. So, it should not be used in small projects as MVP or MVC will suffice. Also, VIPER should be used if all the developer of the project fully understands the pattern.

VIPER Tools

If one wants to use VIPER in a project, the smartest thing would be to use an automatic module structure generator. Otherwise creating files for modules will be monotonous. There are few generators available online.

Conclusion

Just like any other design pattern VIPER is self-explanatory. One needs to get one’s hands dirty to understand the whole picture. My advice will be to first start creating a very basic app with VIPER and simultaneously read online resources. My GitHub repo could also be a good starting point.

Long live sacred Bangladesh.

Bangladesh is a world of metaphor, of high and low theater, of great poetry and music. You talk to a rice farmer and you find a poet. You get to know a sweeper of the streets and you find a remarkable singer.

ViPER4Android FX 2.7.2.1

Для функционирования программы необходимы права root пользователя.

Эквалайзер со множеством эффектов.

V4A FX версия: Добавляет различные звуковые эффекты (визуализация звука).

V4A XHiFi версия: Восстанавливает качество звука.

V4A FX и XHiFi вместе: Больше звуковых настроек, кот. сделают качество звука гораздо приятнее.

(FX version) Beautiful / (XHiFi version) X-Factor

Поддерживаемые ОС: Android 2.3 / 4.0 / 4.1 / 4.2

Поддерживаемое железо: ARM (ARM15, Cortex A8/A9 or higher).

FX min требования (Convolver выключен): A8 300MHz или ARM11 500MHz.

FX мин. требования (Convolver включен): A8 одноядерный 800MHz, желательно 2х или 4х ядерный на 1.2GHz.

XHiFi мин. требования (все эффекты включены): A8 2х ядерный 1GHz или выше, поддержка Tegra2.

1) скачайте и распакуйте архив IRSamples.rar в корень SD-карты

2) установите выбранное апк (FX или XHiFi) из соотв. архива — можно оба, т.к. они прекрасно уживаются вместе

Читайте также  Fpga. просто о сложном - философия написания конфигураций для плис

3) запустите апк и следуйте инструкции появившейся на экране

Инструкции о настройке эквалайзера и FAQ под катом. КАК ПРАВИЛЬНО ВЫБРАТЬ СВОЙ КОДЕК ?

NEW! Начиная с версии FX 2207:

ZTE U880 или CPU(PXA920), выбираем — «Without VFP (PXA920)».

Tegra2, ARM и другие CPU мощностью до 800MHz — «With VFP»

Все Qualcomm/Snapdragon или мощнее 800MHz, выбираем — «CortexA8 with NEON»

Для остальных 2х, 4х, 8х ядерных — «CortexA9/15 with NEON»

ЧТО ТАКОЕ IRS-сэмплы и конвольвер?

Так что же такое конвольвер (Convolver), и с чем его едят? Попробуем разобраться

Для начала обратимся к понятию реверберация.

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

Конволюционный ревербератор или просто конвольвер-

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

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

IRS -сэмплы можно скачать ниже.

FAQ (Fast answer/question) от разработчика

В: Что делает эта программа?

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

В: Как установить программу?

О: Установить сам апк, запустить и следовать появивщейся инструкции. Если стандартная установка не помогла, используйте FLASHABLE-версию.

В: Зачем программе нужен ROOT?

О: Затем, что драйвера (библиотеки), нужные для работы программы, прописываются (устанавливаются) в раздел: system/lib/

В: Какой тип процессора выбрать для моего устройства?

О: Таблицу соответствия процессоров смотрите выше.

В: Куда копировать файлы (сэмплы) для Convolver’а?

О: SDCard/ViPER4Android/Kernel/ — рЕгИсТр букв дложен быть СТРОГО соблюден!

В: Я скачал себе на устройство новые импульсы для конвольвера, а устройство их не видит, почему?

О: Совет всем у кого не работает конвольвер, убедитесь в том что файлы импульсов *.irs у вас свалены в одну кучу в папке ViPER4Android/Kernel а не сортированны по папкам.

В: Какой формат (расширение) должно быть у сэмпла?

О: Расширение файлов «Нелинейной обработки» (он же Convolver) заканчивается на *.irs

В: Откуда брать новые драйвера? Ведь здесь выложен только apk.

О: Установите программу и откройте её, она сама предложит обновить драйвер.

В: Как использовать различные импульсы которые тут выложены? Я поставил версию XHiFi, но там нету никакого выбора этих самых эффектов.

О: Импульсы предназначены для конвольвер (convolver), кот. есть только в версии FX! В корне карты памяти создаете папку: /ViPER4Android/Kernel/ и туда кидаете импульсы. Ну а дальше в самой программе выбираете нужный импульс.

В: У меня программа не работает с PowerAmp’ом. Что делать?

О: Чтобы заставить работать V4A с Poweramp корректно, вы должны в обоих приложениях (FX и XHiFi), переключиться в Compatible Mode и после этого перегрузить телефон.

В: Переключил с Normal на Compatible и все равно с PowerAmp работать не хочет. Может что-то еще нужно включить или выключить в PowerAmp? Подскажите?

О: В PowerAmp нужно зайти в настройки->звук->дополнительные настройки->поставить галку на musicfx. Потом на вкладке тон/громкость установить принудительную обработку активировав пункт musicfx (при этом в сис настройках V4A должен быть активирован), при долгом нажатии на musicfx открываеться эквалайзер который сейчас используеться системой.

В: Когда установил прогу, и попытался найти толи драйвер толи обновление мне это написало: «please comfirm your phone has been rooted and busybox installed». Что мне делать?

О: Во-первых, программе ОБЯЗАТЕЛЬНО нужны ROOT-права, а вовторых, нужно еще установить Busy Box. В нем выбрать смарт инсталлер и перегрузиться.

В: А в чем отличие версии XHiFi?

О: V4A XHiFi версии в основном для восстановления качества звука и детализации. Это основная особенность XHiFi, делает детализацию и высокие частоты для восстановления потерь в MP3 аудиофайлах.

В: Установил последнюю версию V4A через апк. Устанавливал оба эквалайзера. На втором почему то нету настроек для динамика. Это так должно быть или косяк установки?

О: XHiFi предназначен только для гарнитуры (наушников)/BT, но если вы хотите использовать XHiFi для динамика, то просто активируйте lock effect mode в XHiFi приложении.

В: Можно ли их использовать оба одновременно или только по отдельности?

О: Можно обе — они прекрасно уживаются вместе и отлично дополняют друг друга.

В: Я установил обе версии, но активировал только одну из них, а в процессах висят обе. Почему так?

О: Не имеет значения, какую именно версию вы активировали — FX или XHiFi, они все равно всегда будут запускаться вместе (при условии, что они установлены обе).

В: Если стоит fx с драйвером, следом поставил hifi, надо ли драйвер его ставить?

О: Да, при первом запуске, программа сама предложит обновить дравер.

В: Существенные отличия от DSP Manager имеются?

О: V4Android частично основан на исходном коде от DSP Manager, т.е., по сути, он является более продвинутой (улучшеной) его версией.

В: Распаковал импульсы для конвольвера, но при применении звук заикается. Подскажите в чём проблема?

О: Процессор не справляется. Отключите конвольвер.

В: А как пользоваться этой нелинейной обработкой? Какой из этой кучи файлов в формате .irs выставлять для улучшения?

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

В: Можно поподробней о самих сэмплах? Все можно ставить сразу? И на некоторых указана модель телефона, к чему это?

О: Да, можно все сэмплы закинуть в одну папку. Если на сэмпле указана модель телефона, значит у этого телефона есть какой-то свой фирменый улучшайзер (типа BeatsAudio у HTC), во время использования которого и был снят сэмпл (с помощью спец. оборудования).

В: Что такое Lock mode (Режим блокировки)?

О: Режим блокировки — это на какой вкладке открывать вайпер по умолчанию.

В: Что такое режим Safe Mode (Безопасный режим) и для чего он нужен?

О: Если V4A у вас не работает с каким-то плеером, то попробуйте переключиться в Safe Mode, кот. и предназначен для работы практически с любым музыкальным проигрывателем, с кот. V4A не работает в Normal Mode (работает только с Android 4.X и выше).

В: Что такое режим Compatible Mode (Режим совместимости) и для чего он нужен?

О: Compatible Mode поддерживает большее количество как системных, так и сторонних музыкальных плееров и плееров, с собственными эквалайзерами или звуковыми эффектами (работает только с Android 4.X и выше).

В: Где выставляется режим совместимости? У меня такого пункта меню почему-то нет на Android 2.3

О: FX Compatible Mode & Safe Mode работает только с Android 4.X и выше.

В: Переключился в Compatible Mode, и мне пишет, что Driver status: NO

О: Driver status в V4A FX Compatible Mode всегда будет показывать — NO. Показывать YES будет только в Normal Mode — это баг программы.

В: Переключился в Compatible Mode, перегрузился, но ничего не поменялось… (1 вариант)

О: Если вы хотите использовать Compatible Mode, то нужно переключить в этот режим ОБА приложения (т.е. и XHiFi и FX).

В: Переключился в Compatible Mode, перегрузился, но ничего не поменялось… (2 вариант)

О: Для тех, у кого все равно осталась проблема с эффектами в Compatible Mode, даже после перезагрузки, сделайте следующее: найдите файл — /system/build.prop и измените в нем строку с: Ipa.decode=true на lpa.decode=false

В: Почему ViPER4Android FX всегда приводит к FC при подключении наушников?

О: Скорее всего у вас запрещена запись в раздел /system/ на устройстве, поэтому драйвера не были установлены. Разрешите запись в системный раздел и выполните повторную автоматическую установку драйверов или установите их вручную.

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

О: Для начала попробуйте сделать очистку данных ViPER4Android FX, и если это не принесет результата, то убедитесь, что у вас не стоят сторонние усилители звука.

В: Почему ViPER4Android FX не загружается после загрузки устройства?

О: Проверьте ваш антивирус, либо же V4A был отключен в списке автозапуска.

В: Почему пропал V4A эффект после использования task-killer’а?

О: Просто добавьте ViPER4Android FX в список-исключений task-killer’а.

В: Почему V4A эффект внезапно пропадает?

О: Потому что система Android убивает некоторые процессы из-за ограничений памяти. Просто установите ViPER4Android.apk как системные приложение (переместите его в /system/data/ и перезагрузите устройство).

В: Почему присутствует фоновый шум при использовании v4a эффектов?

О: Это ошибка Android, кот. будет происходить на всех звуковых модах (BeatsAudio, etc). Попробуйте переименовать файл: /system/lib/SoundFX/libbundlewrapper.so в libbundlewrapper.so.bak, и перезагрузите устройство.

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

О: Возможно, у вас не стоит разрешение на запись в разделе system, поэтому драйвера и не ставятся.

В: Подскажите, в статусе драйвера, значение обработка — нет, это что то плохо работает или вообще не работает?

О: Состояние: Processing — NO (если музыка не играет); Processing — YES (если музыка играет).

В: Скачал сэмпл, а там *.wav формат — ет же старый, новая версия его откроет?

О: Просто переименуйте его сами в *.irs

В: Что такое Cure+?

О: При прослушивании музыки, с нормальной аудиосистемой, в течение более трех часов, вы начнете чувствовать усталость, головокружение, шум в ушах, раздражение и другие недомогания. Это нормальная реакция организма, т.к. тяжелый бас и громкий звук могут привести к необратимому повреждению слуховой системы человека. Но от этих симптомов можно легко избавиться — достаточно всего-лишь немного отдохнуть. Viper же является профессиональным инструментом для прослушивания музыки, поэтому мы решили не игнорировать эту проблему. Мы приложили много усилий для разработки более «Безвредной» технологии прослушивания музыки, и уже добились небольшого успеха. Но думать о том, как дать пользователям возможность испытать это. Именно этот «небольшой успех» и представляет собой технология — Cure+. Но мы все еще работаем над тем, как бы получше преподнести эту технологию пользователю.Приятного прослушивания.