-
АвторТема
-
19.01.2026 в 18:29 #136578
Добрый день!
В связи написанием программы программы возникли некоторые вопросы по программированию в ZetView:
1. Есть ли возможность предопределения свойств входящих данных по множественным входам в таких компонентах как график, таблица? — Например, установить однозначный порядок данных в таблице, установить цвет графиков и т.д.
2. Как избежать порчу (недостоверность) измеряемых данных в начале измерения? — В текущий момент никакие приемлемые ухищрения не помогают избежать получения заведомо недостоверных значений в начале измерения. -
АвторТема
-
АвторОтветы
-
20.01.2026 в 10:37 #136579
Здравствуйте!
1. Для компонента «График» есть возможность задавать цвета графиков, за это отвечает свойство «GraphColor». Цвета задаются в виде десятичных чисел в формате BGR. Номер графика и его цвет определяются моментом первого появления массива данных с новым значением m_sHelpString. Поэтому для установки определённого порядка следования мы использовали компоненты «D-trigger» для передачи данных в нужный момент, а не по готовности результатов, или компонентами «Сценарий» или «Программируемый компонент» для задания последовательности команд, которая выводит результаты в нужно порядке.
Для компонента «Таблица» единственная настройка внешнего вида — это ширина столбцов (CollumnsWidth). Порядок распределения данных по столбцам определяется исключительно порядком значений в получаемой строке. Порядок значений в суммарной строке задаётся расположением компонентов «Сложение строк» или «Формировщик массивов». Если вам нужно выделение цветом определённых строк в таблице, то лучше воспользоваться компонентом «Расширенный журнал».
2. После запуска проекта все компоненты имеют те свойства и значения, которые им были заданы во время проектирования. Это касается как параметров отображения компонента, так и текущего состояния. Если вам нужно привести весь проект в «нулевое» состояние, то есть несколько вариантов.
Можно добавить кнопку, по нажатию на которую очищать таблицы и графики (у них есть отдельных логический вход для этого), и задавать значения через компоненты «Конвертер» компонентам типа «Текстовое поле», «Селектор» и прочие. Во время работы проекта вы можете в любой момент вернуться к исходному состоянию по нажатию кнопки.
Можно использовать компонент «Программируемый компонент». В нём есть функция «Sub Initialization(param)», которая вызывается при запуске проекта после того, как все компоненты будут загружены, настроены и обменяются со своими соседями исходными данными. В теле этой функции можно вызывать команды сброса состояния у компонентов, которые имеют их, или задать значение вручную. Также можно вызвать команды нажатия на кнопки. При использовании этого метода проект будет после запуска приходить в заданное исходное состояние самостоятельно, но для повторного выполнения его придётся перезапустить.
Вы можете соединить оба этих метода и нажимать на кнопку сброса в функции инициализации «Программного компонента».20.01.2026 в 12:58 #136582По цветам графиков компонента «Графика»:
1. Как соотносятся номера линий соединяющие компоненты с данными и компонент «Графика» с последовательностью цветов в строке «GraphColor»? Разве они не предопределяют очередность входных данных по множественным входам? А в таблице?
2. В своем проекте я реализовал во всех панелях глобальный общий сброс и глобальный общий импульс сброса, но это не помогло решить указанную проблему. Более того, подобная проблема присутствует и в программах ZETVIEW, поставляемых в пакете ZETLAB, просто там она менее заметна, так как шаг частоты измерений очень маленький. Эта проблема уже обсуждалась с вами, но в рамках программирования в среде ZETLab Studio, где она тоже присутствует.20.01.2026 в 14:55 #1365831. Цвета соединительных линий между компонентами соответствуют типу и цвету контактов, которым обладает компонента. А типы контактов соответствуют типу передаваемых данных. Так контакты и линии зелёного цвета соответствуют вещественным числам, красного цвета – логическим импульсам, чёрного – тексту и т.д.
Все расчёты и передача входных и выходных данных осуществляются в одном потоке и выполняются последовательно. После выполнения расчёта или обработки реакции пользователя, компонент выполняет рассылку сообщений всем связанным с его выходными контактами соседним компонентам. Если выходных контактов несколько, то порядок отправки сообщений определяется самим компонентом. Если из одного контакта выходит несколько соединительных линий, то порядок отправки сообщений определяется порядком создания этих линий.Если вы выделите компонент, то он получит оранжевую рамку и все его входящие и выходящие соединительные линии будут выделены красным цветом и у них появятся прямоугольники с номером. По этому номеру можно узнать их относительный порядок в списке всех соединительных линий. Но существенно этот номер влияет только на порядок отправки сообщений по линиям, выходящим из одного контакта. Для линий, входящих в один контакт, всё будет зависеть только то схемы соединения и настроек компонентов.
Цвета, указанные в свойстве «GraphColors», влияют только на цвета графиков в самом компоненте «График».Не совсем понятен вопрос про компонент «Таблица». Вас интересуют цвета в таблице или порядок входящих данных? Если цвета, то в компоненте «Таблица» нет никаких выделений цветом. Если порядок данных, то компонент «Таблица» добавляет все данные в порядке получения, и для их разделения мы используем либо компоненты «D-триггер», либо компонент «Программируемый компонент».
2. Во всех проектах ZETVIEW и большинстве программ ZETLAB мы ориентируемся на период обновления данных 1 секунда и даём вариант выбрать 0.1 секунды. Тем не менее перед началом работы проекта всегда есть какое-то время для ручного или автоматического сброса состояния проекта. В пакете ПО ZETLAB поставляются проекты ZETVIEW для измерения АЧХ. Да, у них есть недостаток в том, что ZETVIEW не знает точного момента появления сигнала на выходе генератора, из-за чего начальные значения могут быть искажены. Мы работаем над этим и планируем реализовать программу для измерения АЧХ где этот недостаток будет устранён.
20.01.2026 в 18:50 #1365841. Обозначение цвета соединительных линий мне известно, так как это довольно подробно документировано руководстве пользователя.
Я хотел спросить не об этом, а соотношении номеров этих линий и, например, порядка заданных цветов графиков и будет ли присваиваться цвета графику исходя этим номерам?
Можно ли установить эти номера как-то отдельно или они присваиваются автоматически, по в порядке соединения?
1.1 Меня не интересует цвет в таблице, а порядок столбцов при множественном входе. Есть ли правило, которым можно установить определенный порядок столбцов? Не совсем понимаю, как применение D-триггера может изменить порядок чередования столбцов в таблице.
2. Проблему недостоверности данных в начале измерения мне не удалось решить введением временных задержек и, если в непрерывном (очень маленьком шаге измерения) это мало заметно, то при измерении по заданному дискретному частотному ряду, например, долеоктавному, даже одно недостоверное значение уже крайне неприятно.21.01.2026 в 14:09 #1366021. Номера соединительных линий присваиваются автоматически в порядке их создания.
1.1 После ряда экспериментов мы пришли к следующему варианту решения, который вам будет наиболее просто реализовать. Если вы на вход компонента «Таблица» подаёте текстовые массивы из компонента «Формировщик массивов (текст-массив)», то компонент «Таблица» выстроит данные в порядке получения первых данных от них. Если вы добавите компонент «Кнопка без фиксации» и соедините со входами «Сброс» компонентов «Формировщик массивов (текст-массив)» и компонента «Таблица», то по нажатию будет происходить очистка массивов и таблицы. И вот тут будет существенно важен порядок соединительных линий, выходящих из компонента «Кнопка без фиксации».
Если сигнал сброса придёт в компонент «Таблица» последним, то компоненты «Формировщик массивов (текст-массив)» очистят свои значения, передадут пустые массивы в компонент «Таблица», компонент «Таблица» отобразит пустые столбцы, а потом удалит столбцы. И вы увидите пустую таблицу без заголовка. При добавлении очередного числа, столбцы в компоненте «Таблица» будут упорядочены в соответствии с порядком прихода данных в компоненты «Формировщик массивов (текст-массив)».
Если сигнал сброса придёт в компонент «Таблица» первым, то сначала будут удалены данные всех столбцов в таблице и будет удалён заголовок. После этого сигнал сброса придёт на компоненты «Формировщик массивов (текст-массив)», которые очистят свои данные и отправят в компонент «Таблица» пустые массивы, а компонент «Таблица» добавит их в том порядке, в котором они приходят. И в компоненте «Таблица» будет виден заголовок с названиями массив в соответствии с порядком прихода сигналов сброса на соответствующие компоненты.
Поэтому мы вам рекомендуем добавить компонент «Кнопка с фиксацией» и соединить компоненты в правильном порядке.
В качестве примера собрали для вас реализацию проекта, можно скачать по ссылке test_table.
2. Для ответа на этот вопрос нам нужно более подробное описание проблемы, а ещё лучше с вашим проектом. Для этого, наверное, лучше продолжить общение по почте info@zetlab.ru с пометкой «Тема с форума — Вопросы по SCADA ZETVIEW».21.01.2026 в 17:29 #1366031. Я уже это понял, правда эти номера невозможно задать переопределить, они присваиваются только в порядке их создания.
1.1 мне совсем понятен смыл указываемого вами «порядка прихода», это определяется номером соединительных линий или по времени?
С очисткой таблицы и заполнением ее данными проблем в общем нет, есть некоторая неопределенность в порядке следования данных по столбцам. Есть предположение ,что это происходит в соответствии с присваиваемыми соединительным линиям номерами. То же самое с задаваемым цветом графиков. Но у меня нет в этом полной уверенности.
2. Да, я постараюсь в скором времени связаться с вами по электронной почте. Спасибо за предложение, я обязательно им воспользуюсь.
Скачать ваш тестовый проект мне не удалось, так как у меня на работе нет доступа к https://drive.google.com -
АвторОтветы
Для ответа в этой теме необходимо авторизоваться.
