Форум ZETLAB

Архив обсуждений, технических вопросов и ответов по оборудованию, программному обеспечению и внедрению измерительных систем.

Страницы: 1
RSS
Проблемы синхронизация данных в SCADA ZETVIEW
 
Пытаюсь вывести данные одновременно в таблицу и график, однако данные на графике отображаются несинхронно по оси Х, вне зависимости от режима отображения. При этом, если ввести в ряд значений по оси Х неравностоящее значение, то синхронизация восстанавливается. На отладке все нормально и данные таблицы и графика одинаковые.
 
Добрый день! Вопрос синхронизации в ZETVIEW очень непростой, и в частности это касается компонента "График". Первая проблема - это отображение нескольких графиков. Пока график один, то его можно отображать всякий раз когда на вход приходит новая порция данных. Например, график самописца, когда каждый новый результат измерения не выбрасывается, а добавляется в конец графика. Когда графиков несколько, то отображать на изменение каждого входного набора данных не разумно, так как это приводит к лишним операциям рисования. Например, когда мы работаем с массивами в режиме накопления данных, то первый пришедший массив будет нарисован целиком, а остальные без последней точки. Когда придёт второй массив первый будет перерисован заново и т.д. Или будут заметные "волнообразные" изменения графиков, когда мы массивы размер массивов не изменяется, а изменяются все данные целиком, например, при измерении спектров. Поэтому мы добавили в компонент "График" входной контакт логического типа "Снхронизация", на который подаём сигнал из компонента "Таймер", по сигналу с которого обновляются все графики одновременно при выборе свойства "xystate" любого параметра кроме "y(n)". Отсюда вытекает ещё одна проблема - отображение большого количества данных. На текущий момент компонент "График", который использует Active-X компонент GridGL.ocx, может отображать массивы, содержащие до 600 тыс. точек благодаря некоторым допущениям и оптимизации. Поэтому ось Х в наших графиках подразумевает равномерное разбиение интервала на точки - будь то порядковые номера, или вещественные числа, или значения времени. Если в новых данных по оси Х равномерность не нарушается и шаг между точками остаётся постоянным, то компонент "График" не выполняет пересчёт и отображение новых графиков происходит быстрее. Но если новое значение нарушает закономерность, то выполняются все функции расчёта и рисования. А за увеличившееся время ожидания приходят новые данные. При выборе в свойстве "xystate" варианта "y(x) - реально" полный перерасчёт происходит регулярно. Поэтому мы в наших проектах ZETVIEW, работающих с большим количеством данных, используем синхронизацию расчётов и отображения с помощью компонента "Таймер".
 
Благодарю за информацию.
При выборе в свойстве «xystate» варианта «y(x) — реально» полный перерасчёт происходит регулярно.
Я уже отправил свой тестовый проект на вашу эл. почту, к сожалению, даже в режиме «y(x) — реально» с двумя графиками регулярного перерасчета не происходит, помогает только нарушение шага значений по Х. Не исправляет ситуацию даже подача импульса на вход "Синхронизация" компонента "График".
 
Спасибо за обратную связь. Ответ направим по электронной почте.
Страницы: 1
Читают тему