Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 26 из 26

Тема: Помогите пожалуйста новичку.

  1. #21

    По умолчанию

    Цитата Сообщение от ingenerypro Посмотреть сообщение
    Приветствую! Нужна помощь:
    Имеется приточно-вытяжная установка с увлажнителем. Увлажнитель управляется отдельным щитом управления на TT-S4/D (четыре ступени)
    Нужно написать алгоритм на ПР200. Управление увлажнителем по датчику влажности (0-10В) последовательное включение ступеней увлажнителя.
    Алгоритм по аналогии TT-S4/D.
    Фото щита во вложении.
    напишите - сколько денег вы платите за эту работу и сроки, которые вы хотите

  2. #22

    По умолчанию

    Добрый вечер!
    Есть задача для Codesys - 4 электромагнитных клапана последовательно включаются/отключаются циклически каждые, допустим, 60 секунд. Если в это время прилетает сигнал от какого-то датчика (любого, ну например при нажатии кнопки, или приход 1 на дискретный вход ПЛК) то надо знать и вывести оповещение - какой по номеру клапан был открыт в это время.
    Подскажите в каком направлении копать, готовое решение не обязательно, сам хочу дойти (мальчику пора взрослеть). Мысли крутятся вокруг таймеров в Codesys, но не совсем понимаю как ожидание события при работающем таймере и как сделать, чтобы при наступлении события цикл работы клапанов не прерывался.

  3. #23

    По умолчанию

    Цитата Сообщение от seagull72 Посмотреть сообщение
    Добрый вечер!
    Есть задача для Codesys - 4 электромагнитных клапана последовательно включаются/отключаются циклически каждые, допустим, 60 секунд. Если в это время прилетает сигнал от какого-то датчика (любого, ну например при нажатии кнопки, или приход 1 на дискретный вход ПЛК) то надо знать и вывести оповещение - какой по номеру клапан был открыт в это время.
    Подскажите в каком направлении копать, готовое решение не обязательно, сам хочу дойти (мальчику пора взрослеть). Мысли крутятся вокруг таймеров в Codesys, но не совсем понимаю как ожидание события при работающем таймере и как сделать, чтобы при наступлении события цикл работы клапанов не прерывался.
    Про таймеры сами разберетесь, я так думаю. А для определения какой клапан сейчас включён при нажатии кнопки, то это достаточно добавить статусы работы этих клапанов и их номера в те же таймеры.

  4. #24

    По умолчанию

    Цитата Сообщение от seagull72 Посмотреть сообщение
    Добрый вечер!
    Есть задача для Codesys - 4 электромагнитных клапана последовательно включаются/отключаются циклически каждые, допустим, 60 секунд. Если в это время прилетает сигнал от какого-то датчика (любого, ну например при нажатии кнопки, или приход 1 на дискретный вход ПЛК) то надо знать и вывести оповещение - какой по номеру клапан был открыт в это время.
    Подскажите в каком направлении копать, готовое решение не обязательно, сам хочу дойти (мальчику пора взрослеть). Мысли крутятся вокруг таймеров в Codesys, но не совсем понимаю как ожидание события при работающем таймере и как сделать, чтобы при наступлении события цикл работы клапанов не прерывался.
    Таймер запускается с кнопки и работает, на выходе счётчик считает от 0 до 4, когда таймер перезапускается, счётчик +1, на выходе сравнение с номерами от 0 до 3, это выходы на клапана. Сравнение с 4, сброс счётчика. Выход счётчика +1 это номер клапана.
    Когда досчитает до 4, сброс счётчика и по новой.
    Последний раз редактировалось kondor3000; 01.04.2026 в 21:20.

  5. #25

    По умолчанию

    Цитата Сообщение от seagull72 Посмотреть сообщение
    Добрый вечер!
    Есть задача для Codesys - 4 электромагнитных клапана последовательно включаются/отключаются циклически каждые, допустим, 60 секунд. Если в это время прилетает сигнал от какого-то датчика (любого, ну например при нажатии кнопки, или приход 1 на дискретный вход ПЛК) то надо знать и вывести оповещение - какой по номеру клапан был открыт в это время.
    Подскажите в каком направлении копать, готовое решение не обязательно, сам хочу дойти (мальчику пора взрослеть). Мысли крутятся вокруг таймеров в Codesys, но не совсем понимаю как ожидание события при работающем таймере и как сделать, чтобы при наступлении события цикл работы клапанов не прерывался.
    Учиться лучше на примерах. Это пример на ST из OL. Попробуйте портировать в CDS.
    Код:
    function_block Fix
        
        var_input
            in : bool;              // Вход события для фиксации
        end_var
        
        var_output 
            Q : udint;              // Зафиксированный номер текущего клапана
            V1, V2, V3, V4 : bool;  // Выхода клапанов
        end_var
        
        var 
            tmr : SYS.TON;          // Таймер
            nV : udint := 1;        // Номер текущего клапана
            rtIN : SYS.RTRIG;       // Фиксатор нажатия кнопки in
        end_var
    
        tmr(I:=true, T:=T#60s);     // Таймер все время в работе
        if tmr.Q then               // Пришло время сменить клапан
            tmr(I:=false);                  // Перезапуск таймера
            nV := nV + 1;                   // Следующий клапан
            if nV > 4 then nV := 1; end_if  // Циклически
        end_if
    
        // Включаем клапан по номеру в nV
        V1 := false; V2 := false; V3 := false; V4 := false;
        case nV of
            1: V1 := true;
            2: V2 := true;
            3: V3 := true;
            4: V4 := true;
        end_case
    
        // Фиксируем при каждом нажатии номер текущего клапана
        rtIN(I:=in);
        if rtIN.Q then Q := nV; end_if
    
    end_function_block

  6. #26

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    Учиться лучше на примерах. Это пример на ST из OL. Попробуйте портировать в CDS.
    Код:
    function_block Fix
        
        var_input
            in : bool;              // Вход события для фиксации
        end_var
        
        var_output 
            Q : udint;              // Зафиксированный номер текущего клапана
            V1, V2, V3, V4 : bool;  // Выхода клапанов
        end_var
        
        var 
            tmr : SYS.TON;          // Таймер
            nV : udint := 1;        // Номер текущего клапана
            rtIN : SYS.RTRIG;       // Фиксатор нажатия кнопки in
        end_var
    
        tmr(I:=true, T:=T#60s);     // Таймер все время в работе
        if tmr.Q then               // Пришло время сменить клапан
            tmr(I:=false);                  // Перезапуск таймера
            nV := nV + 1;                   // Следующий клапан
            if nV > 4 then nV := 1; end_if  // Циклически
        end_if
    
        // Включаем клапан по номеру в nV
        V1 := false; V2 := false; V3 := false; V4 := false;
        case nV of
            1: V1 := true;
            2: V2 := true;
            3: V3 := true;
            4: V4 := true;
        end_case
    
        // Фиксируем при каждом нажатии номер текущего клапана
        rtIN(I:=in);
        if rtIN.Q then Q := nV; end_if
    
    end_function_block
    Кажется, это то, что надо.
    Спасибо всем, кто откликнулся!

Страница 3 из 3 ПерваяПервая 123

Похожие темы

  1. помогите пожалуйста новичку
    от гаврилов василий в разделе Программируемые реле
    Ответов: 36
    Последнее сообщение: 24.07.2019, 14:10
  2. Подскажите пожалуйста новичку
    от Alexs37 в разделе Программируемые реле
    Ответов: 1
    Последнее сообщение: 09.06.2018, 12:01
  3. Ответов: 4
    Последнее сообщение: 15.05.2018, 14:11
  4. помогите, пожалуйста, новичку!!!
    от AlexandrYF в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 23.04.2009, 20:47
  5. помогите, пожалуйста!
    от don_Pedro в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 29.12.2008, 10:15

Ваши права

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