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

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

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,170

    По умолчанию

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

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

  2. #2
    Пользователь Аватар для smk1635
    Регистрация
    06.09.2010
    Адрес
    Брянск
    Сообщений
    1,241

    По умолчанию

    Да триггер решается на простых логических элементах. Мне привычней и удобней писать на FDB.

    А раз Вам удобней работать на СFC и Вы читаете логические схемы, то написать нужный блок будет легко.
    Сравните схему Т-триггера и его реализацию на CFC. Фактически просто перечертить схему в CDS в виде функционального блока и сохранить
    как внутреннюю библиотеку. И у Вас есть нужный FB.
    Изображения Изображения
    Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда. (Закон Линуса)

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

    По умолчанию

    в 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
    *)

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

    По умолчанию

    Цитата Сообщение от 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/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

    По умолчанию

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

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

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

Ваши права

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