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

Тема: Функциональные блоки на языке ST

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

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

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Дописать код в конце и добавить переменную udiSel_ в VAR
    Код:
    if udiSel<> udiSel_ then
        Start:=false;
        udiSel_:=udiSel;
    else Start:=True;
    end_if
    Спасибо! Работает!

  2. #2

    По умолчанию

    Цитата Сообщение от Александр_004 Посмотреть сообщение
    Спасибо! Работает!
    Вообще, всё делается гораздо проще на шаговом автомате CASE, тут есть несколько примеров, везде где есть шаги или переключения режимов, только в вашем случае без таймера шагов https://owen.ru/forum/showthread.php...=9&p=429061#81
    Последний раз редактировалось kondor3000; 12.08.2024 в 14:59.

  3. #3

    По умолчанию

    При использовании кода:
    f udiSel<> udiSel_ then
    Start:=false;
    udiSel_:=udiSel;
    else Start:=True;
    end_if
    Происходит сброс выхода при каждом изменении переменной udiSel. Case и If у меня дают одинаковые результаты. Как сделать сброс после этапа выполнения? Переменная udiSel меняется от 2 до 7, при этом сброс выхода делать не нужно, так как происходит регулирование в заданном диапазоне.

    //область кода

    xOut1 := 0;
    xOut2 := 0;
    xOut3 := 0;
    Start := false;

    CASE udiSel OF
    0..1:
    xOut1 := IN0_0;
    xOut2 := IN0_1max;
    xOut3 := D0_1;

    2..7:
    xOut1 := IN0_1max;
    xOut2 := IN2_7max;
    xOut3 := D2_7;

    8..14:
    xOut1 := IN2_7max;
    xOut2 := IN8_14max;
    xOut3 := D8_14;

    END_CASE

    if udiSel <> udiSel_ then
    Start := false;
    udiSel_:= udiSel;
    else Start := True;
    end_if

    END_FUNCTION_BLOCK

    Screenshot 2024-08-12 153905.png
    Последний раз редактировалось Александр_004; 12.08.2024 в 15:39.

  4. #4

    По умолчанию

    Селектор работает, но выход не сбрасывается.
    //область кода

    xOut1 := 0;
    xOut2 := 0;
    xOut3 := 0;
    //Start := false;

    if (udiSel >= 0) and (udiSel <= 1) then
    xOut1 := IN0_0;
    xOut2 := IN0_1max;
    xOut3 := D0_1;
    end_if
    if (udiSel<>udiSel_) and ((udiSel=0) or (udiSel=1)) then
    Start := false;
    udiSel_:= udiSel;
    else Start := True;
    udiSel_:= udiSel;
    end_if
    if (udiSel >= 2) and (udiSel <= 7) then
    xOut1 := IN0_1max;
    xOut2 := IN2_7max;
    xOut3 := D2_7;
    end_if
    if (udiSel<>udiSel_) and ((udiSel=2) or (udiSel=7)) then
    Start := false;
    udiSel_:= udiSel;
    else Start := True;
    udiSel_:= udiSel;
    end_if
    if (udiSel >= 8) and (udiSel <= 14) then
    xOut1 := IN2_7max;
    xOut2 := IN8_14max ;
    xOut3 := D2_7;
    end_if
    if (udiSel<>udiSel_) and ((udiSel=8) or (udiSel=14)) then
    Start := false;
    udiSel_:= udiSel;
    else Start := True;
    udiSel_:= udiSel;
    end_if

    end_function_block

  5. #5
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,912

    По умолчанию

    [QUOTE=Александр_004;443640]Селектор работает, но выход не сбрасывается.
    А если так

    Код:
        var
            flag : udint;
        end_var
        
        xOut1 := 0;
        xOut2 := 0;
        xOut3 := 0;
        Start := false;
    
        case udiSel of
            0, 1:
                xOut1 := IN0_0;
                xOut2 := IN0_1max;
                xOut3 := D0_1;
                Start := true;
                flag := 0;
            2..7:
                if flag = 1 then
                    xOut1 := IN0_1max;
                    xOut2 := IN2_7max;
                    xOut3 := D2_7;
                    Start := true;               
                else
                    flag := 1;
                end_if
    
            8..14:
                if flag = 2 then
                    xOut1 := IN2_7max;
                    xOut2 := IN8_14max;
                    xOut3 := D8_14;
                    Start := true;               
                else    
                    flag := 2;
                end_if
        end_case
    
    end_function_block

Похожие темы

  1. ПЛК73 (Функциональные кнопки)
    от necro в разделе ПЛК63/73
    Ответов: 8
    Последнее сообщение: 18.05.2022, 10:03
  2. Функциональные блоки
    от ribamuka в разделе СПК2xx (архив)
    Ответов: 4
    Последнее сообщение: 08.04.2018, 15:01
  3. Функциональные блоки насосов в CoDeSys
    от Алексей Ермолаев в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 28.03.2017, 13:50
  4. Функциональные блоки- где искать?
    от Xops в разделе ПЛК1хх
    Ответов: 16
    Последнее сообщение: 01.03.2016, 11:07
  5. СПК функциональные клавиши
    от Lyohin в разделе Трёп (Курилка)
    Ответов: 0
    Последнее сообщение: 30.03.2015, 15:10

Ваши права

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