0 / 0 / 0
Регистрация: 25.01.2021
Сообщений: 3

[CoDeSys] Перезапустить таймер TON

25.01.2021, 11:38. Показов 10539. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите разобраться с таймером (пытаюсь сделать таймер время работы).
Он повторятся бесконечно, если убрать Timer3 (); то оно выполняется нормально но один раз за пуск программы.
Codesys 2.3 язык ST.
Code
1
2
3
4
5
6
7
E := TRUE;
Timer3 ();
IF E = TRUE THEN Timer3 (IN := TRUE , PT := T#15s);
END_IF
IF Timer3.Q = TRUE THEN E := FALSE;
Timer3.IN := FALSE;
END_IF
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.01.2021, 11:38
Ответы с готовыми решениями:

[CoDeSys] На языке LD поставить параллельно обмотке таймер TON (включить таймер по условию)
Помогите поставить параллельно обмотке в CoDeSys таймер TON (как это сделать?)

Не останавливается таймер TP (ST, Codesys 2.3)
Здравствуйте. Помогите разобраться с таймером, знающие люди. Никак не осилю принцип работы. Добавил таймер в пустой проект -...

Перезапустить таймер
Доброе время суток. Подскажите пожалуйста, как перезапустить таймер? Есть label18 в котором идет отсчет до срабатывания процедуры ...

5
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
25.01.2021, 12:16
Nikil, таймер должен вызываться постоянно.
сброс таймера производится записью false в in

Как то так
Pascal
1
2
e := not timer.q;
timer(in := e, PT := T#15s);
0
0 / 0 / 0
Регистрация: 25.01.2021
Сообщений: 3
25.01.2021, 15:15  [ТС]
Когда прописываю
Code
1
2
    E := NOT Timer.Q
    Timer ( IN := E , PT := T#15s )
то оно выполняется только один раз за всю работу программы
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
25.01.2021, 15:42
Nikil, покажите полный код.
0
0 / 0 / 0
Регистрация: 25.01.2021
Сообщений: 3
26.01.2021, 09:53  [ТС]
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
PROGRAM PLC_PRG
VAR
 
    T: REAL; (*Температура*)
    TP1: REAL; (*Верхний порог температуры *)
    TP2: REAL; (*Нижний порог температуры *)
    Timer1: TON; (*Таймер вентилятора 1*)
    D: BOOL;  (* запуск вентилятора 1*)
    Timer4:TON ; (* Таймер закрытие клапана 1*)
    Timer3: TON; (* Таймер открытие клапана 1*)
    E: BOOL; (*Запуск открытия клапана1*)
    K: BOOL; (* Запуск закрытие клапана1*)
    Timer0: TON;
    Timer00: TON;
END_VAR
TP1 := 40;
TP2 := 20;
 
(* Имитация температурных переходов *)
Timer0 ();
IF T = 0  THEN  Timer0 (IN := TRUE , PT := T#30s);
END_IF
IF Timer0.Q = TRUE THEN T := 40 ;
Timer0.IN := FALSE;
END_IF
Timer00 ();
 IF T = 40  THEN  Timer00 (IN := TRUE , PT := T#60s);
END_IF
IF Timer00.Q = TRUE THEN T := 0 ;
Timer00.IN := FALSE;
END_IF
(**)
Timer1 ();
IF T >= TP1  THEN  Timer1 (IN := D , PT := T#5s);
END_IF
IF Timer1.Q = TRUE THEN D := TRUE ;
Timer1.IN := FALSE;
END_IF
IF T <= TP2 THEN D := FALSE;
END_IF
 IF T >= TP1  THEN  Timer2 (IN := E , PT := T#30s);
END_IF
IF Timer2.Q = TRUE THEN E := TRUE ;
Timer2.IN := FALSE;
END_IF
Timer3 ();
E := NOT Timer3.Q;
IF E = TRUE  THEN Timer3 (IN := E , PT := T#5s);
END_IF
IF Timer3.Q = E THEN E := FALSE;
Timer3.IN := FALSE;
END_IF
IF T <= TP2 THEN K := TRUE;
END_IF
Timer4 ();
K := K NOT Timer4.Q;
IF K = TRUE THEN Timer4 (IN := K , PT := T#3s);
END_IF
IF Timer4.Q = TRUE THEN K := FALSE;
Timer4.IN := FALSE;
END_IF
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
26.01.2021, 18:50
Nikil, как то так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PROGRAM PLC_PRG
 
VAR
    T: REAL; (* current temp *)
    T_lim_up: REAL; (* temp up limit *)
    T_lim_lo: REAL; (* temp lo limit *)
    Timer1: TON; (* cooler 1 timer *)
    D: BOOL; (* cooler 1 start *)
    Timer2: TON; (* overheat timer *)
    Timer3: TON; (* valve 1 open timer *)
    Timer4: TON; (* valve 1 close timer *)
    E: BOOL; (* valve 1 open *)
    K: BOOL; (* valve 1 close *)
    Timer0: TON;
    Timer00: TON;
END_VAR
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
T_lim_up := 40;
T_lim_lo := 20;
 
(* simulate temp change *)
Timer0(IN := (T = 0), PT := T#30s);
IF Timer0.Q THEN
    T := 40 ;
END_IF
 
Timer00(IN := (T = 40), PT := T#60s);
IF Timer00.Q THEN
    T := 0 ;
END_IF
 
(*cooler*)
Timer1(IN := (T >= T_lim_up), PT := T#5s);
IF Timer1.Q THEN
    D := TRUE ;
END_IF
IF T <= T_lim_lo THEN
    D := FALSE;
END_IF
 
(* open valve *)
Timer2 (IN := (T >= T_lim_up) , PT := T#30s);
IF Timer2.Q = TRUE THEN
    E := TRUE ; (*open start*)
END_IF
 
Timer3 (IN := E , PT := T#5s);
IF Timer3.Q = E THEN
    E := FALSE; (* open done *)
END_IF
 
(* close valve *)
IF T <= T_lim_lo THEN
    K := TRUE; (* close start *)
END_IF
 
Timer4 (IN := K , PT := T#3s);
IF Timer4.Q THEN
    K := FALSE; (*close done*)
END_IF
Не проверял логику, но в CodeSys 2.3 оно компилируется.

P.S.: Как по мне это нагляднее выглядело бы в LD
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.01.2021, 18:50
Помогаю со студенческими работами здесь

Как перезапустить таймер?
Здравствуйте, есть простой 20-ти секундный таймер, который выглядит как убывающая полоса. Как сделать его перезапуск по нажатию кнопки? ...

Как перезапустить таймер
Здравствуйте!! А не мог бы кто-нибудь подсказать, что произойдет с таймером, если выполнить Timer.Start(), когда таймер уже запущен...

как написать таймер в codesys?
подскажите пожалуйста, как написать таймер в codesys?

Как перезапустить таймер T0 на 2313?
Подскажите пож, как произвольно перезапускать таймер T0 на tiny2313? просто PSR10_bit:= 1; не помогает.

CodeSys. Таймер "До нового года осталось"
Доброго времени суток. Подскажите пожалуйста как написать на codeSys Таймер отсчета времени до нового года: до нового года осталось 40дней...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru