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

Тема: Ротация насосов

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от witalexxx Посмотреть сообщение
    Здравствуйте. В этой программе есть баг. Скриншот Пост о ротации.jpg. Его суть в том, что при загрузке проекта в ПР200, при тестировании ротации с временем ротации в 60 секунд, при исключении из ротации, в моем случае насоса 2 по аварии, а 1,3,4 продолжали работать в ротации с циклом 60 секунд (маленький цикл ротации выбран для теста силовой части, как поведут себя контакты выходов DO1...DO4, нагруженные на контактор). Но, при снятии аварии с насоса 2 он включался в работу, так как у него была самая маленькая наработка, и, когда оканчивалось время ротации насоса 2 и должен был включиться следующий насос, происходило передергивание выхода DO2, то есть, насос 2 отключался на 0,5 секунды, пытался включиться 3 насос (следующий по минимальной наработке) и сразу отключался, и обратно включался 2 насос, хотя он не должен был априори включаться, у него вышло время ротации, и так происходило 4-5 цикла, постоянно с таким багом выключался насос 2, потом опять пытался включиться насос 3, выключался и опять включался насос 2. Таким образом, насос 2 кратковременно отключаясь при окончании времени ротации, снова включался, не давая отработать цикл ротации остальных насосов, он отработал вместо 60 секунд цикла ротации все 300 в одно лицо. Я программу не корректировал, исходник залил в ПР200, только в макросе изменил время ротации.
    В программе есть функция минимальной наработки, удалите её и будет переключаться по кругу.
    Тут выложены примеры программ, далее каждый делает как ему надо.

  2. #2

    По умолчанию

    OL_2.11.369.0
    А куда всё исчезло?
    Или этого уже давно ничего нет?
    изображение_2025-10-13_220704669.png

  3. #3

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    OL_2.11.369.0
    А куда всё исчезло?
    Или этого уже давно ничего нет?
    изображение_2025-10-13_220704669.png
    Это уже второй раз пропало, недавно работало.

  4. #4

    По умолчанию

    Добрый день. Периодически приходится возвращаться к ротации насосов на ST. Используя программы ротации на функциональных блоках ST глубокоуважаемого пользователя kondor3000 опять столкнулся с проблемами. В симуляторе все замечательно работает, при заливке в ПР200-24.4, да и в ПР200-24.8 программы ротации, ротация через раз, как работать с этим? Версию использую старую, версия 2.10.367.0. Как победить, уж слишком хороши программы ротации на ST, но почему тогда в симуляторах все работает, а в железе кругом баги? Можно, конечно, сделать ротацию на простых блоках, но очень много места программа занимает.Запасной 3 редактируемый .owle

  5. #5
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,620

    По умолчанию

    Цитата Сообщение от witalexxx Посмотреть сообщение
    Добрый день. Периодически приходится возвращаться к ротации насосов на ST. Используя программы ротации на функциональных блоках ST глубокоуважаемого пользователя kondor3000 опять столкнулся с проблемами. В симуляторе все замечательно работает, при заливке в ПР200-24.4, да и в ПР200-24.8 программы ротации, ротация через раз, как работать с этим? Версию использую старую, версия 2.10.367.0. Как победить, уж слишком хороши программы ротации на ST, но почему тогда в симуляторах все работает, а в железе кругом баги? Можно, конечно, сделать ротацию на простых блоках, но очень много места программа занимает.Запасной 3 редактируемый .owle
    вот что ИИ-ассистент говорит:
    1) Критично: Вы используете массивы размером [0..3] (4 элемента), но насосы нумеруются от 1 до 3. Индекс 0 не используется, но может быть ошибочно задействован, особенно при арифметике с индексами (j := Sel_1(i>num, i, i-num)).
    При этом закомментированы 4–5 насосы, но логика частично все равно поддерживает 5, что создаёт путаницу


    2) Ошибки в логике выбора основного насоса. Если все насосы в аварии, то nonorm = num, и цикл не выполнится → main останется в аварийном состоянии.
    Позже используется boiler[j] := TRUE только если NOT alarm[j], но если нет исправных насосов, то run = 0, и ничего не запускается — это ОК.
    НО: затем есть блок:
    Код:
    if main=0 and ET<=PT1 and not Q then 
        Main:=Min3_1(T1_,T2_,T3_);
    end_if
    main=0 — некорректное состояние, так как насосы нумеруются с 1 до 3.
    Min3_1(...) возвращает номер насоса? Но если main=0, это ошибка логики


    3) Проблемы с таймером и управлением PT1, ET, Q
    ❌ Нарушена логика управления таймером TON
    TON(In:=In or ET=PT1, PT:=PT1, Pause:=Pauz, ET=>ET, Q=>Q);

    Условие In or ET=PT1 приведёт к зацикливанию: как только ET = PT1, In снова становится TRUE, и таймер запускается снова мгновенно.
    Это приведёт к непредсказуемому поведению: Q может быть TRUE один скан, потом снова FALSE, и т.д.
    Поведение не соответствует стандартному TON (обычно In — внешнее условие, а не зависящее от внутреннего состояния таймера).


    4) Проблемы с обработкой Res (сброс)
    Res устанавливается в true внутри FB, но также является входной переменной.
    Это нарушение контракта: входные переменные не должны изменяться внутри FB.
    Поведение будет непредсказуемым, если Res используется вне FB.

    6) Неявная инициализация и побочные эффекты
    amount := amount; // бессмысленная строка
    if run>3 then run:=0; end_if // странная защита
    if run>3 then run:=0 — если насосов 3, run не может быть >3. Это лишняя проверка или признак ошибки логики выше.


    КРИТИЧЕСКАЯ ОШИБКА:
    Вы интерпретируете PT как часы, но преобразуете в миллисекунды как будто это минуты.
    PT = 5 → PT1 = 5 * 60000 = 300 000 мс = 5 минут, а не 5 часов!


    не знаю насколько прав искусственный интеллект, но выглядит убедительно
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  6. #6

    По умолчанию

    Цитата Сообщение от witalexxx Посмотреть сообщение
    Добрый день. Периодически приходится возвращаться к ротации насосов на ST. Используя программы ротации на функциональных блоках ST глубокоуважаемого пользователя kondor3000 опять столкнулся с проблемами. В симуляторе все замечательно работает, при заливке в ПР200-24.4, да и в ПР200-24.8 программы ротации, ротация через раз, как работать с этим? Версию использую старую, версия 2.10.367.0. Как победить, уж слишком хороши программы ротации на ST, но почему тогда в симуляторах все работает, а в железе кругом баги? Можно, конечно, сделать ротацию на простых блоках, но очень много места программа занимает.Запасной 3 редактируемый .owle
    А Вы не думали о том, чтобы всю программу переписать на ST и раз в 10 упростить?

  7. #7

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    А Вы не думали о том, чтобы всю программу переписать на ST и раз в 10 упростить?
    Я в ST ничего не делал и не смогу сделать, не изучал. К сожалению, все что связано с ST, приходится использовать чужие разработки и необходимый функционал доделывать на фб. Проекты kondora3000 по ротации очень удобны, но там есть нюансы, я не понимаю, почему чистый проект по той же ротации работает, но как только начинаешь не изменяя функцию (функциональный блок ST) вносить дополнительные блоки, то все ломается? Тут человек целый ИИ для анализа ошибок в программе использовал, но я программу не трогал, только к скаченной добавил функциональные блоки и тут такой букет ошибок, откуда?

  8. #8
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,620

    По умолчанию

    Цитата Сообщение от witalexxx Посмотреть сообщение
    Тут человек целый ИИ для анализа ошибок в программе использовал
    может быть целую
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  9. #9

    По умолчанию

    Цитата Сообщение от witalexxx Посмотреть сообщение
    Я в ST ничего не делал и не смогу сделать, не изучал. К сожалению, все что связано с ST, приходится использовать чужие разработки и необходимый функционал доделывать на фб. Проекты kondora3000 по ротации очень удобны, но там есть нюансы, я не понимаю, почему чистый проект по той же ротации работает, но как только начинаешь не изменяя функцию (функциональный блок ST) вносить дополнительные блоки, то все ломается? Тут человек целый ИИ для анализа ошибок в программе использовал, но я программу не трогал, только к скаченной добавил функциональные блоки и тут такой букет ошибок, откуда?
    Иногда, чтобы ускорить разработку, многие нюансы не учитываются, основываясь не предположении, что входные сигналы будут поступать в систему в строго определенном порядке. В результате, если порядок иной (за счёт добавления новых функций) можно нарваться на "подводный камень".
    Для решения таких проблем есть 2 выхода:
    - Полный (тщательный и глубокий) анализ чужого кода на предмет выявления этих "подводных камней" с целью их обхода.
    - Полностью самостоятельная разработка с целью создания собственных "подводных камней", но о которых Вы будете уже знать.
    Я всегда выбираю 2-й путь, т.к. 1-й в итоге всегда приводит ко 2-му.
    Если у Вас есть большое желание создать свой собственный продукт, то я готов Вам помочь, при условии, если Вы чётко распишите ТЗ.

  10. #10

    По умолчанию

    Цитата Сообщение от witalexxx Посмотреть сообщение
    Добрый день. Периодически приходится возвращаться к ротации насосов на ST. Используя программы ротации на функциональных блоках ST глубокоуважаемого пользователя kondor3000 опять столкнулся с проблемами. В симуляторе все замечательно работает, при заливке в ПР200-24.4, да и в ПР200-24.8 программы ротации, ротация через раз, как работать с этим? Версию использую старую, версия 2.10.367.0. Как победить, уж слишком хороши программы ротации на ST, но почему тогда в симуляторах все работает, а в железе кругом баги? Можно, конечно, сделать ротацию на простых блоках, но очень много места программа занимает.Запасной 3 редактируемый .owle
    Вы можете сделать скрин в онлайн отладке, когда не работает блок?
    Проблема скорее всего в переменной Main, если она слетит, блок не будет работать.
    С экрана она не задаётся, то есть пока не досчитает таймер, переключения не будет. А слетать может, если нет защиты от помех при переключении насосов.

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

Похожие темы

  1. ФБ на ST ротация насосов
    от 7in в разделе Среда программирования OWEN Logic
    Ответов: 67
    Последнее сообщение: 09.09.2025, 18:56
  2. Ротация 4ёх насосов
    от high_roll в разделе Среда программирования OWEN Logic
    Ответов: 3
    Последнее сообщение: 11.10.2024, 19:55
  3. Ротация двух насосов в системе ИТП
    от K.K. в разделе ПЛК1хх [М02]
    Ответов: 3
    Последнее сообщение: 16.01.2024, 09:02
  4. Ротация насосов 3+1
    от K.K. в разделе Среда программирования OWEN Logic
    Ответов: 47
    Последнее сообщение: 29.10.2023, 16:37
  5. Ротация двух насосов
    от Вова13 в разделе ПЛК63/73
    Ответов: 19
    Последнее сообщение: 25.12.2022, 00:13

Метки этой темы

Ваши права

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