Просмотр полной версии : Как реализовать T-триггер в CoDeSys?
Литрович
03.03.2010, 10:25
задача такая: при нажатии на кнопку должно включаться устройство, при повторном нажатии должно отключаться. понимаю что наверное просто но додуматься не могу.
яндекс рулит
http://images.yandex.ru/search?p=4&ed=1&text=t-%D1%82%D1%80%D0%B8%D0%B3%D0%B3%D0%B5%D1%80&spsite=works.tarefer.ru&img_url=www.webknow.ru%2Ftsifrovie%2F00017%2Ftext. files%2Fimage004.gif&rpt=simage
Литрович
03.03.2010, 10:52
это я знаю. я думал что как-то может быть проще, одним блоком или еще как?
lara197a
03.03.2010, 11:16
Вот на 2-х Функциональных блоках.
TRIG_Vk(CLK:= knopka, Q=> ); (выделяем фронт нажатия кнопки (ФБ R_TRIG))
SR_Vk(SET1:= TRIG_Vk.Q AND NOT SR_Vk.Q1 , RESET:=TRIG_Vk.Q AND SR_Vk.Q1, Q1=> ); (ФБ SR или RS)
Литрович
03.03.2010, 11:35
спасибо, получилось. правда это тоже 4 блока, но меньше видно нельзя. я проектирую в Fbd:)
спасибо, получилось. правда это тоже 4 блока, но меньше видно нельзя. я проектирую в Fbd:)
выделите в отдельный функциональный блок
можно потробнее? желательно на St...
с кодом для фун. блоков и программы...
вопрос новичка в кодесис ,а что в кодесис нет готовых библиотек фб (счетчики ,регистры сдвига,дешифраторы,и.т.д?)
Николаев Андрей
30.03.2010, 14:33
Ну вот, rovki - прям расстроили ;).
Надо подключить библиотеки Util.lib и Standart.lib - там все есть
стыдно,но все это ,в свое время реализовывал на жесткой логике,потом на однокристалках,(локальные сети,бортовые микро эвм,системы диагностики,испытательные стенды,итд,итп) потом на плк без кодесис технологические линии.сейчас другие задачи и участие в форуме -отдушина(ностальгия) по тем временам.и данный вопрос из разряда "для общего развития".:) .будет необходимость-будет и решение.
меня как раз и интересует почему люди имея такую мощь (кодесис) спрашивают как реализовать тот или иной функциональный блок,и существует ли конвертация проектов из одного языка в другой средствами кодесис, внутри кодесис.а на счет фбд -посмотрел -слабовато,ожидал большего, для электронщика ловить нечего,делай все на элементах малой степени интеграции.
усё разобрался сам:) спсб всем...
почему люди имея такую мощь (кодесис) спрашивают как реализовать тот или иной функциональный блок
потому что не желают читать документацию. и справку по программе.
делай все на элементах малой степени интеграции
делайте свои функциональные блоки нужной степени интеграции,
сохраняйте их (хоть как фб хоть как библиотеку) и в любой момент их можно использовать в любом проекте.
потому что не желают читать документацию. и справку по программе.
делайте свои функциональные блоки нужной степени интеграции,
сохраняйте их (хоть как фб хоть как библиотеку) и в любой момент их можно использовать в любом проекте.
1.НЕ все люди хотят перед тем как сьесть ложку супа читать на нее инструкцию на ста листах,особенно если это дегустация .А вот если ты хочешь стать поваром- тогда читай,другого выбора нет.
2.Раньше это делали за нас разработчики эл.компонентов(в случае аппаратной реализации).А теперь разрабтчики ПО мне говорят -снова иди в первый класс,
делай N разрядный реверсивный регистр сдвига на логических элементах "и","не", или так и быть можешь таймер или счетчик еще использовать на пару с генератором.И это мощь?Не оставили людям выбора.Нужно реализовать простенький алгоритм на ПЛК ,а потом всю оставшуюся жизнь эксплуатировать его(оборудование).Так вот ты с начало кодесис изучи а потом.... или оставь все как есть на реле.Это я не про себя.
а может, просто создать копию документов в On-line версии...и направлять новичков по конкретному адресу...а то ссылка на документ в 500 и более страниц, выглядит как посылание по самому распространённому адресу :-)
хорошь уже...
тему можно закрыть!
zelenenkiy
22.08.2013, 17:45
Снова поднимаю тему.
Есть ли библиотека с Т триггерами?
Только начал разбираться с КОДЕСИСом в графическом режиме.
Отсутствие Т триггера удивило.
На RS и SR триггере построить не удалось.
Объем знаний у меня размере курса "микрконтроллеры и микропроцессоры". Достаточно давно. Т.е."имею представление"
Снова поднимаю тему.
Есть ли библиотека с Т триггерами?
Только начал разбираться с КОДЕСИСом в графическом режиме.
Отсутствие Т триггера удивило.
На RS и SR триггере построить не удалось.
Объем знаний у меня размере курса "микрконтроллеры и микропроцессоры". Достаточно давно. Т.е."имею представление"
берете гугл в помощь, ищите нужный триггер на логических элементах, разглядываете картинки и находите как примерно он будет выглядеть, например (http://works.tarefer.ru/96/100017/pics/image004.gif), потом всё это переносите на холст CFC
Снова поднимаю тему.
Есть ли библиотека с Т триггерами?
Только начал разбираться с КОДЕСИСом в графическом режиме.
Отсутствие Т триггера удивило.
На RS и SR триггере построить не удалось.
Объем знаний у меня размере курса "микрконтроллеры и микропроцессоры". Достаточно давно. Т.е."имею представление"
Сделайте из D триггера - соедините инверсный выход со входом "D" и получите счетный триггер(динамический) без гугла ;) и логических элементов .Импульсы подавайте на вход "С"
Сделайте из D триггера - соедините инверсный выход со входом "D" и получите счетный триггер(динамический) без гугла ;) и логических элементов .Импульсы подавайте на вход "С"
так D-триггера в CodeSys тоже нет... (или я плохо искал?:confused: )
Вам чуть выше привели рисунок, как сделать Т-триггер из элементов CFC. Соорудите свой личный Т-триггер, с дамами и так далее.
Пользуйтесь.
Троллинг здесь не к месту.
Троллинг здесь не к месту.
И в чем троллинг ?
Вам чуть выше привели рисунок, как сделать Т-триггер из элементов CFC. Соорудите свой личный Т-триггер, с дамами и так далее. Моя дама и дешифратор из двоично-десятичного в семиразрядный на 2И-НЕ нарисовать сумеет, но не всем же так повезло.:rolleyes:
А к создателям ФБ и библиотек просьба будет- не ленитесь писать комментарии.
И в чем троллинг ?
прошу прощения, все нормально работает, ошибка была моей.
прошу прощения, все нормально работает, ошибка была моей.
Бывает. Вы на каком языке пишете?
Если под Т-триггером понимать импульсное реле, то
Решение на ST и FBD
9683 9684
Бывает. Вы на каком языке пишете?
CFC в основном, и чуть-чуть ST. Я только осваиваю CodeSys, потому ляпов много бывает. А с Вашим примером у меня просто глупо получилось- блок добалил в POU "test" (специально для проверки идей использую, чтобы основную программу особо не замусоривать) , вход/выход нарисовал, а в главную программу POU "test" не включил, вот он и не работал.
Если под Т-триггером понимать импульсное реле, то
Решение на ST и FBD
9683 9684
Ага, я примерно так и делал для входов выбора режима. Только вместо R_trig использовал таймер TP с длиной импульса 5 ms. А вот теперь сомнения взяли- может мой вариант неправильный? :confused:
9685
Да триггер решается на простых логических элементах. Мне привычней и удобней писать на FDB.
А раз Вам удобней работать на СFC и Вы читаете логические схемы, то написать нужный блок будет легко.
Сравните схему Т-триггера и его реализацию на CFC. Фактически просто перечертить схему в CDS в виде функционального блока и сохранить
как внутреннюю библиотеку. И у Вас есть нужный FB.
Ага, я примерно так и делал для входов выбора режима. Только вместо R_trig использовал таймер TP с длиной импульса 5 ms. А вот теперь сомнения взяли- может мой вариант неправильный? :confused:
9685
Нет таймер не годится, нужен R-триггер, т.е. элемент с памятью.
Нет таймер не годится, нужен R-триггер, т.е. элемент с памятью.
R-триггер, который в CodeSys- не совсем триггер- правильней его стоило бы называть детектором фронта, а роль "ячейки памяти" в нем выполняет локальная переменная. Ну а если внимательно прочитать встроенную в CodeSys справку -
Функциональный блок R_TRIG генерирует импульс по переднему фронту входного сигнала.
Выход Q равен FALSE до тех пор, пока вход CLK равен FALSE. Как только CLK получает значение TRUE, Q устанавливается в TRUE. При следующем вызове функционального блока выход сбрасыва-ется в FALSE. Таким образом, блок выдает единичный импульс при каждом переходе CLK из FALSE в TRUE.
то называть этот ФБ "элементом с памятью" будет неправильно. Собственно, "таймер" ТР, который использовал я, правильней было бы назвать "одновибратор". В целом схемы с R-триггером и таймером ТР работают похоже, за одним исключением- схема с таймером не реагирует на входящие импульсы в течении времени отсчета таймера,- другими словами "антидребезг" по умолчанию :); R-триггер же обработает каждый входящий импульс.
R-триггер, который в CodeSys- не совсем триггер- правильней его стоило бы называть детектором фронта, а роль "ячейки памяти" в нем выполняет локальная переменная. Ну а если внимательно прочитать встроенную в CodeSys справку -
то называть этот ФБ "элементом с памятью" будет неправильно. Собственно, "таймер" ТР, который использовал я, правильней было бы назвать "одновибратор". В целом схемы с R-триггером и таймером ТР работают похоже, за одним исключением- схема с таймером не реагирует на входящие импульсы в течении времени отсчета таймера,- другими словами "антидребезг" по умолчанию :); R-триггер же обработает каждый входящий импульс.
Таким образом R-триггер тоже одновибратор, но с длительностью импульса в один цикл.
С R-триггером схема работает правильно при любой длительности цикла ПЛК.
А вот с ТР таймером, если длительность цикла ПЛК меньше чем заданная величина на входе РТ, то будет дребезг выходной переменной "out".
другими словами "антидребезг" по умолчанию при РТ=5 мс антидребезг ни какой, а если сделать больше, то есть вероятность получить дребезг выходной переменной "out"
Таким образом R-триггер тоже одновибратор, но с длительностью импульса в один цикл.
С R-триггером схема работает правильно при любой длительности цикла ПЛК.
А вот с ТР таймером, если длительность цикла ПЛК меньше чем заданная величина на входе РТ, то будет дребезг выходной переменной "out".
при РТ=5 мс антидребезг ни какой, а если сделать больше, то есть вероятность получить дребезг выходной переменной "out"
Спасибо, разобрался. В симуляции-то все работает как надо (тем более что время цикла ПЛК больше чем время ТР-таймера), а в живую- проверить не на чем, увы.
в 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
*)
в 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.
Для Т-триггера такая обратная связь не нужна.
petera выше rovki написал как из D тригера делается Т тригер. и оно РАБОТАЕТ именно так, как указано. Выход Q через инверсию на D вход. Импульс подавать на CLK вход (поправил ошибку)
Кстати не все можно реализовать из схем на CFC или ST не важно. Потому что тут все происходит последовательно, а в реальной схеме одновременно.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot