PDA

Просмотр полной версии : Привязка данных ко времени



forpiv
21.09.2019, 03:52
Здравствуйте.
К СПК107 по модбас с помощью библиотеки модулей подключен МВ110 8А. К МВ110 подключены датчики температуры. Из МВ в СПК средствами библиотеки я смог получить текущие данные по температуре, статус состояния по датчику и циклическое время. Подскажите пожалуйста как сравнивать текущие данные по температуре с данными полученными 2-10 сек назад. Никак не могу сообразить с чего начать.

SA104
21.09.2019, 06:52
График вставьте на визуализацию - на нем все и увидите

forpiv
21.09.2019, 07:23
Вставил тренды, посмотрел, сначала не понял, потом дошло :)
Какой вопрос - такой ответ. Мой косяк, согласен полностью.
Дополняю вопрос: как сравнивать текущие данные по температуре с данными полученными 2-10 сек назад, с выдачей сигнала если разница более уставки?

SA104
21.09.2019, 07:28
а почему просто с уставкой нельзя сравнивать?
так обычно делается..

forpiv
21.09.2019, 08:03
И тут согласен полностью и так все сделано.
Но есть такая мааленькая паранойя: Датчики стоят на температуру подшипников генератора. Перетерлись от вибрации провода (ну бывает на ДГ вибрация, ну проложили криво), в результате произошел не обрыв датчика и не КЗ , а резкий скачок показаний и как результат аварийная остановка.
И вот как вариант пришла в голову идея контролировать "немотивированные" скачки температуры.

forpiv
21.09.2019, 10:06
Можно поэкспериментировать с фильтрами. А в чем смысл? Убрать ложные срабатывания? Главная цель не сгладить скачки, а при их появлении (т.е. сбои в работе системы) сработать сигнализацию: сравнивать текущие данные по температуре с данными полученными 2-10 сек назад, с выдачей сигнала если разница более уставки.

Валенок
21.09.2019, 13:02
Можно поэкспериментировать с фильтрами. А в чем смысл? Убрать ложные срабатывания? Главная цель не сгладить скачки, а при их появлении (т.е. сбои в работе системы) сработать сигнализацию: сравнивать текущие данные по температуре с данными полученными 2-10 сек назад, с выдачей сигнала если разница более уставки.
Я бы тоже сказал - определитесь чего хотите. Причем тут обрывы, кз ? Это другой уровень сравнения как и связь.
Хотите поймать слишком быстрое изменение ? => |dT|/dt > .... Расчет только в момент изменения T. Сравнение - после 2-ого получения норм.данных. Причем тут "2-10 сек назад" ?

forpiv
22.09.2019, 01:50
в общих чертах мой код как раз и сравнивает с предыдущими значениями. А вот с вами не понятно, не можете запустить таймер с заданным интервалом и записывать в буферную переменную текущее значение, а перед этим сравнить эту переменную с предыдущей итерации с текущей?
Со мной все понятно - я дилетант в программировании, поэтому и попросил на профильном форуме умного совета.
Я думал как бы привязать данные ко времени текущему/реальному. Про таймер? даже в голову не пришло и написал ведь: "Никак не могу сообразить с чего начать."
1. Таймер? Таймер - это я могу.
2. Теперь про буфер. Какой такой буфер, об чем речь?

forpiv
22.09.2019, 07:19
Ну допустим дилетант, я же не скрываю исходники, даже рекомендовал посмотреть целый проект. А буф. переменная эта та, которая имеет значение, полученное 2-10 секунд назад - А чё так можно было?!

Всем причастным спасибо! Я понял как сделать то, что мне нужно.
Отдельная благодарность capzap за исходник, который отдельно и вдумчиво курить надо. У меня все просто: еслитоиначефсё!!!. Нам, оркам эльфийскый язык трудно дается.:D