Память предыдущего значения

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

    Здравствуйте. У меня на канал 6 приходят данные каждые 2сек. о количестве принятых бит устройством. Значение постоянно увеличивается с получением новых данных. Как с помощью формулы от нового значения вычесть предыдущее и разделить на прошедшее время, чтобы получить количество принятых бит/с, т.е. получить скорость. Спасибо

    #4698
    MikhailMikhail
    Модератор

    Добрый день!
    Вариант 1
    Нужно создать 2 канала типа Дорасчётный ТИ, например, номер 10 и 11
    Формула канала 10: (Val(6) — Val(11))/2
    Формула канала 11: Val(6)

    Смысл в том, что в канале 11 хранится предыдущее значение из канала 6, оно обновляется позже, чем вычисляется скорость в канале 10.

    Вариант 2
    В таблице формул завести набор переменных и формулу для расчёта:

    double prevVal = 0;
    double CalcSpeed()
    {
      double speed = (Cnl-prevVal)/2;
      prevVal = Cnl;
      return speed;
    }
    

    Далее использовать формулу для канала 6. Можно ещё моменты времени записывать в переменные для более точного расчёта.

    #4708
    vergilium
    Участник

    Спасибо. Первый вариант работает хорошо, с формулой иногда появляются не корректные данные.

    #4718
    MikhailMikhail
    Модератор

    Вариант 2 реализован только для 1 измерения. Если их много, то нужен массив вместо double prevVal

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