Просмотр полной версии : таймер обратного отсчёта с возможностью установки в формате ЧАС : МИН : СЕК
LogikASUTP
27.05.2025, 11:23
Всем добрый день.
Нужен таймер обратного отсчёта с возможностью уставки в формате ЧАС : МИН : СЕК на ST?
что бы задавать время с панели ПР307
существует ли похожее готовое решение?
Переводите свои "ЧАС : МИН : СЕК" в TIME(мсек) и используйте стандартный TON из ST
LogikASUTP
27.05.2025, 14:52
это при вводе данных, да понятно. А как быть при отображении обратного отсчёта?
kondor3000
27.05.2025, 16:19
Всем добрый день.
Нужен таймер обратного отсчёта с возможностью уставки в формате ЧАС : МИН : СЕК на ST?
что бы задавать время с панели ПР307
существует ли похожее готовое решение?
Таймер прямого и обратного отсчёта с задачей времени и памятью наработки____ https://owen.ru/forum/showthread.php?t=36900&p=461025&viewfull=1#post461025
LogikASUTP
27.05.2025, 23:13
Огромное вам спасибо. Очень круто. То что надо.
LogikASUTP
27.05.2025, 23:21
Таймер прямого и обратного отсчёта с задачей времени и памятью наработки____ https://owen.ru/forum/showthread.php?t=36900&p=461025&viewfull=1#post461025
сколько времени ушло на то что бы придумать такое?
LogikASUTP
27.05.2025, 23:26
Таймер прямого и обратного отсчёта с задачей времени и памятью наработки____ https://owen.ru/forum/showthread.php?t=36900&p=461025&viewfull=1#post461025
когда до 0 доходит за ново сам запускается. Так задумано?
kondor3000
28.05.2025, 07:59
когда до 0 доходит за ново сам запускается. Так задумано?Добрый вечер. Очень благодарен вам за код обратного таймера.
но когда начинаю объявлять локальные переменные, codesys начинает ругаться на две последние строчки:
CTU1: SYS.CTN; TON: SYS.TON;
R_TRIG, R_Trig1 : SYS.RTRIG; F_trig1 : SYS.FTRIG;
подскажите как объявить эти переменные в codesys 2.3?
В codesys 2.3 нет SYS.CTN; SYS.TON и SYS.RTRIG SYS.FTRIG; , надо заменить на TON и R_TRIG, F_TRIG, а счётчик нужно сделать свой 32 битный.(код ниже)
GET_TIME() заменить на TIME()
Сброс при 0 можно добавить.
function_block CTN (*// CTN *)
var_input
U : bool;
D : bool;
Res : bool;
N : udint;
end_var
var_output
Q : udint;
end_var
var
RT: bool; (*//переменная для определения переднего фронта на входе «U» *)
x:bool:=true;
end_var
__________________________________________________ __
if Res or x then
Q := N; x:=false;end_if
if U and not RT and not Res then
Q := (Q + 1); RT := U; end_if
if D and not RT and not Res then
Q := (Q - 1); RT := D; end_if
if not U and not D and RT then
RT := false; end_if
LogikASUTP
28.05.2025, 10:44
В codesys 2.3 нет SYS.CTN; SYS.TON и SYS.RTRIG SYS.FTRIG; , надо заменить на TON и R_TRIG, F_TRIG, а счётчик нужно сделать свой 32 битный.(код ниже)
GET_TIME() заменить на TIME()
Сброс при 0 можно добавить.
function_block CTN (*// CTN *)
var_input
U : bool;
D : bool;
Res : bool;
N : udint;
end_var
var_output
Q : udint;
end_var
var
RT: bool; (*//переменная для определения переднего фронта на входе «U» *)
x:bool:=true;
end_var
__________________________________________________ __
if Res or x then
Q := N; x:=false;end_if
if U and not RT and not Res then
Q := (Q + 1); RT := U; end_if
if D and not RT and not Res then
Q := (Q - 1); RT := D; end_if
if not U and not D and RT then
RT := false; end_if
огромное спасибо вам за помощь
kondor3000
28.05.2025, 20:06
огромное спасибо вам за помощь
На всякий случай, вот проект в Codesys 2.3, счётчик и выход кол-ва включений, запоминаются в RETAIN. 84049
ПЛК можно заменить на любой другой.
LogikASUTP
28.05.2025, 22:31
На всякий случай, вот проект в Codesys 2.3, счётчик и выход кол-ва включений, запоминаются в RETAIN. 84049
ПЛК можно заменить на любой другой.
бесконечно вам признателен вы дарите время на сон!
ещё подскажите к чему прицепить в вашем коде "флаг" об окончании отсчёта и как остановить при достижении нолей?
kondor3000
29.05.2025, 08:03
бесконечно вам признателен вы дарите время на сон!
ещё подскажите к чему прицепить в вашем коде "флаг" об окончании отсчёта и как остановить при достижении нолей?
Например так, и флаг и остановка Reset 84064
Можно сделать сброс через второй R_TRIG или всё запихнуть прямо в ФБ
LogikASUTP
29.05.2025, 09:14
Например так, и флаг и остановка Reset 84064
Можно сделать сброс через второй R_TRIG или всё запихнуть прямо в ФБ
Да спасибо.
Просто думал в самом коде его вкорячить что бы он на выходе блока был.
kondor3000
29.05.2025, 09:55
Да спасибо.
Просто думал в самом коде его вкорячить что бы он на выходе блока был.
Кто мешает? 3- 4 строчки на ST, пробуйте,
2 половина кода
Reset:=(Tyme1=0);
LogikASUTP
30.05.2025, 09:14
Кто мешает? 3- 4 строчки на ST, пробуйте,
2 половина кода
Reset:=(Tyme1=0);
Спасибо Вам за ответ, я уже фбдшек нагромоздил. Сейчас уже дальше ушёл, при возможности обязательно протестирую.
не подскажете есть ли готовые решения для обработки аналогового сигнала 4-20?
kondor3000
30.05.2025, 14:36
Спасибо Вам за ответ, я уже фбдшек нагромоздил. Сейчас уже дальше ушёл, при возможности обязательно протестирую.
не подскажете есть ли готовые решения для обработки аналогового сигнала 4-20?
Какой конкретно обработки?
Есть Scale (oscat_basic_333.lib) для масштабирования и перевода единиц, хотя масштабирование можно сделать и на аналоговом входе. Хотя лучше написать свой Scale.
есть RAMP_REAL (Util.lib) для плавного изменения на выходе.
Если вы измените код одного ФБ, все остальные экземпляры автоматически изменятся тоже.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot