Просмотр полной версии : Помогите со сбросим регистра в который записали 1
kovalich
06.05.2026, 10:41
Добрый день! Помогите пож с кодом чтоб сбрасывать регистр в "0", который только что приняли "1".
Не могу это на ST реализовать. При получении "1" и отправки её в функцию, в это же время выходной хвост функции успевает старый "0" в этот же регистр записать. Нужен свежий взгляд ))
Было бы на что взглянуть?!
Нифига не понял что требуется. То ли RTRIG, то ли еще что-то
kovalich
06.05.2026, 12:21
Вот такую схему не могу организовать89113
А вот так вообще генератор получается 89112
Вот такую схему не могу организовать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
Спасибо!!!
Это делается проще 89118
Если достаточно одного импульса на цикл можно и ещё проще:
89119
kondor3000
06.05.2026, 15:21
Если достаточно одного импульса на цикл можно и ещё проще:
89119
ТС просил 2 секунды
ТС просил 2 секунды
А, точно увидел картинку далее.
Но всё равно, в большинстве случаев одного импульса на цикл достаточно
..
Напоминает получение сверху управляющих команд (разных), а 0 это отсутствие команд (сброс после выполнения)
А я всегда так делаю:
89120
Регистр и здесь успевает включить таймер.
kondor3000
06.05.2026, 16:03
Напоминает получение сверху управляющих команд (разных), а 0 это отсутствие команд (сброс после выполнения)
Нет, это в слейве ПР нет булевых переменных, только целые и новички используют целые регистры как 1 буль-к )))).
Про упаковку в маску никто не слышал.
Нет, это в слейве ПР нет булевых переменных, только целые и новички используют целые регистры как 1 буль-к )))).
Про упаковку в маску никто не слышал.
А какая приципиальная разница? Ну есть только команда 1.
Вот EFrol в #12 показал как делает. Как по мне - это мина замедленного действия:
-Появилась более сложная задача
-Взяли (например) ПЛК
-Где-то любимый квадратиковый код накидали в CFC
..
kovalich
06.05.2026, 23:21
Если достаточно одного импульса на цикл можно и ещё проще:
89119
И что потом с этим огрызком делать? Как сбросить регистр?
И что потом с этим огрызком делать? Как сбросить регистр?
Сбросить - значит записать в него ноль?
Вариант со сбросом в конце выполнения команды:
89122
Все языки, кроме текстовых - головная боль даже для программистов!!!
Мне очень жаль АСУТП и киповцев.
kovalich
07.05.2026, 08:19
Ваш вариант просто супер!
Вариант со сбросом в конце выполнения команды:
Тогда уж, лучше так
89123
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot