Показано с 1 по 10 из 10

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

  1. #1

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

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

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

  2. #2
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,646

    По умолчанию

    Если условия будут повторяться независимо от второго входа импульс нужен ?

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

  3. #3

    По умолчанию

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

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

  4. #4
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,646

    По умолчанию

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

  5. #5

    По умолчанию

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

  6. #6
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,646

    По умолчанию

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

  7. #7

    По умолчанию

    Переменная1=false;
    Thread.Sleep(1000);
    Переменная1=true;

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

    p.s. Я за триггер который есть в инструментах
    Последний раз редактировалось Igor V; 12.10.2017 в 06:19.

  8. #8

    По умолчанию

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

  9. #9

    По умолчанию

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

  10. #10

    По умолчанию

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

Похожие темы

  1. Вызов программы по событию TRUE->FALSE
    от Туман в разделе ПЛК1хх
    Ответов: 15
    Последнее сообщение: 19.11.2015, 06:52
  2. Ответов: 3
    Последнее сообщение: 12.05.2015, 22:19
  3. Ответов: 8
    Последнее сообщение: 11.12.2014, 17:41
  4. Проблема с МДВВ кратковременный сброс
    от KRUG в разделе Эксплуатация
    Ответов: 8
    Последнее сообщение: 11.12.2014, 17:41
  5. Ответов: 8
    Последнее сообщение: 20.09.2011, 12:44

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •