Everyhour, как работает

Помечено: ,

Просмотр 5 сообщений - с 1 по 5 (из 5 всего)
  • Автор
    Сообщения
  • #31841
    saprin8
    Участник

    Приветствую
    В 5 версии скады были почасовые или поминутные каналы, сейчас это перенесли в скрипты. Только вот как использовать это так и не допер.
    Проверял раньше состояние сигналов (завис канал или нет) путем сравнения раз в час температур на улице и притоке вентиляции таким путем:
    Есть 2 входных канала с температурами
    Есть канал почасовой расчетный с формулой:
    public double Online_stat(int cnl, double tempOut, int cnl2, double tempIn)
    {
    double status = 0;
    if (tempOut == Val(cnl) & tempin == Val(cnl2))
    {
    status = 1;
    }
    else
    {
    status = 0;
    }
    SetVal(cnl, tempOut);
    SetVal(cnl2, tempIn);
    return status;
    }
    И соответственно два пустых канала куда присваивается раз в час новое значение температуры, чтобы потом сравнить их с будущим значением.

    Теперь появились формулы EveryHour, EveryMin. Вот только примеров работы с функциями не увидел. Есть вообще возможность функцию запихнуть в EveryHour?

    #31843
    manjey73
    Участник

    запись вызова

    Посмотрите как вызывать свои функции используя EveryXXXX

    • Ответ изменён 2 года, 2 месяца назад пользователем manjey73.
    • Ответ изменён 2 года, 2 месяца назад пользователем manjey73.
    #31847
    Mikhail
    Модератор

    Добрый день!
    В статье по формулам посмотрите пример функции EveryMin.
    EveryHour используется аналогично.

    #31855
    saprin8
    Участник

    Вроде получилось, создал скрипт
    public CnlData Temp_hour(int TE_Cnl)
    {
    return NewData(Val(TE_Cnl), 1);
    }
    В каждый канал, где я присваиваю температуру ставлю
    EveryHour(() => Temp_hour(Te_Cnl))

    А из основной формулы убираю SetVal

    public double Online_stat(int cnl, double tempOut, int cnl2, double tempIn)
    {
    double status = 0;
    if (tempOut == Val(cnl) & tempin == Val(cnl2))
    {
    status = 1;
    }
    else
    {
    status = 0;
    }
    return status;
    }
    То есть теперь не каждый час формула с расчетом и сравнением температур выполняется, а присваивается каналу с температурой значение каждый час, в то время как формула считает постоянно.
    Всем спасибо

    #31873
    Mikhail
    Модератор

    По идее Temp_hour должна вызываться один раз в час.
    EveryHour вызывается постоянно, но та функция, которая задана в аргументе, вызывается по времени.

Просмотр 5 сообщений - с 1 по 5 (из 5 всего)
  • Для ответа в этой теме необходимо авторизоваться.