Форум программистов, компьютерный форум, киберфорум
Наши страницы
ФедосеевПавел
Войти
Регистрация
Восстановить пароль
Рейтинг: 1.00. Голосов: 1.

Создание программы управления двумя повышающими насосами на основе программируемого реле ОВЕН ПР100

Запись от ФедосеевПавел размещена 12.10.2019 в 23:18
Обновил(-а) ФедосеевПавел 13.10.2019 в 13:23

Создание программы управления двумя повышающими насосами на основе программируемого реле ОВЕН ПР100


ВВЕДЕНИЕ

Рассмотрим пример создания управляющей программы для работы системы подпитки с двумя повышающими насосами.
Т.к. это учебный пример, то выбор оборудования в некоторой мере — условен. Выберем новое на сегодняшний день программируемое реле ОВЕН ПР100-230.0804.0. Количество и тип его входов и выходов, а также возможности самого реле в плане вычислений, позволяют решить поставленную задачу. Также способ достижения равномерности износа насосов выберем упрощённым — ротация будет производиться по каждому запросу подпитки, а не по реальной наработке.
Решение будет создаваться в среде OWEN Logic версия 1.14.194.18756.
Файлы для OWEN Logic прикладывать нет смысла, т.к. эта среда бурно развивается и не всегда осуществляется поддержка ранних форматов собственных файлов (так я потерял наработки для версии 1.7).

1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ

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

Программа управления двумя повысительными насосами должна выполнять:
1. Включение насоса после замыкания контакта датчика-реле понижения давления в системе.
2. Чередование (ротацию) насосов для равномерного износа — чередование насосов при каждом запросе подпитки.
3. Контроль работоспособности включённого насоса по датчику-реле протока (датчику перепада давления на насосах или другому типу датчика протока). При отсутствии протока в течение заданного времени, насос признаётся неисправным, отключается, включается аварийная (световая и звуковая) сигнализации.
4. Аварийный ввод резерва (АВР). В случае неисправности одного из насосов, он исключается из дальнейшей работы, по запросу подпитки включается насос, оставшийся в рабочем состоянии.
5. Сброс аварийного состояния насосов осуществляется кнопкой «СБРОС» со щита управления.
6. Для каждого насоса предусмотрена электрическая схема с возможностью автоматического и ручного управления (переключатель «Р-О-А», кнопки «ПУСК» и «СТОП»).
7. По состоянию переключателей «Р-О-А» программа должна определять исключение одного или обоих насосов из автоматического управления. Если один из насосов переведён в положение отличное от «А», то программа продолжает автоматическую работу с оставшимся насосом, при этом выведенный из работы насос рассматривается как аварийный, но без выдачи сигнала «АВАРИЯ» — т.е. вступает в действие АВР.

Схематично подключение к ПР будет таким
Нажмите на изображение для увеличения
Название: Pic_01_01.PNG
Просмотров: 68
Размер:	48.5 Кб
ID:	5626

2. АНАЛИЗ

Начинаем с декомпозиции задачи.
На главном холсте создадим единственный макрос «повысительные насосы» (UpperPumps), входы и выходы которого и подключим к физическим контактам программируемого реле. Других элементов на главном холсте не будет. Это сделано для удобства редактирования программы без привязки к аппаратной части и для возможности повторного использования на других программируемых реле производства ОВЕН.
Главный холст будет выглядеть
Нажмите на изображение для увеличения
Название: Pic_02_01.PNG
Просмотров: 84
Размер:	44.3 Кб
ID:	5615

Рассмотрим возможное содержимое макроса UpperPumps. Очевидно, что он состоит из трёх крупных блоков — два однотипных блока «состояние насоса» и координирующая их «схема управления».
Таким образом, задача распалась на две соответствующие подзадачи.
Повторяющийся код, описывающий состояние отдельного насоса, удобно заключить в макрос «состояние насоса» (Pump) и дважды разместить его на холсте. Получается, что в состав макроса «повысительные насосы» (UpperPumps) будут входить два однотипных макроса «состояние насоса» (Pump) и схема управления.

Нельзя не упомянуть существующий в онлайн-библиотеке ОВЕН такого макроса как ActMech — «состояние насоса». Это сложный макрос, предназначенный для построения систем управления насосными группами.
http://ftp-ow.owen.ru/softupdate/OWE...os/Additional/
http://ftp-ow.owen.ru/softupdate/OWE...Mech_v1.05.pdf
Т.к. я с ним ещё не разобрался, то использую собственные более простые наработки.

3. МАКРОС «СОСТОЯНИЕ НАСОСА» — Pump

Этот макрос формирует выход «Пуск/Останов» и состояние насоса «Исправен/Аварийный»:
- по запросу включает или отключает насос;
- по наличию протока следит за исправностью насоса;
- при неисправности насоса — отключает его, устанавливает в лог.1. сигнал «Авария насоса»;
- по сигналу «Сброс аварии» — сбрасывается состояние «Авария насоса».
Кроме дискретных входных сигналов, на вход в данный блок (макрос) поступают также и три параметра (по аналогии с параметрами ОВЕН САУ-У):
- время задержки включения насоса после поступления сигнала «Запрос»;
- задержка включения контроля протока после формирования сигнала «Пуск насоса»;
- длительность допустимых «провалов» от датчика протока.

Названия входов и выходов макроса сделаем следующими:
Контакт
Обозначение
 Назначение
I1Reset Сброс аварии
I2Start Запрос «Пуск насоса»
I3Stream Датчик протока
I4T_delay_start Задержка включения насоса, с
I5T_alarm_start Задержка включения контроля протока после пуска насоса, с
I6T_alarm_delay Длительность допустимых провалов датчика протока, с
Q1Alarm Авария насоса
Q2Start Пуск насоса

Начнём с формирования состояний Пуск/Останов. Пуск и останов насоса управляются от входа «Запрос», но очевидно, что аварийный насос не должен включаться. На основе входов «Запрос», «Авария насоса» и выхода «Пуск» сформируем таблицу истинности
Запрос
Авария
насоса
 
Пуск
насоса
Примечание
00 0"Останов", т.к. нет "Запроса"
01 0"Останов", т.к. нет "Запроса"
10 1"Пуск", т.к. есть и "Запрос" и "Исправен"
11 0"Останов", т.к. насос "Аварийный"

В этом случае функция очевидна и использовать карты Карно нет необходимости.
Т.к. OWEN Logic разумно не позволяет соединять выход макроса со входом элемента, а сигнал «Авария насоса» является выходным для всего блока (макроса), то для формирования «Авария насоса» поставим на холст RS-триггер (с приоритетом сброса).
Также сразу учтём задержку включения насоса — для этого масштабируем входную переменную и запишем её в таймер задержки включения. Получим схему
Нажмите на изображение для увеличения
Название: Pic_03_01.png
Просмотров: 68
Размер:	131.9 Кб
ID:	5616

Соберём схему формирования сигнала «Авария насоса» на RS-триггере.
Сигнал «Зафиксировать аварию» формируется при наступлении всех событий одновременно:
1) насос включён,
2) после включения прошло время задержки контроля при пуске,
3) протока нет более времени длительности допустимых провалов.
Очевидно, что событие 2 включает в себя и событие 1. Событие 2 формируется из события 1 через триггер задержки включения. Событие 3 формируется из сигнала «Проток», проходящего через таймер задержки отключения. Таким образом, в составлении таблицы истинности участвует два входных параметра — «разрешён анализ протока» и «проток отсутствует более допустимого времени».
Разрешён
анализ протока
Проток
отсутствует долго
 
Зафиксировать
аварию
00 0
01 0
10 1
11 0
И в этом случае функция также очевидна.
Итак, при помощи двух задержек формируем сигналы «Разрешён анализ» и «Проток отсутствует долго». Далее из этих сигналов формируем сигнал «Зафиксировать аварию», которую подадим на вход «S» RS-триггера «Авария насоса».
Сброс этого триггера осуществим от сигнала «Сброс аварии».
При доработке программы немного перемещаем компоненты. Получаем схему
Нажмите на изображение для увеличения
Название: Pic_03_02.png
Просмотров: 68
Размер:	108.8 Кб
ID:	5617

При проверке в симуляторе видно, что даже в состоянии «Авария насоса» отсчёт времени в таймерах происходит при подаче сигнала «Запрос». Сделаем вход на таймер задержки включения насоса равным нулю при состоянии «Авария насоса» независимо от состояния входа «Запрос».
Также запомним и в вышестоящем макросе «ПОВЫСИТЕЛЬНЫЕ НАСОСЫ» UpperPumps примем меры для предотвращения невозможности установить состояние «Авария насоса» при случайном или преднамеренном «залипании» входного сигнала «Сброс аварии» — ко входу Reset подключим триггер переднего фронта.
В итоге получаем схему, которую и сохраним в виде макроса с названием «Pump».
Нажмите на изображение для увеличения
Название: Pic_03_03.png
Просмотров: 72
Размер:	151.9 Кб
ID:	5618

4. МАКРОС «ПОВЫСИТЕЛЬНЫЕ НАСОСЫ» — UpperPumps

Макрос немного сложнее макроса «состояние насоса» поэтому при его создании вместо множества перекрёстных линий связи будут использоваться переменные.

Итак, на входе в макрос имеются следующие входные сигналы:
- Насос 1 в режиме «АВТОМАТИЧЕСКИЙ»;
- Насос 2 в режиме «АВТОМАТИЧЕСКИЙ»;
- Сброс аварии;
- запрос включения насоса;
- датчик протока.
Кроме дискретных входных сигналов, на вход в данный блок (макрос) поступают также и три параметра (по аналогии с параметрами ОВЕН САУ-У):
- время задержки включения насоса после поступления сигнала «Запрос»;
- задержка включения контроля протока после формирования сигнала «Пуск насоса»;
- длительность допустимых «провалов» от датчика протока.

Названия входов и выходов макроса сделаем следующими:
Контакт
Обозначение
 Назначение
I1InAuto1 Насос 1 в режиме «АВТОМАТИЧЕСКИЙ»
I2InAuto2 Насос 2 в режиме «АВТОМАТИЧЕСКИЙ»
I3Reset Сброс аварии
I4Request Запрос включения насоса
I5Stream Датчик протока
I6T_delay_start Задержка включения насоса, с
I7T_alarm_start Задержка включения контроля протока после пуска насоса, с
I8T_alarm_delay Длительность допустимых провалов датчика протока, с
Q1Pump_1 Пуск насоса 1
Q2Pump_1 Пуск насоса 2
Q3Alarm_1 Авария насоса 1
Q4Alarm_2 Авария насоса 2

Очевидно, что некоторая часть сигналов со входов коммутируется на соответствующие входы макросов «состояние насоса» без какой либо обработки. Для сигнала «Сброс аварии» можно выделить одиночный импульс по фронту, чтобы не получить эффект «залипания» кнопки. Получаем схему, где Pump1 и Pump2 — это макросы «состояние насоса»
Нажмите на изображение для увеличения
Название: Pic_04_01.png
Просмотров: 71
Размер:	121.5 Кб
ID:	5619

В макросе решаются задачи чередования и АВР. На основании значения входов и состояний насосов:
- Насос 1 в «АВТ»,
- Насос 2 в «АВТ»,
- Авария насоса 1,
- Авария насоса 2,
- Запрос включения насоса
принимается решение о формировании всего двух сигналов:
- Запрос включения насоса 1;
- Запрос включения насоса 2.

Очевидно, что из сигналов «Насос N в «АВТ» и «Авария насоса N» получается сигнал «Насос N доступен для работы».

Сигнал «Запрос включения насоса» в схеме управления нужен не сам по себе, а как переключатель состояния очерёдности работы насосов. Т.е. при помощи счётного триггера (T-trig) сигнал «Запрос включения насоса» формирует сигналы «Очередь работы насоса 1» и «Очередь работы насоса 2». Для исключения ложного срабатывания счётного триггера от дребезга контактов перед триггером ставится схема подавления дребезга (Debounce).
Способы построения T-trigger и Debounce рассмотри позже.
Получаем схему
Нажмите на изображение для увеличения
Название: Pic_04_02.png
Просмотров: 70
Размер:	140.9 Кб
ID:	5620

Таким образом для формирования сигналов запроса включения насосов имеем сигналы:
- Насос 1 доступен,
- Насос 2 доступен,
- Очередь насоса 1,
- Очередь насоса 2.
На основании этих сигналов строим таблицу истинности для функций «Запрос включения насоса 1» и «Запрос включения насоса 2». Чтобы сократить объём статьи, объединю две таблицы в одну. Неопределённые состояния, которые недостижимы в работе — помечены символом «*»
Насос 1
доступен
Насос 2
доступен
Очередь
насоса 1
Очередь
насоса 2
 
Запрос включения
насоса 1
Запрос включения
насоса 2
0000 00
0001 00
0010 00
0011 **
0100 00
0101 01
0110 01
0111 **
1000 00
1001 10
1010 10
1011 **
1100 00
1101 01
1110 10
1111 **
Из этой сводной таблицы истинности создаются карты Карно
Нажмите на изображение для увеличения
Название: Pic_04_03.PNG
Просмотров: 70
Размер:	44.5 Кб
ID:	5621

Из карт Карно получаем две функции

Запрос насоса 1 = (Насос 1 доступен) *(Очередь насоса 1)+ /(Насос 2 доступен)*(Насос 1 доступен)*(Очередь насоса 2)

Запрос насоса 2 = (Насос 2 доступен) *(Очередь насоса 2)+ /(Насос 1 доступен)*(Насос 2 доступен)*(Очередь насоса 1)

Эти функции и реализуем в схеме
Нажмите на изображение для увеличения
Название: Pic_04_04.png
Просмотров: 73
Размер:	119.7 Кб
ID:	5622

5. ВСПОМОГАТЕЛЬНЫЕ МАКРОСЫ

Счётный триггер реализуется схемой
Нажмите на изображение для увеличения
Название: Pic_05_01.PNG
Просмотров: 70
Размер:	39.4 Кб
ID:	5623

Макрос подавления дребезга реализуется схемой
Нажмите на изображение для увеличения
Название: Pic_05_02.PNG
Просмотров: 69
Размер:	36.7 Кб
ID:	5624

ВЫВОДЫ И РЕКОМЕНДАЦИИ

Рассмотрен способ построения программы на языке FBD в среде OWEN Logic для программируемых реле семейств ПР100/ПР110/ПР114/ПР200. Решена практическая задача написания программы для повысительных насосов подпитки системы отопления.

Подобный способ (макросы «состояние насоса» и комбинационная схема управления) подходит для создания программ управления двумя насосами. Но для управления большим количеством насосов требуется иной подход — добавление в состав логики «состояние насоса» некоего подобия счётчика и схемы трансляции (распространения) счётного импульса при неисправности.

К функционалу макроса «Повысительные насосы» (UpperPumps) можно добавить ещё следующие возможности:
- формирование сигнала «Внимание» при полном отсутствии насосов в «АВТОМАТИЧЕСКОМ» режиме,
- формирование сигнала «Утечка в теплосети» (Leak) при чересчур длительной работе повысительного насоса,
- сделать счётный триггер (T-trigger) энергонезависимым.

ПРИЛОЖЕНИЕ

Исходники для OWEN Logic версия 1.14.194.18756
Soft20191012.owl.7z
Размещено в АСУ ТП, ОВЕН ПР (OwenLogic)
Просмотров 135 Комментарии 0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.