Страница 1053 из 1178 ПерваяПервая ... 535539531003104310511052105310541055106311031153 ... ПоследняяПоследняя
Показано с 10,521 по 10,530 из 11771

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #10521

    По умолчанию

    Всем доброго времени суток!
    Прошу помощи в реализации TOFа с памятью. Данный функц. блок очень нужен для дальнейшего применения в проекте на LD, сам блок пишу на ST, нашёл реализацию TONа, TONа с памятью, с ним разобрался и попытался переделать в TOF (это получилось), потом в TOF с памятью (где-то ошибка в логике, не могу найти).
    Поясню, задача такая: нужен TOF (обновление таймера при 1 на IN, при 0 на IN время, в течение которого продолжается подача 1 на Q), НО необходима дополнительная входная переменная для возможности остановить время (при 1 на дополнительном входе время таймера запоминается, на Q подаётся 0, при 0 на доп. входе время продолжает идти с момента паузы, на Q подаётся 1). Думал задача будет проще... https://disk.yandex.ru/d/_B9B5zNqXP1gOw . https://disk.yandex.ru/d/meE9wGrpi5B-tw . Надеюсь смогу оставить ссылки для скачивания самой программы на codesys 2.3. MY_TOF.png MY_TOF 1.png - то, как примерно выглядит вместе с визуализацией.
    Программа в целом работает, но как уже сказал, где-то логическая ошибка. VR (время "простоя") никак не должно влиять на ET (то самое время таймера), в программе оно должно приводить ET к моменту начала "простоя" но почему-то оно прибавляется к этому времени (причём предыдущее VR, а не текущее), хоть в самой программе "ET:=TIME() - START - VR;".
    Последний раз редактировалось Flawon; 30.05.2024 в 00:15.

  2. #10522

    По умолчанию

    Цитата Сообщение от Flawon Посмотреть сообщение
    Всем доброго времени суток!
    Прошу помощи в реализации TOFа с памятью. Данный функц. блок очень нужен...
    Посмотрите эти варианты, может допилите под себя

  3. #10523

    По умолчанию

    Цитата Сообщение от Flawon Посмотреть сообщение
    VR (время "простоя") никак не должно влиять на ET, в программе оно должно приводить ET к моменту начала "простоя" ..
    Привет! Это как "не должно", "но должно"?!
    Если надо продлить работу таймера на время простоя, то я бы попробовал так:
    Код:
    T : TOF;
    ET : INT;
    
    T(IN:=IN, PT:=T#30s, Q=>Q); ;   // Таймер управляется IN, Q показывает его состояние
    IF T.Q THEN                                // Пока идет отсчет..
      IF SP THEN                                // активный SP ...
        T(IN:=TRUE);                           // удерживаем таймер активным и ..
        IF Q THEN                                // при активном выходе Q
          ET:=T.ET; Q:=FALSE;           // Надо запомнить накопленное время и сбросить Q
        END_IF
      ELSE                                         // При неактивном SP
        IF NOT Q THEN                        // и не активном Q
          T(IN:=FALSE); T(IN:=TRUE, PT:=T#30s-ET, Q=>Q); // Надо перезапустить таймер, но с учетом накопленного времени и воcстановить Q
        END_IF
      END_IF
    END_IF
    Последний раз редактировалось EFrol; 30.05.2024 в 09:40.

  4. #10524

    По умолчанию

    Цитата Сообщение от Flawon Посмотреть сообщение
    Всем доброго времени суток!
    Прошу помощи в реализации TOFа с памятью. Данный функц. блок очень нужен для дальнейшего применения в проекте на LD, сам блок пишу на ST, нашёл реализацию TONа, TONа с памятью, с ним разобрался и попытался переделать в TOF (это получилось), потом в TOF с памятью (где-то ошибка в логике, не могу найти).
    VR;".
    Код таймера TOF_P с паузой 1 Тоф с паузой.jpg
    Скрытый текст:
    Код:
    FUNCTION_BLOCK TOF_P
        VAR_INPUT
           In,Paus : BOOL;
           PT : TIME;
        END_VAR
        VAR_OUTPUT
           Q : BOOL;
           ET: TIME;
        END_VAR
        VAR
           x,Pau : BOOL;
           t3,T0,TP : TIME;
           ftr : F_TRIG;
        END_VAR
    _____________________________________________
     
          t3:=TIME(); ftr(Clk:=IN );
         IF  IN AND NOT x THEN x:=TRUE;  Q:=TRUE;   END_IF
         IF ftr.Q  THEN  T0:=t3;  END_IF
         IF NOT IN AND x AND NOT Paus AND ET<PT THEN Q:=TRUE; ET:=t3-T0-Tp; Pau:=TRUE;
            ELSIF NOT IN AND x AND ET<PT THEN Q:=TRUE; Tp:=t3-T0-ET; END_IF
         IF NOT IN  AND Pau AND x AND ET>=PT THEN Q:=FALSE; ET:=PT; END_IF
         IF IN AND Pau  THEN Q:=TRUE; Pau:=FALSE; ET:=T#0ms; Tp:=T#0ms; ;T0:=T#0ms; ; x:=FALSE; END_IF
    Последний раз редактировалось kondor3000; 30.05.2024 в 10:52.

  5. #10525

    По умолчанию

    Вопрос , куда бежать, и что с этим делать ?0.jpg , попытка скачать файл с ПЛК110

  6. #10526

    По умолчанию

    Potoks А файл с таким именем есть? Ты проверял через команду filedir?
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  7. #10527

    По умолчанию

    спасибо .. я думал что то серьезное , ошибся в имени

  8. #10528

    По умолчанию ОВЕН 150.У.М и ПИД регулятор из библиотеки Util выдаёт 0

    Доброго времени суток, столкнулся с такой ситуацией. Достал блок ПИД регулятора из библиотеки Util что бы протестировать как это будет работать на моём студенческом проекте. На вход завожу разрежение с датчика, выходом хочу подавать управляющий сигнал на твердотельное реле с фазовой регулировкой, которое в свою очередь управляет мощностью осевого вентилятора создающего разрежение в системе. Как можно видеть на картинке, я задал желаемое значение давления, данные с датчика приходят, какие то там коэффициенты поставил, но на выходе системы 0. Прочитал справку, но там просто описание входов блока. В чём может быть загвоздка? Первое моё знакомство с такими вещами, так что даже ума не приложу в какую сторону искать.
    Изображения Изображения

  9. #10529

    По умолчанию

    Искать в сторону ТАУ (теории автоматического управления).
    Блок работает абсолютно корректно. давление ~0 , уставка -50 (минус 50). Текущая величина много больше уставки, он и ушел в минимум управляющего сигнала, который 0.

  10. #10530

    По умолчанию

    Цитата Сообщение от Maxwell000 Посмотреть сообщение
    Доброго времени суток, столкнулся с такой ситуацией. Достал блок ПИД регулятора из библиотеки Util что бы протестировать как это будет работать на моём студенческом проекте. На вход завожу разрежение с датчика, выходом хочу подавать управляющий сигнал на твердотельное реле с фазовой регулировкой, которое в свою очередь управляет мощностью осевого вентилятора создающего разрежение в системе. Как можно видеть на картинке, я задал желаемое значение давления, данные с датчика приходят, какие то там коэффициенты поставил, но на выходе системы 0. Прочитал справку, но там просто описание входов блока. В чём может быть загвоздка? Первое моё знакомство с такими вещами, так что даже ума не приложу в какую сторону искать.
    Если я не ошибаюсь, программу надо запустить (в статус-строке "ЗАПУЩЕНО" должно быть активным) и запускается через Онлайн->Старт.

Страница 1053 из 1178 ПерваяПервая ... 535539531003104310511052105310541055106311031153 ... ПоследняяПоследняя

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

Ваши права

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