В проекте не используется Main script, так как управление задачами реализовано в самих задачах, а начальные условия задаются в pre-task скрипте задачи 1.
Конфигурацию блоков можно посмотреть в самом проекте.
В проекте использовалось две задачи. Одна задача (task1) для реализации алгоритма поиска экстремума функции, вторая (task2) для переключения между окнами отображения, а так же для управления выполнением первой задачи.
Task1.
В состав задачи входят 3 Basic-скрипта.
-SCR1. В этом скрипте реализуется основной алгоритм программы. На выходные каналы блока скрипта выдаются следующие величины: 0: текущее значение координаты X; 1: текущее значение координаты Y; 2: значение функции; 3: задействована ли помеха (0/1); 6: величина помехи по координате Х; 7: величина помехи по координате Y.
-SCR2. Скрипт для осуществления чередования действий при каждом последующем запуске задачи. На один трёх выходных каналов (0,1,2) подаётся единица, чтобы знать, какой шаг алгоритма должен выполнить скрипт SCR1.
-SCR4. Вспомогательный скрипт для вывода значений величин в каналы: 0: величина пробного шага по координате X; 1: величина пробного шага по координате Y; 2: величина рабочего шага; 3: величина коэффициента Kx в математической модели; 4: величина коэффициента Ку; 5: величина периода помехи по координате Х; 6: величина периода помехи по координате Y.
Имеется pre-task script. Он выполняется каждый раз перед запуском задачи. В нём идет связь переменных типа tag с элементами управления окна отображения и присвоение им начальных значений. Так же в этом скрипте выполняется проверка введенных данных на корректность и выполняется анализ помехи для расчета пробного и рабочего шага при оптимальном управлении – по сути задание начальных условий.
Post-task script в задаче не используется, так как не нужно сбрасывать значения переменных при остановке задачи.
Task2.
В состав задачи входят 2 блока tag и 1 Basic-скрипт.
-Блоки tag связывают задачу task2 с кнопками переключения окон отображения disp1 и disp2.
-SCR3. Этот скрипт останавливает задачу task1 при переходе в окно задания начальных условий и параметров, а также запускает её при нажатии в этом окне кнопки «запуск».
В проекте используется 2 окна отображения disp1 и disp2. Первое окно используется для ввода параметров моделируемой системы, начальных условий и настройки, второе окно – для отображения процесса моделирования и мониторинга соответствующих величин. Переключение между окнами осуществляется при помощи кнопок, описанных выше.
Disp1.
Позволяет указать следующие параметры моделирования системы:
- Рабочий шаг
-Хпробное
-Yпробное
-Х0
-Y0
-Kx
-Ky
-Коэффициент оптимального управления (по умолчанию 1)
-Период выполнения задачи task1
-Амплитуда помехи (для каждой координаты)
-Период помехи (для каждой координаты)
-Включить помеху (кнопка)
-Включить оптимальное управление (кнопка)
При нажатии на кнопку «запуск» происходит переход в окно отображения disp2.
Disp2.
В этом окне отображается следующая информация:
-На графиках помех: Сама помеха, изменяющаяся во времени, а так же текущая точка экстремума функции в соответствии с градиентным методом.
-На остальных элементах отображения содержится информация, которая была введена в окне disp1. Кроме этого имеются несколько дополнительных индикаторов:
-Текущее числовое значение функции
-Текущее значение функции (график)
С помощью кнопки «переход к заданию условий» осуществляется останов задачи task1 и переход к окну disp1 для корректировки параметров системы.
Общий алгоритм программы приведен на рисунке.
Рис. Общий алгоритм программы
В программе использовались стандартные операции и компоненты, которые были пройдены в лекционном курсе по SCADA-системам. Текст программы можно найти в файле проекта.
На большинство исходных параметров ограничения накладываются с помощью настроек блока Numeric Control Display. После этого уже невозможно присвоить, например, амплитуде помехи отрицательное значение. Программно проверяются только значения элементов Кх и Ky, а также величины периода помехи. Если значения были введены некорректно, то при нажатии на кнопку «запуск» появится сообщение об ошибке и значение неверного параметра автоматически исправится на ближайшее допустимое (рис. 3,4).
Рис.3. Кх и Ку были разных знаков
Рис.4. Значение Тх было меньше минимально допустимого
Проверка правильности работы алгоритма.
Выберем режим без помехи, начальные условия (5, 5), величина рабочего шага 1. Алгоритм должен придти к экстремуму за шагов. При периоде выполнения задачи task1 равным 1 секунде, это будет секунда (каждый шаг выполняется за 3 цикла задачи). Рис. 5.
Рис.5. Нахождение экстремума за 21 секунду.
Проверка функционирования алгоритма в условии помех. Рис.6.
Рис.6. Функционирование алгоритма в условии помех.
Проверка оптимального режима. Рис.7.
Рис.7. Функционирование алгоритма в оптимальном режиме.
Как видно по рисункам 6 и 7, в оптимальном режиме координаты X и Y лучше отслеживают помеху.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.