Просмотр полной версии : Чередование включения
Всем привет!
Помогите, пожалуйста, с одной проблемкой! Написал прогу (в CFC) на ПЛК100 для управления 3-мя насосами по уровню как в теме http://www.owen.ru/forum/showthread.php?t=21018.
Проблема заключается в том, что после понижения уровня до "UROVEN0" насосы должны переназначаться, то есть сигнал на включение 1 насоса должен идти на включение второго, сигнал включения второго на включение третьего, а третьего - на первый. Потом опять при "UROVEN0" первый на третий, второй на первый и третий на второй.
Фактически получается чередователь переключения.
Может кто сталкивался с такой проблемой?
На UROVEN0 триггеры по фронтам. По триггерам инкремент промежуточной переменной до MOD 3. По значению промежуточной переменной вращать выходы.
На 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
Вы не правильно формулируете ТЗ. Вы ставите задачу на получение промежуточного результата решения задачи, как вы её видите. Но решений могут быть десятки и не всегда промежуточные результаты будут такими как у вас. Как я понял вы хотите управлять тремя насосами по очереди и по кругу.
18273
Уже лучше, только вы писали программку не на кодесисе... что такое DC32 мне не понятно...
Лучше покажу, может кому понадобится. Прописал такую логику для управления 3-мя насосами.
18304
В макросах и ниже находится "неинтересная" логика.
Так вот осталась задача, как я уже писал ранее, управление чередованием включения насосов:
когда уровень опускается до "LL", или когда первый PACK равен 1 (то же самое) должно быть круговое переключение насосов, то есть H1_RUN запускает второй насос, H2 _RUN запускает третий, а H3 _RUN - первый и т.д. при становлении PACK = 1.
Василий Кашуба
22.05.2015, 09:24
что такое DC32 мне не понятно
DC32 это дешифратор 18308
DC32 это дешифратор 18308
А разве есть такая штука в кодесисе?
Василий Кашуба
22.05.2015, 11:25
А разве есть такая штука в кодесисе?
А если даже нет, разве нельзя написать? Можно ещё вот так сделать.
18309 Индикатор изменения числа, это тоже не библиотечный макрос.
А если даже нет, разве нельзя написать? Можно ещё вот так сделать.
18309 Индикатор изменения числа, это тоже не библиотечный макрос.
У вас в программе управление 3-мя насосами по очереди при одном рабочем, а у меня могут работать все 3, но должны менять свою позицию включения.
И да, написать можно всё, но я, можно сказать, новичок и поэтому прошу помощи на форуме.
Ivan_P в Codesys есть такая штука. ща поищу у себя и выложу отдельно, хотя возможно она есть в составе oscat библиотек.
Я делал через MOD но была инверсия. 2 из 3-х работают и меняются.
В Codesys нет понятия "обратная связь" как в Овенлождике, по крайней мере на сложных алгоритмах у меня не получилось с ее аналогом совладать, ерунда получается.
(а, пример без обратной связи, так что можно повторить)
Алексей Александрович
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, но должны менять свою позицию включения.
Спасибо всем, господа!
Программка написана! Для чередования позиций насосов использовалось это
Вариант по совету Егора
Теперь насосы работают как надо :cool:
Если кому непонятно, то могу рассказать полностью алгоритм работы, а кому надо могу скинуть саму прогу!
Спасибо всем, господа!
Программка написана! Для чередования позиций насосов использовалось это
Теперь насосы работают как надо :cool:
Если кому непонятно, то могу рассказать полностью алгоритм работы, а кому надо могу скинуть саму прогу!
Можете программу скинуть сюда? Тоже столкнулся с подобной задачей...
МихаилГл
26.10.2023, 17:48
Последняя активность пользователя 24 мая... Может и не появится. У меня есть программа для откачивающих насосов. Не моя, но в принципе можно использовать для решения и такой задачи. Завтра скину.
так в 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 обнуляется. Проект выложил выше, откройте и посмотрите.
Ну а в аварии какой-то - и ?
МихаилГл
27.10.2023, 11:07
Почему, там всё правильно, при 0, 1 к 1, при 1 и при 2 смещается, при 3 обнуляется. Проект выложил выше, откройте и посмотрите.
Ну да, правильно... Маленько не так сообразил...
(0 или 3) mod 3 = 0 первое событие
1 mod 3 = 1 второе событие
2 mod 3 = 2 третье событие
Помучился с таргетами. Пришлось ставить все, чтоб запустить :)
Может кто сталкивался с такой реализацией и подскажет решение:
В системе с постоянным водо- или газо- разбором необходимо поддерживать давление в диапазоне от 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))
Может кто сталкивался с такой реализацией и подскажет решение:
В системе с постоянным водо- или газо- разбором необходимо поддерживать давление в диапазоне от 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-х работающих). Инвертируйте его каждый раз, когда в работу включаются одновременно оба насоса
Может кто сталкивался с такой реализацией и подскажет решение:
В системе с постоянным водо- или газо- разбором необходимо поддерживать давление в диапазоне от 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.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot