PDA

Просмотр полной версии : Кратковременный перевод из false в true C#



Lukasevich
28.09.2017, 19:00
Здравствуйте!
Необходимо по условию кратковременно (1с) перевести значение из flase в true, затем, несмотря на соответствие условию держать его в состоянии false до тех пор, пока другая переменная не станет true.
C#

{
if(massa>massa_arch && massa_arch>massa_arch_2)
{
priemOn=true; // вот тут надо сделать кратковременно true а затем держать false до тех пор, пока другая переменная не станет true

melky
28.09.2017, 23:10
Если условия будут повторяться независимо от второго входа импульс нужен ?

з.ы. лень думать на C#, код поищите сами. Таймер с импульсом заданной длительности - OR (второй вход как раз ваша переменная).
Если повторов по импульсам на первом входе не нужно, пока второй вход не станет true то на TP завести с RS триггера, К триггера объединить со второй переменной.
Вам нужно найти код TP и RS триггера. OR он и в африке...

SCADAMaster
29.09.2017, 09:12
Так это обычный детектор переднего фронта.
bool? M=false;
public override void Execute()
{
if (Параметр1==true && M==false)
{

}
M=Параметр1;
}
Опрос у скрипта должен быть периодический.

melky
29.09.2017, 19:27
SCADAMaster, автору надо чуть больше, чем триггер по фронту.

SCADAMaster
29.09.2017, 19:51
Ну тогда это просто триггер.
Аналогично по переднему фронту другого входа, сбрасываете значение выхода.

melky
29.09.2017, 22:38
добавьте еще настраиваемую длительность true, у автора это 1 секунда, но может ведь быть и 2 и 3 и т.д. так что и на обычный триггер не похоже...

Igor V
12.10.2017, 06:16
Переменная1=false;
Thread.Sleep(1000);
Переменная1=true;

Можно этот код запустить в отдельном потоке, чтобы во время Thread.Sleep() не фризился графический интерфейс скады. Лучше даже не поток, а аналогичную конструкцию в Task.

p.s. Я за триггер который есть в инструментах

SCADAMaster
12.10.2017, 14:58
Так делать нельзя - вы будете вешать поток скады.
Нужно включать периодический опрос скрипта, и считать циклы.

Igor V
13.10.2017, 06:57
Thread.Sleep приостанавливается поток из которого вызывался, если его в доп.потоке из скрипта вызывать, не будет он вешать

SCADAMaster
13.10.2017, 08:53
Тогда придется скрипт в отдельный цикл выводить.
Только зачем это? Лучше работать в общих циклах системы и просто считать циклы.