Страница 61 из 66 ПерваяПервая ... 11515960616263 ... ПоследняяПоследняя
Показано с 601 по 610 из 658

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

  1. #601

    По умолчанию

    большое спасибо

  2. #602

    По умолчанию

    Добрый день!

    Уважаемые программисты, нет реле под рукой, такая конструкция жизнеспособна?

    function_block R_c //Реверсивный счётчик.


    var_input //объявление входных переменных
    U : bool; //входная переменная с типом данных bool
    D : bool; //входная переменная с типом данных bool
    Res : bool; //входная переменная с типом данных bool
    N : udint; //входная переменная для значения счетчика после сброса
    end_var

    var_output //объявление выходных переменных
    Q : udint; //выходная переменная с типом данных udint
    end_var

    var //объявление локальных переменных
    CounterValue : udint; //переменная для текущего значения счетчика

    RTrig : bool; //переменная для определения переднего фронта на входе «U»
    RTrig1 : bool; //переменная для определения переднего фронта на входе «D»
    end_var

    if Res then
    CounterValue := N;
    end_if

    while U and not RTrig and not Res and CounterValue <100 do
    CounterValue := (CounterValue + 1);
    RTrig := U;



    end_while

    if not U and RTrig then
    RTrig := false;
    end_if

    while D and not RTrig1 and not Res and CounterValue > 0 do
    CounterValue := (CounterValue - 1);
    RTrig1 := D;

    end_while



    if not D and RTrig1 then
    RTrig1 := false;
    end_if

    Q := CounterValue ;

    end_function_block

  3. #603

    По умолчанию

    Добрый!
    А чем Вас не устраивает стандартный?
    Owen.jpg

    А так, в принципе, - да!
    Но я бы сделал так:
    Код:
    function_block CTN
    
        var_input
           U, D, R : bool;
           N : udint;
        end_var
    
        var_output
           Q : udint;
        end_var
    
        var
            UTrig, DTrig : SYS.RTRIG;
            init : bool;
        end_var
    
        UTrig(I := U); DTrig(I := D);
        if UTrig.Q and Q < 100 then Q := Q + 1; end_if
        if DTrig.Q and Q > 0 then Q := Q - 1; end_if
        if R or not init then Q := N; end_if
        init := true;
    
    end_function_block
    Последний раз редактировалось EFrol; 04.12.2024 в 12:55.

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

    По умолчанию

    Цитата Сообщение от Рогов Алексей Посмотреть сообщение
    Добрый день!

    Уважаемые программисты, нет реле под рукой, такая конструкция жизнеспособна?
    1. А в эмуляторе проверить работу? - если работает, значит жизнеспособна
    2. В ST Лоджика уже завезли системные триггеры и счетчики

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

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    Добрый!
    ...Но я бы сделал так:
    Код:
    function_block CTN
    
        var_input
           U, D, R : bool;
           N : udint;
        end_var
    
        var_output
           Q : udint;
        end_var
    
        var
            UTrig, DTrig : SYS.RTRIG;
            init : bool;
        end_var
    
        UTrig(I := U); DTrig(I := D);
        if UTrig.Q and Q < 100 then Q := Q + 1; end_if
        if DTrig.Q and Q > 0 then Q := Q - 1; end_if
        if R or not init then Q := N; end_if
        init := true;
    
    end_function_block
    Тогда уж, сразу счетчик использовать, тем более, что в ST он 32-битный

  6. #606

    По умолчанию

    Спасибо! оператор WHILE интересовал. Как факт того, что в блоке счётчика два цикла, а переменная CounterValue одна.

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

    По умолчанию

    Цитата Сообщение от Рогов Алексей Посмотреть сообщение
    Спасибо! оператор WHILE интересовал. Как факт того, что в блоке счётчика два цикла, а переменная CounterValue одна.
    Цикл там у вас, вообще, лишний

  8. #608
    Пользователь
    Регистрация
    12.12.2007
    Адрес
    п.Таврическое Омская область
    Сообщений
    111

    По умолчанию

    Цитата Сообщение от Денисов Максим Сергеевич Посмотреть сообщение
    Коллеги!
    Рады представить вам Функциональные блоки на текстовом языке ST в Owen Logic

    • Поддержан вызов функции и функционального блока внутри функционального блока;

    • При вызове ФБ внутри ФБ поддержано обращение к входам и выходам ФБ через точку;

    • Поддержаны локальные одномерные массивы.


    ФБ на ST поддерживают приборы: ПР100(М02), ПР102, ПР200, ПР103, ПР205 и ИПП120.

    Данная версия Owen Logic является бета версией!

    Скачать Owen Logic 2.4.332(beta)

    Если в процессе работы с новой версией вы обнаружите баг или у вас есть предложения по развитию ФБ на ST, то можете поделиться в этой теме или прислать на почту soft@owen.ru

    UPD (15.08.23):
    Выпущена релизная версия Owen Logic 2.4 с ФБ на ST
    Это очень здорово. Все "задышало" по-лучше. Скажите, логические операторы для целых типов в дальнейшем возможно cделать в ST? Пока только для типа bool. Иногда просто необходимо разные маски выделить, в FBD это без проблем, а в ST такое невозможно. Или ошибаюсь? Поправьте
    Борьба за отечественного производителя - борьба за страну!

  9. #609

    По умолчанию

    Цитата Сообщение от lunyov_i Посмотреть сообщение
    Это очень здорово. Все "задышало" по-лучше. Скажите, логические операторы для целых типов в дальнейшем возможно cделать в ST? Пока только для типа bool. Иногда просто необходимо разные маски выделить, в FBD это без проблем, а в ST такое невозможно. Или ошибаюсь? Поправьте
    Логические операторы пока только для BOOL, обещали сделать для целых, но никто не запрещал написать функцию самому. Тут есть пример Валенка,
    Переключение бит_3++.https://owen.ru/forum/showthread.php...&page=382#3814
    Распаковка и упаковка бит в маску через точку, поддержаны уже сейчас.
    Последний раз редактировалось kondor3000; 22.12.2024 в 10:31.

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

    По умолчанию Побитовые логические операции

    Вот, Валенок в свое время вдохновил
    Вложения Вложения

Страница 61 из 66 ПерваяПервая ... 11515960616263 ... ПоследняяПоследняя

Похожие темы

  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

Ваши права

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