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

ETraceSet.GetMaxLimit (Получить максимальный лимит из набора трасс)

01.png

Описание

Возвращает наименьшее и наибольшее максимальное значение лимита для заданного значения координаты X и идентификатора из набора трасс.

Свойства

Входной аргумент Тип аргумента Тип переменной Описание
traceSet Константа, Переменная, Выражение ETraceSet Набор трасс
x Константа, Переменная, Выражение Double Значение координаты X
tag Константа, Переменная, Выражение String Идентификатор лимита
searchTagPart Константа, Переменная, Выражение Boolean Поиск лимита по частичному совпадению идентификатора
Выходной аргумент Тип аргумента Тип переменной Описание
maxLimitStrict Переменная Double Наименьшее максимальное значение
maxLimitRelaxed Переменная Double Наибольшее максимальное значение
limitsNames Переменная String[] Массив имен лимитов, которые учитывались при расчете
limitsTags Переменная String[] Массив идентификаторов лимитов, которые учитывались при расчете
maxUnmergedValues Переменная Double[] Массив исходных максимальных значений лимитов для заданного значения координаты X

Пример

Рассмотрим работу блока на примере простой программы, которая позволяет получить максимальное значение лимита Y для указанной координаты X из объектов типа ELimits с заданным идентификатором, которые хранятся в коллекции трейсов и лимитов ETraceSet.

02.jpg

Создадим глобальные переменные, необходимые для работы программы. Данные переменные мы будем использовать с привязкой к элементам управления интерфейса пользователя. ETraceSet – переменная типа ETraceSet, в которую будет добавляться массив объектов типа ELimits. ELimit – переменная, которая хранит созданный объект типа ELimits, который мы будем добавлять в массив ELimitsArray. ELimitsArray – массив объектов типа ELimits. maxYpoints – переменная типа Double[] для хранения массива максимальных значений лимита. minYpoints – переменная типа Double[] для хранения массива минимальных значений лимита. Xpoints – переменная типа Double[] для хранения массива точек X. MaxLimitStrict – переменная типа Double[] для хранения наименьших максимальных значений лимита. MaxLimitRelaxed – переменная типа Double[] для хранения наибольших максимальных значений лимита. MaxUnmergedValues – переменная типа Double[] для хранения исходных максимальных значений лимитов для заданного X. LimitNames – переменная типа String[] для хранения имен объектов ELimits, которые имеют указанный идентификатор и учитывались при расчете. LimitTags – переменная типа String[] для хранения идентификаторов объектов ELimits, которые имеют указанный идентификатор и учитывались при расчете. ELimitTag – идентификатор лимита, по которому будет выполняться поиск в коллекции трейсов и лимитов ETraceSet.

03.jpg

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

01.jpg

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

02.jpg

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

04.jpg

Последовательно выберем каждый из добавленных элементов, в свойствах элементов введем соответствующие имена и выполним привязку значения к переменным следующим образом: TraceSet: значение -> переменная ETraceSet; Идентификатор: значение -> переменная ELimitTag; Значение X: значение -> переменная X; Значение Y: значение -> переменная MaxLimitStrict; DashBoardETraceSetView: значение -> переменная ETraceSet; Пример привязки элемента панели управления «DashBoardETraceSetView» к переменной ETraceSet показан на следующем рисунке.

30.jpg

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

05.jpg

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

05.jpg

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

06.jpg

Блок Handler будет срабатывать по событию нажатия кнопки.

07.jpg

Следующий блок - CreateInstance. Данный блок создает новый объект типа ETraceSet, который не содержит никаких данных.

02.jpg

Далее используем блок "If - else" для построения цикла на 11 итераций. Значение переменной i вначале цикла равняется нулю и наращивается на 1 после выполнения каждой итерации. При выполнении условия i<=10 блок принимает значение "True", иначе работа блока завершается через выход "False".

03.jpg

При выполнении каждой итерации цикла будут выполняться следующий действия. Используем блок CreateInstance для создания нового объекта типа ELimits, который передадим в переменную ELimit, как показано на рисунке.

04.jpg

Зададим идентификатор созданного лимита с помощью блока ELimits.SetTag. В качестве идентификатора будем использовать текущее значение номера итерации i, преобразованное в строковый тип данных с помощью функции i.ToString()+"тест".

31.jpg

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

06.jpg

Сформируем массив минимальных значений лимита minYpoints с помощью блока RandomArray.

32.jpg

Сформируем массив максимальных значений лимита maxYpoints с помощью блока RandomArray.

33.jpg

Добавим созданные массивы точек в объект типа ELimits с помощью блока ELimits.AddPoints.

09.jpg

Добавим созданный лимит, который хранится в переменной ELimits в массив ELimitsArray с помощью блока AddArrayValue.

13.jpg

Нарастим значение i на 1 с помощью блока SetVariable и функции i=i+1.

11.jpg

По окончании созданного цикла (условие i>10) добавим все объекты типа ELimits из массива ELimitsArray в коллекцию трейсов и лимитов ETraceSet с помощью блока ETraceSet.AddLimits.

14.jpg

Далее используем блок ETraceSet.GetMaxLimit, который вернет максимальное значение лимита Y (по оси ординат) для указанной координаты X (по оси абсцисс) из объектов типа ELimits с заданным идентификатором, которые хранятся в коллекции трейсов и лимитов ETraceSet. В нашем случае функция SearchTagPart включена, соответственно поиск максимальных значений будет выполняться в объектах ELimits даже с неполным совпадением заданного идентификатора.

08.jpg

Добавим полученную точку (X,MaxLimitStrict) в переменную NewTrace, которая хранит объект типа ETrace с помощью блока ETrace.AddPoint.

09.jpg

Добавим объект типа ETrace из переменной NewTrace в переменную ETraceSet c помощью блока ETraceSet.AddTrace.

34.jpg

Посмотрим, как работает пример. Мы можем видеть, что по результатам выполнения программы на графике элемента DashBoardETraceSetView отображаются сгенерированные лимиты, после чего программа выполняет поиск объектов ELimits, которые имеют введенный идентификатор "тест" и возвращает координаты (X,Y) наименьшего значения верхнего предела Y для указанного X, рассчитанного среди всех найденных лимитов.

01.gif