Повышение точности позиционирования каретки бесштокового пневмоагрегата тема диссертации и автореферата по ВАК РФ 05.04.13, кандидат наук Шилин Денис Викторович

  • Шилин Денис Викторович
  • кандидат науккандидат наук
  • 2016, ФГБОУ ВО «Национальный исследовательский университет «МЭИ»
  • Специальность ВАК РФ05.04.13
  • Количество страниц 257
Шилин Денис Викторович. Повышение точности позиционирования каретки бесштокового пневмоагрегата: дис. кандидат наук: 05.04.13 - Гидравлические машины и гидропневмоагрегаты. ФГБОУ ВО «Национальный исследовательский университет «МЭИ». 2016. 257 с.

Оглавление диссертации кандидат наук Шилин Денис Викторович

ВВЕДЕНИЕ

ГЛАВА 1. АНАЛИЗ ПРOБЛЕМ, ПУТЕЙ И CПOCOБOВ ГОВЫШЕНИЯ ТOЧНOCТИ ПOЗИЦИOНИРOВАНИЯ КАРЕТКИ БЕCШТOКOВOГO ПНЕВМАТИЧЕCКOГO ЦИЛИНДРА

1.1.Coвременнoе ^^таяние теoретичеcких и экотериментальных иccледoваний одстем пoзициoнирoвания пневматичеcких цилиндрoв

1.2.Математичеcкие мoдели пневмoдвигателей, ^тол^уемых в шзицшнных пневматичеcких цилиндрах

1.3.Вывoды из oбзoра литературы, oбocнoвание направления иccледoваний и пocтанoвка задач

ГЛАВА 2. РАЗРАБOТКА И УТОЧНЕНИЕ МАТЕМАТИЧЕCКOЙ МOДЕЛИ БЕCШТOКOВOГO ПНЕВМАТИЧЕCКOГO ЦИЛИНДРА

2.1. Уравнение движения рабoчегo oргана пневмoцилиндра

2.2. Прoцеcc нашлнения cжатым вoздухoм рабoчей пoлocти цилиндра

2.3. Прoцеcc истечения cжатoгo вoздуха из выхлoпнoй пoлocти цилиндра

2.4. Иccледoвание «мертвoгo» oбъема пoршневых пoлocтей беcштoкoвoгo пневматичеcкoгo цилиндра

2.4.1. Методика экотериментальных иccледoваний «мертвoгo» oбъема в беcштoкoвoм пневматичеcкoм цилиндре

2.4.2. Результаты иccледoваний. Анализ cтатичеcких характериcтик. Вывoд кoличеcтвенных значений «мертвых» oбъемoв пoршневых пoлocтей беcштoкoвoгo пневматичеcкoгo цилиндра

2.5. Иccледoвание cилы трения беcштoкoвoгo пневматичеcкoгo цилиндра

2.5.1. Математичеcкая мoдель cилы трения в беcштoкoвoм пневматичеcкoм цилиндре

2.5.2. Методика экотериментальшго иccледoвания cилы трения в беcштoкoвoм пневматичеcкoм цилиндре

2.5.3. Результаты иccледoваний. Анализ cтатичеcких характериcтик cилы трения

2.6. Измерение ма^ы пoршня и каретки беcштoкoвoгo пневматичеcкoгo цилиндра

2.7. Иccледoвание cтатичеcкoй характериcтики прoпoрциoнальнoгo раcпределителя

2.7.1. Методика экспериментального исследования статической

характеристики пропорционального пневматического распределителя

2.7.2. Результаты исследований. Построение упрощенной статической характеристики пропорционального клапана

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

2.8. Исследование устойчивости системы позиционирования

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

2.9.1. Интегрирование методом Рунге - Кутта

2.9.2. Начальные условия

2.9.3. Анализ полученных характеристик

2.10. Выводы по главе

ГЛАВА 3. ИССЛЕДОВАНИЕ ПЕРЕХОДНЫХ ПРОЦЕССОВ

БЕСШТОКОВОГО ПНЕВМАТИЧЕСКОГО ЦИЛИНДРА

3.1. Требования к аппаратной части управления

3.2. Устранение шумов с датчика положения

3.3. Управляющая подсистема

3.4. Постановка задач экспериментального исследования

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

3.6. Результаты исследований переходных процессов при позиционировании бесштокового пневматического цилиндра при помощи классических регуляторов

3.6.1. П-регулятор

3.6.2. ПД-регулятор

3.6.3. ПИ-регулятор

3.6.4. ПИД-регулятор

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

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

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

3.7.3. Влияние методов дефаззификации на скорость настройки нечеткой модели

3.8. Применение гибридного алгоритма на базе нечеткого регулятора c ПИД. Результаты иccледoваний перехoдных прoцеccoв при пoзициoнирoвании пневматичеcкoгo цилиндра

3.9. Применение гибридшго предкoмпенcирoваннoгo алгoритма управления на базе нечеткого регулятoра c ПИД

3.10. Вывoды по главе

ГЛАВА 4. АНАЛИЗ ПРИМЕНИМOCТИ ГИБРИДНOГO

ПРЕДКOМПЕНCИРOВАННOГO ЗАКОНА УПРАВЛЕНИЯ НА БАЗЕ НЕЧЕТКOЙ ЛOГИКИ И ПИД РЕГУЛЯТOРOВ В

OДГОКOOРДИНАШЫХ И МНОГОКООРДИНАТНЫХ CИCТЕМАХ

4.1. Анализ влияния длины хoда каретки пневмoагрегата на oшибку пoзициoнирoвания при иcпoльзoвании гибриднoгo

предкoмпенcирoваннoгo регулятoра

4.2. Применение гибридшго предкoмпенcирoваннoгo регулятора для управления мнoгoкooрдинатным пневматичеcким манипулятoрoм

4.2.1. Выбор кинематичеcкoй мoдели манипулятoра и вывoд cиcтемы уравнений связи

4.2.2. Решение прямой и обратной задачи кинематики

4.2.3. Проверка кинематической модели на трехкоординатном экспериментальном стенде

4.2.4. Результаты исследований переходных процессов

4.3. Выводы по главе

ЛИТЕРАТУРА

Приложение 1. Акты внедрения результатов исследования

Приложение 2. Статические характеристики датчика расхода и давления .. 183 Приложение 3. Перечень оборудования и его основные технические

характеристики

Приложение 4. Данные результатов измерения силы трения пневмоцилиндра

DGPL-25-500-PPVA

Приложение 5. Перечень оборудования и его основные технические

характеристи

Приложение 6. Перечень оборудования и его основные технические

характеристи

Приложение 7. Код программы математического моделирования

Приложение 8. Oпиcание интерфеша разрабoтаннoй прoграммы

математичеcкoгo мoделирoвания пневматичеcкoгo цилиндра

Приложение 9. Описание аналоговых плат управления

Приложение 10. Код программы решения обратной задачи кинематики

Приложение 11. Код программы решения прямой задачи кинематики

Приложение 12. Код программы определения области достижимости

манипулятора

Приложение 13. Описание интерфейса разработанной программы по решению прямой и обратной задач кинематики матипулятора типа

«трипод»

Приложение 14. Техническое описание лазерного дальномера ODSL 96В

М/У6-2000-Б12

Приложение 15. К построению тарировочной характеристики лазерных

дальномеров

Приложение 16. Визуализация результатов эксперимента отработки

траекторий движений на манипуляторе

ОСНОВНЫЕ УСЛОВНЫЕ ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ

Д<- запас по фазе;

ЛL - запас по амплитуде, дб;

Др - перепад давления, Па;

Лрзаз - заданный перепад давления, Па; г]р - КПД шарико-винтовой передачи; с - величина относительного давления; сп - перерегулирование, %; ц - коэффициент расхода;

- коэффициент расхода в левой полости ПЦ; р2 - коэффициент расхода в правой полости ПЦ; рх - плотность газа в левой полости ПЦ, кг/м3; р2 - плотность газа в правой полости ПЦ, кг/м3; <р(с) - расходная функция; а(и) - вспомогательная функция;

а - ускорение, с которым перемещается поршень ПЦ, м/с2; Ь - длина рабочей щели, м;

с , с„ - удельные теплоемкости газа,-;

кг • К

Б - диаметр вала механического преобразователя движения, м; d - диаметр пневмоцилиндра, м; dLl - работа расширения газа в левой полости ПЦ; dL2 - работа расширения газа в правой полости ПЦ; dQм - тепловая энергия, подведенная с газом (левая полость ПЦ); dQ2 - тепловая энергия, подведенная с газом (правая полость ПЦ); - изменение внутренней энергии в левой полости ПЦ;

dU2 - изменение внутренней энергии в правoй пoлocти ПЦ; e - oшибка пoзициoнирoвания каретки ПЦ, м;

e ' - предкoмпенcирoванная oшибка пoзициoнирoвания каретки ПЦ, м; F - площадь пoверхнocти пoршня, м2;

F ' - cила coпрoтивления дефoрмации герметизирующей ленты, oтделяющей

внутреннюю пoлocть цилиндра oт oкружающегo прocтранcтва, Н; F^ - cила трения в паре поршень-гильза, каретка-направляющая, Н;

Fmp - cуммарная cила coпрoтивления, вoзникающая внутри двигателя при

начале движения и в прoцеccе движения поршня, Н; F кул - пocтoяннoе или кулoнoвcкoе трение, Н;

Fcm - статическая сила трения при v = 0 и Арзад, H; Fmin - минимальная сила трения при Арзад, H; F0 - сила трения при v = 0 и Ар = 0, H;

F3ad - сила трения при V = U3aà и АРзад , H;

Fffl - эффект Штрибека, Н;

Fcmp - усилие необходимое для страгивания каретки пневмоцилиндра, Н; FàuH - динамическая сила трения, Н; f - площадь проходного сечения трубопровода, м2; f хР - коэффициент экспоненциального убывания;

G - массовый расход газа, кг/с; G - массовый расход газа в левой полости ПЦ, кг/с; G - массовый расход газа в правой полости ПЦ, кг/с; h0 - начальная ширина рабочих щелей, м; h - величина смещения золотника относительно гильзы, м; /м - удельная энтальпия газа; к - показатель адиабаты;

Кп - коэффициент скорости, зависящий от силы трения, Нм/с; К - коэффициент усиления пропорциональной части; К - коэффициент усиления дифференцирующей части; К - коэффициент усиления интегральной части; Мпц - суммарная сила трения в ПЦ, Нм;

Ммп - суммарная сила трения в механическом преобразователе, Нм; М^, - момент, развиваемый синхронным двигателем, Нм;

т - суммарная масса поршня, штока и присоединенных к штоку инструментов либо элементов конструкции, кг; N - сила внешнего сопротивления, Н; р - давление питания, Па;

р - атмосферное давление, Па;

р - давление воздуха в левой полости ПЦ, Па;

р2 - давление воздуха в правой полости ПЦ, Па;

^ - расходы через щели, изменяющиеся в зависимости от величины смещения золотника относительно гильзы;

о Дж

К - газовая постоянная,-;

кг • К

Б - длина хода каретки пневмоагрегата, м; ^ - время, с;

7 - время регулирования, с;

Гм - температура газа в магистрали, К;

^ - температура газа в левой полости ПЦ, К;

Г2 - температура газа в правой полости ПЦ, К;

и - удельная внутренняя энергия;

и - скорость перемещения поршня ПЦ, м/с;

икРит - критическая скорость, м/с; °зад - заданная скорость, м/с;

V - объем полости нагнетания левой полости ПЦ, м3;

V - объем полости нагнетания правой полости ПЦ, м3; - рабочий (переменный) объем рабочей полости, м3;

- начальный (постоянный) объем левой полости пневмоцилиндра («мертвый» объем), м3; У2М - начальный (постоянный) объем правой полости пневмоцилиндра

(«мертвый» объем), м3; Ум - «мертвый» объем, м;

х - расстояние фиксированной точки поршня от начала координат, м; хз - заданная точка позиционирования каретки пневмоцилиндра, м; хт - текущее положение каретки бесштокового пневмоцилиндра, м; х 3 - предкомпенсированная заданная точка позиционирования каретки

пневмоцилиндра, м; 2 - величина шага, м; БП - блок питания; ДД - датчик давления; ДР - датчик расхода; ДС - датчик силы; К - компрессор; Л - лампа индикатор; М - манометр;

ПК - персональный компьютер; ПР - пневматический распределитель; ПЦ - бесштоковый пневматический цилиндр; Р - ресивер;

РК - редукционный клапан; СД - синхронный двигатель; УСП - усилитель/преобразователь; ЧП - частотный преобразователь;

ЭМП - электромеханический преобразователь поступательного движения; £7 - кнопка;

У1 - электромагнит распределителя.

Численные значения параметров для воздуха при температуре Т = 293 К (200С) и давлении р = 101,3 кПа (1 атм.):

к = 1,4;

К = 287 Дж/(кг • К); р = 1,204 кг/м3; с = 344 м/с.

Рекомендованный список диссертаций по специальности «Гидравлические машины и гидропневмоагрегаты», 05.04.13 шифр ВАК

Введение диссертации (часть автореферата) на тему «Повышение точности позиционирования каретки бесштокового пневмоагрегата»

ВВЕДЕНИЕ

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

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

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

В результате литературного поиска было установлено, что существуют алгоритмы управления пневмоцилиндром, при отработке которых точность позиционирования достигает 0,2-0,4% от общей длины хода [9]. Но, как правило, в таких системах позиционирования в качестве управляющей части используется более одного пневматического распределителя, что существенно удорожает такую систему.

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

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

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

Основными задачами работы являются:

• изучение возможности повышения точности позиционирования каретки бесштокового пневмоагрегата при управлении системой позиционирования, состоящей из одного пропорционального клапана;

• экспериментальные и расчетно-теоретические исследования влияния «мертвых» объемов в полостях пневматического цилиндра на качество математического моделирования;

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

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

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

плексы MATLAB, Visual Studio и другие. Достоверность разработанных подходов подтверждена результатами численных и натурных экспериментов.

Научная новизна работы состоит в следующем:

• проведены исследования «мертвых» объемов полостей бесштокового пневмоцилиндра;

• выполнено сравнение результатов численного и физического моделирования позиционирования каретки пневмоагрегата при использовании гибридного алгоритма управления на базе нечеткой логики и ПИД-регулятора;

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

• проведены исследования силы трения бесштокового пневмоцилиндра DGPL-25-500-PPVA;

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

Практическая ценность работы заключается в следующем:

• в рамках данной работы подтверждено повышение точности позиционирования каретки бесштокового пневмоагрегата при управлении одним пропорциональным клапаном при использовании гибридного алгоритма управления на базе нечеткой логики и ПИД-регулятора;

• осуществлены исследования влияния размера базы знаний, видов термов и методов дефаззификаций на точность позиционирования каретки пневмоагрегата;

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

Достоверность и обоснованность полученных в работе результатов определяются:

• использованием следующих апробированных методик:

- планирования и проведения исследований;

- анализа экспериментальных результатов;

• применением средств измерений необходимой точности;

• удовлетворительной сходимостью результатов исследований при многократных повторениях;

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

Результаты исследований внедрены в следующих организациях:

• ООО «Ай Би Си Солюшнс» при проектировании систем позиционирования выходного звена запорного пневматического элемента.

• ФГБОУ ВПО НИУ МЭИ (ЦП «ФЕСТО») в виде лабораторного курса «Мехатроника».

• ООО «ПРИЗМА» при проектировании системы дозировки сыпучих материалов.

Акты внедрения результатов иccледoваний прилагаются к пояснительной записке (см. приложение 1).

Апробация работы. Основные положения диссертационной работы докладывались и обсуждались на:

• Заседаниях кафедры Гидромеханики и гидравлических машин имени В.С. Квятковского НИУ «МЭИ», 2010 - 2014 гг.;

• Международных научно-технических конференциях студентов и аспирантов «Гидравлические машины, гидроприводы и гидропневмоавтоматика» в 2010 г., Москва, НИУ «МЭИ» 2011., МГТУ им. Н.Э. Баумана;

• XVII, XVIII, XX Международных научно-технической конференциях студентов и аспирантов «Радиоэлектроника, электротехника и энергетика» 2011 г., 2012 г., 2014 г. Москва, НИУ «МЭИ»;

• Первой международной школе докторантов (Р1 БАЛАМ ШегпаНопа Оос1:ога1 БсИоо1) в 2012 г. Хорватия, Университет Задара;

• I—III Открытых чемпионатах Москвы по профессиональному мастерству 1№огШ8кШв (2012 г., 2013 г., 2015 г.);

• I, II Национальных чемпионатах России по профессиональному мастерству ^ЪгШЗкШБ (2013 г., 2014 г.);

• I Открытом чемпионате Московской области по профессиональному мастерству ^ЪгШЗкШБ (2014 г.);

• IV Европейском чемпионате по профессиональному мастерству Еи-гоБкШБ (2014 г.).

На защиту выносятся:

• результаты экспериментальных и расчетно-теоретических исследований точности позиционирования кареток бесштоковых пневматических цилиндров разных типоразмеров при использовании гибридного алгоритма управления на базе нечеткой логики и ПИД-регулятора;

• результаты экспериментальных и расчетно-теоретических исследований влияния «мертвых» объемов полостей пневматического цилиндра на математическое описание пневмоагрегата;

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

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

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

Структура и объем работы. Диссертация изложена на 179 стр., имеет 87 рисунков и 14 таблиц, включает титульный лист, содержание, список основных условных обозначений, введение, 4 главы, список использованных источников (124 наименования), 16 приложений.

Автор выражает глубокую благодарность сотрудникам кафедры ГГМ имени В.С. Квятковского ФГБОУ ВО НИУ «МЭИ» за постоянное внимание, консультации и обсуждения, за ряд ценных советов, критических замечаний и указаний, высказанных на этапах выполнения работы.

ГЛАВА 1. АНАЛИЗ ПРОБЛЕМ, ПУТЕЙ И СПОСОБОВ ПОВЫШЕНИЯ ТОЧНОСТИ ПОЗИЦИОНИРОВАНИЯ КАРЕТКИ БЕСШТОКОВОГО ПНЕВМАТИЧЕСКОГО ЦИЛИНДРА

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

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

Управление систем автоматики строится с использованием промышленных контроллеров, плат управления и интеллектуальных средств автоматизации. Трудность в разработке систем управления состоит в математическом описании объекта управления.

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

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

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

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

Специалисты со всего мира ищут оптимальный закон управления пневматическим цилиндром. В прошлом веке исследователи зачастую пользовались традиционными законами регулирования из классической теории управления [28, 38, 40, 43, 47, 52]. Это сказывалось тем, что промышленность испытывала нехватку аппаратной части для реализации сложных алгоритмов управления кареткой бесштокового пневматического цилиндра, которые называются интеллектуальными регуляторами. Крейнин Г.В. и Ивлев В.И. одни из первых, кто предложил повысить точность и быстродействие выходного звена пневмоагрегата путем использования интеллектуальных систем [32].

С появлением микропроцессорной техники начали появляться все более сложные интеллектуальные алгоритмы управления. Так, специалистами из Дальневосточного университета было применено прогнозирующее инверсное нейроуправление пневматическим цилиндром [24-26]. В данных работах выполнено сравнение с традиционными системами управления, в результате которого установлено существенное преимущество прогнозирующей системы. Предложена структура системы прогнозирующего инверсного

нейроуправления c наблюдателем состояния. Экспериментально установлено превосходство предложенной системы над традиционными алгоритмами управления.

Благодаря использованию интеллектуальных алгоритмов управления, в основу которых вошли нейрорегуляторы, удалось снизить ошибку позиционирования до 0,2% от общей длины хода каретки пневмодвигателя. [66, 72, 92, 101, 105, 113, 121, 123].

Но, как правило, в данных регуляторах в качестве управляющего клапана используются дешевые дискретные распределители, которые, из-за высокой частоты срабатывания, подвержены частым поломкам [33, 55] (см. рисунок 1.1).

Рисунок 1.1 - Система позиционирования бесштокового пневматического цилиндра с 2-мя дискретными пневмоклапанами

На рисунке 1.1 представлена система позиционирования бесштокового пневматического цилиндра с 2-мя дискретными клапанами, где 1 -

аналоговый датчик положения, сигнал которого поступает на аналого-цифровой преобразователь, 2 - бесштоковый пневмоцилиндр, 3 - датчики давления, 4 - пневматические распределители 3/2, 5 - система подачи сжатого воздуха в систему, 6 - микроконтроллер, 7 - персональный компьютер, рА - давление воздуха в левой полости, Па, рв - давление воздуха в правой полости, Па, хт (t) - текущая координата, м, u - управляющий сигнал, В.

Так же существуют аналогичные схемы с 4-мя дискретными пневматическими клапанами [45].

В пневмоагрегатах с релейным управлением при переключении пневмораспределителей с большой частотой вследствие упругости газа в полости пневмоцилиндра могут возникать резонансные колебания газа, которые приводят к ударным нагрузкам и колебаниям исполнительных органов. Так, например, значения резонансных частот для пневмоцилиндров длиной полостей 0,5 м. и 1,0 м. составляют соответственно около 170 Гц. и 85 Гц., то есть меньше частоты срабатывания современных пневмо-распределителей. Поэтому при расчете таких приводов следует учитывать волновые процессы в полостях пневмоцилиндра [19, 93].

За последние десятилетия рядом ведущих производителей пневмосистем предприняты значительные усилия по созданию контроллеров для следящих пневмосистем. В течение прошедшего десятилетия в линейке продукции сначала концерна FESTO (Germany) [85], затем Enfild Technologies (USA) [82] и с 2010 года Camozzi (Italy) [76] появляются пневмосервоприводы. Как правило, в таких системах, в качестве управляющего воздействия на пневмоцилиндр, используют пропорциональные пневмораспределители.

Однако показатель стоимость/технические возможности для них остается достаточно высоким, не обеспечивающим очевидных конкурентных преимуществ по сравнению с электроприводом [97]. Причины кроются, в основном, в высокой стоимости линейного электропневмопреобразователя, а

также, безусловно, невозможности реализовать высококачественную систему управления столь сложным объектом, ограничиваясь лишь законами ПИД-регулирования [50]. В прикладном аспекте преодолению указанных недостатков посвящена данная работа.

Развитие автоматизации и роботизации в производственных процессах стимулировало интерес в пневматических сервосистемах, преимущественно включающих в себя низкие производственные затраты, высокую динамику и надежность [114]. Низкая точность позиционирования в многоосных пневматических системах значительно снижает использование пневматики в манипуляторах и роботах [42]. Быстрое развитие параллельных пневматических манипуляторов накладывает много требований к контроллерам пневматических сервоприводов, касающихся точности позиционирования, устойчивости к переменным параметрам состояния [79, 80, 81, 96, 110]. Проблема точности позиционирования в сервопневматических системах трудно решаема, когда нет достаточной информации о процессе преобразования энергии сжатого газа в механическую энергию пневматического цилиндра [116, 118, 124]. Из-за этого новые интеллектуальные методы, основанные на искусственном интеллекте, например нечеткая логика, широко используются в данных работах [81, 105, 107, 110]. В традиционных системах контроля пневматическими сервоприводами алгоритмы управления интуитивно составлены на основе опытных данных оператора. В нечетком регуляторе знаниями оператора закодирована база знаний. Благодаря нечеткой логике, знания оператора можно представить с помощью математических операций. Нечеткие управления позволяют перейти от качественного к количественному управлению пневматическими сервоприводами. Применение нечеткого контроллера осуществляет управление многоосных пневматических манипуляторов и роботов различных кинематических структур: последовательно, параллельно или гибридные - последовательно / параллельно [62, 70].

Пневматические цилиндры широко используются в системах промышленной автоматизации, таких как робототехника [98, 103]. Основными преимуществами этих цилиндров являются низкие затраты и высокая мощность. До сих пор пневматические цилиндры применялись в основном для управления системами с небольшими требованиями, предъявляемыми к позиции; конфигурация таких систем состоит из дискретных переключений клапанов с пневматическими цилиндрами без каких - либо сенсорных элементов [5]. Для увеличения области применения и достижения более высокой точности, в систему был введен пропорциональный пневматический распредели-тель(см. рисунок 1.2).

Рисунок 1.2 - Система позиционирования бесштокового пневматического цилиндра пропорциональным распределителем

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

цифровой преобразователь, 2 - бесштоковый пневмоцилиндр, 3 -пропорциональный пневматический распределитель, 4 - система подачи сжатого воздуха в систему, 5 - микроконтроллер, 6 - персональный компьютер, хт ) - текущая координата, м, и - управляющий сигнал, В. Также существуют аналогичные схемы с 2-мя пропорциональными пневматическими распределителями.

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

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

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

Пневматические цилиндры могут предложить лучшую альтернативу электрическим или гидравлическим двигателям очень многих устройств. Использование пневмоагрегатов дает хорошие качества системы при низкой стоимости [91, 108].

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

или пневматических бурах для работы с бетоном [19]. Области применения пневмосистем безграничны: машиностроение, электронная промышленность, автомобилестроение, судостроение, текстильная и легкая промышленность, транспорт, пищевая промышленность, горнодобывающая промышленность, индустрия упаковки, медицина, космические исследования и др. Популярность пневматических систем объясняется их высокой надежностью, простотой эксплуатации, пожаро-взрывобезопасностью и низкой стоимостью. При этом воздух может использоваться как бесконтактный инструмент в технологических операциях и в операциях контроля и измерения. В сочетании с электронными системами управления с помощью пневмосистем можно значительно проще решить многие задачи, которые решались ранее другими средствами.

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

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

Отличие математических моделей пневмоцилиндров заключается, как правило, в описании расходной функции, характеризующей изменение расхода в рабочих полостях в зависимости от перепада давлений в трубопроводе [100]. Вид функции зависит от того, каков характер течения газа в трубопроводе: изотермический (когда за счет теплообмена с окружающей средой и внутреннего трения газа его температура остается постоянной)

[73] или адиабатический (когда пренебрегают теплообменом газа с окружающей средой и внутренним трением газа). Реальный процесс течения газа в трубопроводах носит политропический характер. Вычисление показателя политропы зависит от многих факторов и весьма затруднительно. Поэтому для упрощения расчетов принимают процесс течения адиабатическим или изотермическим [19].

1.3. Выводы из обзора литературы, обоснование направления

исследований и постановка задач

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

Из обзора литературы можно сделать следующие выводы:

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

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

3. Существует большое количество работ, где в качестве алгоритмов управления используется нечеткий регулятор [43, 81, 107, 110], но при этом

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

4. Сила трения, возникающая при страгивании каретки пневматического цилиндра, влияет на быстродействие системы;

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

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

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

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

ГЛАВА 2. РАЗРАБОТКА И УТОЧНЕНИЕ МАТЕМАТИЧЕСКОЙ МОДЕЛИ БЕСШТОКОВОГО ПНЕВМАТИЧЕСКОГО ЦИЛИНДРА

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

где 1 - механические буферы, 2 - внешняя уплотнительная пластина, 3 -винт настройки пневматической амортизации, 4 - уплотнение поршня, 5 -каретка, механически связанная с поршнем, 6 - внутренняя уплотнительная пластина, 7 - поршень, 8 - магниты, 9 - профилированный корпус с выемками под магнитные датчики, 10 - головка с крепежными винтами [44].

Гильза пневмоцилиндра имеет сквозной продольный паз (по всей длине гильзы). Через этот паз поршень 7 механически связан с внешней кареткой 5 (т. е. поршень выполнен заодно с ней). С целью герметизации гильзы паз с ее внутренней стороны закрыт металлической лентой 6, закрепленной в крышках. Чтобы пропустить поршень сквозь паз, часть ленты, расположенную между уплотнениями поршня, проводят через тело последнего под узкой

Похожие диссертационные работы по специальности «Гидравлические машины и гидропневмоагрегаты», 05.04.13 шифр ВАК

Список литературы диссертационного исследования кандидат наук Шилин Денис Викторович, 2016 год

// // //

#endregion #region Fuzzy

mFarx = mMidx = mClosex = vclosex = closex = midx = farx = false; mFastv = mMidv = mSlowv = vslowv = slowv = midv = fastv = false; dx = xz - (x01 + x + (x1 + (2 * x2) + (2 * x3) + x4) / 6);

//

//YcnoBHA

//

if (Fuzzy.IsInside(0, ABCD, dx) == true) mFarx = true; if (Fuzzy.IsInside(0, ABC, dx) == true) mMidx = true; if (Fuzzy.IsInside(1, ABC, dx) == true) mClosex = true; if (Fuzzy.IsInside(2, ABC, dx) == true) vclosex = true; if (Fuzzy.IsInside(3, ABC, dx) == true) closex = true; if (Fuzzy.IsInside(4, ABC, dx) == true) midx = true; if (Fuzzy.IsInside(1, ABCD, dx) == true) farx = true; if (Fuzzy.IsInside(2, ABCD, v) == true) mFastv = true; if (Fuzzy.IsInside(5, ABC, v) == true) mMidv = true; if (Fuzzy.IsInside(6, ABC, v) == true) mSlowv = true; if (Fuzzy.IsInside(7, ABC, v) == true) vslowv = true; if (Fuzzy.IsInside(8, ABC, v) == true) slowv = true; if (Fuzzy.IsInside(9, ABC, v) == true) midv = true; if (Fuzzy.IsInside(3, ABCD, v) == true) fastv = true; int j = 0; #region mFarx //

if (mFarx == true & mFastv == true) {

fsum[j] = rules[0, 0];

var mfx = Fuzzy.Membership(0, ABCD, dx); var mfv = Fuzzy.Membership(2, ABCD, v);

falpha[j] = Math.Min(Fuzzy.Membership(0, ABCD, dx), Fuzzy.Membership(2,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABCD, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(2, ABCD, v)); }

if (mFarx == true & mMidv == true)

{

fsum[j] = rules[0, 1];

var mfX = Fuzzy.Membership(0, ABCD, dx); var mfv = Fuzzy.Membership(5, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(0, ABCD, dx), Fuzzy.Membership(5,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABCD, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(5, ABC, v)); }

if (mFarx == true & mSlowv == true) {

fsum[j] = rules[0, 2];

var mfx = Fuzzy.Membership(0, ABCD, dx); var mfv = Fuzzy.Membership(6, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(0, ABCD, dx), Fuzzy.Membership(6,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABCD, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(6, ABC, v)); }

if (mFarx == true & vslowv == true) {

fsum[j] = rules[0, 3];

var mfx = Fuzzy.Membership(0, ABCD, dx); var mfv = Fuzzy.Membership(7, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(0, ABCD, dx), Fuzzy.Membership(7,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABCD, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(7, ABC, v)); }

if (mFarx == true & slowv == true) {

fsum[j] = rules[0, 4];

var mfx = Fuzzy.Membership(0, ABCD, dx); var mfv = Fuzzy.Membership(8, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(0, ABCD, dx), Fuzzy.Membership(8,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABCD, dx)); fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(8, ABC, v));

}

if (mFarx == true & midv == true)

{

fsum[j] = rules[0, 5];

var mfX = Fuzzy.Membership(0, ABCD, dx); var mfv = Fuzzy.Membership(9, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(0, ABCD, dx), Fuzzy.Membership(9,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABCD, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(9, ABC, v)); }

if (mFarx == true & fastv == true) {

fsum[j] = rules[0, 6];

var mfx = Fuzzy.Membership(0, ABCD, dx); var mfv = Fuzzy.Membership(3, ABCD, v);

falpha[j] =Math.Min(Fuzzy.Membership(0, ABCD, dx), Fuzzy.Membership(3,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABCD, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(3, ABCD, v)); }

//

#endregion #region mMidx

//

if (mMidx == true & mFastv == true) {

fsum[j] = rules[1, 0];

falpha[j] = Math.Min(Fuzzy.Membership(0, ABC, dx), Fuzzy.Membership(2,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(2, ABCD, v)); }

if (mMidx == true & mMidv == true) {

fsum[j] = rules[1, 1];

falpha[j] = Math.Min(Fuzzy.Membership(0, ABC, dx), Fuzzy.Membership(5,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(5, ABC, v)); I

if (mMidx == true & mSlowv == true) I

fsum[j] = rules[1, 2];

falpha[j] = Math.Min(Fuzzy.Membership(0, ABC, dx), Fuzzy.Membership(6,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(6, ABC, v)); I

if (mMidx == true & vslowv == true) I

fsum[j] = rules[1, 3];

falpha[j] = Math.Min(Fuzzy.Membership(0, ABC, dx), Fuzzy.Membership(7,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(7, ABC, v)); I

if (mMidx == true & slowv == true) I

fsum[j] = rules[1, 4];

falpha[j] =Math.Min(Fuzzy.Membership(0, ABC, dx), Fuzzy.Membership(8,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(8, ABC, v)); I

if (mMidx == true & midv == true)

I

fsum[j] = rules[1, 5];

falpha[j] = Math.Min(Fuzzy.Membership(0, ABC, dx), Fuzzy.Membership(9,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(9, ABC, v)); I

if (mMidx == true & fastv == true) I

falpha[j] = Math.Min(Fuzzy.Membership(0, ABC, dx), Fuzzy.Membership(3,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(0, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(3, ABCD, v)); }

//

#endregion #region mClosex

//

if (mClosex == true & mFastv == true) {

fsum[j] = rules[2, 0];

falpha[j] = Math.Min(Fuzzy.Membership(1, ABC, dx), Fuzzy.Membership(2,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(2, ABCD, v)); }

if (mClosex == true & mMidv == true)

{

fsum[j] = rules[2, 1];

falpha[j] = Math.Min(Fuzzy.Membership(1, ABC, dx), Fuzzy.Membership(5,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(5, ABC, v)); }

if (mClosex == true & mSlowv == true) {

fsum[j] = rules[2, 2];

falpha[j] =Math.Min(Fuzzy.Membership(1, ABC, dx), Fuzzy.Membership(6,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(6, ABC, v)); }

if (mClosex == true & vslowv == true) {

falpha[j] = Math.Min(Fuzzy.Membership(1, ABC, dx), Fuzzy.Membership(7,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(7, ABC, v)); I

if (mClosex == true & slowv == true) I

fsum[j] = rules[2, 3];

falpha[j] = Math.Min(Fuzzy.Membership(1, ABC, dx), Fuzzy.Membership(8,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(8, ABC, v)); I

if (mClosex == true & midv == true)

I

fsum[j] = rules[2, 4];

falpha[j] = Math.Min(Fuzzy.Membership(1, ABC, dx), Fuzzy.Membership(9,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(9, ABC, v)); I

if (mClosex == true & fastv == true) I

fsum[j] = rules[2, 4];

falpha[j] = Math.Min(Fuzzy.Membership(1, ABC, dx), Fuzzy.Membership(3,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(3, ABCD, v)); I

//

#endregion #region vclosex

//

if (vclosex == true & mFastv == true) I

fsum[j] = rules[3, 0];

var mfx = Fuzzy.Membership(2, ABC, dx); var mfv = Fuzzy.Membership(2, ABCD, v);

falpha[j] = Math.Min(Fuzzy.Membership(2, ABC, dx), Fuzzy.Membership(2,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(2, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(2, ABCD, v)); }

if (vclosex == true & mMidv == true) {

fsum[j] = rules[3, 1];

var mfx = Fuzzy.Membership(2, ABC, dx); var mfv = Fuzzy.Membership(5, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(2, ABC, dx), Fuzzy.Membership(5,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(2, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(5, ABC, v)); }

if (vclosex == true & mSlowv == true) {

fsum[j] = rules[3, 2];

var mfx = Fuzzy.Membership(2, ABC, dx); var mfv = Fuzzy.Membership(6, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(2, ABC, dx), Fuzzy.Membership(6,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(2, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(6, ABC, v)); }

if (vclosex == true & vslowv == true) {

fsum[j] = rules[3, 3];

var mfx = Fuzzy.Membership(2, ABC, dx); var mfv = Fuzzy.Membership(7, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(2, ABC, dx), Fuzzy.Membership(7,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(2, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(7, ABC, v)); }

if (vclosex == true & slowv == true) {

var mfx = Fuzzy.Membership(2, ABC, dx); var mfv = Fuzzy.Membership(8, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(2, ABC, dx), Fuzzy.Membership(8,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(2, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(8, ABC, v)); I

if (vclosex == true & midv == true)

I

fsum[j] = rules[3, 5];

var mfx = Fuzzy.Membership(2, ABC, dx); var mfv = Fuzzy.Membership(9, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(2, ABC, dx), Fuzzy.Membership(9,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(2, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(9, ABC, v)); I

if (vclosex == true & fastv == true) I

var mfx = Fuzzy.Membership(2, ABC, dx); var mfv = Fuzzy.Membership(3, ABCD, v); fsum[j] = rules[3, 6];

falpha[j] = Math.Min(Fuzzy.Membership(2, ABC, dx), Fuzzy.Membership(3,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(2, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(3, ABCD, v)); I

//

#endregion #region Closex

//

if (closex == true & mFastv == true) I

fsum[j] = rules[4, 0];

var mfx = Fuzzy.Membership(3, ABC, dx); var mfv = Fuzzy.Membership(2, ABCD, v);

falpha[j] =Math.Min(Fuzzy.Membership(3, ABC, dx), Fuzzy.Membership(2,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(3, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(2, ABCD, v)); I

if (closex == true & mMidv == true)

I

fsum[j] = rules[4, 1];

var mfx = Fuzzy.Membership(3, ABC, dx); var mfv = Fuzzy.Membership(5, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(3, ABC, dx), Fuzzy.Membership(5,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(3, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(5, ABC, v)); I

if (closex == true & mSlowv == true) I

fsum[j] = rules[4, 2];

var mfx = Fuzzy.Membership(3, ABC, dx); var mfv = Fuzzy.Membership(6, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(3, ABC, dx), Fuzzy.Membership(6,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(3, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(6, ABC, v)); I

if (closex == true & vslowv == true) I

fsum[j] = rules[4, 3];

var mfx = Fuzzy.Membership(3, ABC, dx); var mfv = Fuzzy.Membership(7, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(3, ABC, dx), Fuzzy.Membership(7,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(3, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(7, ABC, v)); I

if (closex == true & slowv == true) I

fsum[j] = rules[4, 4];

var mfx = Fuzzy.Membership(3, ABC, dx); var mfv = Fuzzy.Membership(8, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(3, ABC, dx), Fuzzy.Membership(8,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(3, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(8, ABC, v)); I

if (closex == true & midv == true)

I

fsum[j] = rules[4, 4];

var mfx = Fuzzy.Membership(3, ABC, dx); var mfv = Fuzzy.Membership(9, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(3, ABC, dx), Fuzzy.Membership(9,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(3, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(9, ABC, v)); I

if (closex == true & fastv == true) I

var mfx = Fuzzy.Membership(3, ABC, dx); var mfv = Fuzzy.Membership(3, ABCD, v); fsum[j] = rules[4, 4];

falpha[j] = Math.Min(Fuzzy.Membership(3, ABC, dx), Fuzzy.Membership(3,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(3, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(3, ABCD, v)); I

//

#endregion #region Midx

//

if (midx == true & mFastv == true) I

fsum[j] = rules[5, 0];

var mfx = Fuzzy.Membership(4, ABC, dx); var mfv = Fuzzy.Membership(2, ABCD, v);

falpha[j] = Math.Min(Fuzzy.Membership(4, ABC, dx), Fuzzy.Membership(2,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(4, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(2, ABCD, v)); I

if (midx == true & mMidv == true)

I

var mfx = Fuzzy.Membership(4, ABC, dx); var mfv = Fuzzy.Membership(5, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(4, ABC, dx), Fuzzy.Membership(5,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(4, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(5, ABC, v)); I

if (midx == true & mSlowv == true) I

fsum[j] = rules[5, 2];

var mfx = Fuzzy.Membership(4, ABC, dx); var mfv = Fuzzy.Membership(6, ABC, v);

falpha[j] =Math.Min(Fuzzy.Membership(4, ABC, dx), Fuzzy.Membership(6,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(4, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(6, ABC, v)); I

if (midx == true & vslowv == true) I

fsum[j] = rules[5, 3];

var mfx = Fuzzy.Membership(4, ABC, dx); var mfv = Fuzzy.Membership(7, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(4, ABC, dx), Fuzzy.Membership(7,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(4, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(7, ABC, v)); I

if (midx == true & slowv == true) I

fsum[j] = rules[5, 4];

var mfx = Fuzzy.Membership(4, ABC, dx); var mfv = Fuzzy.Membership(8, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(4, ABC, dx), Fuzzy.Membership(8,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(4, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(8, ABC, v)); I

if (midx == true & midv == true)

fsum[j] = rules[5, 5];

var mfx = Fuzzy.Membership(4, ABC, dx); var mfv = Fuzzy.Membership(9, ABC, v);

falpha[j] =Math.Min(Fuzzy.Membership(4, ABC, dx), Fuzzy.Membership(9,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(4, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(9, ABC, v)); I

if (midx == true & fastv == true) I

fsum[j] = rules[5, 6];

var mfx = Fuzzy.Membership(4, ABC, dx); var mfv = Fuzzy.Membership(3, ABCD, v);

falpha[j] = Math.Min(Fuzzy.Membership(4, ABC, dx), Fuzzy.Membership(3,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(4, ABC, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(3, ABCD, v)); I

//

#endregion #region Farx

//

if (farx == true & mFastv == true) I

fsum[j] = rules[6, 0];

var mfx = Fuzzy.Membership(1, ABCD, dx); var mfv = Fuzzy.Membership(2, ABCD, v);

falpha[j] = Math.Min(Fuzzy.Membership(1, ABCD, dx), Fuzzy.Membership(2,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABCD, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(2, ABCD, v)); I

if (farx == true & mMidv == true)

I

fsum[j] = rules[6, 1];

var mfx = Fuzzy.Membership(1, ABCD, dx); var mfv = Fuzzy.Membership(5, ABCD, v);

falpha[j] = Math.Min(Fuzzy.Membership(1, ABCD, dx), Fuzzy.Membership(5,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABCD, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(5, ABC, v)); I

if (farx == true & mSlowv == true) I

fsum[j] = rules[6, 2];

var mfx = Fuzzy.Membership(1, ABCD, dx); var mfv = Fuzzy.Membership(6, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(1, ABCD, dx), Fuzzy.Membership(6,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABCD, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(6, ABC, v)); I

if (farx == true & vslowv == true) I

fsum[j] = rules[6, 3];

var mfx = Fuzzy.Membership(1, ABCD, dx); var mfv = Fuzzy.Membership(7, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(1, ABCD, dx), Fuzzy.Membership(7,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABCD, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(7, ABC, v)); I

if (farx == true & slowv == true) I

fsum[j] = rules[6, 4];

var mfx = Fuzzy.Membership(1, ABCD, dx); var mfv = Fuzzy.Membership(8, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(1, ABCD, dx), Fuzzy.Membership(8,

ABC, v)); j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABCD, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(8, ABC, v)); I

if (farx == true & midv == true)

I

fsum[j] = rules[6, 5];

var mfx = Fuzzy.Membership(1, ABCD, dx); var mfv = Fuzzy.Membership(9, ABC, v);

falpha[j] = Math.Min(Fuzzy.Membership(1, ABCD, dx), Fuzzy.Membership(9, ABC, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABCD, dx));

fuzzyChart2.Series[MvxsM].Points.AddXY(v, Fuzzy.Membership(9, ABC, v)); }

if (farx == true & fastv == true) {

fsum[j] = rules[6, 6];

var mfx = Fuzzy.Membership(1, ABCD, dx); var mfv = Fuzzy.Membership(3, ABCD, v);

falpha[j] = Math.Min(Fuzzy.Membership(1, ABCD, dx), Fuzzy.Membership(3,

ABCD, v));

j++;

fuzzyChart1.Series["dxs"].Points.AddXY(dx, Fuzzy.Membership(1, ABCD, dx));

fuzzyChart2.Series["vxs"].Points.AddXY(v, Fuzzy.Membership(3, ABCD, v)); }

//

#endregion

double[,] alpha_sum = new double[j, 2]; double[,] C = new double[j, 2];

//^здание HoBoro массива данных (зн-й напряжения\ф-и принадлежнocти for (int jj = 0; jj < j; jj++)

{

alpha_sum[jj, 0] = fsum[jj];

alpha_sum[jj, 1] = falpha[jj];

}

for (int jj = 0; jj < fsum.Length; jj++) fsum[jj] = 0; for (int jj = 0; jj < falpha.Length; jj++) falpha[jj] = 0;

for (int ii = 0; ii < j; ii++) {

C[ii, 0] = alpha_sum[ii, 0];

C[ii, 1] = alpha_sum[ii, 1]; }

usum1 = 0;

usum2 = 0; for (int jj = 0; jj < j; jj++)

{

usum1 += (C[jj, 0] * C[jj, 1]);

usum2 += C[jj, 1]; }

u = (usum1 / usum2);

//Обнуление массива данных for (int jj = 0; jj < j; jj++)

alpha_sum[jj, 0] = 0; alpha_sum[jj, 1] = 0;

Cjj, 0] = 0;

C[jj, 1] = 0; }

#endregion

Am = -Ku * u + Amax; if (u < 0) u = 0; if (u > 10) u = 10;

if (u < 5)

{

x = x + ((x1 + (2 * x2) + (2 * x3) + x4) / 6); v = v + ((v1 + (2 * v2) + (2 * v3) + v4) / 6); p1 = p1 + ((p11 + (2 * p12) + (2 * p13) + p14) / 6);

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