Головна » Рішення » Реалізовані проєкти » Блок автоматичного керування регенерацією фільтрів
03.10.2011
Постановка задачі
Установка фільтрації повітря застосовується у складі асфальтобетонного заводу та складається з десяти однакових фільтрувальних секцій. Регенерація фільтрів здійснюється методом продування при досягненні встановленого максимального перепаду тиску. Перепад тиску визначається різницею тиску повітря на вході та виході фільтрувальної установки. Досягнення максимального перепаду тиску фіксується одним дискретним сигналом. Поява цього сигналу повинна викликати очищення фільтрувальних секцій. При цьому очищенню повинна бути піддана секція, з моменту продування якої пройшло максимум часу. Після кожної продування повинна витримуватися пауза, після якої знову дозволяється аналіз стану дискретного сигналу про максимальний перепад тиску. Значення тривалості продування та паузи мають бути змінними. Вони визначаються параметрами асфальтобетонного заводу та умовами експлуатації.
Реалізація
Якщо для зберігання часу продування і паузи використовувати змінні типу Word (це 16 біт) і відлік часу вести в секундах, то отримуємо широкий діапазон для регулювання паузи і часу продування. Для підрахунку секунд також можна використовувати змінну типу Word, що зберігається. Наступна необхідна змінна повинна містити поточний номер останньої продутої фільтрувальної секції. Ці останні дві змінні забезпечують вирішення питання продування наступної секції, з моменту продування якої пройшло максимум часу (навіть якщо електроживлення відключалося).
Усього маємо три стани:
Для фіксації цих станів достатньо двох бітових змінних.
Оскільки циклічне виконання в програмовних логічних контролерах (PLC) та інтелектуальних логічних реле організовано власними засобами цих пристроїв, необхідна лише програма-додаток з виконанням “на прохід”.
Враховуючи викладене вище, можемо відобразити процес автоматичного керування регенерацією фільтрів як блок-схеми алгоритму (див. малюнок наприкінці). Оскільки час вважається завжди, то цей блок повинен бути в основній гілки (до розгалуження або після того, як розпаралелені гілки знову сходяться в одну). Число основних гілок блок-схеми визначається кількістю станів фільтрувальної установки. Ще потрібні гілки запуску/зупинки продування та запуску/закінчення паузи. Після припинення продування відразу ж починається відлік паузи, тож для оптимізації ці дві гілки можна замінити однією.
Якщо для вирішення цього завдання використовувати інтелектуальне реле, то для підрахунку чаових інтервалів доведеться використовувати вбудовані таймери. Для встановлення інших значень часу потрібно змінювати конфігурацію таймерів, що незручно. З іншого боку, зниження вартості в інтелектуальних реле застосовуються джерела вторинного електроживлення без гальванічної розв'язки, що різко знижує надійність роботи цих пристроїв у мережах первинного електроживлення з нестабільними параметрами. Використання інтелектуального реле з електроживленням 24
Список змінних у символьному вигляді (у середовищі програмування TwidoSoft він доступний в Symbol Editor) має вигляд:
Symbol | Address | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
BLINC_1S BLOW_TAG BLOW_TIME CLOCK_1S COLD_START CURRENT_SECTION FIRST_SCAN MAX_PRESSURE MAX_SECTION_TAG PAUSE_TIME PAUSE_TAG SECTION_10_BLOWING SECTION_1_BLOWING SECTION_2_BLOWING SECTION_3_BLOWING SECTION_4_BLOWING SECTION_5_BLOWING SECTION_6_BLOWING SECTION_7_BLOWING SECTION_8_BLOWING SECTION_9_BLOWING TIME_COUNTER WARM_START |
%M9 %M10 %MW17 %S6 %S0 %MW15 %S13 %I0.0 %M12 %MW16 %M11 %Q0.9 %Q0.0 %Q0.1 %Q0.2 %Q0.3 %Q0.4 %Q0.5 %Q0.6 %Q0.7 %Q0.8 %MW14 %S1 |
Крім зазначених вище, у списку присутні додаткові бітові системні змінні, опис призначення яких доступний у середовищі Help програмування TwidoSoft. Ще введена бітова змінна BLINC_1S для виключення інкремента TIME_COUNTER на кожному проході програми-додатку, оскільки одиниця повинна додаватися до вмісту TIME_COUNTER лише один раз на секунду.
Мова програмування Instruction List (IL) дозволяє використовувати імена змінних символьному вигляді. Це значно покращує розуміння програми-додатку.
Текст програми-додатку мовою IL у символьному вигляді наведено нижче.
0 |
LD |
FIRST_SCAN |
1 |
OR |
COLD_START |
2 | OR | WARM_START |
3 | R | BLOW_TAG |
4 | R | PAUSE_TAG |
5 | R | MAX_SECTION_TAG |
6 |
[TIME_COUNTER := 0] |
|
7 |
[CURRENT_SECTION := 0] |
|
8 | SR0 | |
9 | LD | [TIME_COUNTER > 30000] |
10 |
[TIME_COUNTER := 0] |
|
—- |
(FOR TIME COUNTING *) |
|
11 |
LD |
BLINK_1S |
12 |
ANDN |
CLOCK_1S |
13 |
R |
BLINK_1S |
14 |
LDN |
BLINK_1S |
15 | AND | CLOCK_1S |
16 |
S |
BLINK_1S |
17 |
[INC TIME_COUNTER] |
|
—- |
(* START FILTER BLOWING *) |
|
18 |
LDN |
BLOW_TAG |
19 |
ANDN |
PAUSE_TAG |
20 |
AND |
MAX_PRESSURE |
21 |
S |
BLOW_TAG |
22 |
[TIME_COUNTER := 0] |
|
23 |
SR1 |
|
24 |
LDN |
BLOW_TAG |
25 |
AND |
PAUSE_TAG |
26 |
AND |
[TIME_COUNTER > PAUSE_TIME] |
27 |
R |
PAUSE_TAG |
28 |
LD |
BLOW_TAG |
29 |
AND |
[TIME_COUNTER > BLOW_TIME] |
30 |
R |
BLOW_TAG |
31 |
S |
PAUSE_TAG |
32 |
[TIME_COUNTER := 0] |
|
33 |
SR0 |
|
34 |
END |
|
—- |
(* END MAIN PROGRAM *) |
|
—- |
(* SUBROUTINES *) |
|
—- |
(* SUBROUTINE OF RESET *) |
|
35 |
SR0: |
|
36 |
LD |
1 |
37 |
R |
MAX_SECTION_TAG |
38 |
R |
SECTION_1_BLOWING |
39 |
R |
SECTION_2_BLOWING |
40 |
R |
SECTION_3_BLOWING |
41 |
R |
SECTION_4_BLOWING |
42 |
R |
SECTION_5_BLOWING |
43 | R |
SECTION_6_BLOWING |
44 |
R |
SECTION_7_BLOWING |
45 |
R |
SECTION_8_BLOWING |
46 |
R |
SECTION_9_BLOWING |
47 |
R |
SECTION_10_BLOWING |
48 |
RET |
|
—- | (* SUBROUTINE OF BLOWING SET *) | |
49 |
SR1: |
|
50 |
LD |
[CURRENT_SECTION > 9] |
51 |
[CURRENT_SECTION := 1] |
|
52 |
S |
MAX_SECTION_TAG |
53 |
LDN |
MAX_SECTION_TAG |
54 |
[INC CURRENT_SECTION] |
|
55 |
LD |
[CURRENT_SECTION = 1] |
56 |
S |
SECTION_1_BLOWING |
57 |
LD |
[CURRENT_SECTION = 2] |
58 |
S |
SECTION_2_BLOWING |
59 |
LD |
[CURRENT_SECTION = 3] |
60 |
S |
SECTION_3_BLOWING |
61 |
LD |
[CURRENT_SECTION = 4] |
62 |
S |
SECTION_4_BLOWING |
63 |
LD |
[CURRENT_SECTION = 5] |
64 |
S |
SECTION_5_BLOWING |
65 |
LD |
[CURRENT_SECTION = 6] |
66 |
S |
SECTION_6_BLOWING |
67 |
LD |
[CURRENT_SECTION = 7] |
68 |
S |
SECTION_7_BLOWING |
69 |
LD |
[CURRENT_SECTION = 8] |
70 |
S |
SECTION_8_BLOWING |
71 |
LD |
[CURRENT_SECTION = 9] |
72 |
S |
SECTION_9_BLOWING |
73 |
LD |
[CURRENT_SECTION = 10] |
74 |
S |
SECTION_10_BLOWING |
75 |
RET |
|
—- |
|
Загальний алгоритм керування регенерацією фільтрів: