Страница 4 из 4 ПерваяПервая ... 234
Показано с 31 по 37 из 37

Тема: Как реализовать T-триггер в CoDeSys?

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

    По умолчанию

    Цитата Сообщение от Lam-Ka Посмотреть сообщение
    Ага, я примерно так и делал для входов выбора режима. Только вместо R_trig использовал таймер TP с длиной импульса 5 ms. А вот теперь сомнения взяли- может мой вариант неправильный?
    Вложение 9685
    Нет таймер не годится, нужен R-триггер, т.е. элемент с памятью.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  2. #32
    Пользователь Аватар для Lam-Ka
    Регистрация
    12.08.2013
    Адрес
    Красноярский край
    Сообщений
    205

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Нет таймер не годится, нужен R-триггер, т.е. элемент с памятью.
    R-триггер, который в CodeSys- не совсем триггер- правильней его стоило бы называть детектором фронта, а роль "ячейки памяти" в нем выполняет локальная переменная. Ну а если внимательно прочитать встроенную в CodeSys справку -

    Функциональный блок R_TRIG генерирует импульс по переднему фронту входного сигнала.

    Выход Q равен FALSE до тех пор, пока вход CLK равен FALSE. Как только CLK получает значение TRUE, Q устанавливается в TRUE. При следующем вызове функционального блока выход сбрасыва-ется в FALSE. Таким образом, блок выдает единичный импульс при каждом переходе CLK из FALSE в TRUE.
    то называть этот ФБ "элементом с памятью" будет неправильно. Собственно, "таймер" ТР, который использовал я, правильней было бы назвать "одновибратор". В целом схемы с R-триггером и таймером ТР работают похоже, за одним исключением- схема с таймером не реагирует на входящие импульсы в течении времени отсчета таймера,- другими словами "антидребезг" по умолчанию ; R-триггер же обработает каждый входящий импульс.
    Что нельзя запрограммировать- приходиться паять.

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

    По умолчанию

    Цитата Сообщение от Lam-Ka Посмотреть сообщение
    R-триггер, который в CodeSys- не совсем триггер- правильней его стоило бы называть детектором фронта, а роль "ячейки памяти" в нем выполняет локальная переменная. Ну а если внимательно прочитать встроенную в CodeSys справку -

    то называть этот ФБ "элементом с памятью" будет неправильно. Собственно, "таймер" ТР, который использовал я, правильней было бы назвать "одновибратор". В целом схемы с R-триггером и таймером ТР работают похоже, за одним исключением- схема с таймером не реагирует на входящие импульсы в течении времени отсчета таймера,- другими словами "антидребезг" по умолчанию ; R-триггер же обработает каждый входящий импульс.
    Таким образом R-триггер тоже одновибратор, но с длительностью импульса в один цикл.
    С R-триггером схема работает правильно при любой длительности цикла ПЛК.
    А вот с ТР таймером, если длительность цикла ПЛК меньше чем заданная величина на входе РТ, то будет дребезг выходной переменной "out".
    другими словами "антидребезг" по умолчанию
    при РТ=5 мс антидребезг ни какой, а если сделать больше, то есть вероятность получить дребезг выходной переменной "out"
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  4. #34
    Пользователь Аватар для Lam-Ka
    Регистрация
    12.08.2013
    Адрес
    Красноярский край
    Сообщений
    205

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Таким образом R-триггер тоже одновибратор, но с длительностью импульса в один цикл.
    С R-триггером схема работает правильно при любой длительности цикла ПЛК.
    А вот с ТР таймером, если длительность цикла ПЛК меньше чем заданная величина на входе РТ, то будет дребезг выходной переменной "out".
    при РТ=5 мс антидребезг ни какой, а если сделать больше, то есть вероятность получить дребезг выходной переменной "out"
    Спасибо, разобрался. В симуляции-то все работает как надо (тем более что время цикла ПЛК больше чем время ТР-таймера), а в живую- проверить не на чем, увы.
    Что нельзя запрограммировать- приходиться паять.

  5. #35
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,709

    По умолчанию

    в oscat библиотеки есть то, что нужно. называется FF_DRE Д тригер, на котором все реализуется.
    Вот его текст на ST
    FUNCTION_BLOCK FF_DRE
    VAR_INPUT
    SET : BOOL;
    D : BOOL;
    CLK : BOOL;
    RST : BOOL;
    END_VAR
    VAR_OUTPUT
    Q : BOOL;
    END_VAR
    VAR
    edge : BOOL;
    END_VAR

    (*
    version 1.2 30. oct. 2008
    programmer hugo
    tested by oscat

    D-type flip flop with set, reset and rising clock trigger

    *)

    IF rst OR set THEN
    Q := NOT rst;
    ELSIF clk AND NOT edge THEN
    Q := D;
    END_IF;
    edge := CLK;

    (* revision history
    hm 4. aug 2006 rev 1.0
    original version

    hm 27. dec 2007 rev 1.1
    changed code for better performance

    hm 30. oct. 2008 rev 1.2
    optimized performance
    *)

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

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    в oscat библиотеки есть то, что нужно. называется FF_DRE Д тригер, на котором все реализуется.
    Вот его текст на ST
    FUNCTION_BLOCK FF_DRE
    VAR_INPUT
    SET : BOOL;
    D : BOOL;
    CLK : BOOL;
    RST : BOOL;
    END_VAR
    VAR_OUTPUT
    Q : BOOL;
    END_VAR
    VAR
    edge : BOOL;
    END_VAR

    (*
    version 1.2 30. oct. 2008
    programmer hugo
    tested by oscat

    D-type flip flop with set, reset and rising clock trigger

    *)

    IF rst OR set THEN
    Q := NOT rst;
    ELSIF clk AND NOT edge THEN
    Q := D;
    END_IF;
    edge := CLK;

    (* revision history
    hm 4. aug 2006 rev 1.0
    original version

    hm 27. dec 2007 rev 1.1
    changed code for better performance

    hm 30. oct. 2008 rev 1.2
    optimized performance
    *)
    D-триггер не равнозначен T-триггеру. Это два разных триггера.
    Т- триггер имеет счетный вход Т. При каждом изменении состояния входа Т из 0 в 1 выход Q триггера меняет свое состояние на противоположное.
    D-триггер имеет вход данных D и тактовый вход С(CLK). По фронту импульса на тактовом входе на выходе Q триггера запоминается состояние входа D.
    Таким образом, что бы из D-триггера получился Т-триггер нужна обратная связь с выхода Q на вход D.
    Для Т-триггера такая обратная связь не нужна.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

    По умолчанию

    petera выше rovki написал как из D тригера делается Т тригер. и оно РАБОТАЕТ именно так, как указано. Выход Q через инверсию на D вход. Импульс подавать на CLK вход (поправил ошибку)

    Кстати не все можно реализовать из схем на CFC или ST не важно. Потому что тут все происходит последовательно, а в реальной схеме одновременно.
    Последний раз редактировалось melky; 01.11.2013 в 14:20.

Страница 4 из 4 ПерваяПервая ... 234

Ваши права

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