Перейти к содержанию

Лимиты

01.gif

Тип ELimits разработан для записи, хранения, отображения и применения предельных значений к измерительным данным. ELimits – это массив точек, каждая строка содержит три столбца со значениями X, Ymin, Ymax, где X — это значение по оси абсциссс, Ymin — минимальное значение предела для связанного значения X, а Ymax — максимальное значение предела для связанного значения X. Этот тип данных может применяться для ввода допуска измеряемой величины при выполнении калибровки и измерений, нормирования предельных значений при проведении испытаний на электромагнитную совместимость, а также при решении других аналогичных задач. Проще говоря ELimits – это инструмент, который обеспечивает возможность нормирования и сравнения числового значения (результата измерения) с установленным пределом.

Существует отдельная группа инструментов для работы с типом ELimits. Найти их можно в соответствующей категории.

Свойства

01.jpg

Name — название лимита. Это название отображается на подписи к точкам графика при наведении курсора.

Tag — идентификатор лимита. Идентификатор (ключевое обозначение) обеспечивает возможность поиска необходимого лимита в множестве (коллекции) объектов данного типа с целью выполнения дальнейших манипуляций.

Название по X — наименование горизонтальной оси (ось X).

Название по Y — наименование вертикальной оси (ось Y).

Шкала Х — настройка отображения данных по оси X в линейном либо логарифмическом масштабе.

Функция Х — настройка изменения лимита в зависимости от X в линейном либо логарифмическом масштабе.

Цвет — настройка цвет графика.

Маркеры — настройка отображения маркеров для каждой точки данных на графике.

В нижней части таблицы с данными расположены следующие кнопки:

Add — добавить новую точку в таблицу лимита.

Remove — удалить выбранную точку из таблицы лимита.

Clear All — удалить все точки из таблицы лимита (очистка лимита).

В большинстве случаев, окно просмотра таблицы данных лимита и соответствующего графика используется в процессе отладки разрабатываемой программы до завершения создания интерфейса пользователя. Основные манипуляции с типом ELimits выполняются на программном холсте посредством применения соответствующих программных блоков.

Пример

Рассмотрим выполнение базовых операций с типом ELimits на примере.

02.jpg

В представленном примере реализованы следующие функции: заполнение лимита заданным количеством случайных значений Ymin и Ymax с равномерным смещением по оси X; очистка данных лимита; добавление в лимит значений (X,Ymin,Ymax); удаление точки лимита по заданному индексу; сортировка лимита по возрастанию значений X. Результаты выводятся на график с прямоугольной системе координат. В условиях реальных испытаний значения лимита могут быть введены вручную или загружены из текстовых файлов.

  1. Создадим глобальные переменные, необходимые для работы программы. Данные переменные мы будем использовать с привязкой к элементам управления интерфейса пользователя.

03.jpg

ELimit – переменная типа ELimits, над которой мы будем выполнять различные манипуляции. pointIndex – индекс точки в трейсе.

X – значение величины X. Ymin – минимальное значение лимита для связанного X. Ymax – максимальное значение лимита для связанного X. pointsNum – количество точек. Xpoints – массив точек X. YminPoints – массив минимальных значений лимита Ymin. YmaxPoints – массив максимальных значений лимита Ymax. delay – значение задержки в миллисекундах. enableELimits – переменная типа Boolean. enableELimits – переменная типа Boolean.

  1. Создадим интерфейс пользователя. Нажмем правой кнопкой по заголовку программы и выберем пункт меню «Добавить новый элемент».

01.jpg

Выберем элемент «Панель управления» и введем имя элемента. Нажмем кнопку «Создать»

02.jpg

Добавим на панель управления следующие элементы: Пользовательские -> Пользовательский тип; Ввод данных -> Числовой ввод (6 элементов); Интерактивные элементы -> Кнопка (5 элементов); Визуализация данных -> Декартова диаграмма.

04.jpg

Последовательно выберем каждый из добавленных элементов, в свойствах элементов введем соответствующие имена и выполним привязку значения к переменным следующим образом:

Лимит: значение -> переменная ELimit; Значение X: значение -> переменная X; Значение Ymin: значение -> переменная Ymin; Значение Ymax: значение -> переменная Ymax; Количество точек: значение -> переменная pointsNum; Задержка: значение -> delay; Индекс точки: значение -> pointIndex; Пример привязки элемента панели управления «Значение X» к переменной Х показан на следующем рисунке.

03.jpg

Включим событие «Click» и введем имя в свойствах каждой кнопки.

04.jpg

Нажмем правой кнопкой мыши по графику и выберем пункт меню «Настройка». Выполним настройку графика, как показано на следующем рисунке.

01.jpg

Перейдем на холст выполняемой программы. Действия программы будут происходить по нажатию пользователем на соответствующие кнопки. Для этого запуск программы должен начинаться с отображения дашборда, также создадим новый объект лимита. Добавьте блок «ShowDashboard» и выберите созданную панель управления в меню настройки:

05.jpg

Аналогичным образом добавим блок «CreateInstance», укажем переменную «ELimit» в качестве выходной переменной. Свяжем стартовый узел программы с добавленными блоками, как показано на рисунке.

02.jpg

Для обработки события нажатия каждой кнопки необходимо добавить на холст пять блоков «Handler». Назначим события в свойствах каждого блока «Handler». Пример назначения обработки события нажатия кнопки очистки лимита в свойствах блока «Handler» показан на следующем рисунке.

05.jpg Выполним настройку блоков «Handler» для оставшихся четырех кнопок аналогичным образом. Каждый блок обработки события свяжем с программным алгоритмом, обеспечивающим соответствующие манипуляции с переменной ELimit. Добавьте на холст блоки ELimits.Clear, ELimits.AddPoint, ELimits.RemovePoint, ELimits.SortByX. В качестве входной переменной ELimits во всех блоках укажите переменную «ELimit». В блоках, которые требует передачи индекса точки «Index» укажите переменную «pointIndex». Выполнение манипуляций с лимитом завершается обновлением графика на панели управления. Для этого применяется блок ELimits.GetPoints, который передает точки указанного лимита в три массива. Вы можете передать как все точки, так и указать начальный индекс, а также количество точек, которые необходимо передать в массив. В нашем случае данные передаются в массивы Xpoints, YminPoints и YmaxPoints, которые также являются источником значений X, Ymin и Ymax графика на панели управления.

05.jpg

После передачи данных из лимита в массив следует вызвать блок UpdateChart, который обеспечит отображение новых данных на графике пользовательского интерфейса. В свойствах выберем панель управления и график, который следует обновить.

06.jpg

Код программы для четырех операций с трейсом выглядит следующим образом:

06.jpg

Дополним холст алгоритмом заполнения лимита заданным количеством случайных точек.

07.jpg

Значение из поля числового ввода «Количество точек» будет передаваться в переменную pointsNum, значение из поля «Задержка, мс» - в переменную delay.

Для кнопки «Добавить точки» включено событие «Click», сделаем кнопку недоступной для нажатия, пока идёт построение лимита. Для этого привяжем свойство активности к переменной «enabledELimits».

08.jpg

Вернёмся на холст программы.

В блоке Handler выберем созданное событие.

03.jpg

В блоке SetVariable обнулим значения по X и сделаем кнопку Старт недоступной для клика.

09.jpg

Далее также добавим блок ELimits.Clear. Это необходимо для того, чтобы в ELimit хранился актуальный лимит. Если вам необходимо сохранить все значения, то этот блок можно опустить.

10.jpg

В цикле произведём заполнение ELimit. Условие зададим в блоке If-Else с помощью следующего Expression

X<pointsNum,

где «pointsNum» - это количество точек, введённое пользователем на панели управления.

В блоке Random сгенерируем случайное значение от 1 до 10 и запишем его в переменную «Y».

07.jpg

Далее в блоке SetVariable добавим допуск в 2 единицы к значению Ymin, чтобы получить значение Ymax. Следующим блоком идёт ELimits.AddPoint. Тут мы добавим текущие значения «X», «Ymin» и «Ymax» в переменную ELimit.

04.jpg

Затем, увеличим значение X в блоке SetVariable.

08.jpg

И добавим задержку в блоке Delay. Желаемое время задержки вводится пользователем в миллисекундах (мс) в соответствующее поле на панели управления.

09.jpg

Обновим данные на графике и зациклим алгоритм. После того как условие в блоке If-Else перестанет выполняться и лимит заполнится, необходимо сделать кнопку 'Старт' снова доступной для клика. Для этого протянем связь из выхода False блока If-Else до блока SetVariable и установим там значение True для переменной enabledELimits.

11.jpg

Создание программы завершено. Можно запускать проект и смотреть, что получилось.

02.gif

03.gif

Вы также можете загружать точки лимита из текстового файла. Нажмите кнопку «Загрузить из файла», чтобы перейти в меню загрузки точек лимита.

12.jpg Укажите путь к файлу в меню «Имя файла». В поле «Формат файла» доступен только текстовый формат. Выберите разделитель столбцов, который используется в файле «Табуляция» либо «Запятая». Укажите начальную строку в поле «Начальная строка», считывание данных начнется с указанной строки. Выберите десятичный разделитель в меню «Десятичный разделитель»: «Запятая» либо «Точка». Нажмите кнопку «Читать файл», в случае успешного выполнения операции считанные данные отображаются в окне предварительного просмотра. Нажмите кнопку «ОК» для завершения операции. Пример окна чтения данных из файла, а также содержимое текстового файла представлены на вышеприведенном рисунке.