Векторная обработка переменных

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

Добавьте на схему рядом с блоком «Субмодель» с подписью«БУЗ» два блока «Чтение из списка сигналов» и три блока «Запись в список сигналов», в результате чего схема примет следующий вид (Рисунок 1).

Рисунок 1. Вид расчетной схемы после добавления блоков

Размерность вектора можно формировать как вручную, так и автоматически.

Ручное формирование размерности вектора для свойств возможно двумя способами.

Первый способ – это задание размерности вектора в виде: N#X, где:

Например, 5#1.525 – в этом случае будет сформирован вектор из пяти элементов, каждый из которых будет иметь значение, равное 1.525

Второй способ – это задание размерности вектора в виде: [X{1}, X{2}, X{3}, X{4}, X{5}, … X{N}], где:

Например, [1.525, 1.675, 2, 2.35, 7.4, 8.325] – в этом случае будет сформирован вектор из шести элементов, каждый из которых будет иметь свое собственное значение: первый элемент вектора будет равен 1.525, второй элемент вектора будет равен 1.675 и т.д.

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

Для этого необходимо выполнить следующие шаги:

  1. Вызовите окно свойств для левого верхнего блока «Чтение из списка сигналов.
  2. В появившемся окне «Свойства» найдите строку «Имена сигналов» и в ячейке «Значение» активируйте кнопку вызова текстового редактора, появляющуюся при редактировании ячейки в ее правой части(Рисунок 2).

    Рисунок 2. Редактирование свойств блока «Чтение из списка сигналов»

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

    {query: category = "имя категории"; group = "имя группы сигналов"; name = "имя сигнала"}, где:

    • query, category, group, name – ключевые слова, позволяющие обратиться к базе данных, категории, группе сигналов и конкретному сигналу;
    • имя категории – имя категории, к которой необходимо обратиться в процессе запроса;
    • имя группы сигналов – имя группы сигналов, к которой необходимо обратиться в процессе запроса;
    • имя сигнала – имя сигнала, к которому необходимо обратиться в процессе запроса.

    Запрос к базе данных всегда формируется в фигурных скобках.

    Так как данный блок будет отвечать за считывание сигналов «Команда открыть» из базы данных сигналов, то запрос к базе данных с учетом вышеуказанных правил будет выглядеть следующим образом:

    {query: category = "Задвижки"; group = "*"; name = "yb01"}, где:

    • category = "Задвижки" – имя категории («Задвижки»), из которой мы хотим получить сигналы;
    • group = "*" – имя группы сигналов которую необходимо включить в запрос. Символ «*» означает, что в запрос необходимо включить все группы сигналов данной категории. Также при использовании данного символа в запросе можно осуществлять выборку групп сигналов с использованием фильтрации. Например: если в проекте есть задвижки, имена групп сигналов которых начинаются на букву D, то для получения сигналов только от таких задвижек достаточно записать group = "D*".
    • name = "yb01" – имя сигнала, который требуется получить из базы данных. В нашем случае это имя соответствует сигналу «Команда Открыть».
  4. Закройте текстовый редактор, сохраняя внесенные изменения, нажатием на кнопку «Применить и закрыть» в верхней части окна редактора.

    Повторите пункты 1–4 для всех блоков «Чтение из списка сигналов» и «Запись в список сигналов». При этом следует помнить, что для каждого блока запрос к базе данных должен обращаться к разным сигналам, и окончательно сформированные запросы будут выглядеть так:

    • для блока, формирующего считывание сигнала «Команда Закрыть»:

    {query: category = "Задвижки"; group = "*"; name = "yb02"}

    • для блока, формирующего считывание сигнала «Открыта»:

    {query: category = "Задвижки"; group = "*"; name = "xb01"}

    • для блока, формирующего считывание сигнала «Закрыта»:

    {query: category = "Задвижки"; group = "*"; name = "xb02"}

    • для блока, формирующего считывание сигнала «Положение»:

    {query: category = "Задвижки"; group = "*"; name = "xq01"}

    Добавьте на схему блок «Временной график» (вкладка «Вывод данных») и соедините блоки линиями связи между собой таким образом, чтобы модель приобрела следующий вид (Рисунок 3).

    Рисунок 3. Вид расчетной схемы после завершения редактирования блоков

Перед тем, как приступить к выполнению следующего шага, сохраните проект, используя кнопку «Сохранить проект» на панели кнопок главного окна среды.