Показано с 1 по 10 из 194

Тема: СП310+пр200

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

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

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    где ж хорошо ? time - это просто дело вкуса не принципиальное, а в else - кранты потенциальные
    Сейчас весь мир на пороге "крантов потенциальных"!

  2. #2
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    Сейчас весь мир на пороге "крантов потенциальных"!
    Дык шаг 0 после стопа будет 1 цикл или 1.5 месяца же - как звезды сложатся

  3. #3

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Дык шаг 0 после стопа будет 1 цикл или 1.5 месяца же - как звезды сложатся
    Вы хотите сказать, что get_time() - T#0s будет < T#1s в течении 1.5 месяцев?
    Я думал, Вас беспокоит, что при быстром сбросе OnOff при State := 3; произойдет смена вращения без паузы.
    А вообще, я бы с Вами согласился, если бы арифметика была бы со знаком!!!
    Давайте предупредим новичков, что get_time() каждые 1.5 месяца обнуляется.
    И да, при get_time() = Tmax, какое-то состояние будет выдержано не полностью.

    Предлагаю безопасный вариант с предварительной паузой:
    Код:
    function_block FPRP
    
        var_input
           OnOff : bool;    // Управление блоком
        end_var
    
        var_output
           FW, RW : bool;   // Сигналы вперед и назад
        end_var
    
        var
           State : udint;   // Текущее состояние
           t : SYS.TON;     // Таймер
        end_var
    
        if OnOff then
            case State of
                0:  // Пауза 1 сек перед пуском вперед
                    t(I:=true, T:=T#1s);
                    if t.Q then
                        State := 1; FW := true; t(I:=false);    // Пуск вперед
                    end_if
                1:  // Вращение вперед 2 сек перед паузой
                    t(I:=true, T:=T#2s);
                    if t.Q then
                        State := 2; FW := false; t(I:=false);   // Пауза
                    end_if
                2:  // Пауза 1 сек перед пуском назад
                    t(I:=true, T:=T#1s);
                    if t.Q then
                        State := 3; RW := true; t(I:=false);    // Пуск назад
                    end_if
                3:  // Вращение назад 2 сек перед паузой
                    t(I:=true, T:=T#2s);
                    if t.Q then
                        State := 0; RW := false; t(I:=false);   // Пауза
                    end_if
            end_case
        else
            FW := false; RW := false; State := 0; t(I:=false);
        end_if
    end_function_block
    Последний раз редактировалось EFrol; 16.10.2024 в 12:48.

  4. #4
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    Вы хотите сказать, что get_time() - T#0s будет < T#1s в течении 1.5 месяцев?
    Я думал, Вас беспокоит, что при быстром сбросе OnOff при State := 3; произойдет смена вращения без паузы.
    Не. С 1.5мес я погорячился. Не в этом случае.

    Потенциальный крантец (в старом варианте) остается из-за практически всегда отсутствия задержки шага 0 после подъема OnOff.
    При шаблонном использовании такой конструкции в шаге 0 могут быть какие-то подготовительные действия которые пойдут лесом. Смысл в таймере шага 0?
    TON тут не причем, простое t := get_time(); (а не := 0) в else эту проблему решает.


    Ну и лично я (дело вкуса) предпочитаю выходы привязывать не в шаге, а к шагу
    Код:
    ..
    end_case
    FW := State = 1;
    RW := State = 3;
    Там где есть ENUM это максимально наглядно, да и здесь чуть очевидней.

    А когда шагов много, еще и
    Код:
    ..
    end_case
    if State <> State_ then //State_  - прошлое значение
      State_ := State;
      t := get_time();
    end_if
    Т.е. самовзвод таймера шагов после любого перехода. Но это норм когда само состояние OnOff = false тоже шаг, а не IF (внешний if для case не использую)
    Последний раз редактировалось Валенок; 16.10.2024 в 16:51.

  5. #5

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Не. С 1.5мес я погорячился. Не в этом случае.

    Потенциальный крантец (в старом варианте) остается из-за практически всегда отсутствия задержки шага 0 после подъема OnOff.
    При шаблонном использовании такой конструкции в шаге 0 могут быть какие-то подготовительные действия которые пойдут лесом. Смысл в таймере шага 0?
    TON тут не причем, простое t := get_time(); (а не := 0) в else эту проблему решает.
    Да, но даже в этом случае, когда t станет = Tmax, и на следующем цикле OnOff станет true, а get_time() обнулится - 0-й State будет просто пропущен!!!

  6. #6
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    Да, но даже в этом случае, когда t станет = Tmax, и на следующем цикле OnOff станет true, а get_time() обнулится - 0-й State будет просто пропущен!!!
    Нет
    "я бы с Вами согласился, если бы арифметика была бы со знаком!!!" (C)
    ))
    Последний раз редактировалось Валенок; 16.10.2024 в 13:34.

  7. #7

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Нет
    ........
    Хорошо один цикл в нем, а надо 1 сек!!!

Похожие темы

  1. Не получается опросить пр200 панелью сп310
    от дск в разделе Панели оператора (HMI)
    Ответов: 20
    Последнее сообщение: 24.01.2023, 10:13
  2. Подключение СП310 к пр200
    от Jakan в разделе Панели оператора (HMI)
    Ответов: 3
    Последнее сообщение: 22.08.2019, 23:23
  3. ПР200+СП310 в качестве МПР51
    от mouc1k в разделе Среда программирования OWEN Logic
    Ответов: 3
    Последнее сообщение: 25.12.2018, 11:30
  4. СП310 Сервер по Модбас ТСР + СП310 Слейв по Модбас RTU
    от Global в разделе Панели оператора (HMI)
    Ответов: 7
    Последнее сообщение: 19.04.2018, 11:16
  5. пр200+сп310
    от zamnarzanom в разделе Программируемые реле
    Ответов: 5
    Последнее сообщение: 10.10.2016, 09:13

Ваши права

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