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

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

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

    • Тема изменена 7 лет, 1 месяц назад пользователем 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
    Участник

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

    Таймер

    • Ответ изменён 6 лет, 4 месяца назад пользователем KoliaMor.
    #14182
    Mikhail
    Модератор

    Спасибо )

    #38076
    alexandr1803
    Участник

    Добрый вечер, как адаптировать эту формулу на значение канала счетчика (если значение канала 1 статично в течении минуты то считаем время в канале 2, если значение меняется хоть раз , то считаем время в канале 3)

    #38077
    manjey73
    Участник

    Напишите более подробно, что вы хотите?
    Потому что не совсем ясно, как можно считать два разных канала одновременно?
    Типа если канал меняется, то установка работает, а если статична, то считаем простой?

    • Ответ изменён 12 месяцев назад пользователем manjey73.
    #38079
    alexandr1803
    Участник

    Совершенно верно.

    #38080
    alexandr1803
    Участник

    PrevVal(n) double Предыдущее значение канала n
    Может можно с помощью этого как посчитаь. Опрос счетчика раз в минуту Val(n)-PrevVal(n) если равно 0 то простой если не равно 0 то работа и использовать минутные ТИ

    #38081
    manjey73
    Участник

    PrevVal это предыдущее значение на прошлом цикле обхода формул каналов.
    Вряд ли тут это подойдёт.

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