Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 38

Тема: Алгоритм поддержания уровня количеством включённых насосов

  1. #21

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Найдите макрос от AI! по насосам до 8-ми штук, там легко реализовать и ошибки и управление через биты. Какие в работе, а время он сам считает.
    Речь о
    https://owen.ru/forum/showthread.php...l=1#post452976
    и
    https://owen.ru/forum/showthread.php...l=1#post452994
    ?

    Ведь страшно же! Мне кажется, что быстрее велосипед соберу, чем чужой код на трюках с логическими операциями разберу - он же близок к регулярным выражениям
    Изображения Изображения
    • Тип файла: jpg 111.jpg (539.1 Кб, Просмотров: 26)

  2. #22
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,285

    По умолчанию

    Да. У вас всего там 3 входа, битовыми масками управлять не сложно.
    Задали количество и маску насосов.
    По аварии меняется маска. Все остальное делает макрос.

  3. #23

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    Ведь страшно же! Мне кажется, что быстрее велосипед соберу, чем чужой код на трюках с логическими операциями разберу - он же близок к регулярным выражениям
    1 Проект 1.jpg 1 Проект 2.jpg
    Сразу видно, мои проекты даже не смотрели, всё подписано как на схеме, так и в ФБ.
    Последний раз редактировалось kondor3000; 02.02.2026 в 21:20.

  4. #24

    По умолчанию

    Ещё раз благодарю всех, откликнувшихся на просьбу о помощи
    Цитата Сообщение от melky Посмотреть сообщение
    Да. У вас всего там 3 входа, битовыми масками управлять не сложно.
    Задали количество и маску насосов.
    По аварии меняется маска. Все остальное делает макрос.
    Я - пошутил, рассыпухой, а не битовыми масками уже решал задачу ротации с приоритетным выбором по наработке, а не просто по очереди, поэтому хоть и не все детали, но общий смысл понимаю в схеме AI!
    Если серьёзно, именно эта схема получается нерасширяемой - к ней нет пояснений с выводом формул (можно вывести самостоятельно - но терять время), также холст плотно заполнен, из-за этого встраивать приоритеты ротации будет труднее, чем создание с нуля - сначала вывести формулы, расчистить холст, добавить расширение функционала.
    Правда, сделать самому, хоть и не с таким мастерством битовых трюков - быстрее. А в моём случае - просто достать из предыдущей работы.

    Как урок мастерства - интересно. Запомню приём и при необходимости его применю. Пример уже будет.

    Спасибо.
    Цитата Сообщение от kondor3000 Посмотреть сообщение
    1 Проект 1.jpg 1 Проект 2.jpg
    Сразу видно, мои проекты даже не смотрели, всё подписано как на схеме, так и в ФБ.
    Внимательно читал и именно этот пример. В сообщении выше разбирал его работу.
    В собственном тестовом примере реализовал его каскадный регулятор с учётом аналогового датчика и количества насосов. Не совсем разобрался с дискретными уровнями и непривычными битовыми трюками, но, показалось, что идею понял - по мере роста уровня на заданных отметках последовательно отключаются насосы.
    Достоинства - простота в понимании принципа работы для наладчика и эксплуатации. Главное объяснить, что баланс наступит на одном из назначенных уровней переключения, а не на каком-то конкретном.
    Недостаток - при включении на пустой резервуар сразу включает все доступные насосы, что можно компенсировать следующим ФБ, ограничивающим одновременную коммутацию. А также требуется отдельная задержка при смене количества насосов - чтобы избежать возможного частого "тактирования".

    Вот блок ротации просмотрел несколько бегло. Он сделан универсально, но циклов много - ощущение, что часть можно заменить однопроходными алгоритмами, усложняя условия проверки. А для ничтожного количества - (до 5) циклы можно развернуть и решение получится довольно простым и наглядным даже на FBD. Это причины беглого осмотра макроса, хотя просмотрел его полностью и комментарии прочитал.

    Недавно готовил документацию на библиотеку коллег в CODESYS 3.5 - там был подобный блок ротации и АВР на открытых массивах array[*] для безграничного числа насосов - мне кажется, он содержал всего 3 цикла.

    Наверное, не буду жадничать и на выходных подготовлю и опубликую свою ротацию на небольшое число насосов - не универсальный, а под конкретное количество. Заказчик потребовал отказа от ротации в работе (только при пуске учитывать наработку) и проверить макрос на практике я не смог, только в эмуляции, но думаю, он рабочий.

    ----------------------------------
    От себя добавлю, делая небольшие утилиты в Pascal (FreePascal), использовал автоформаттер исходного кода JCF. Поэтому, после начала работы с ST начал искать подобный инструмент - он существует, но только в виде двух вариантов расширений к VSCode - после установки VSCode нужно зайти в магазин расширений и найти искомое. Ему во всём далеко до AStyle и JCF, есть глюки - комментарии автодокументирования "///" разделяет пробелом "/ //", но код читать легче.
    Коллеги, делясь кодом с другими - прогоняйте его через автоформаттер! да и просто придерживайтесь аккуратного оформления.

    Мне нравится один из форумов по программированию в рунете - если кто-то "приволакивает" интересную задачку, то люди решают её и объективно критикуют чужие решения (иной раз и излишне резко), все учатся.
    Здесь из-за профессиональной среды, нет разборов решений, только предложения собственных выстраданных решений.
    Надеюсь, что попытками взвесить достоинства и недостатки предложенных решений никого не обидел.

  5. #25

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    Недавно готовил документацию на библиотеку коллег в CODESYS 3.5 - там был подобный блок ротации и АВР на открытых массивах array[*] для безграничного числа насосов - мне кажется, он содержал всего 3 цикла.
    Хорошее сравнение
    У меня 3 цикла и кол-во насосов тоже любое. Но у них всего 3 цикла (но это не точно), а тут целых 3 цикла. У них массивы +, а у других минус.
    Не считая того, что в Cоdesys в 100 раз больше возможностей, а тут надо выносить всё наружу для сохранения, границы массивов переменной не задать.
    И сравнивать Cоdesys с Лоджиком как минимум некорректно.

    По поводу разборов решений, если есть интересный вопрос, народ включается, только таких вопросов всё меньше с каждым годом.
    А больше достают пустомели, которые даже не вникнув (прочитав часть последнего поста или вырвав из контекста кусок), пишут всякую муть.
    Последний раз редактировалось kondor3000; 03.02.2026 в 08:57.

  6. #26
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,285

    По умолчанию

    kondor3000 а где можно задать границы массивов? в смысле вы про на лету поменять границы или о чем тут ?

  7. #27

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    kondor3000 а где можно задать границы массивов? в смысле вы про на лету поменять границы или о чем тут ?
    В Cоdesys можно написать nasos : ARRAY[1..nam] OF BOOL; // кол-во насосов , где nam задать равным 2,3,4,5 или 8 или 12
    а в Ложике только nasos : ARRAY[0..4] OF BOOL; // кол-во насосов и менять всё вручную, например у меня надо исправить в 5 местах.

    Чтобы сохранить наработку в Лоджике, её надо вывести на выход и на вход ФБ, а в Cоdesys только присвоить в глобальные и RETAIN.
    Это усложняет все ФБ наработки, основной ФБ и кол-во входов-выходов, кратно от кол-ва насосов.
    Последний раз редактировалось kondor3000; 03.02.2026 в 10:02.

  8. #28

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    kondor3000 а где можно задать границы массивов? в смысле вы про на лету поменять границы или о чем тут ?
    В CODESYS 3.5 можно сделать открытый массив (в терминах привычного мне Pascal)
    Код:
    var_input или var_in_out
       abMyArray: array[*] of bool;
    А при обращении к ФБ дать ему массив с твёрдо заданными границами.

    Внутри ФБ диапазон индексов для цикла уточняется при помощи функций - LOWER_BOUND(abMyArray, 1) и UPPER_BOUND(abMyArray, 1), где 1 - это номер интересующей размерности массива (от 1), для матрицы нужно было бы использовать и 1 и 2.

    Таким образом получается достаточно универсальный ФБ.
    Последний раз редактировалось FPavel; 03.02.2026 в 17:55.

  9. #29
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,285

    По умолчанию

    ARRAY[1..nam] но я так понимаю, что вы даете ему границы в рамках запуска программы? То есть при инициализации этого массива, так ведь?

    Если проще - можно сделать так: array[5] а потом записать в него 6-ю переменную и он сам увеличится? или все же надо объявить новый, скопировать из старого и добавить эту 6-ю переменную?

    просто сам увеличивается насколько понял только в javascript, везде нужно делать resize

  10. #30

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    ARRAY[1..nam] но я так понимаю, что вы даете ему границы в рамках запуска программы? То есть при инициализации этого массива, так ведь?

    Если проще - можно сделать так: array[5] а потом записать в него 6-ю переменную и он сам увеличится? или все же надо объявить новый, скопировать из старого и добавить эту 6-ю переменную?

    просто сам увеличивается насколько понял только в javascript, везде нужно делать resize
    nam, можно поменять и в работе, главное, что бы не получилось переполнения в циклах. Меньше можно, больше только если предусмотрено программой,
    иначе ПЛК зависнет. Поэтому у меня nam поменять в работе нельзя, он просто помещён в константы и на ходу не меняется.
    Последний раз редактировалось kondor3000; 04.02.2026 в 09:53.

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Похожие темы

  1. Алгоритм работы 3-х насосов на ST
    от K.K. в разделе СПК210, СПК1xx [М01]
    Ответов: 17
    Последнее сообщение: 06.12.2024, 09:46
  2. Ответов: 22
    Последнее сообщение: 29.11.2020, 16:23
  3. Алгоритм поддержания температуры на выходе
    от IloNA в разделе Помощь Разработчикам
    Ответов: 13
    Последнее сообщение: 15.12.2016, 18:58
  4. Система поддержания уровня воды
    от Lexey-ru в разделе Трёп (Курилка)
    Ответов: 34
    Последнее сообщение: 09.06.2014, 21:02
  5. контроллер для поддержания уровня давления в контуре гвс
    от san822 в разделе Подбор Оборудования
    Ответов: 9
    Последнее сообщение: 26.10.2009, 13:02

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •