Участник
Присоединился: 02 Сентябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 54
Добрый день, уважаемые коллеги!
Может быть я просто не внимательный (как всегда), но вот это программа мне никак не хочет останавливать таймер:
PROGRAM proba
VAR
Tmr_1: TP;
i: INT;
y: TIME;
END_VAR
IF Tmr_1.IN =FALSE THEN
Tmr_1(IN:=TRUE, PT:=T#5s);
END_IF;
IF Tmr_1.Q THEN
i:=i+1;
y:=Tmr_1.ET;
END_IF;
IF Tmr_1.Q = FALSE THEN
Tmr_1(IN:=FALSE);
END_IF;
Участник
Присоединился: 02 Сентябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 54
Действительный член
Присоединился: 27 Ноябрь 2006
Категория: Albania
Online Status: Offline
Публикации: 134
млин, жаль с CodeSys никогда не работал, а то бы сумничал как-нить. ))
а вообще, на мой скорый взгляд в этом куске случаем не зацикливание?
может быть вместо
Первоначально опубликовано Mixer IF Tmr_1.Q THEN IF Tmr_1.Q = FALSE THEN |
попробовать нечто вроде
IF Tmr_1.Q THEN
i:=i+1;
y:=Tmr_1.ET;
ELSEIF Tmr_1.Q = FALSE THEN
Tmr_1(IN:=FALSE);
END_IF;
IF Tmr_1.Q THEN
i:=i+1;
y:=Tmr_1.ET;
ELSE Tmr_1(IN:=FALSE);
END_IF;
сразу прошу прощения, с синтаксисом не знаком, поэтому вероятны ошибки
Участник
Присоединился: 02 Сентябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 54
Действительный член
Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
В рабочей ветке блок таймера вообще не вызывается! С чего вдруг его выход должен меняться?
Надо добавить красную строчку:
PROGRAM proba
VAR
Tmr_1: TP;
i: INT;
y: TIME;
END_VAR
IF Tmr_1.IN =FALSE THEN
Tmr_1(IN:=TRUE, PT:=T#5s); (*Вызов таймера и запуск = OK*)
END_IF;
Tmr_1; (* Вызов экз. функ. блока *)
i:=i+1;
y:=Tmr_1.ET;
END_IF;
IF Tmr_1.Q = FALSE THEN
Tmr_1(IN:=FALSE); (*Вызов таймера и останов = OK*)
END_IF;
Подробно о работе с временем, датами и таймерами МЭК см. тут.
Действительный член
Присоединился: 27 Сентябрь 2006
Online Status: Offline
Публикации: 125
Перед обращением к полю ЕТ надо вызвать функцию:
IF Tmr_1.Q THEN
i:=i+1;
Tmr_1(IN:=TRUE);
y:=Tmr_1.ET;
END_IF;
P.S. Пока писал, оказывается, уже ответили
Участник
Присоединился: 02 Сентябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 54
Действительный член
Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Минимально покушаясь на авторство, начальный кусок можно переделать так :
b: BOOL := FALSE; (* Добавляем булеву переменную *)
IF NOT(b) THEN
b := TRUE;
END_IF
Участник
Присоединился: 02 Сентябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 54
Действительный член
Присоединился: 27 Сентябрь 2006
Online Status: Offline
Публикации: 125
Первоначально опубликовано sanwork |
Мне кажется, здесь всё усложнено и запутано («. это не фунция. «, «должен вызываться, чтобы все правильно работало» и прочее). Напишите первой строкой программы вызов функции:
остальные обращения к ней можно убрать. Получится, что таймер вызывается каждый раз при вызове программного блока (если вам нужно, чтобы таймер всё время работал). Главная идея такая. Система следит только за обновлением системного таймера (суммирует импульсы от кварцевого генератора), выходные поля вашего таймера будут обновлены после явного вызова функции (в данном случае TP).
- Язык st codesys таймер
- Язык st codesys таймер
- Таймер на ST?
- Кто сейчас на конференции
- Таймеры и триггеры CODESYS. Еще один шаг Arduino к классическому ПЛК
- TON — функциональный блок «таймер с задержкой включения»
- В Arduino IDE:
- TOF — функциональный блок «таймер с задержкой выключения»
- В Arduino IDE:
- TP — функциональный блок «импульс-таймер»
- В Arduino IDE:
- R_TRIG — функциональный блок «дeтектор фронта»
- В Arduino IDE:
- F_TRIG — функциональный блок «дeтектор спада»
- В Arduino IDE:
- RS_TRIG — функциональный блок RS-триггер / SR_TRIG — функциональный блок SR-триггер
- 📹 Видео
Видео:#2 - Structured Text // Создадим копию таймера TON и добавим к нему памятьСкачать
Язык st codesys таймер
Товарищи доброе время суток!
Я новичок в Codesys 🙂
Хотел поинтересоваться есть ли в codesys таймер TON с паузой. (под паузой подразумевается остановка времени отсчёта и возобновление после команды по входу )
Если нет то подскажите как его организовать на ST?
Заранее благодарен
для ТON время отсчета включения с задержкой увеличить на время паузы? Так не легче после паузы сброшенный таймер запустить по новой, у него же до этого момента всёравно выход «потушен»
для ТON время отсчета включения с задержкой увеличить на время паузы? Так не легче после паузы сброшенный таймер запустить по новой, у него же до этого момента всё равно выход «потушен»
С таймером разобрался как на CFC написать.Но всё же хочется увидеть как это будет на ST выглядеть, хотя бы пару основных строк.
Товарищи доброе время суток!
Я новичок в Codesys 🙂
Хотел поинтересоваться есть ли в codesys таймер TON с паузой. (под паузой подразумевается остановка времени отсчёта и возобновление после команды по входу )
Если нет то подскажите как его организовать на ST?
Заранее благодарен
Время которое вы задаете в TON отсчитывает контроллер,что бы его остановить нужно сделать СТОП программе.
Время которое вы задаете в TON отсчитывает контроллер,что бы его остановить нужно сделать СТОП программе.
Вы хоть покажите как на CFC сделали, может народ быстренько этот вариант на ST и переложит..
Читать 7 часть «Отладка прикладных ПЛК программ в CoDeSys» http://prolog-plc.ru/pb1
В самом начале статьи будет такой таймер http://prolog-plc.ru/docs/iecdeb07.pdf
Берёте исходный код TON: https://bitbucket.org/mjsousa/matiec/src/36fb9443b6ea676ced5f9029f9b7ab070b2eb7e3/lib/timer.txt?at=default&fileviewer=file-view-default#timer.txt-128
Фрагмент ,CURRENT_TIME,,__CURRENT_TIME)> заменяете на CURRENT_TIME := TIME(); (в КДС именно такой способ узнать «текущее время»)
Так skinnbatter это начинающий. Ему в самый раз пригодится разобраться в устройстве «стандартного TON». По-моему, весьма хорошая задача.
Ну тогда просто необходимо разобраться именно самостоятельно, чтоб уяснить саму суть, а не смотреть чужие примеры, иначе следующий вопрос будет : «С TON разобрался, помогите сделать TOF с паузой» ))
Релиз таймеров находится на уровне обязательной программы для изучения. Типа «жы-шы пишы с буквы ы»
Учиться нужно на задачах.
Задача «добавить паузу» в имеющийся TON вполне норм задача.
Вариант «помогите сделать TOF с паузой» будет как раз в том случае, если человек не разберётся, а, неглядя, возьмёт вариант capzap’а, который по случаю оказался «TON’ом с паузой» (ну или чем там, неважно).
никогда не понимал и наверное уже не судьба понять, шутите или нет, против или поддерживаете, так навсякий случай потестил, проблем не вижу и ЕТ тут вообще ни причем он как свое считало так и будет считать пока не достигнет РТ
Вы зачем тогда примеры просили на ST, если только запутались больше
а номер у этого сименсовского таймера есть или хотя бы название, а то скорее всего пользуйтесь чьей то наработкой, кто то за Вас «наплясался»
а номер у этого сименсовского таймера есть или хотя бы название, а то скорее всего пользуйтесь чьей то наработкой, кто то за Вас «наплясался»
ну Вы как бы тоже не считайте, что тут сименсом ни кто не занимается, привожу эпюру этого таймера. Она ни как не похожа на Вашу задачу, запоминанием здесь считается не пауза и запоминание прошедшего времени чтоб потом с этого момента запуститься дальше, а то что пускающий сигнал был и надо продолжать отсчитывать время на включение, даже если он пропал
А готовый таймер, предложенный тут (http://www.owen.ru/forum/showthread.php?t=7077&p=161598&viewfull=1#post161598), не подошел?
Да бы не создавать тему про таймеры напишу здесь.
В общем блинк не подошел т.к. у него сначала выход не активный и он не сбрасывается а сохраняет состояние до следующего раза. Посмотрел кто как что делал, написал свой вариант ФБ.
FUNCTION_BLOCK My_BLINK
VAR_INPUT
run: BOOL;
high: TIME:=t#0s;
low: TIME:=t#0s;
END_VAR
VAR_OUTPUT
time_left: TIME;
out: BOOL;
END_VAR
VAR
TOF1: TOF;
pt: TIME;
END_VAR
IF Start_pwm1 THEN
IF Auto_mode1 THEN
b1.run:=1;
pwm1:=b1.out;
ELSE
pwm1:=1;
END_IF
ELSE
pwm1:=0;
b1.run:=0;
END_IF
И таких однотипных алгоритмов порядка 25 штук. Плк справится? помимо этого плк будет еще и по интерфейсам собирать данные порядка 250 и отправлять в скада систему(функция побочная в алгоритме управления используется порядка 30 переменных) остальное транзит из одного интерфейса в другой(плк как преобразователь интерфейсов).
Видео:Вебинар «Основы программирования ПЛК1хх на языке ST»Скачать
Язык st codesys таймер
Часовой пояс: UTC + 3 часа (Russia: MSK)
Видео:Часть 20: Работа с таймерами в CoDeSysСкачать
Таймер на ST?
Регистрация: Чт сен 26, 2013 13:01
Сообщения: 2
Добрый вечер. Помогите, пожалуйста, разобраться как функция TIMX работает на ST. Вызываю ее: TIMX(in1, timer1, 500). Таймер работает, но как узнать, что таймер сработал? UPD: Или мы можем только вызывать его, а обрабатывать событие необходимо на LD? |
Регистрация: Пт авг 09, 2013 08:20
Сообщения: 36
Регистрация: Чт сен 26, 2013 13:01
Сообщения: 2
Регистрация: Чт ноя 06, 2014 15:41
Сообщения: 12
Если объявлять не как TIMER, а например как BOOL (встретил на форуме пост о подобном раздвоении личности таймера) то получаю ошибку «Невозможно выполнить преобразование из BOOL в TIMER». Кто умеет пользоваться таймерами в ST, внутри FB и в задачах? Может выложите хоть простейший пример, который компилируется без ошибок. |
Регистрация: Пт сен 22, 2006 13:17
Сообщения: 175
Откуда: Novokuznetsk
Как-то баловался с таймерами. Пример 1: Пример 2: У вас нет необходимых прав для просмотра вложений в этом сообщении. |
Регистрация: Чт ноя 06, 2014 15:41
Сообщения: 12
100 шагов. (Памяти у меня осталось еще 1500 шагов на все доработки). А работать с таймером из ST как в примере выше, через TIMX() хоть кому-нибудь удавалось? |
Регистрация: Пт сен 22, 2006 13:17
Сообщения: 175
Откуда: Novokuznetsk
Site Admin |
Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3292
Откуда: Москва
Регистрация: Чт ноя 06, 2014 15:41
Сообщения: 12
Пусть бы и только внутри FB, но увы независимо FB или нет, получаю ошибку Кстати при переделке программы под СJ2M ошибки пропадают, хоть FB хоть нет (жаль мне не на чем попробовать корректно ли работают эти TIMX внутри ST) Но тогда возникает вопрос: |
Регистрация: Пт сен 22, 2006 13:17
Сообщения: 175
Откуда: Novokuznetsk
Site Admin |
Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3292
Откуда: Москва
100 шагов. 1500 шагов на все доработки). |
Регистрация: Чт ноя 06, 2014 15:41
Сообщения: 12
Регистрация: Сб сен 30, 2006 14:07
Сообщения: 677
Откуда: Москва
Site Admin |
Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3292
Откуда: Москва
Часовой пояс: UTC + 3 часа (Russia: MSK) |