Вход

Просмотр полной версии : Помогите со сбросим регистра в который записали 1



kovalich
06.05.2026, 10:41
Добрый день! Помогите пож с кодом чтоб сбрасывать регистр в "0", который только что приняли "1".
Не могу это на ST реализовать. При получении "1" и отправки её в функцию, в это же время выходной хвост функции успевает старый "0" в этот же регистр записать. Нужен свежий взгляд ))

EFrol
06.05.2026, 12:03
Было бы на что взглянуть?!

Dimensy
06.05.2026, 12:19
Нифига не понял что требуется. То ли RTRIG, то ли еще что-то

kovalich
06.05.2026, 12:21
Вот такую схему не могу организовать89113
А вот так вообще генератор получается 89112

Dimensy
06.05.2026, 14:00
Вот такую схему не могу организовать89113
А вот так вообще генератор получается 89112

Вот так


function_block functionblock1

var_input
I : udint;
end_var

var_output
Q : udint;
end_var

var
dd : SYS.TP;
end_var

dd(I := I > 0, T := t#2s);
Q := bool_to_udint(dd.Q);

end_function_block

или так
89116

kondor3000
06.05.2026, 14:12
Вот такую схему не могу организовать89113
А вот так вообще генератор получается 89112

Это делается проще 89118

kovalich
06.05.2026, 15:18
Спасибо!!!

1exan
06.05.2026, 15:19
Это делается проще 89118

Если достаточно одного импульса на цикл можно и ещё проще:
89119

kondor3000
06.05.2026, 15:21
Если достаточно одного импульса на цикл можно и ещё проще:
89119

ТС просил 2 секунды

1exan
06.05.2026, 15:24
ТС просил 2 секунды

А, точно увидел картинку далее.

Но всё равно, в большинстве случаев одного импульса на цикл достаточно

Валенок
06.05.2026, 15:26
..
Напоминает получение сверху управляющих команд (разных), а 0 это отсутствие команд (сброс после выполнения)

EFrol
06.05.2026, 15:48
А я всегда так делаю:
89120
Регистр и здесь успевает включить таймер.

kondor3000
06.05.2026, 16:03
Напоминает получение сверху управляющих команд (разных), а 0 это отсутствие команд (сброс после выполнения)

Нет, это в слейве ПР нет булевых переменных, только целые и новички используют целые регистры как 1 буль-к )))).
Про упаковку в маску никто не слышал.

Валенок
06.05.2026, 16:19
Нет, это в слейве ПР нет булевых переменных, только целые и новички используют целые регистры как 1 буль-к )))).
Про упаковку в маску никто не слышал.
А какая приципиальная разница? Ну есть только команда 1.

Вот EFrol в #12 показал как делает. Как по мне - это мина замедленного действия:
-Появилась более сложная задача
-Взяли (например) ПЛК
-Где-то любимый квадратиковый код накидали в CFC
..

kovalich
06.05.2026, 23:21
Если достаточно одного импульса на цикл можно и ещё проще:
89119

И что потом с этим огрызком делать? Как сбросить регистр?

1exan
07.05.2026, 07:07
И что потом с этим огрызком делать? Как сбросить регистр?

Сбросить - значит записать в него ноль?

EFrol
07.05.2026, 08:11
Вариант со сбросом в конце выполнения команды:
89122
Все языки, кроме текстовых - головная боль даже для программистов!!!
Мне очень жаль АСУТП и киповцев.

kovalich
07.05.2026, 08:19
Ваш вариант просто супер!

Dimensy
07.05.2026, 09:05
Вариант со сбросом в конце выполнения команды:


Тогда уж, лучше так
89123