PDA

Просмотр полной версии : Чередование включения



Ivan_P
21.05.2015, 09:06
Всем привет!

Помогите, пожалуйста, с одной проблемкой! Написал прогу (в CFC) на ПЛК100 для управления 3-мя насосами по уровню как в теме http://www.owen.ru/forum/showthread.php?t=21018.
Проблема заключается в том, что после понижения уровня до "UROVEN0" насосы должны переназначаться, то есть сигнал на включение 1 насоса должен идти на включение второго, сигнал включения второго на включение третьего, а третьего - на первый. Потом опять при "UROVEN0" первый на третий, второй на первый и третий на второй.
Фактически получается чередователь переключения.
Может кто сталкивался с такой проблемой?

Yegor
21.05.2015, 09:21
На UROVEN0 триггеры по фронтам. По триггерам инкремент промежуточной переменной до MOD 3. По значению промежуточной переменной вращать выходы.

Ivan_P
21.05.2015, 09:27
На UROVEN0 триггеры по фронтам. По триггерам инкремент промежуточной переменной до MOD 3. По значению промежуточной переменной вращать выходы.
Вероятно решение хорошее, но можно попроще объяснить? Чем вращать?
Ещё не дорос до понимания таких объяснений... в CoDeSyS пока новичок...

Василий Кашуба
21.05.2015, 10:06
Всем привет!

Помогите, пожалуйста, с одной проблемкой! Написал прогу (в CFC) на ПЛК100 для управления 3-мя насосами по уровню как в теме http://www.owen.ru/forum/showthread.php?t=21018.
Проблема заключается в том, что после понижения уровня до "UROVEN0" насосы должны переназначаться, то есть сигнал на включение 1 насоса должен идти на включение второго, сигнал включения второго на включение третьего, а третьего - на первый. Потом опять при "UROVEN0" первый на третий, второй на первый и третий на второй.
Фактически получается чередователь переключения.
Может кто сталкивался с такой проблемой?
Вы не правильно формулируете ТЗ. Вы ставите задачу на получение промежуточного результата решения задачи, как вы её видите. Но решений могут быть десятки и не всегда промежуточные результаты будут такими как у вас. Как я понял вы хотите управлять тремя насосами по очереди и по кругу.
18273

Ivan_P
22.05.2015, 08:27
Вы не правильно формулируете ТЗ. Вы ставите задачу на получение промежуточного результата решения задачи, как вы её видите. Но решений могут быть десятки и не всегда промежуточные результаты будут такими как у вас. Как я понял вы хотите управлять тремя насосами по очереди и по кругу.
18273

Уже лучше, только вы писали программку не на кодесисе... что такое DC32 мне не понятно...
Лучше покажу, может кому понадобится. Прописал такую логику для управления 3-мя насосами.
18304
В макросах и ниже находится "неинтересная" логика.
Так вот осталась задача, как я уже писал ранее, управление чередованием включения насосов:
когда уровень опускается до "LL", или когда первый PACK равен 1 (то же самое) должно быть круговое переключение насосов, то есть H1_RUN запускает второй насос, H2 _RUN запускает третий, а H3 _RUN - первый и т.д. при становлении PACK = 1.

Василий Кашуба
22.05.2015, 09:24
что такое DC32 мне не понятно
DC32 это дешифратор 18308

Ivan_P
22.05.2015, 09:50
DC32 это дешифратор 18308

А разве есть такая штука в кодесисе?

Василий Кашуба
22.05.2015, 11:25
А разве есть такая штука в кодесисе?
А если даже нет, разве нельзя написать? Можно ещё вот так сделать.
18309 Индикатор изменения числа, это тоже не библиотечный макрос.

Ivan_P
25.05.2015, 08:22
А если даже нет, разве нельзя написать? Можно ещё вот так сделать.
18309 Индикатор изменения числа, это тоже не библиотечный макрос.

У вас в программе управление 3-мя насосами по очереди при одном рабочем, а у меня могут работать все 3, но должны менять свою позицию включения.
И да, написать можно всё, но я, можно сказать, новичок и поэтому прошу помощи на форуме.

melky
25.05.2015, 08:37
Ivan_P в Codesys есть такая штука. ща поищу у себя и выложу отдельно, хотя возможно она есть в составе oscat библиотек.
Я делал через MOD но была инверсия. 2 из 3-х работают и меняются.
В Codesys нет понятия "обратная связь" как в Овенлождике, по крайней мере на сложных алгоритмах у меня не получилось с ее аналогом совладать, ерунда получается.
(а, пример без обратной связи, так что можно повторить)

amn
25.05.2015, 09:34
Вариант по совету Егора

Алексей Александрович
25.05.2015, 13:01
Всем привет!

Помогите, пожалуйста, с одной проблемкой! Написал прогу (в CFC) на ПЛК100 для управления 3-мя насосами по уровню как в теме http://www.owen.ru/forum/showthread.php?t=21018.
Проблема заключается в том, что после понижения уровня до "UROVEN0" насосы должны переназначаться, то есть сигнал на включение 1 насоса должен идти на включение второго, сигнал включения второго на включение третьего, а третьего - на первый. Потом опять при "UROVEN0" первый на третий, второй на первый и третий на второй.
Фактически получается чередователь переключения.
Может кто сталкивался с такой проблемой?
Честно скажу вообще ничего не понял:confused:

Василий Кашуба
25.05.2015, 16:34
У вас в программе управление 3-мя насосами по очереди при одном рабочем, а у меня могут работать все 3, но должны менять свою позицию включения.
И да, написать можно всё, но я, можно сказать, новичок и поэтому прошу помощи на форуме.
Только сейчас дошло. У вас станция из трёх насосов наполняет ёмкость, и нужно, если один не справляется, ему в помощь включать другие насосы?

Алексей Александрович
25.05.2015, 17:19
Только сейчас дошло. У вас станция из трёх насосов наполняет ёмкость, и нужно, если один не справляется, ему в помощь включать другие насосы?

Я извиняюсь. А Вы то что ему втюхиваете???????? Домысливайте. Он ТЗ нормально не сформулировал.

Василий Кашуба
26.05.2015, 09:29
Я извиняюсь. А Вы то что ему втюхиваете???????? Домысливайте. Он ТЗ нормально не сформулировал.
Какие вопросы, такие и ответы.

Алексей Александрович
26.05.2015, 09:34
Согласен с Вами.
Меня лично добило вот это
а у меня могут работать все 3, но должны менять свою позицию включения.

Ivan_P
26.05.2015, 11:00
Спасибо всем, господа!
Программка написана! Для чередования позиций насосов использовалось это
Вариант по совету Егора
Теперь насосы работают как надо :cool:
Если кому непонятно, то могу рассказать полностью алгоритм работы, а кому надо могу скинуть саму прогу!

Sindrom
26.10.2023, 17:35
Спасибо всем, господа!
Программка написана! Для чередования позиций насосов использовалось это
Теперь насосы работают как надо :cool:
Если кому непонятно, то могу рассказать полностью алгоритм работы, а кому надо могу скинуть саму прогу!

Можете программу скинуть сюда? Тоже столкнулся с подобной задачей...

МихаилГл
26.10.2023, 17:48
Последняя активность пользователя 24 мая... Может и не появится. У меня есть программа для откачивающих насосов. Не моя, но в принципе можно использовать для решения и такой задачи. Завтра скину.

melky
26.10.2023, 17:50
так в 11-м посте же SHIFT.zip или это не оно?

МихаилГл
26.10.2023, 17:54
так в 11-м посте же SHIFT.zip или это не оно?

Я не смотрел, но там как пишет автор, суть метода... Всё равно скину свой (хотя он и не мой) вариант чередования.

kondor3000
26.10.2023, 19:30
Можете программу скинуть сюда? Тоже столкнулся с подобной задачей...

Во вложении блок shift, для среды Codesys 2.3, импортируете блок и запускаете как ФБ (функц. блок) 71184
При каждом включении level0, выходы меняются местами, 1 вход управляет уже 2 выходом (был 1), в след раз 3, потом опять 1.
А ниже уже проект с блоком Shift

МихаилГл
26.10.2023, 20:44
О, этот вариант лучше моего, хотя я не люблю case, но это вполне рабочее решение. Подойдёт как на наполнение, так и откачку.

Только не пойму как работает целочисленное деление mod... Вроде тут не так что-то...

kondor3000
26.10.2023, 20:56
Только не пойму как работает целочисленное деление mod... Вроде тут не так что-то...

MOD это не деление, а остаток от деления.

МихаилГл
26.10.2023, 21:11
А не:
3 mod 3 = 0?
0 mod 3 = 0 - не возникает в программе...
1 mod 3 = 1 первое событие
2 mod 3 = 2 второе событие
3 mod 3 = 0 третье событие
И так по кругу? Т.е. при равенстве 3м обнуляется...

kondor3000
26.10.2023, 21:18
А не:

И так по кругу? Т.е. при равенстве 3м обнуляется...
Да, при равенстве обнуляется.

МихаилГл
26.10.2023, 21:22
Да, при равенстве обнуляется.

В case правильнее 1..2..0 обозначить, а не 0..1..2, а то можно запутаться.

kondor3000
26.10.2023, 21:28
В case правильнее 1..2..0 обозначить, а не 0..1..2, а то можно запутаться.

Почему, там всё правильно, при 0, 1 к 1, при 1 и при 2 смещается, при 3 обнуляется. Проект выложил выше, откройте и посмотрите.

Валенок
26.10.2023, 21:41
Ну а в аварии какой-то - и ?

МихаилГл
27.10.2023, 11:07
Почему, там всё правильно, при 0, 1 к 1, при 1 и при 2 смещается, при 3 обнуляется. Проект выложил выше, откройте и посмотрите.

Ну да, правильно... Маленько не так сообразил...

(0 или 3) mod 3 = 0 первое событие
1 mod 3 = 1 второе событие
2 mod 3 = 2 третье событие
Помучился с таргетами. Пришлось ставить все, чтоб запустить :)

Sindrom
27.10.2023, 11:17
Может кто сталкивался с такой реализацией и подскажет решение:

В системе с постоянным водо- или газо- разбором необходимо поддерживать давление в диапазоне от 1.8 до 2.1 бар с помощью попеременного включения двух повышающих насосов.
1)В начале работы, при давлении от 0 до 2.1 бар работают два насоса.
2)При достижении давления в 2.1 бар первый насос выключается, второй насос продолжает работать.
3)При снижении давления с 2.1 до 1.8 бар происходит включение первого насоса. Второй продолжает работать.
4)Далее, при достижении давления в 2.1 бар, происходит отключение второго насоса, первый продолжает работать.
5)Поддержание давления от 1.8 до 2.1 бар происходит путем чередования включения/отключения одного из насосов первого/второго.
Реализация предполагается на ПР200 в OwenLogic. Самостоятельно пытался реализовать через созданный на ST функциональный блок через IF...Но сейчас приходит понимание использовать CASE))

1exan
27.10.2023, 11:25
Может кто сталкивался с такой реализацией и подскажет решение:

В системе с постоянным водо- или газо- разбором необходимо поддерживать давление в диапазоне от 1.8 до 2.1 бар с помощью попеременного включения двух повышающих насосов.
1)В начале работы, при давлении от 0 до 2.1 бар работают два насоса.
2)При достижении давления в 2.1 бар первый насос выключается, второй насос продолжает работать.
3)При снижении давления с 2.1 до 1.8 бар происходит включение первого насоса. Второй продолжает работать.
4)Далее, при достижении давления в 2.1 бар, происходит отключение второго насоса, первый продолжает работать.
5)Поддержание давления от 1.8 до 2.1 бар происходит путем чередования включения/отключения одного из насосов первого/второго.
Реализация предполагается на ПР200 в OwenLogic. Самостоятельно пытался реализовать через созданный на ST функциональный блок через IF...Но сейчас приходит понимание использовать CASE))

Заведите флаг, который определяет, какой из 2-х насосов подлежит отключению (при 2-х работающих). Инвертируйте его каждый раз, когда в работу включаются одновременно оба насоса

Sindrom
03.11.2023, 15:39
Может кто сталкивался с такой реализацией и подскажет решение:

В системе с постоянным водо- или газо- разбором необходимо поддерживать давление в диапазоне от 1.8 до 2.1 бар с помощью попеременного включения двух повышающих насосов.
1)В начале работы, при давлении от 0 до 2.1 бар работают два насоса.
2)При достижении давления в 2.1 бар первый насос выключается, второй насос продолжает работать.
3)При снижении давления с 2.1 до 1.8 бар происходит включение первого насоса. Второй продолжает работать.
4)Далее, при достижении давления в 2.1 бар, происходит отключение второго насоса, первый продолжает работать.
5)Поддержание давления от 1.8 до 2.1 бар происходит путем чередования включения/отключения одного из насосов первого/второго.
Реализация предполагается на ПР200 в OwenLogic. Самостоятельно пытался реализовать через созданный на ST функциональный блок через IF...Но сейчас приходит понимание использовать CASE))
На всякий случай оставлю свою реализацию данного алгоритма, может кому пригодится из коллег...Реализовывалось в OwenLogic для ПР 200 через функциональный блок на ST.