Диплом (1228345), страница 9
Текст из файла (страница 9)
В ходе выполнения работы по автоматизации электропривода цикла классификации насос-гидроциклонной установки была подтверждена актуальность направления по совершенствованию производственных и технологических процессов путем внедрения современных высокоэффективных и экономичных систем автоматического управления электроприводом переменного тока на базе асинхронного двигателя с короткозамкнутым ротором с применением принципов частотного регулирования скорости вращения ПИД-регулятором по заданной уставке давления гидроциклона и уровня емкости зумпфа.
Применение системы пуска и управления электроприводом с применением принципов частотного регулирования угловой скорости двигателя решает технологическую задачу по плавному разгону и поддержанию требуемой частоты вращения в соответствии с сигналом обратной связи.
В основной части произведен обзор и анализ существующих систем электроприводов регулирования поддержания необходимого давления на насос-гидроциклонных установках. Описан технологический процесс с приведением технологической схемы. Были разработаны функциональная, принципиальная схемы автоматического регулирования заданного давления. Был проведен расчет и выбор основного оборудования для системы автоматического регулирования. Проведенные в выпускной квалификационной работе исследования по применению ПИД-регулирования позволяют сделать вывод о том, что в данной системе этот способ является наиболее простым и надёжным способом подержания технологического параметра на заданном уровне. Автоматизация позволит обеспечить наилучшую динамику системы, легкость ведения и контроля режимов технологического процесса, а также снижение энергопотребления.
Список использованных источников
-
Поваров, А. И. Гидроциклоны на обогатительных фабриках / А. И. Поваров. – М.: Недра, 1978. – 232 с.
-
Краткое руководство по эксплуатации гидроциклонов CAVEX [Текст] – г. Москва
-
Двигатели серии АИР основного исполнения [Электронный ресурс] – Режим доступа http://www.mez.by/dvigatel/air.shtml
-
Чиликин, М.Г. Общий курс электропривода [Текст] / М.Г. Чиликин, А.С. Сандлер - М.: Энергоиздат, 1981 г. - 576 с.
-
Драчев Г.И. Теория электропривода[Текст]: Учебное пособие. / Челябинск. Изд-во ЮУрГУ. Ч. 1. 2005. 209 с.
-
Соколовский, Г.Г. Электроприводы переменного тока с частотным регулированием [Текст] / Г.Г. Соколовский - М.: Издательский центр «Академия», 2006г.
-
Преимущества частотного регулирования электродвигателя [Электронный ресурс]. – Режим доступа http://privod-el.ru/prim.html
-
Терехов, В.М. Системы управления электроприводов [Текст] / Учебник для студ. высш. учеб. заведений / В.М. Терехов, О.И.Осипов; Под ред. В.М. Терехова. – М.:,Издательский центр «Академия», 2005. – 304 с.
-
Конспект лекций: Системы управления электроприводов. УГГУ. Карякин А.Л. 2009. – 80 с.
-
Инвертор общего применения. Инструкция. Toshiba TOSVERT VF-PS1 [Текст] – Москва, 2005г.
-
Одноканальный блок питания БП30Б-ДЗ-х. руководство по эксплуатации [Текст] – Москва
-
Модуль ввода аналоговый МВ110-224.8А. Руководство по эксплуатации [Текст] – Москва
-
Преобразователь давления измерительный ОВЕН ПД100. Краткая инструкция по эксплуатации [Текст] – Москва
-
Контроллер программируемый логический ПЛК160. Руководство по эксплуатации [Текст] – Москва
-
Программирование программируемых логических контроллеров ОВЕН ПЛК110 и ПЛК160. Руководство пользователя. Версия 1.9 [Текст] – Москва, 2010г.
-
Справочная система CoDeSys. Соответствующая CoDeSys V2.3.9.x
-
Ультразвуковое измерение уровня. Prosonic M FMU 40/41/42/43. Техническое руководство. [Текст] – Москва, 39 с.
Приложение А
Рисунок А.1 – Модель SCADA системы поддержания заданного давления на гидроциклонах
Рисунок А.2 Кадр регулирования частоты питающей сети поз. 65-1 ПИД-регулятором
Рисунок А.3 Кадр отчета программы ПЛК-160
Рисунок А.4 Кадр состояния датчиков поз. 65-1
Рисунок А.5 Кадр регулирования частоты питающей сети поз. 65-1 ПИД-регулятором
Рисунок А.6 Кадр настройки ПИД-регулирования двигателя поз. 65-1, 65-2
Приложение Б
Проект программы ОВЕН ПЛК-160
Глобальные переменные
VAR_GLOBAL CONSTANT
err_code_string: ARRAY[0..12] OF STRING[6] := 'нет', 'откл', 'ХС_Hi', 'ХС_Lo', 'много', 'мало',' КЗ', 'Обрыв', 'НетАЦП', 'Калибр';
END_VAR
VAR_GLOBAL
power: REAL := 0; (* текущая мощность на выходе регулятора *)
run_flag: BOOL := FALSE; (* Флаг входа в режим run *)
state: BYTE := 0; (* 0-останов, 1-работа *)
stop_flag: BOOL := TRUE; (* Флаг входа в режим stop *)
pid_regulator: APID_PWM_W2;
Pgidr: REAL := 0; (* Давление гидроциклона *)
FreqTosh: REAL := 0; (* ОС Тошиба *)
set_pid: SET_APID_PWM_W2; (*сам ПИД*)
sp_temp: REAL := 0; (* sp_temp временная уставка*)
flag_zumph: BOOL := FALSE; (* Флаг состояния зумфа *)
END_VAR
Программа
PROGRAM PLC_PRG
VAR – объявляем переменные
starting: BOOL := FALSE;
ton1: TON;
ton2: TON;
ton3: TON;
END_VAR
IF NOT starting THEN
(*установим флаг чтобы сюда больше не возвращаться*)
starting:=TRUE;
END_IF;
ton1(in:=NOT ton1.Q, pt:=t#200ms); (*цикл обновления индикации*)
IF ton1.Q THEN
IF state=0 THEN stop_indication(); END_IF
IF state=1 THEN run_indication(); END_IF
END_IF
ton2(in:=NOT ton2.Q, pt:=t#200ms); (*цикл вызова машины состояний*)
IF ton2.Q THEN
state_machine();
END_IF
ton3(in:=NOT ton3.Q, pt:=t#20ms); (*цикл рабочий*)
IF ton3.Q THEN
Pgidr:=AI_0*1;
FreqTosh:=AI_1*50;
power:=Y_TOSH*100;
IF flag_zumph AND(NOT DI_0 OR NOT DI_1)THEN (*Проверка состояния в зумфе*)
sp:= sp_temp;
flag_zumph:= FALSE;
END_IF
IF state=1 THEN run_programm(); END_IF
IF state=0 THEN Stop_program(); END_IF
END_IF
Машина состояний
PROGRAM state_machine
VAR CONSTANT
key_start: BYTE := 32; (* Пуск_стоп *)
key1: BYTE := 136;
key2: BYTE := 132;
END_VAR
VAR
err_chk: BOOL;
tm: TON;
fm: F_TRIG;
param_ptr:POINTER TO parameter_descriptor;
param_adr: POINTER TO REAL;
param_adr2: POINTER TO ARRAY[0..15] OF BYTE;
temp: REAL;
temp2: ARRAY [0..15] OF BYTE;
edit_power: Edit_FB;
key_up: BYTE := 136;
key_down: BYTE := 132;
END_VAR
err_chk:=get_err_chk(AI_0) OR get_err_chk(AI_1);
tm(in:=kbrd=key_start, pt:=t#1s);
IF tm.q AND state=0 THEN (*останов -> работа*)
IF err_chk THEN (*если авария датчиков*)
BeepForTimeUser(1000,1000);
RETURN;
END_IF
state:=1;
tm(in:=FALSE);
run_flag:=TRUE;
RETURN;
END_IF
IF (tm.q AND state=1) OR (err_chk AND state<>0) THEN (*работа -> останов по кнопке либо любой режим -> останов по аварии датчиков *)
state:=0;
tm(in:=FALSE);
stop_flag:=TRUE;
RETURN;
END_IF
edit_power(_up:=key_up, _down:=key_down, _kbrd:=kbrd, _min:=0.0, _MAX:=1.0,count:=sp);
Когда state=1 выполняется код
PROGRAM run_programm
VAR
END_VAR
IF mode_pid = FALSE THEN (*Просто ПИД*)
set_pid(setup:=run_flag, xp:=pid_xp, td:=pid_td, ti:=pid_ti, vpv:=1.0, inf:=0, fb:=ADR(pid_regulator));
pid_regulator(pv:=AI_0, pv_time:=AI_0_temp, sp:=sp, ramp:=FALSE, start_anr:=FALSE, y_man_set:=FALSE, y_manual:=0.0, pmax:=1.0, pmin:=0.0,y=>Y_TOSH);
END_IF
IF run_flag THEN (*что выполняется при входе в режим*)
run_flag:=FALSE;
END_IF
Когда state=0 выполняется код
PROGRAM Stop_program
VAR
END_VAR
IF stop_flag THEN (*что выполняется при входе в режим "Останов"*)
stop_flag:=FALSE;
END_IF
pid_regulator(pv:=AI_0, pv_time:=AI_0_temp, ramp:=FALSE, start_anr:=FALSE, y_man_set:=TRUE, y_manual:=0.0, pmax:=1.0, pmin:=0.0,y=>Y_TOSH);
Функция отображения в режиме Работа
FUNCTION run_indication : BOOL
VAR_INPUT
END_VAR
VAR
END_VAR
SetWorkScreenCount(2); - задаем 2 экрана
(*Экран 0*)
ClearScreen(0);
ShowString(0,0,0,'Част Работа Мщн');
IF DI_0 THEN
ShowString(0,5,1,'УрЗумфВ');
flag_zumph:=TRUE;
sp_temp:=sp; -сохраняем старое значение уставки
sp:=1.0;
END_IF;
IF DI_1 THEN
ShowString(0,5,1,'УрЗумфМ');
flag_zumph:=TRUE;
sp_temp:=sp;
sp:=0.5;
END_IF;
ShowReal(0,0,1,'%2.1f',FreqTosh);
ShowReal(0,13,1,'%2.0f',power);
IF pid_regulator.FAST_DSP THEN (*Если активен режим быстрого выхода на уставку*)
ShowString(0,12,1,'$A0');
END_IF
(*Экран 1*)
ClearScreen(1);
ShowString(1,0,0,'Ргид Работа Уст');
IF DI_0 THEN
ShowString(1,5,1,'УрЗумфВ');
END_IF;
IF DI_1 THEN
ShowString(1,5,1,'УрЗумфМ');
END_IF;
ShowReal(1,0,1,'%2.1f',Pgidr);
ShowReal(1,13,1,'%2.1f',sp);
Функция отображения в режиме Останов
FUNCTION stop_indication : BOOL
VAR_INPUT
END_VAR
VAR
END_VAR
SetWorkScreenCount(2);
(*Экран 0*)
ClearScreen(0);
ShowString(0,0,0,'Ргид Останов Уст');
IF NOT get_err_chk(AI_0)THEN
ShowReal(0,0,1,'%2.1f',Pgidr);
ELSE ShowString(0,0,1,err_code_string[get_error_code(AI_0)]);
END_IF;
ShowReal(0,13,1,'%2.1f',sp);
(*Экран 1*)
ClearScreen(1);
ShowString(1,0,0,'Част Останов Уст');
IF NOT get_err_chk(AI_1)THEN
ShowReal(1,0,1,'%2.1f',FreqTosh);
ELSE ShowString(1,0,1,err_code_string[get_error_code(AI_1)]);
END_IF;
ShowReal(1,13,1,'%2.1f',sp);
Функц. Блок для кнопок
FUNCTION_BLOCK Edit_FB
(*Для редактирования параметра*)
VAR CONSTANT
min_time_up: WORD := 10;