Страница 18 из 66 ПерваяПервая ... 8161718192028 ... ПоследняяПоследняя
Показано с 171 по 180 из 658

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

  1. #171

    По умолчанию

    Триггеры то ладно, но каких-то средств для работы с временнЫми интервалами точно не хватает

  2. #172
    Пользователь Аватар для yura2507
    Регистрация
    07.02.2022
    Адрес
    Нижний Новгород
    Сообщений
    27

    По умолчанию

    Да, библиотеки конечно не хватает...
    Городить все стандартные блоки лениво...
    Да и отсутствие TIME не очень радует, хотя программа не даёт использовать имя TIME в качестве переменной, скорее всего работы ведутся и имя переменной уже зарезервировано.
    Использую для тестов время цикла, не знаю на сколько такой вариант верный, но, как мне кажется, он более менее точный:

    function_block times


    var_input
    T_cycle:udint;
    end_var

    var_output
    T : udint;
    end_var

    var
    M:udint;
    end_var

    M:=T;
    T:=M+T_cycle;

    end_function_block

    А Таймер TOF получился такой (используя ФБ ST Tites)

    function_block TOF

    var_input
    IN:bool;
    PT:udint;
    T_cycle:udint;
    end_var

    var_output
    Q:bool;
    ET:udint;
    end_var

    var
    M:bool;
    StartTime:udint;
    T:times;
    end_var

    T();
    T.T_cycle:=T_cycle;
    if IN then
    Q:=true;
    ET:=0;
    else
    if M then
    StartTime:=T.T;
    end_if

    if Q then
    ET:=T.T-StartTime;
    if ET>=PT then
    Q:=false;
    ET:=PT;
    end_if
    end_if
    end_if
    M:=IN;


    end_function_block
    Последний раз редактировалось yura2507; 17.08.2023 в 10:55.

  3. #173
    Пользователь Аватар для zaychenko
    Регистрация
    01.12.2021
    Адрес
    Санкт-Петербург
    Сообщений
    59

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    zaychenko так вы можете сами добавить, или вы хотите как Валенок писал
    x := r_trig; ?
    Я хочу просто писать код, используя стандартные библиотечные элементы, не задумываясь о корректности их реализации. Например, на графическом языке все эти функциональные блоки доступны и их реализация не перекладывается на пользователя.
    _______________________________

    С уважением,
    Зайченко Никита
    ООО «Политехник»
    Тел.: +7 (911) 284 86 84
    E-mail: zaychenko@owen-polytechnic.ru

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

    По умолчанию

    Цитата Сообщение от zaychenko Посмотреть сообщение
    Я хочу просто писать код, используя стандартные библиотечные элементы,...
    Видимо тогда ждите.
    Кому нужно решать задачи здесь и сейчас - тот (yura2507) их решает

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

    По умолчанию

    Цитата Сообщение от yura2507 Посмотреть сообщение
    ..
    Использую для тестов время цикла, не знаю на сколько такой вариант верный, но, как мне кажется, он более менее точный:
    Ну как временный эрзац. Если задача тяжелая - то может имеет смысл проверить "циклов за секунду"
    А по поводу fb times - даже сейчас нужен ли он ? Во всех блоках типа TON/TOF/BLINK/PID/... локальный "readonly" t := t + 1 изобразит TIME()

    Внезапно оказавшийся 1.754мс за цикл тоже не проблема и сейчас

  6. #176
    Пользователь Аватар для yura2507
    Регистрация
    07.02.2022
    Адрес
    Нижний Новгород
    Сообщений
    27

    По умолчанию

    2023-08-18_08-41-23.png2023-08-18_08-42-04.png
    В ПР205 (думаю что и в 103-ем),есть системное время в мс, и их можно использовать для реального времени блоков TON\TOF\TP и прочих.

  7. #177
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,025

    По умолчанию

    yura2507 а не могли бы выкладывать код закрывая его тегами, чтобы можно было развернуть и скопировать? спасибо.

  8. #178
    Пользователь Аватар для yura2507
    Регистрация
    07.02.2022
    Адрес
    Нижний Новгород
    Сообщений
    27

    По умолчанию

    R_TRIG Триггер переднего фронта, от слова Raise
    Код:
    function_block R_TRIG
    
        var_input
            I:bool;
        end_var
    
        var_output
           Q : bool;
        end_var
    
        var 
            M:bool;
        end_var
    
        Q:=false;
        if I and not M then Q:=true; end_if
        M:=I;
        
    end_function_block
    F_TRIG Триггер заднего фронта, от слова Fall
    Код:
    function_block F_TRIG
    
        var_input
            I:bool;
        end_var
    
        var_output
           Q : bool;
        end_var
    
        var 
            M:bool;
        end_var
    
        Q:=false;
        if not I and M then Q:=true; end_if
        M:=I;
        
    end_function_block

  9. #179
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,025

    По умолчанию

    Спасибо, полезно, когда ни на что не остается свободного времени и кто-то уже переписал или создал FB на ST...

  10. #180
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,998

    По умолчанию

    Цитата Сообщение от yura2507 Посмотреть сообщение
    R_TRIG Триггер переднего фронта, от слова Raise
    Скрытый текст:
    Код:
    function_block R_TRIG
    
        var_input
            I:bool;
        end_var
    
        var_output
           Q : bool;
        end_var
    
        var 
            M:bool;
        end_var
    
        Q:=false;
        if I and not M then Q:=true; end_if
        M:=I;
        
    end_function_block


    F_TRIG Триггер заднего фронта, от слова Fall
    Скрытый текст:
    Код:
    function_block F_TRIG
    
        var_input
            I:bool;
        end_var
    
        var_output
           Q : bool;
        end_var
    
        var 
            M:bool;
        end_var
    
        Q:=false;
        if not I and M then Q:=true; end_if
        M:=I;
        
    end_function_block
    Код:
    function_block R_TRIG
    
        var_input
            I:bool;
        end_var
    
        var_output
           Q : bool;
        end_var
    
        var 
            M:bool;
        end_var
    (*
        Q:=false;
        if I and not M then Q:=true; end_if
    *)
        Q:=I and not M;
        M:=I;
        
    end_function_block
    Код:
    function_block F_TRIG
    
        var_input
            I:bool;
        end_var
    
        var_output
           Q : bool;
        end_var
    
        var 
            M:bool;
        end_var
    (*
        Q:=false;
        if not I and M then Q:=true; end_if
    *)
        Q:=not I and NOT M;
        M:=NOT I;
        
    end_function_block
    Последний раз редактировалось petera; 18.08.2023 в 11:56.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

Похожие темы

  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

Ваши права

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