Событийная модель обмена данными ZETVIEW
на примере SCADA-проекта «Определение механических свойств материалов»
SCADA система ZETView работает по событийной модели. Соответственно, каждый компонент при поступлении нового значения (события) на своем входе генерирует новое значение (событие) на своем выходе. В случае если компонент имеет более одного входа, выходное значение изменяется при изменении значения любого из входов. Рассмотрим компонент «Вычитание_18», из полученного от Вас SCADA-проекта ZetView «РМ_2016_new_view_3.zvx» (Рисунок 1).
Рисунок 1 — Компонент «Вычитание_18» из проекта «РМ_2016_new_view_3.zvx»
Данный компонент имеет два входа, поэтому выходное значение обновляется как при изменении первого входа так и второго. Но для удобства использования в некоторых компонентах есть свойства: «FirstReaction» и «SecondReaction», позволяющие отключить реакцию на изменение значения на первой ножке либо на второй. Таким образом, значение выхода будет обновляться только при изменении одного из входов. Данный момент необходимо учитывать при обновлении данных, по нажатию на кнопку «Обновить», либо при вычислении разности по данным от двух каналов.
Проанализировав проект, можно видеть, что компонент «Формировщик массивов (число-массив)_29» зависит от изменения данных в двух каналах (компонент «Энкодер_верх» и «Энкодер_низ»), без учета событий нажатия на кнопку «Обнуление». Компонент «массив_тензометр» зависит от изменения данных в одном канале (компонент «Сила»), без учета нажатия на другие кнопки. Таким образом, скорость наполнения данных массивов скорее всего разная. Необходимо изменить конструкцию проекта и расставить компоненты в другой последовательности, чтобы скорость наполнения этих массивов была равной. Самый простой способ, это поставить перед каждым формировщиком массивов триггер, и завести срабатывания этого триггера на таймер.
Для отладки размерностей массивов, можно добавить компоненты «Формировщик массивов» в отладку и наблюдать за размерностью массивов в процессе выполнения проекта (Рисунок 2 и Рисунок 3).
Рисунок 2 — Добавление компонента в отладку
Рисунок 3 — Наблюдение за размерностями массивов в процессе работы