Формула подсчета времени работы

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

    Подскажите как реализовать такое выражение: Если значение канала Х > 50 тогда считать время работы(за сутки,месяц) в канал 1, если значение канала Х < 50 тогда считать время работы(за сутки,месяц) в канал 2. ???

    • Эта тема была изменена 5 лет назад от Mettall.
    #11248
    Romiros
    Участник

    В чем считать время(минуты, секунды, часы)?
    Принцип действия примерно такой
    В справочнике формул создаете следующую формулу:

    public double CalcTime(int CnlNum1, int CnlNum2)
    {
    int cnlNum = Cnl>50?CnlNum1:CnlNum2;
    double val = EncodeDate(DateTime.Now);
    SetData(cnlNum, val, 1);
    return Cnl;
    }
    В канале X ставите использовать формулу и пишите: CalcTime(1,2)

    При значении канала X>50 текущее время будет писаться в канал 1, если меньше 50 в канал 2.
    Для расчета наработки нужно знать единицу наработки и использовать функции DayBeg() или MonthBeg()

    #11249
    Mettall
    Участник

    время в минутах!

    #11252
    Romiros
    Участник

    А Вам обязательно идти именно таким путем? Просто для вычисления разницы во времени понадобятся еще два канала, чтобы хранить предыдущее время переключения. Можно сделать проще. Пусть каналы 1 и 2 будут Минутные ТС. В них пишете следующие формулы:
    для канала 1 — DayBeg()?0:Val(X)>50?Cnl+1:Cnl
    для канала 2 — DayBeg()?0:Val(X)<=50?Cnl+1:Cnl
    В результате каждую минуту будет прибавляться по 1 минуте в удовлетворяющий условию канал. В другом значение фиксируется. В начале дня в обоих каналах будет сброс на 0.
    Тоже самое для месяца, только с MonthBeg().

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

    Думаю, наиболее простой подход — поставить для каналов 1 и 2 тип Минутный ТИ и задать формулу как указано выше.

    #11262
    baur
    Участник

    У меня вопрос насчет минутного счетчика по расчету времени наработки оборудование. Я буду считывать сигнал каждую минуту, если сигнал определен и 1 то прибавляем один в остальных случаях (статус 0 значение 1, статус 1 значение 0 и т.д.) ничего не делаем.

    Как можно реализовать формулу?

    #11264
    baur
    Участник

    я видел формулу Val(номер канала)>0?Cnl+1:Cnl, но там учтен статус

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

    Если точность расчёта наработки не супер критична, то заведите отдельный канал типа Минутный ТИ. Его формула рассчитывается раз в минуту. Что именно написать в формуле минутного канала, зависит от того, как Вы определяете, что оборудование в данный момент включено. Это может быть как значение, например, ток > 0, так и статус > 0, который означает, что прибор отвечает на запросы.

    #14179
    KoliaMor
    Участник

    Таймер наработки

    Таймер

    • Этот ответ был изменен 4 года, 4 месяца назад от KoliaMor.
    #14182
    Mikhail
    Модератор

    Спасибо )

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